aboutsummaryrefslogtreecommitdiff
path: root/mod/openid_api
diff options
context:
space:
mode:
Diffstat (limited to 'mod/openid_api')
-rw-r--r--mod/openid_api/classes/OpenID_ElggStore.php420
-rw-r--r--mod/openid_api/lib/openid_consumer.php15
-rw-r--r--mod/openid_api/lib/openid_server.php13
-rw-r--r--mod/openid_api/manifest.xml19
-rw-r--r--mod/openid_api/start.php22
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID.php563
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php1022
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php610
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php451
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php2234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php122
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php130
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php113
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php606
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php99
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php61
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php618
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php105
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php196
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php111
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php413
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php207
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php920
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php77
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php108
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php300
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php377
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php112
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php557
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php70
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php1765
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php36
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php461
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php249
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php174
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php58
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php245
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php258
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php248
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php352
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php478
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php72
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php382
-rw-r--r--mod/openid_api/vendors/php-openid/COPYING202
-rw-r--r--mod/openid_api/vendors/php-openid/README136
48 files changed, 17063 insertions, 0 deletions
diff --git a/mod/openid_api/classes/OpenID_ElggStore.php b/mod/openid_api/classes/OpenID_ElggStore.php
new file mode 100644
index 000000000..2d4800e9b
--- /dev/null
+++ b/mod/openid_api/classes/OpenID_ElggStore.php
@@ -0,0 +1,420 @@
+<?php
+/**
+ * Uses Elgg data model to store OpenID associations
+ *
+ * Written to be compatible with the Elgg store written by Kevin Jardine for
+ * the original OpenID client plugin.
+ */
+class OpenID_ElggStore extends Auth_OpenID_OpenIDStore {
+
+ /**
+ * Store an association
+ *
+ * @param string $server_url The identity server endpoint
+ * @param Auth_OpenID_Association $association The association to store.
+ */
+ public function storeAssociation($server_url, $association) {
+
+ $object = new ElggObject();
+ $object->subtype = 'openid_client::association';
+ $object->owner_guid = 0;
+ $object->container_guid = 0;
+ $object->title = 'association';
+ $object->access_id = ACCESS_PUBLIC;
+ $object->server_url = $server_url;
+ $object->handle = $association->handle;
+ $object->secret = base64_encode($association->secret);
+ $object->issued = $association->issued;
+ $object->lifetime = $association->lifetime;
+ $object->expires = $object->issued + $object->lifetime;
+ $object->assoc_type = $association->assoc_type;
+
+ $object->save();
+ }
+
+ /**
+ * Get an association
+ *
+ * @param string $server_url The identity server endpoint
+ * @param string $handle The association handle
+ * @return Auth_OpenID_Association
+ */
+ public function getAssociation($server_url, $handle = null) {
+
+ $assocs = $this->getAssociations($server_url, $handle);
+ if (!$assocs || count($assocs) == 0) {
+ return null;
+ } else {
+ $associations = array();
+
+ foreach ($assocs as $object) {
+ $assoc = new Auth_OpenID_Association(
+ $object->handle,
+ base64_decode($object->secret),
+ $object->issued,
+ $object->lifetime,
+ $object->assoc_type);
+
+ if ($assoc->getExpiresIn() == 0) {
+ $this->removeAssociation($server_url, $assoc->handle);
+ } else {
+ $associations[] = array($assoc->issued, $assoc);
+ }
+ }
+
+ if ($associations) {
+ $issued = array();
+ $assocs = array();
+ foreach ($associations as $key => $assoc) {
+ $issued[$key] = $assoc[0];
+ $assocs[$key] = $assoc[1];
+ }
+
+ array_multisort($issued, SORT_DESC, $assocs, SORT_DESC, $associations);
+
+ // return the most recently issued one.
+ list($issued, $assoc) = $associations[0];
+ return $assoc;
+ } else {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * Remove selected associations from storage
+ *
+ * @param string $server_url The identity server endpoint
+ * @param string $handle The association handle
+ */
+ public function removeAssociation($server_url, $handle) {
+ $assocs = $this->getAssociations($server_url, $handle);
+ foreach ($assocs as $assoc) {
+ $assoc->delete();
+ }
+ }
+
+ /**
+ * Get all associations
+ *
+ * @param string $server_url The identity server endpoint
+ * @param string $handle The association handle
+ * @return array
+ */
+ protected function getAssociations($server_url, $handle) {
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::association',
+ 'metadata_name_value_pairs' => array(
+ array('name' => 'server_url', 'value' => $server_url)
+ ),
+ 'limit' => 0,
+ );
+
+ if ($handle !== null) {
+ $options['metadata_name_value_pairs'][] = array(
+ 'name' => 'handle',
+ 'value' => $handle
+ );
+ }
+
+ return elgg_get_entities_from_metadata($options);
+ }
+
+ /**
+ * Cleanup associations that have expired
+ *
+ * @todo I think we need to store expire time ans use that here
+ *
+ * @return int
+ */
+ public function cleanupAssociations() {
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::association',
+ 'metadata_name_value_pairs' => array(
+ array('name' => 'expires', 'value' => time(), 'operand' => '<')
+ ),
+ 'limit' => 0,
+ );
+ $associations = elgg_get_entities_from_metadata($options);
+ $total = count($associations);
+
+ foreach ($associations as $association) {
+ $association->delete();
+ }
+
+ return $total;
+ }
+
+ /**
+ * Can we use this nonce?
+ *
+ * Checks for time skew and replay attacks
+ *
+ * @param type $server_url The identity server endpoint
+ * @param type $timestamp The timestamp from the nonce
+ * @param type $salt The salt from the nonce
+ * @return bool
+ */
+ public function useNonce($server_url, $timestamp, $salt) {
+ global $Auth_OpenID_SKEW;
+
+ if (abs($timestamp - time()) > $Auth_OpenID_SKEW) {
+ return false;
+ }
+
+ if (!$this->addNonce($server_url, $timestamp, $salt)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Store the nonce to prevent replay attacks
+ *
+ * @param string $server_url
+ * @param string $timestamp
+ * @param string $salt
+ * @return bool
+ */
+ protected function addNonce($server_url, $timestamp, $salt) {
+ global $Auth_OpenID_SKEW;
+
+ $identifier = md5($server_url . $timestamp . $salt);
+
+ // was the nonce already used
+ $count = elgg_get_entities_from_metadata(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::nonce',
+ 'metadata_name' => 'identifier',
+ 'metadata_value' => $identifier,
+ 'count' => true,
+ ));
+ if ($count) {
+ return false;
+ }
+
+ // add it
+ $object = new ElggObject();
+ $object->subtype = 'openid_client::nonce';
+ $object->owner_guid = 0;
+ $object->container_guid = 0;
+ $object->access_id = ACCESS_PUBLIC;
+ $object->server_url = $server_url;
+ $object->expires = $timestamp + $Auth_OpenID_SKEW;
+ $object->identifier = $identifier;
+ $object->save();
+
+ return true;
+ }
+
+ /**
+ * Cleanup nonces that would not pass the time skew test
+ *
+ * @return int
+ */
+ public function cleanupNonces() {
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::nonce',
+ 'metadata_name_value_pairs' => array(
+ array('name' => 'expires', 'value' => time(), 'operand' => '<')
+ ),
+ 'limit' => 0,
+ );
+ $nonces = elgg_get_entities_from_metadata($options);
+ $total = count($nonces);
+
+ foreach ($nonces as $nonce) {
+ $nonce->delete();
+ }
+
+ return $total;
+ }
+
+ /**
+ * Does this storage class support cleanup?
+ *
+ * @return bool
+ */
+ public function supportsCleanup() {
+ return true;
+ }
+
+ /**
+ * Cleanup expired data in storage
+ *
+ * @return array
+ */
+ public function cleanup() {
+ return array($this->cleanupNonces(), $this->cleanupAssociations());
+ }
+
+ /**
+ * Remove everything from storage
+ *
+ * @return void
+ */
+ public function reset() {
+ $associations = elgg_get_entities(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::association',
+ 'limit' => 0,
+ ));
+ foreach ($associations as $association) {
+ $association->delete();
+ }
+
+ $nonces = elgg_get_entities(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_client::nonce',
+ 'limit' => 0,
+ ));
+
+ foreach ($nonces as $nonce) {
+ $nonce->delete();
+ }
+ }
+
+ protected function getTrustedSites($user_guid = true) {
+
+ if ($user_guid === true) {
+ $user_guid = elgg_get_logged_in_user_guid();
+ } elseif (!$user_guid) {
+ $user_guid = ELGG_ENTITIES_ANY_VALUE;
+ }
+
+ $results = elgg_get_entities(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_server::trust_root',
+ 'owner_guid' => $user_guid,
+ ));
+
+ return $results;
+ }
+
+ public function getTrustedRoots ($user_guid = true) {
+
+ $results = $this->getTrustedSites($user_guid);
+
+ $sites = array();
+ if ($results) {
+ foreach ($results as $site) {
+ $sites[] = $site->trust_root;
+ }
+ }
+ return $sites;
+ }
+
+ /**
+ * Returns the autologin URLs for every trusted site
+ */
+
+ public function getAutoLoginSites() {
+
+ $default_trusted_sites = $this->getTrustedSites(false);
+
+ $sites = array();
+ if ($default_trusted_sites) {
+ foreach ($default_trusted_sites as $site) {
+ if ($site->auto_login_url) {
+ $sites[] = $site;
+ }
+ }
+ }
+ return $sites;
+ }
+
+ /**
+ * Returns the autologout URLs for every trusted site
+ */
+
+ public function getAutoLogoutSites() {
+
+ $default_trusted_sites = $this->getTrustedSites(false);
+
+ $sites = array();
+ if ($default_trusted_sites) {
+ foreach ($default_trusted_sites as $site) {
+ if ($site->auto_logout_url) {
+ $sites[] = $site;
+ }
+ }
+ }
+ return $sites;
+ }
+
+ static function isTrustedRoot($trust_root) {
+ $results = elgg_get_entities_from_metadata(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_server::trust_root',
+ 'owner_guid' => elgg_get_logged_in_user_guid(),
+ 'metadata_name' => 'trust_root',
+ 'metadata_value' => $trust_root,
+ ));
+
+ return !! $results;
+ }
+
+ public function setTrustedSite($trust_root) {
+
+ if (self::isTrustedRoot($trust_root)) {
+ return true;
+ }
+
+ $site = new ElggObject();
+ $site->subtype = 'openid_server::trust_root';
+ $site->owner_guid = elgg_get_logged_in_user_guid();
+ $site->title = 'association';
+ $site->access_id = ACCESS_PUBLIC;
+
+ if ($site->save()) {
+ $site->trust_root = $trust_root->trust_root;
+ $site->site_name = $trust_root->site_name;
+ $site->autologin = $trust_root->autologin;
+ $site->autologout = $trust_root->autologout;
+ $site->width = $trust_root->width;
+ $site->height = $trust_root->height;
+ return true;
+ }
+ return false;
+ }
+
+ public function removeUserTrustedSites($user = true) {
+
+ $results = $this->getTrustedSites($user);
+
+ if ($results) {
+ foreach($results as $trust_root) {
+ $trust_root->delete();
+ }
+ }
+ return true;
+ }
+
+ public function removeTrustedSite($trust_root, $user_guid = true) {
+
+ if ($user_guid === true) {
+ $user_guid = elgg_get_logged_in_user_guid();
+ } elseif (!$user_guid) {
+ $user_guid = ELGG_ENTITIES_ANY_VALUE;
+ }
+
+ $results = elgg_get_entities_from_metadata(array(
+ 'type' => 'object',
+ 'subtype' => 'openid_server::trust_root',
+ 'owner_guid' => $user_guid,
+ 'metadata_name' => 'trust_root',
+ 'metadata_value' => $trust_root,
+ ));
+
+ if ($results) {
+ foreach($results as $trust_root) {
+ $trust_root->delete();
+ }
+ }
+ return true;
+ }
+}
diff --git a/mod/openid_api/lib/openid_consumer.php b/mod/openid_api/lib/openid_consumer.php
new file mode 100644
index 000000000..86b051c0c
--- /dev/null
+++ b/mod/openid_api/lib/openid_consumer.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * OpenID library loader for consumers
+ */
+
+$openid_path = dirname(dirname(__FILE__)) . '/vendors/php-openid/';
+$path = ini_get('include_path');
+$path = $openid_path . PATH_SEPARATOR . $path;
+ini_set('include_path', $path);
+
+require_once 'Auth/OpenID.php';
+require_once 'Auth/OpenID/Consumer.php';
+require_once 'Auth/OpenID/SReg.php';
+require_once 'Auth/OpenID/AX.php';
+require_once 'Auth/OpenID/Interface.php';
diff --git a/mod/openid_api/lib/openid_server.php b/mod/openid_api/lib/openid_server.php
new file mode 100644
index 000000000..79ed064b4
--- /dev/null
+++ b/mod/openid_api/lib/openid_server.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * OpenID library loader for servers
+ */
+
+$openid_path = dirname(dirname(__FILE__)) . '/vendors/php-openid/';
+$path = ini_get('include_path');
+$path = $openid_path . PATH_SEPARATOR . $path;
+ini_set('include_path', $path);
+
+require_once 'Auth/OpenID.php';
+require_once 'Auth/OpenID/Server.php';
+require_once 'Auth/OpenID/SReg.php';
diff --git a/mod/openid_api/manifest.xml b/mod/openid_api/manifest.xml
new file mode 100644
index 000000000..001c47c19
--- /dev/null
+++ b/mod/openid_api/manifest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>OpenID API</name>
+ <author>Core developers</author>
+ <version>1.8.0</version>
+ <description>OpenID API support for Elgg.</description>
+ <category>api</category>
+ <website>http://www.elgg.org/</website>
+ <copyright>Cash Costello 2011</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <requires>
+ <type>php_extension</type>
+ <name>curl</name>
+ </requires>
+</plugin_manifest>
diff --git a/mod/openid_api/start.php b/mod/openid_api/start.php
new file mode 100644
index 000000000..2efb0a1d6
--- /dev/null
+++ b/mod/openid_api/start.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * OpenID API Library
+ */
+
+elgg_register_event_handler('init', 'system', 'openid_api_init');
+
+function openid_api_init() {
+ $dir = elgg_get_plugins_path() . 'openid_api/lib';
+ elgg_register_library('openid_consumer', "$dir/openid_consumer.php");
+ elgg_register_library('openid_server', "$dir/openid_server.php");
+
+ elgg_register_plugin_hook_handler('cron', 'daily', 'openid_api_cleanup');
+}
+
+/**
+ * Cleanup data related to the OpenID Elgg store for associations
+ */
+function openid_api_cleanup() {
+ $store = new OpenID_ElggStore();
+ $store->cleanup();
+}
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID.php b/mod/openid_api/vendors/php-openid/Auth/OpenID.php
new file mode 100644
index 000000000..c9d977962
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID.php
@@ -0,0 +1,563 @@
+<?php
+
+/**
+ * This is the PHP OpenID library by JanRain, Inc.
+ *
+ * This module contains core utility functionality used by the
+ * library. See Consumer.php and Server.php for the consumer and
+ * server implementations.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * The library version string
+ */
+define('Auth_OpenID_VERSION', '2.2.2');
+
+/**
+ * Require the fetcher code.
+ */
+require_once "Auth/Yadis/PlainHTTPFetcher.php";
+require_once "Auth/Yadis/ParanoidHTTPFetcher.php";
+require_once "Auth/OpenID/BigMath.php";
+require_once "Auth/OpenID/URINorm.php";
+
+/**
+ * Status code returned by the server when the only option is to show
+ * an error page, since we do not have enough information to redirect
+ * back to the consumer. The associated value is an error message that
+ * should be displayed on an HTML error page.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_LOCAL_ERROR', 'local_error');
+
+/**
+ * Status code returned when there is an error to return in key-value
+ * form to the consumer. The caller should return a 400 Bad Request
+ * response with content-type text/plain and the value as the body.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_REMOTE_ERROR', 'remote_error');
+
+/**
+ * Status code returned when there is a key-value form OK response to
+ * the consumer. The value associated with this code is the
+ * response. The caller should return a 200 OK response with
+ * content-type text/plain and the value as the body.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_REMOTE_OK', 'remote_ok');
+
+/**
+ * Status code returned when there is a redirect back to the
+ * consumer. The value is the URL to redirect back to. The caller
+ * should return a 302 Found redirect with a Location: header
+ * containing the URL.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_REDIRECT', 'redirect');
+
+/**
+ * Status code returned when the caller needs to authenticate the
+ * user. The associated value is a {@link Auth_OpenID_ServerRequest}
+ * object that can be used to complete the authentication. If the user
+ * has taken some authentication action, use the retry() method of the
+ * {@link Auth_OpenID_ServerRequest} object to complete the request.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_DO_AUTH', 'do_auth');
+
+/**
+ * Status code returned when there were no OpenID arguments
+ * passed. This code indicates that the caller should return a 200 OK
+ * response and display an HTML page that says that this is an OpenID
+ * server endpoint.
+ *
+ * @see Auth_OpenID_Server
+ */
+define('Auth_OpenID_DO_ABOUT', 'do_about');
+
+/**
+ * Defines for regexes and format checking.
+ */
+define('Auth_OpenID_letters',
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
+
+define('Auth_OpenID_digits',
+ "0123456789");
+
+define('Auth_OpenID_punct',
+ "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
+
+Auth_OpenID_include_init();
+
+/**
+ * The OpenID utility function class.
+ *
+ * @package OpenID
+ * @access private
+ */
+class Auth_OpenID {
+
+ /**
+ * Return true if $thing is an Auth_OpenID_FailureResponse object;
+ * false if not.
+ *
+ * @access private
+ */
+ static function isFailure($thing)
+ {
+ return is_a($thing, 'Auth_OpenID_FailureResponse');
+ }
+
+ /**
+ * Gets the query data from the server environment based on the
+ * request method used. If GET was used, this looks at
+ * $_SERVER['QUERY_STRING'] directly. If POST was used, this
+ * fetches data from the special php://input file stream.
+ *
+ * Returns an associative array of the query arguments.
+ *
+ * Skips invalid key/value pairs (i.e. keys with no '=value'
+ * portion).
+ *
+ * Returns an empty array if neither GET nor POST was used, or if
+ * POST was used but php://input cannot be opened.
+ *
+ * See background:
+ * http://lists.openidenabled.com/pipermail/dev/2007-March/000395.html
+ *
+ * @access private
+ */
+ static function getQuery($query_str=null)
+ {
+ $data = array();
+
+ if ($query_str !== null) {
+ $data = Auth_OpenID::params_from_string($query_str);
+ } else if (!array_key_exists('REQUEST_METHOD', $_SERVER)) {
+ // Do nothing.
+ } else {
+ // XXX HACK FIXME HORRIBLE.
+ //
+ // POSTing to a URL with query parameters is acceptable, but
+ // we don't have a clean way to distinguish those parameters
+ // when we need to do things like return_to verification
+ // which only want to look at one kind of parameter. We're
+ // going to emulate the behavior of some other environments
+ // by defaulting to GET and overwriting with POST if POST
+ // data is available.
+ $data = Auth_OpenID::params_from_string($_SERVER['QUERY_STRING']);
+
+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+ $str = file_get_contents('php://input');
+
+ if ($str === false) {
+ $post = array();
+ } else {
+ $post = Auth_OpenID::params_from_string($str);
+ }
+
+ $data = array_merge($data, $post);
+ }
+ }
+
+ return $data;
+ }
+
+ static function params_from_string($str)
+ {
+ $chunks = explode("&", $str);
+
+ $data = array();
+ foreach ($chunks as $chunk) {
+ $parts = explode("=", $chunk, 2);
+
+ if (count($parts) != 2) {
+ continue;
+ }
+
+ list($k, $v) = $parts;
+ $data[urldecode($k)] = urldecode($v);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Create dir_name as a directory if it does not exist. If it
+ * exists, make sure that it is, in fact, a directory. Returns
+ * true if the operation succeeded; false if not.
+ *
+ * @access private
+ */
+ static function ensureDir($dir_name)
+ {
+ if (is_dir($dir_name) || @mkdir($dir_name)) {
+ return true;
+ } else {
+ $parent_dir = dirname($dir_name);
+
+ // Terminal case; there is no parent directory to create.
+ if ($parent_dir == $dir_name) {
+ return true;
+ }
+
+ return (Auth_OpenID::ensureDir($parent_dir) && @mkdir($dir_name));
+ }
+ }
+
+ /**
+ * Adds a string prefix to all values of an array. Returns a new
+ * array containing the prefixed values.
+ *
+ * @access private
+ */
+ static function addPrefix($values, $prefix)
+ {
+ $new_values = array();
+ foreach ($values as $s) {
+ $new_values[] = $prefix . $s;
+ }
+ return $new_values;
+ }
+
+ /**
+ * Convenience function for getting array values. Given an array
+ * $arr and a key $key, get the corresponding value from the array
+ * or return $default if the key is absent.
+ *
+ * @access private
+ */
+ static function arrayGet($arr, $key, $fallback = null)
+ {
+ if (is_array($arr)) {
+ if (array_key_exists($key, $arr)) {
+ return $arr[$key];
+ } else {
+ return $fallback;
+ }
+ } else {
+ trigger_error("Auth_OpenID::arrayGet (key = ".$key.") expected " .
+ "array as first parameter, got " .
+ gettype($arr), E_USER_WARNING);
+
+ return false;
+ }
+ }
+
+ /**
+ * Replacement for PHP's broken parse_str.
+ */
+ static function parse_str($query)
+ {
+ if ($query === null) {
+ return null;
+ }
+
+ $parts = explode('&', $query);
+
+ $new_parts = array();
+ for ($i = 0; $i < count($parts); $i++) {
+ $pair = explode('=', $parts[$i]);
+
+ if (count($pair) != 2) {
+ continue;
+ }
+
+ list($key, $value) = $pair;
+ $new_parts[urldecode($key)] = urldecode($value);
+ }
+
+ return $new_parts;
+ }
+
+ /**
+ * Implements the PHP 5 'http_build_query' functionality.
+ *
+ * @access private
+ * @param array $data Either an array key/value pairs or an array
+ * of arrays, each of which holding two values: a key and a value,
+ * sequentially.
+ * @return string $result The result of url-encoding the key/value
+ * pairs from $data into a URL query string
+ * (e.g. "username=bob&id=56").
+ */
+ static function httpBuildQuery($data)
+ {
+ $pairs = array();
+ foreach ($data as $key => $value) {
+ if (is_array($value)) {
+ $pairs[] = urlencode($value[0])."=".urlencode($value[1]);
+ } else {
+ $pairs[] = urlencode($key)."=".urlencode($value);
+ }
+ }
+ return implode("&", $pairs);
+ }
+
+ /**
+ * "Appends" query arguments onto a URL. The URL may or may not
+ * already have arguments (following a question mark).
+ *
+ * @access private
+ * @param string $url A URL, which may or may not already have
+ * arguments.
+ * @param array $args Either an array key/value pairs or an array of
+ * arrays, each of which holding two values: a key and a value,
+ * sequentially. If $args is an ordinary key/value array, the
+ * parameters will be added to the URL in sorted alphabetical order;
+ * if $args is an array of arrays, their order will be preserved.
+ * @return string $url The original URL with the new parameters added.
+ *
+ */
+ static function appendArgs($url, $args)
+ {
+ if (count($args) == 0) {
+ return $url;
+ }
+
+ // Non-empty array; if it is an array of arrays, use
+ // multisort; otherwise use sort.
+ if (array_key_exists(0, $args) &&
+ is_array($args[0])) {
+ // Do nothing here.
+ } else {
+ $keys = array_keys($args);
+ sort($keys);
+ $new_args = array();
+ foreach ($keys as $key) {
+ $new_args[] = array($key, $args[$key]);
+ }
+ $args = $new_args;
+ }
+
+ $sep = '?';
+ if (strpos($url, '?') !== false) {
+ $sep = '&';
+ }
+
+ return $url . $sep . Auth_OpenID::httpBuildQuery($args);
+ }
+
+ /**
+ * Implements python's urlunparse, which is not available in PHP.
+ * Given the specified components of a URL, this function rebuilds
+ * and returns the URL.
+ *
+ * @access private
+ * @param string $scheme The scheme (e.g. 'http'). Defaults to 'http'.
+ * @param string $host The host. Required.
+ * @param string $port The port.
+ * @param string $path The path.
+ * @param string $query The query.
+ * @param string $fragment The fragment.
+ * @return string $url The URL resulting from assembling the
+ * specified components.
+ */
+ static function urlunparse($scheme, $host, $port = null, $path = '/',
+ $query = '', $fragment = '')
+ {
+
+ if (!$scheme) {
+ $scheme = 'http';
+ }
+
+ if (!$host) {
+ return false;
+ }
+
+ if (!$path) {
+ $path = '';
+ }
+
+ $result = $scheme . "://" . $host;
+
+ if ($port) {
+ $result .= ":" . $port;
+ }
+
+ $result .= $path;
+
+ if ($query) {
+ $result .= "?" . $query;
+ }
+
+ if ($fragment) {
+ $result .= "#" . $fragment;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Given a URL, this "normalizes" it by adding a trailing slash
+ * and / or a leading http:// scheme where necessary. Returns
+ * null if the original URL is malformed and cannot be normalized.
+ *
+ * @access private
+ * @param string $url The URL to be normalized.
+ * @return mixed $new_url The URL after normalization, or null if
+ * $url was malformed.
+ */
+ static function normalizeUrl($url)
+ {
+ @$parsed = parse_url($url);
+
+ if (!$parsed) {
+ return null;
+ }
+
+ if (isset($parsed['scheme']) &&
+ isset($parsed['host'])) {
+ $scheme = strtolower($parsed['scheme']);
+ if (!in_array($scheme, array('http', 'https'))) {
+ return null;
+ }
+ } else {
+ $url = 'http://' . $url;
+ }
+
+ $normalized = Auth_OpenID_urinorm($url);
+ if ($normalized === null) {
+ return null;
+ }
+ list($defragged, $frag) = Auth_OpenID::urldefrag($normalized);
+ return $defragged;
+ }
+
+ /**
+ * Replacement (wrapper) for PHP's intval() because it's broken.
+ *
+ * @access private
+ */
+ static function intval($value)
+ {
+ $re = "/^\\d+$/";
+
+ if (!preg_match($re, $value)) {
+ return false;
+ }
+
+ return intval($value);
+ }
+
+ /**
+ * Count the number of bytes in a string independently of
+ * multibyte support conditions.
+ *
+ * @param string $str The string of bytes to count.
+ * @return int The number of bytes in $str.
+ */
+ static function bytes($str)
+ {
+ return strlen(bin2hex($str)) / 2;
+ }
+
+ /**
+ * Get the bytes in a string independently of multibyte support
+ * conditions.
+ */
+ static function toBytes($str)
+ {
+ $hex = bin2hex($str);
+
+ if (!$hex) {
+ return array();
+ }
+
+ $b = array();
+ for ($i = 0; $i < strlen($hex); $i += 2) {
+ $b[] = chr(base_convert(substr($hex, $i, 2), 16, 10));
+ }
+
+ return $b;
+ }
+
+ static function urldefrag($url)
+ {
+ $parts = explode("#", $url, 2);
+
+ if (count($parts) == 1) {
+ return array($parts[0], "");
+ } else {
+ return $parts;
+ }
+ }
+
+ static function filter($callback, &$sequence)
+ {
+ $result = array();
+
+ foreach ($sequence as $item) {
+ if (call_user_func_array($callback, array($item))) {
+ $result[] = $item;
+ }
+ }
+
+ return $result;
+ }
+
+ static function update(&$dest, &$src)
+ {
+ foreach ($src as $k => $v) {
+ $dest[$k] = $v;
+ }
+ }
+
+ /**
+ * Wrap PHP's standard error_log functionality. Use this to
+ * perform all logging. It will interpolate any additional
+ * arguments into the format string before logging.
+ *
+ * @param string $format_string The sprintf format for the message
+ */
+ static function log($format_string)
+ {
+ $args = func_get_args();
+ $message = call_user_func_array('sprintf', $args);
+ error_log($message);
+ }
+
+ static function autoSubmitHTML($form, $title="OpenId transaction in progress")
+ {
+ return("<html>".
+ "<head><title>".
+ $title .
+ "</title></head>".
+ "<body onload='document.forms[0].submit();'>".
+ $form .
+ "<script>".
+ "var elements = document.forms[0].elements;".
+ "for (var i = 0; i < elements.length; i++) {".
+ " elements[i].style.display = \"none\";".
+ "}".
+ "</script>".
+ "</body>".
+ "</html>");
+ }
+}
+
+/*
+ * Function to run when this file is included.
+ * Abstracted to a function to make life easier
+ * for some PHP optimizers.
+ */
+function Auth_OpenID_include_init() {
+ if (Auth_OpenID_getMathLib() === null) {
+ Auth_OpenID_setNoMathSupport();
+ }
+}
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php
new file mode 100644
index 000000000..7370715e3
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php
@@ -0,0 +1,1022 @@
+<?php
+
+/**
+ * Implements the OpenID attribute exchange specification, version 1.0
+ * as of svn revision 370 from openid.net svn.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Require utility classes and functions for the consumer.
+ */
+require_once "Auth/OpenID/Extension.php";
+require_once "Auth/OpenID/Message.php";
+require_once "Auth/OpenID/TrustRoot.php";
+
+define('Auth_OpenID_AX_NS_URI',
+ 'http://openid.net/srv/ax/1.0');
+
+// Use this as the 'count' value for an attribute in a FetchRequest to
+// ask for as many values as the OP can provide.
+define('Auth_OpenID_AX_UNLIMITED_VALUES', 'unlimited');
+
+// Minimum supported alias length in characters. Here for
+// completeness.
+define('Auth_OpenID_AX_MINIMUM_SUPPORTED_ALIAS_LENGTH', 32);
+
+/**
+ * AX utility class.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX {
+ /**
+ * @param mixed $thing Any object which may be an
+ * Auth_OpenID_AX_Error object.
+ *
+ * @return bool true if $thing is an Auth_OpenID_AX_Error; false
+ * if not.
+ */
+ static function isError($thing)
+ {
+ return is_a($thing, 'Auth_OpenID_AX_Error');
+ }
+}
+
+/**
+ * Check an alias for invalid characters; raise AXError if any are
+ * found. Return None if the alias is valid.
+ */
+function Auth_OpenID_AX_checkAlias($alias)
+{
+ if (strpos($alias, ',') !== false) {
+ return new Auth_OpenID_AX_Error(sprintf(
+ "Alias %s must not contain comma", $alias));
+ }
+ if (strpos($alias, '.') !== false) {
+ return new Auth_OpenID_AX_Error(sprintf(
+ "Alias %s must not contain period", $alias));
+ }
+
+ return true;
+}
+
+/**
+ * Results from data that does not meet the attribute exchange 1.0
+ * specification
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_Error {
+ function Auth_OpenID_AX_Error($message=null)
+ {
+ $this->message = $message;
+ }
+}
+
+/**
+ * Abstract class containing common code for attribute exchange
+ * messages.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_Message extends Auth_OpenID_Extension {
+ /**
+ * ns_alias: The preferred namespace alias for attribute exchange
+ * messages
+ */
+ var $ns_alias = 'ax';
+
+ /**
+ * mode: The type of this attribute exchange message. This must be
+ * overridden in subclasses.
+ */
+ var $mode = null;
+
+ var $ns_uri = Auth_OpenID_AX_NS_URI;
+
+ /**
+ * Return Auth_OpenID_AX_Error if the mode in the attribute
+ * exchange arguments does not match what is expected for this
+ * class; true otherwise.
+ *
+ * @access private
+ */
+ function _checkMode($ax_args)
+ {
+ $mode = Auth_OpenID::arrayGet($ax_args, 'mode');
+ if ($mode != $this->mode) {
+ return new Auth_OpenID_AX_Error(
+ sprintf(
+ "Expected mode '%s'; got '%s'",
+ $this->mode, $mode));
+ }
+
+ return true;
+ }
+
+ /**
+ * Return a set of attribute exchange arguments containing the
+ * basic information that must be in every attribute exchange
+ * message.
+ *
+ * @access private
+ */
+ function _newArgs()
+ {
+ return array('mode' => $this->mode);
+ }
+}
+
+/**
+ * Represents a single attribute in an attribute exchange
+ * request. This should be added to an AXRequest object in order to
+ * request the attribute.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_AttrInfo {
+ /**
+ * Construct an attribute information object. Do not call this
+ * directly; call make(...) instead.
+ *
+ * @param string $type_uri The type URI for this attribute.
+ *
+ * @param int $count The number of values of this type to request.
+ *
+ * @param bool $required Whether the attribute will be marked as
+ * required in the request.
+ *
+ * @param string $alias The name that should be given to this
+ * attribute in the request.
+ */
+ function Auth_OpenID_AX_AttrInfo($type_uri, $count, $required,
+ $alias)
+ {
+ /**
+ * required: Whether the attribute will be marked as required
+ * when presented to the subject of the attribute exchange
+ * request.
+ */
+ $this->required = $required;
+
+ /**
+ * count: How many values of this type to request from the
+ * subject. Defaults to one.
+ */
+ $this->count = $count;
+
+ /**
+ * type_uri: The identifier that determines what the attribute
+ * represents and how it is serialized. For example, one type
+ * URI representing dates could represent a Unix timestamp in
+ * base 10 and another could represent a human-readable
+ * string.
+ */
+ $this->type_uri = $type_uri;
+
+ /**
+ * alias: The name that should be given to this attribute in
+ * the request. If it is not supplied, a generic name will be
+ * assigned. For example, if you want to call a Unix timestamp
+ * value 'tstamp', set its alias to that value. If two
+ * attributes in the same message request to use the same
+ * alias, the request will fail to be generated.
+ */
+ $this->alias = $alias;
+ }
+
+ /**
+ * Construct an attribute information object. For parameter
+ * details, see the constructor.
+ */
+ static function make($type_uri, $count=1, $required=false,
+ $alias=null)
+ {
+ if ($alias !== null) {
+ $result = Auth_OpenID_AX_checkAlias($alias);
+
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+ }
+
+ return new Auth_OpenID_AX_AttrInfo($type_uri, $count, $required,
+ $alias);
+ }
+
+ /**
+ * When processing a request for this attribute, the OP should
+ * call this method to determine whether all available attribute
+ * values were requested. If self.count == UNLIMITED_VALUES, this
+ * returns True. Otherwise this returns False, in which case
+ * self.count is an integer.
+ */
+ function wantsUnlimitedValues()
+ {
+ return $this->count === Auth_OpenID_AX_UNLIMITED_VALUES;
+ }
+}
+
+/**
+ * Given a namespace mapping and a string containing a comma-separated
+ * list of namespace aliases, return a list of type URIs that
+ * correspond to those aliases.
+ *
+ * @param $namespace_map The mapping from namespace URI to alias
+ * @param $alias_list_s The string containing the comma-separated
+ * list of aliases. May also be None for convenience.
+ *
+ * @return $seq The list of namespace URIs that corresponds to the
+ * supplied list of aliases. If the string was zero-length or None, an
+ * empty list will be returned.
+ *
+ * return null If an alias is present in the list of aliases but
+ * is not present in the namespace map.
+ */
+function Auth_OpenID_AX_toTypeURIs($namespace_map, $alias_list_s)
+{
+ $uris = array();
+
+ if ($alias_list_s) {
+ foreach (explode(',', $alias_list_s) as $alias) {
+ $type_uri = $namespace_map->getNamespaceURI($alias);
+ if ($type_uri === null) {
+ // raise KeyError(
+ // 'No type is defined for attribute name %r' % (alias,))
+ return new Auth_OpenID_AX_Error(
+ sprintf('No type is defined for attribute name %s',
+ $alias)
+ );
+ } else {
+ $uris[] = $type_uri;
+ }
+ }
+ }
+
+ return $uris;
+}
+
+/**
+ * An attribute exchange 'fetch_request' message. This message is sent
+ * by a relying party when it wishes to obtain attributes about the
+ * subject of an OpenID authentication request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
+
+ var $mode = 'fetch_request';
+
+ function Auth_OpenID_AX_FetchRequest($update_url=null)
+ {
+ /**
+ * requested_attributes: The attributes that have been
+ * requested thus far, indexed by the type URI.
+ */
+ $this->requested_attributes = array();
+
+ /**
+ * update_url: A URL that will accept responses for this
+ * attribute exchange request, even in the absence of the user
+ * who made this request.
+ */
+ $this->update_url = $update_url;
+ }
+
+ /**
+ * Add an attribute to this attribute exchange request.
+ *
+ * @param attribute: The attribute that is being requested
+ * @return true on success, false when the requested attribute is
+ * already present in this fetch request.
+ */
+ function add($attribute)
+ {
+ if ($this->contains($attribute->type_uri)) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("The attribute %s has already been requested",
+ $attribute->type_uri));
+ }
+
+ $this->requested_attributes[$attribute->type_uri] = $attribute;
+
+ return true;
+ }
+
+ /**
+ * Get the serialized form of this attribute fetch request.
+ *
+ * @returns Auth_OpenID_AX_FetchRequest The fetch request message parameters
+ */
+ function getExtensionArgs()
+ {
+ $aliases = new Auth_OpenID_NamespaceMap();
+
+ $required = array();
+ $if_available = array();
+
+ $ax_args = $this->_newArgs();
+
+ foreach ($this->requested_attributes as $type_uri => $attribute) {
+ if ($attribute->alias === null) {
+ $alias = $aliases->add($type_uri);
+ } else {
+ $alias = $aliases->addAlias($type_uri, $attribute->alias);
+
+ if ($alias === null) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Could not add alias %s for URI %s",
+ $attribute->alias, $type_uri
+ ));
+ }
+ }
+
+ if ($attribute->required) {
+ $required[] = $alias;
+ } else {
+ $if_available[] = $alias;
+ }
+
+ if ($attribute->count != 1) {
+ $ax_args['count.' . $alias] = strval($attribute->count);
+ }
+
+ $ax_args['type.' . $alias] = $type_uri;
+ }
+
+ if ($required) {
+ $ax_args['required'] = implode(',', $required);
+ }
+
+ if ($if_available) {
+ $ax_args['if_available'] = implode(',', $if_available);
+ }
+
+ return $ax_args;
+ }
+
+ /**
+ * Get the type URIs for all attributes that have been marked as
+ * required.
+ *
+ * @return A list of the type URIs for attributes that have been
+ * marked as required.
+ */
+ function getRequiredAttrs()
+ {
+ $required = array();
+ foreach ($this->requested_attributes as $type_uri => $attribute) {
+ if ($attribute->required) {
+ $required[] = $type_uri;
+ }
+ }
+
+ return $required;
+ }
+
+ /**
+ * Extract a FetchRequest from an OpenID message
+ *
+ * @param request: The OpenID request containing the attribute
+ * fetch request
+ *
+ * @returns mixed An Auth_OpenID_AX_Error or the
+ * Auth_OpenID_AX_FetchRequest extracted from the request message if
+ * successful
+ */
+ static function fromOpenIDRequest($request)
+ {
+ $m = $request->message;
+ $obj = new Auth_OpenID_AX_FetchRequest();
+ $ax_args = $m->getArgs($obj->ns_uri);
+
+ $result = $obj->parseExtensionArgs($ax_args);
+
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+
+ if ($obj->update_url) {
+ // Update URL must match the openid.realm of the
+ // underlying OpenID 2 message.
+ $realm = $m->getArg(Auth_OpenID_OPENID_NS, 'realm',
+ $m->getArg(
+ Auth_OpenID_OPENID_NS,
+ 'return_to'));
+
+ if (!$realm) {
+ $obj = new Auth_OpenID_AX_Error(
+ sprintf("Cannot validate update_url %s " .
+ "against absent realm", $obj->update_url));
+ } else if (!Auth_OpenID_TrustRoot::match($realm,
+ $obj->update_url)) {
+ $obj = new Auth_OpenID_AX_Error(
+ sprintf("Update URL %s failed validation against realm %s",
+ $obj->update_url, $realm));
+ }
+ }
+
+ return $obj;
+ }
+
+ /**
+ * Given attribute exchange arguments, populate this FetchRequest.
+ *
+ * @return $result Auth_OpenID_AX_Error if the data to be parsed
+ * does not follow the attribute exchange specification. At least
+ * when 'if_available' or 'required' is not specified for a
+ * particular attribute type. Returns true otherwise.
+ */
+ function parseExtensionArgs($ax_args)
+ {
+ $result = $this->_checkMode($ax_args);
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+
+ $aliases = new Auth_OpenID_NamespaceMap();
+
+ foreach ($ax_args as $key => $value) {
+ if (strpos($key, 'type.') === 0) {
+ $alias = substr($key, 5);
+ $type_uri = $value;
+
+ $alias = $aliases->addAlias($type_uri, $alias);
+
+ if ($alias === null) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Could not add alias %s for URI %s",
+ $alias, $type_uri)
+ );
+ }
+
+ $count_s = Auth_OpenID::arrayGet($ax_args, 'count.' . $alias);
+ if ($count_s) {
+ $count = Auth_OpenID::intval($count_s);
+ if (($count === false) &&
+ ($count_s === Auth_OpenID_AX_UNLIMITED_VALUES)) {
+ $count = $count_s;
+ }
+ } else {
+ $count = 1;
+ }
+
+ if ($count === false) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Integer value expected for %s, got %s",
+ 'count.' . $alias, $count_s));
+ }
+
+ $attrinfo = Auth_OpenID_AX_AttrInfo::make($type_uri, $count,
+ false, $alias);
+
+ if (Auth_OpenID_AX::isError($attrinfo)) {
+ return $attrinfo;
+ }
+
+ $this->add($attrinfo);
+ }
+ }
+
+ $required = Auth_OpenID_AX_toTypeURIs($aliases,
+ Auth_OpenID::arrayGet($ax_args, 'required'));
+
+ foreach ($required as $type_uri) {
+ $attrib = $this->requested_attributes[$type_uri];
+ $attrib->required = true;
+ }
+
+ $if_available = Auth_OpenID_AX_toTypeURIs($aliases,
+ Auth_OpenID::arrayGet($ax_args, 'if_available'));
+
+ $all_type_uris = array_merge($required, $if_available);
+
+ foreach ($aliases->iterNamespaceURIs() as $type_uri) {
+ if (!in_array($type_uri, $all_type_uris)) {
+ return new Auth_OpenID_AX_Error(
+ sprintf('Type URI %s was in the request but not ' .
+ 'present in "required" or "if_available"',
+ $type_uri));
+
+ }
+ }
+
+ $this->update_url = Auth_OpenID::arrayGet($ax_args, 'update_url');
+
+ return true;
+ }
+
+ /**
+ * Iterate over the AttrInfo objects that are contained in this
+ * fetch_request.
+ */
+ function iterAttrs()
+ {
+ return array_values($this->requested_attributes);
+ }
+
+ function iterTypes()
+ {
+ return array_keys($this->requested_attributes);
+ }
+
+ /**
+ * Is the given type URI present in this fetch_request?
+ */
+ function contains($type_uri)
+ {
+ return in_array($type_uri, $this->iterTypes());
+ }
+}
+
+/**
+ * An abstract class that implements a message that has attribute keys
+ * and values. It contains the common code between fetch_response and
+ * store_request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
+
+ function Auth_OpenID_AX_KeyValueMessage()
+ {
+ $this->data = array();
+ }
+
+ /**
+ * Add a single value for the given attribute type to the
+ * message. If there are already values specified for this type,
+ * this value will be sent in addition to the values already
+ * specified.
+ *
+ * @param type_uri: The URI for the attribute
+ * @param value: The value to add to the response to the relying
+ * party for this attribute
+ * @return null
+ */
+ function addValue($type_uri, $value)
+ {
+ if (!array_key_exists($type_uri, $this->data)) {
+ $this->data[$type_uri] = array();
+ }
+
+ $values =& $this->data[$type_uri];
+ $values[] = $value;
+ }
+
+ /**
+ * Set the values for the given attribute type. This replaces any
+ * values that have already been set for this attribute.
+ *
+ * @param type_uri: The URI for the attribute
+ * @param values: A list of values to send for this attribute.
+ */
+ function setValues($type_uri, &$values)
+ {
+ $this->data[$type_uri] =& $values;
+ }
+
+ /**
+ * Get the extension arguments for the key/value pairs contained
+ * in this message.
+ *
+ * @param aliases: An alias mapping. Set to None if you don't care
+ * about the aliases for this request.
+ *
+ * @access private
+ */
+ function _getExtensionKVArgs($aliases)
+ {
+ if ($aliases === null) {
+ $aliases = new Auth_OpenID_NamespaceMap();
+ }
+
+ $ax_args = array();
+
+ foreach ($this->data as $type_uri => $values) {
+ $alias = $aliases->add($type_uri);
+
+ $ax_args['type.' . $alias] = $type_uri;
+ $ax_args['count.' . $alias] = strval(count($values));
+
+ foreach ($values as $i => $value) {
+ $key = sprintf('value.%s.%d', $alias, $i + 1);
+ $ax_args[$key] = $value;
+ }
+ }
+
+ return $ax_args;
+ }
+
+ /**
+ * Parse attribute exchange key/value arguments into this object.
+ *
+ * @param ax_args: The attribute exchange fetch_response
+ * arguments, with namespacing removed.
+ *
+ * @return Auth_OpenID_AX_Error or true
+ */
+ function parseExtensionArgs($ax_args)
+ {
+ $result = $this->_checkMode($ax_args);
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+
+ $aliases = new Auth_OpenID_NamespaceMap();
+
+ foreach ($ax_args as $key => $value) {
+ if (strpos($key, 'type.') === 0) {
+ $type_uri = $value;
+ $alias = substr($key, 5);
+
+ $result = Auth_OpenID_AX_checkAlias($alias);
+
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+
+ $alias = $aliases->addAlias($type_uri, $alias);
+
+ if ($alias === null) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Could not add alias %s for URI %s",
+ $alias, $type_uri)
+ );
+ }
+ }
+ }
+
+ foreach ($aliases->iteritems() as $pair) {
+ list($type_uri, $alias) = $pair;
+
+ if (array_key_exists('count.' . $alias, $ax_args) && ($ax_args['count.' . $alias] !== Auth_OpenID_AX_UNLIMITED_VALUES)) {
+
+ $count_key = 'count.' . $alias;
+ $count_s = $ax_args[$count_key];
+
+ $count = Auth_OpenID::intval($count_s);
+
+ if ($count === false) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Integer value expected for %s, got %s",
+ 'count. %s' . $alias, $count_s,
+ Auth_OpenID_AX_UNLIMITED_VALUES)
+ );
+ }
+
+ $values = array();
+ for ($i = 1; $i < $count + 1; $i++) {
+ $value_key = sprintf('value.%s.%d', $alias, $i);
+
+ if (!array_key_exists($value_key, $ax_args)) {
+ return new Auth_OpenID_AX_Error(
+ sprintf(
+ "No value found for key %s",
+ $value_key));
+ }
+
+ $value = $ax_args[$value_key];
+ $values[] = $value;
+ }
+ } else {
+ $key = 'value.' . $alias;
+
+ if (!array_key_exists($key, $ax_args)) {
+ return new Auth_OpenID_AX_Error(
+ sprintf(
+ "No value found for key %s",
+ $key));
+ }
+
+ $value = $ax_args['value.' . $alias];
+
+ if ($value == '') {
+ $values = array();
+ } else {
+ $values = array($value);
+ }
+ }
+
+ $this->data[$type_uri] = $values;
+ }
+
+ return true;
+ }
+
+ /**
+ * Get a single value for an attribute. If no value was sent for
+ * this attribute, use the supplied default. If there is more than
+ * one value for this attribute, this method will fail.
+ *
+ * @param type_uri: The URI for the attribute
+ * @param default: The value to return if the attribute was not
+ * sent in the fetch_response.
+ *
+ * @return $value Auth_OpenID_AX_Error on failure or the value of
+ * the attribute in the fetch_response message, or the default
+ * supplied
+ */
+ function getSingle($type_uri, $default=null)
+ {
+ $values = Auth_OpenID::arrayGet($this->data, $type_uri);
+ if (!$values) {
+ return $default;
+ } else if (count($values) == 1) {
+ return $values[0];
+ } else {
+ return new Auth_OpenID_AX_Error(
+ sprintf('More than one value present for %s',
+ $type_uri)
+ );
+ }
+ }
+
+ /**
+ * Get the list of values for this attribute in the
+ * fetch_response.
+ *
+ * XXX: what to do if the values are not present? default
+ * parameter? this is funny because it's always supposed to return
+ * a list, so the default may break that, though it's provided by
+ * the user's code, so it might be okay. If no default is
+ * supplied, should the return be None or []?
+ *
+ * @param type_uri: The URI of the attribute
+ *
+ * @return $values The list of values for this attribute in the
+ * response. May be an empty list. If the attribute was not sent
+ * in the response, returns Auth_OpenID_AX_Error.
+ */
+ function get($type_uri)
+ {
+ if (array_key_exists($type_uri, $this->data)) {
+ return $this->data[$type_uri];
+ } else {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Type URI %s not found in response",
+ $type_uri)
+ );
+ }
+ }
+
+ /**
+ * Get the number of responses for a particular attribute in this
+ * fetch_response message.
+ *
+ * @param type_uri: The URI of the attribute
+ *
+ * @returns int The number of values sent for this attribute. If
+ * the attribute was not sent in the response, returns
+ * Auth_OpenID_AX_Error.
+ */
+ function count($type_uri)
+ {
+ if (array_key_exists($type_uri, $this->data)) {
+ return count($this->get($type_uri));
+ } else {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Type URI %s not found in response",
+ $type_uri)
+ );
+ }
+ }
+}
+
+/**
+ * A fetch_response attribute exchange message.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {
+ var $mode = 'fetch_response';
+
+ function Auth_OpenID_AX_FetchResponse($update_url=null)
+ {
+ $this->Auth_OpenID_AX_KeyValueMessage();
+ $this->update_url = $update_url;
+ }
+
+ /**
+ * Serialize this object into arguments in the attribute exchange
+ * namespace
+ *
+ * @return $args The dictionary of unqualified attribute exchange
+ * arguments that represent this fetch_response, or
+ * Auth_OpenID_AX_Error on error.
+ */
+ function getExtensionArgs($request=null)
+ {
+ $aliases = new Auth_OpenID_NamespaceMap();
+
+ $zero_value_types = array();
+
+ if ($request !== null) {
+ // Validate the data in the context of the request (the
+ // same attributes should be present in each, and the
+ // counts in the response must be no more than the counts
+ // in the request)
+
+ foreach ($this->data as $type_uri => $unused) {
+ if (!$request->contains($type_uri)) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Response attribute not present in request: %s",
+ $type_uri)
+ );
+ }
+ }
+
+ foreach ($request->iterAttrs() as $attr_info) {
+ // Copy the aliases from the request so that reading
+ // the response in light of the request is easier
+ if ($attr_info->alias === null) {
+ $aliases->add($attr_info->type_uri);
+ } else {
+ $alias = $aliases->addAlias($attr_info->type_uri,
+ $attr_info->alias);
+
+ if ($alias === null) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("Could not add alias %s for URI %s",
+ $attr_info->alias, $attr_info->type_uri)
+ );
+ }
+ }
+
+ if (array_key_exists($attr_info->type_uri, $this->data)) {
+ $values = $this->data[$attr_info->type_uri];
+ } else {
+ $values = array();
+ $zero_value_types[] = $attr_info;
+ }
+
+ if (($attr_info->count != Auth_OpenID_AX_UNLIMITED_VALUES) &&
+ ($attr_info->count < count($values))) {
+ return new Auth_OpenID_AX_Error(
+ sprintf("More than the number of requested values " .
+ "were specified for %s",
+ $attr_info->type_uri)
+ );
+ }
+ }
+ }
+
+ $kv_args = $this->_getExtensionKVArgs($aliases);
+
+ // Add the KV args into the response with the args that are
+ // unique to the fetch_response
+ $ax_args = $this->_newArgs();
+
+ // For each requested attribute, put its type/alias and count
+ // into the response even if no data were returned.
+ foreach ($zero_value_types as $attr_info) {
+ $alias = $aliases->getAlias($attr_info->type_uri);
+ $kv_args['type.' . $alias] = $attr_info->type_uri;
+ $kv_args['count.' . $alias] = '0';
+ }
+
+ $update_url = null;
+ if ($request) {
+ $update_url = $request->update_url;
+ } else {
+ $update_url = $this->update_url;
+ }
+
+ if ($update_url) {
+ $ax_args['update_url'] = $update_url;
+ }
+
+ Auth_OpenID::update($ax_args, $kv_args);
+
+ return $ax_args;
+ }
+
+ /**
+ * @return $result Auth_OpenID_AX_Error on failure or true on
+ * success.
+ */
+ function parseExtensionArgs($ax_args)
+ {
+ $result = parent::parseExtensionArgs($ax_args);
+
+ if (Auth_OpenID_AX::isError($result)) {
+ return $result;
+ }
+
+ $this->update_url = Auth_OpenID::arrayGet($ax_args, 'update_url');
+
+ return true;
+ }
+
+ /**
+ * Construct a FetchResponse object from an OpenID library
+ * SuccessResponse object.
+ *
+ * @param success_response: A successful id_res response object
+ *
+ * @param signed: Whether non-signed args should be processsed. If
+ * True (the default), only signed arguments will be processsed.
+ *
+ * @return $response A FetchResponse containing the data from the
+ * OpenID message
+ */
+ static function fromSuccessResponse($success_response, $signed=true)
+ {
+ $obj = new Auth_OpenID_AX_FetchResponse();
+ if ($signed) {
+ $ax_args = $success_response->getSignedNS($obj->ns_uri);
+ } else {
+ $ax_args = $success_response->message->getArgs($obj->ns_uri);
+ }
+ if ($ax_args === null || Auth_OpenID::isFailure($ax_args) ||
+ sizeof($ax_args) == 0) {
+ return null;
+ }
+
+ $result = $obj->parseExtensionArgs($ax_args);
+ if (Auth_OpenID_AX::isError($result)) {
+ #XXX log me
+ return null;
+ }
+ return $obj;
+ }
+}
+
+/**
+ * A store request attribute exchange message representation.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_StoreRequest extends Auth_OpenID_AX_KeyValueMessage {
+ var $mode = 'store_request';
+
+ /**
+ * @param array $aliases The namespace aliases to use when making
+ * this store response. Leave as None to use defaults.
+ */
+ function getExtensionArgs($aliases=null)
+ {
+ $ax_args = $this->_newArgs();
+ $kv_args = $this->_getExtensionKVArgs($aliases);
+ Auth_OpenID::update($ax_args, $kv_args);
+ return $ax_args;
+ }
+}
+
+/**
+ * An indication that the store request was processed along with this
+ * OpenID transaction. Use make(), NOT the constructor, to create
+ * response objects.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {
+ var $SUCCESS_MODE = 'store_response_success';
+ var $FAILURE_MODE = 'store_response_failure';
+
+ /**
+ * Returns Auth_OpenID_AX_Error on error or an
+ * Auth_OpenID_AX_StoreResponse object on success.
+ */
+ function make($succeeded=true, $error_message=null)
+ {
+ if (($succeeded) && ($error_message !== null)) {
+ return new Auth_OpenID_AX_Error('An error message may only be '.
+ 'included in a failing fetch response');
+ }
+
+ return new Auth_OpenID_AX_StoreResponse($succeeded, $error_message);
+ }
+
+ function Auth_OpenID_AX_StoreResponse($succeeded=true, $error_message=null)
+ {
+ if ($succeeded) {
+ $this->mode = $this->SUCCESS_MODE;
+ } else {
+ $this->mode = $this->FAILURE_MODE;
+ }
+
+ $this->error_message = $error_message;
+ }
+
+ /**
+ * Was this response a success response?
+ */
+ function succeeded()
+ {
+ return $this->mode == $this->SUCCESS_MODE;
+ }
+
+ function getExtensionArgs()
+ {
+ $ax_args = $this->_newArgs();
+ if ((!$this->succeeded()) && $this->error_message) {
+ $ax_args['error'] = $this->error_message;
+ }
+
+ return $ax_args;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php
new file mode 100644
index 000000000..2729138eb
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php
@@ -0,0 +1,610 @@
+<?php
+
+/**
+ * This module contains code for dealing with associations between
+ * consumers and servers.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/CryptUtil.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/KVForm.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/HMAC.php';
+
+/**
+ * This class represents an association between a server and a
+ * consumer. In general, users of this library will never see
+ * instances of this object. The only exception is if you implement a
+ * custom {@link Auth_OpenID_OpenIDStore}.
+ *
+ * If you do implement such a store, it will need to store the values
+ * of the handle, secret, issued, lifetime, and assoc_type instance
+ * variables.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Association {
+
+ /**
+ * This is a HMAC-SHA1 specific value.
+ *
+ * @access private
+ */
+ var $SIG_LENGTH = 20;
+
+ /**
+ * The ordering and name of keys as stored by serialize.
+ *
+ * @access private
+ */
+ var $assoc_keys = array(
+ 'version',
+ 'handle',
+ 'secret',
+ 'issued',
+ 'lifetime',
+ 'assoc_type'
+ );
+
+ var $_macs = array(
+ 'HMAC-SHA1' => 'Auth_OpenID_HMACSHA1',
+ 'HMAC-SHA256' => 'Auth_OpenID_HMACSHA256'
+ );
+
+ /**
+ * This is an alternate constructor (factory method) used by the
+ * OpenID consumer library to create associations. OpenID store
+ * implementations shouldn't use this constructor.
+ *
+ * @access private
+ *
+ * @param integer $expires_in This is the amount of time this
+ * association is good for, measured in seconds since the
+ * association was issued.
+ *
+ * @param string $handle This is the handle the server gave this
+ * association.
+ *
+ * @param string secret This is the shared secret the server
+ * generated for this association.
+ *
+ * @param assoc_type This is the type of association this
+ * instance represents. The only valid values of this field at
+ * this time is 'HMAC-SHA1' and 'HMAC-SHA256', but new types may
+ * be defined in the future.
+ *
+ * @return association An {@link Auth_OpenID_Association}
+ * instance.
+ */
+ static function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
+ {
+ $issued = time();
+ $lifetime = $expires_in;
+ return new Auth_OpenID_Association($handle, $secret,
+ $issued, $lifetime, $assoc_type);
+ }
+
+ /**
+ * This is the standard constructor for creating an association.
+ * The library should create all of the necessary associations, so
+ * this constructor is not part of the external API.
+ *
+ * @access private
+ *
+ * @param string $handle This is the handle the server gave this
+ * association.
+ *
+ * @param string $secret This is the shared secret the server
+ * generated for this association.
+ *
+ * @param integer $issued This is the time this association was
+ * issued, in seconds since 00:00 GMT, January 1, 1970. (ie, a
+ * unix timestamp)
+ *
+ * @param integer $lifetime This is the amount of time this
+ * association is good for, measured in seconds since the
+ * association was issued.
+ *
+ * @param string $assoc_type This is the type of association this
+ * instance represents. The only valid values of this field at
+ * this time is 'HMAC-SHA1' and 'HMAC-SHA256', but new types may
+ * be defined in the future.
+ */
+ function Auth_OpenID_Association(
+ $handle, $secret, $issued, $lifetime, $assoc_type)
+ {
+ if (!in_array($assoc_type,
+ Auth_OpenID_getSupportedAssociationTypes(), true)) {
+ $fmt = 'Unsupported association type (%s)';
+ trigger_error(sprintf($fmt, $assoc_type), E_USER_ERROR);
+ }
+
+ $this->handle = $handle;
+ $this->secret = $secret;
+ $this->issued = $issued;
+ $this->lifetime = $lifetime;
+ $this->assoc_type = $assoc_type;
+ }
+
+ /**
+ * This returns the number of seconds this association is still
+ * valid for, or 0 if the association is no longer valid.
+ *
+ * @return integer $seconds The number of seconds this association
+ * is still valid for, or 0 if the association is no longer valid.
+ */
+ function getExpiresIn($now = null)
+ {
+ if ($now == null) {
+ $now = time();
+ }
+
+ return max(0, $this->issued + $this->lifetime - $now);
+ }
+
+ /**
+ * This checks to see if two {@link Auth_OpenID_Association}
+ * instances represent the same association.
+ *
+ * @return bool $result true if the two instances represent the
+ * same association, false otherwise.
+ */
+ function equal($other)
+ {
+ return ((gettype($this) == gettype($other))
+ && ($this->handle == $other->handle)
+ && ($this->secret == $other->secret)
+ && ($this->issued == $other->issued)
+ && ($this->lifetime == $other->lifetime)
+ && ($this->assoc_type == $other->assoc_type));
+ }
+
+ /**
+ * Convert an association to KV form.
+ *
+ * @return string $result String in KV form suitable for
+ * deserialization by deserialize.
+ */
+ function serialize()
+ {
+ $data = array(
+ 'version' => '2',
+ 'handle' => $this->handle,
+ 'secret' => base64_encode($this->secret),
+ 'issued' => strval(intval($this->issued)),
+ 'lifetime' => strval(intval($this->lifetime)),
+ 'assoc_type' => $this->assoc_type
+ );
+
+ assert(array_keys($data) == $this->assoc_keys);
+
+ return Auth_OpenID_KVForm::fromArray($data, $strict = true);
+ }
+
+ /**
+ * Parse an association as stored by serialize(). This is the
+ * inverse of serialize.
+ *
+ * @param string $assoc_s Association as serialized by serialize()
+ * @return Auth_OpenID_Association $result instance of this class
+ */
+ static function deserialize($class_name, $assoc_s)
+ {
+ $pairs = Auth_OpenID_KVForm::toArray($assoc_s, $strict = true);
+ $keys = array();
+ $values = array();
+ foreach ($pairs as $key => $value) {
+ if (is_array($value)) {
+ list($key, $value) = $value;
+ }
+ $keys[] = $key;
+ $values[] = $value;
+ }
+
+ $class_vars = get_class_vars($class_name);
+ $class_assoc_keys = $class_vars['assoc_keys'];
+
+ sort($keys);
+ sort($class_assoc_keys);
+
+ if ($keys != $class_assoc_keys) {
+ trigger_error('Unexpected key values: ' . var_export($keys, true),
+ E_USER_WARNING);
+ return null;
+ }
+
+ $version = $pairs['version'];
+ $handle = $pairs['handle'];
+ $secret = $pairs['secret'];
+ $issued = $pairs['issued'];
+ $lifetime = $pairs['lifetime'];
+ $assoc_type = $pairs['assoc_type'];
+
+ if ($version != '2') {
+ trigger_error('Unknown version: ' . $version, E_USER_WARNING);
+ return null;
+ }
+
+ $issued = intval($issued);
+ $lifetime = intval($lifetime);
+ $secret = base64_decode($secret);
+
+ return new $class_name(
+ $handle, $secret, $issued, $lifetime, $assoc_type);
+ }
+
+ /**
+ * Generate a signature for a sequence of (key, value) pairs
+ *
+ * @access private
+ * @param array $pairs The pairs to sign, in order. This is an
+ * array of two-tuples.
+ * @return string $signature The binary signature of this sequence
+ * of pairs
+ */
+ function sign($pairs)
+ {
+ $kv = Auth_OpenID_KVForm::fromArray($pairs);
+
+ /* Invalid association types should be caught at constructor */
+ $callback = $this->_macs[$this->assoc_type];
+
+ return call_user_func_array($callback, array($this->secret, $kv));
+ }
+
+ /**
+ * Generate a signature for some fields in a dictionary
+ *
+ * @access private
+ * @param array $fields The fields to sign, in order; this is an
+ * array of strings.
+ * @param array $data Dictionary of values to sign (an array of
+ * string => string pairs).
+ * @return string $signature The signature, base64 encoded
+ */
+ function signMessage($message)
+ {
+ if ($message->hasKey(Auth_OpenID_OPENID_NS, 'sig') ||
+ $message->hasKey(Auth_OpenID_OPENID_NS, 'signed')) {
+ // Already has a sig
+ return null;
+ }
+
+ $extant_handle = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'assoc_handle');
+
+ if ($extant_handle && ($extant_handle != $this->handle)) {
+ // raise ValueError("Message has a different association handle")
+ return null;
+ }
+
+ $signed_message = $message;
+ $signed_message->setArg(Auth_OpenID_OPENID_NS, 'assoc_handle',
+ $this->handle);
+
+ $message_keys = array_keys($signed_message->toPostArgs());
+ $signed_list = array();
+ $signed_prefix = 'openid.';
+
+ foreach ($message_keys as $k) {
+ if (strpos($k, $signed_prefix) === 0) {
+ $signed_list[] = substr($k, strlen($signed_prefix));
+ }
+ }
+
+ $signed_list[] = 'signed';
+ sort($signed_list);
+
+ $signed_message->setArg(Auth_OpenID_OPENID_NS, 'signed',
+ implode(',', $signed_list));
+ $sig = $this->getMessageSignature($signed_message);
+ $signed_message->setArg(Auth_OpenID_OPENID_NS, 'sig', $sig);
+ return $signed_message;
+ }
+
+ /**
+ * Given a {@link Auth_OpenID_Message}, return the key/value pairs
+ * to be signed according to the signed list in the message. If
+ * the message lacks a signed list, return null.
+ *
+ * @access private
+ */
+ function _makePairs($message)
+ {
+ $signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
+ if (!$signed || Auth_OpenID::isFailure($signed)) {
+ // raise ValueError('Message has no signed list: %s' % (message,))
+ return null;
+ }
+
+ $signed_list = explode(',', $signed);
+ $pairs = array();
+ $data = $message->toPostArgs();
+ foreach ($signed_list as $field) {
+ $pairs[] = array($field, Auth_OpenID::arrayGet($data,
+ 'openid.' .
+ $field, ''));
+ }
+ return $pairs;
+ }
+
+ /**
+ * Given an {@link Auth_OpenID_Message}, return the signature for
+ * the signed list in the message.
+ *
+ * @access private
+ */
+ function getMessageSignature($message)
+ {
+ $pairs = $this->_makePairs($message);
+ return base64_encode($this->sign($pairs));
+ }
+
+ /**
+ * Confirm that the signature of these fields matches the
+ * signature contained in the data.
+ *
+ * @access private
+ */
+ function checkMessageSignature($message)
+ {
+ $sig = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'sig');
+
+ if (!$sig || Auth_OpenID::isFailure($sig)) {
+ return false;
+ }
+
+ $calculated_sig = $this->getMessageSignature($message);
+ return Auth_OpenID_CryptUtil::constEq($calculated_sig, $sig);
+ }
+}
+
+function Auth_OpenID_getSecretSize($assoc_type)
+{
+ if ($assoc_type == 'HMAC-SHA1') {
+ return 20;
+ } else if ($assoc_type == 'HMAC-SHA256') {
+ return 32;
+ } else {
+ return null;
+ }
+}
+
+function Auth_OpenID_getAllAssociationTypes()
+{
+ return array('HMAC-SHA1', 'HMAC-SHA256');
+}
+
+function Auth_OpenID_getSupportedAssociationTypes()
+{
+ $a = array('HMAC-SHA1');
+
+ if (Auth_OpenID_HMACSHA256_SUPPORTED) {
+ $a[] = 'HMAC-SHA256';
+ }
+
+ return $a;
+}
+
+function Auth_OpenID_getSessionTypes($assoc_type)
+{
+ $assoc_to_session = array(
+ 'HMAC-SHA1' => array('DH-SHA1', 'no-encryption'));
+
+ if (Auth_OpenID_HMACSHA256_SUPPORTED) {
+ $assoc_to_session['HMAC-SHA256'] =
+ array('DH-SHA256', 'no-encryption');
+ }
+
+ return Auth_OpenID::arrayGet($assoc_to_session, $assoc_type, array());
+}
+
+function Auth_OpenID_checkSessionType($assoc_type, $session_type)
+{
+ if (!in_array($session_type,
+ Auth_OpenID_getSessionTypes($assoc_type))) {
+ return false;
+ }
+
+ return true;
+}
+
+function Auth_OpenID_getDefaultAssociationOrder()
+{
+ $order = array();
+
+ if (!Auth_OpenID_noMathSupport()) {
+ $order[] = array('HMAC-SHA1', 'DH-SHA1');
+
+ if (Auth_OpenID_HMACSHA256_SUPPORTED) {
+ $order[] = array('HMAC-SHA256', 'DH-SHA256');
+ }
+ }
+
+ $order[] = array('HMAC-SHA1', 'no-encryption');
+
+ if (Auth_OpenID_HMACSHA256_SUPPORTED) {
+ $order[] = array('HMAC-SHA256', 'no-encryption');
+ }
+
+ return $order;
+}
+
+function Auth_OpenID_getOnlyEncryptedOrder()
+{
+ $result = array();
+
+ foreach (Auth_OpenID_getDefaultAssociationOrder() as $pair) {
+ list($assoc, $session) = $pair;
+
+ if ($session != 'no-encryption') {
+ if (Auth_OpenID_HMACSHA256_SUPPORTED &&
+ ($assoc == 'HMAC-SHA256')) {
+ $result[] = $pair;
+ } else if ($assoc != 'HMAC-SHA256') {
+ $result[] = $pair;
+ }
+ }
+ }
+
+ return $result;
+}
+
+function Auth_OpenID_getDefaultNegotiator()
+{
+ return new Auth_OpenID_SessionNegotiator(
+ Auth_OpenID_getDefaultAssociationOrder());
+}
+
+function Auth_OpenID_getEncryptedNegotiator()
+{
+ return new Auth_OpenID_SessionNegotiator(
+ Auth_OpenID_getOnlyEncryptedOrder());
+}
+
+/**
+ * A session negotiator controls the allowed and preferred association
+ * types and association session types. Both the {@link
+ * Auth_OpenID_Consumer} and {@link Auth_OpenID_Server} use
+ * negotiators when creating associations.
+ *
+ * You can create and use negotiators if you:
+
+ * - Do not want to do Diffie-Hellman key exchange because you use
+ * transport-layer encryption (e.g. SSL)
+ *
+ * - Want to use only SHA-256 associations
+ *
+ * - Do not want to support plain-text associations over a non-secure
+ * channel
+ *
+ * It is up to you to set a policy for what kinds of associations to
+ * accept. By default, the library will make any kind of association
+ * that is allowed in the OpenID 2.0 specification.
+ *
+ * Use of negotiators in the library
+ * =================================
+ *
+ * When a consumer makes an association request, it calls {@link
+ * getAllowedType} to get the preferred association type and
+ * association session type.
+ *
+ * The server gets a request for a particular association/session type
+ * and calls {@link isAllowed} to determine if it should create an
+ * association. If it is supported, negotiation is complete. If it is
+ * not, the server calls {@link getAllowedType} to get an allowed
+ * association type to return to the consumer.
+ *
+ * If the consumer gets an error response indicating that the
+ * requested association/session type is not supported by the server
+ * that contains an assocation/session type to try, it calls {@link
+ * isAllowed} to determine if it should try again with the given
+ * combination of association/session type.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SessionNegotiator {
+ function Auth_OpenID_SessionNegotiator($allowed_types)
+ {
+ $this->allowed_types = array();
+ $this->setAllowedTypes($allowed_types);
+ }
+
+ /**
+ * Set the allowed association types, checking to make sure each
+ * combination is valid.
+ *
+ * @access private
+ */
+ function setAllowedTypes($allowed_types)
+ {
+ foreach ($allowed_types as $pair) {
+ list($assoc_type, $session_type) = $pair;
+ if (!Auth_OpenID_checkSessionType($assoc_type, $session_type)) {
+ return false;
+ }
+ }
+
+ $this->allowed_types = $allowed_types;
+ return true;
+ }
+
+ /**
+ * Add an association type and session type to the allowed types
+ * list. The assocation/session pairs are tried in the order that
+ * they are added.
+ *
+ * @access private
+ */
+ function addAllowedType($assoc_type, $session_type = null)
+ {
+ if ($this->allowed_types === null) {
+ $this->allowed_types = array();
+ }
+
+ if ($session_type === null) {
+ $available = Auth_OpenID_getSessionTypes($assoc_type);
+
+ if (!$available) {
+ return false;
+ }
+
+ foreach ($available as $session_type) {
+ $this->addAllowedType($assoc_type, $session_type);
+ }
+ } else {
+ if (Auth_OpenID_checkSessionType($assoc_type, $session_type)) {
+ $this->allowed_types[] = array($assoc_type, $session_type);
+ } else {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ // Is this combination of association type and session type allowed?
+ function isAllowed($assoc_type, $session_type)
+ {
+ $assoc_good = in_array(array($assoc_type, $session_type),
+ $this->allowed_types);
+
+ $matches = in_array($session_type,
+ Auth_OpenID_getSessionTypes($assoc_type));
+
+ return ($assoc_good && $matches);
+ }
+
+ /**
+ * Get a pair of assocation type and session type that are
+ * supported.
+ */
+ function getAllowedType()
+ {
+ if (!$this->allowed_types) {
+ return array(null, null);
+ }
+
+ return $this->allowed_types[0];
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php
new file mode 100644
index 000000000..58b46bf27
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php
@@ -0,0 +1,451 @@
+<?php
+
+/**
+ * BigMath: A math library wrapper that abstracts out the underlying
+ * long integer library.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Needed for random number generation
+ */
+require_once 'Auth/OpenID/CryptUtil.php';
+
+/**
+ * Need Auth_OpenID::bytes().
+ */
+require_once 'Auth/OpenID.php';
+
+/**
+ * The superclass of all big-integer math implementations
+ * @access private
+ * @package OpenID
+ */
+class Auth_OpenID_MathLibrary {
+ /**
+ * Given a long integer, returns the number converted to a binary
+ * string. This function accepts long integer values of arbitrary
+ * magnitude and uses the local large-number math library when
+ * available.
+ *
+ * @param integer $long The long number (can be a normal PHP
+ * integer or a number created by one of the available long number
+ * libraries)
+ * @return string $binary The binary version of $long
+ */
+ function longToBinary($long)
+ {
+ $cmp = $this->cmp($long, 0);
+ if ($cmp < 0) {
+ $msg = __FUNCTION__ . " takes only positive integers.";
+ trigger_error($msg, E_USER_ERROR);
+ return null;
+ }
+
+ if ($cmp == 0) {
+ return "\x00";
+ }
+
+ $bytes = array();
+
+ while ($this->cmp($long, 0) > 0) {
+ array_unshift($bytes, $this->mod($long, 256));
+ $long = $this->div($long, pow(2, 8));
+ }
+
+ if ($bytes && ($bytes[0] > 127)) {
+ array_unshift($bytes, 0);
+ }
+
+ $string = '';
+ foreach ($bytes as $byte) {
+ $string .= pack('C', $byte);
+ }
+
+ return $string;
+ }
+
+ /**
+ * Given a binary string, returns the binary string converted to a
+ * long number.
+ *
+ * @param string $binary The binary version of a long number,
+ * probably as a result of calling longToBinary
+ * @return integer $long The long number equivalent of the binary
+ * string $str
+ */
+ function binaryToLong($str)
+ {
+ if ($str === null) {
+ return null;
+ }
+
+ // Use array_merge to return a zero-indexed array instead of a
+ // one-indexed array.
+ $bytes = array_merge(unpack('C*', $str));
+
+ $n = $this->init(0);
+
+ if ($bytes && ($bytes[0] > 127)) {
+ trigger_error("bytesToNum works only for positive integers.",
+ E_USER_WARNING);
+ return null;
+ }
+
+ foreach ($bytes as $byte) {
+ $n = $this->mul($n, pow(2, 8));
+ $n = $this->add($n, $byte);
+ }
+
+ return $n;
+ }
+
+ function base64ToLong($str)
+ {
+ $b64 = base64_decode($str);
+
+ if ($b64 === false) {
+ return false;
+ }
+
+ return $this->binaryToLong($b64);
+ }
+
+ function longToBase64($str)
+ {
+ return base64_encode($this->longToBinary($str));
+ }
+
+ /**
+ * Returns a random number in the specified range. This function
+ * accepts $start, $stop, and $step values of arbitrary magnitude
+ * and will utilize the local large-number math library when
+ * available.
+ *
+ * @param integer $start The start of the range, or the minimum
+ * random number to return
+ * @param integer $stop The end of the range, or the maximum
+ * random number to return
+ * @param integer $step The step size, such that $result - ($step
+ * * N) = $start for some N
+ * @return integer $result The resulting randomly-generated number
+ */
+ function rand($stop)
+ {
+ static $duplicate_cache = array();
+
+ // Used as the key for the duplicate cache
+ $rbytes = $this->longToBinary($stop);
+
+ if (array_key_exists($rbytes, $duplicate_cache)) {
+ list($duplicate, $nbytes) = $duplicate_cache[$rbytes];
+ } else {
+ if ($rbytes[0] == "\x00") {
+ $nbytes = Auth_OpenID::bytes($rbytes) - 1;
+ } else {
+ $nbytes = Auth_OpenID::bytes($rbytes);
+ }
+
+ $mxrand = $this->pow(256, $nbytes);
+
+ // If we get a number less than this, then it is in the
+ // duplicated range.
+ $duplicate = $this->mod($mxrand, $stop);
+
+ if (count($duplicate_cache) > 10) {
+ $duplicate_cache = array();
+ }
+
+ $duplicate_cache[$rbytes] = array($duplicate, $nbytes);
+ }
+
+ do {
+ $bytes = "\x00" . Auth_OpenID_CryptUtil::getBytes($nbytes);
+ $n = $this->binaryToLong($bytes);
+ // Keep looping if this value is in the low duplicated range
+ } while ($this->cmp($n, $duplicate) < 0);
+
+ return $this->mod($n, $stop);
+ }
+}
+
+/**
+ * Exposes BCmath math library functionality.
+ *
+ * {@link Auth_OpenID_BcMathWrapper} wraps the functionality provided
+ * by the BCMath extension.
+ *
+ * @access private
+ * @package OpenID
+ */
+class Auth_OpenID_BcMathWrapper extends Auth_OpenID_MathLibrary{
+ var $type = 'bcmath';
+
+ function add($x, $y)
+ {
+ return bcadd($x, $y);
+ }
+
+ function sub($x, $y)
+ {
+ return bcsub($x, $y);
+ }
+
+ function pow($base, $exponent)
+ {
+ return bcpow($base, $exponent);
+ }
+
+ function cmp($x, $y)
+ {
+ return bccomp($x, $y);
+ }
+
+ function init($number, $base = 10)
+ {
+ return $number;
+ }
+
+ function mod($base, $modulus)
+ {
+ return bcmod($base, $modulus);
+ }
+
+ function mul($x, $y)
+ {
+ return bcmul($x, $y);
+ }
+
+ function div($x, $y)
+ {
+ return bcdiv($x, $y);
+ }
+
+ /**
+ * Same as bcpowmod when bcpowmod is missing
+ *
+ * @access private
+ */
+ function _powmod($base, $exponent, $modulus)
+ {
+ $square = $this->mod($base, $modulus);
+ $result = 1;
+ while($this->cmp($exponent, 0) > 0) {
+ if ($this->mod($exponent, 2)) {
+ $result = $this->mod($this->mul($result, $square), $modulus);
+ }
+ $square = $this->mod($this->mul($square, $square), $modulus);
+ $exponent = $this->div($exponent, 2);
+ }
+ return $result;
+ }
+
+ function powmod($base, $exponent, $modulus)
+ {
+ if (function_exists('bcpowmod')) {
+ return bcpowmod($base, $exponent, $modulus);
+ } else {
+ return $this->_powmod($base, $exponent, $modulus);
+ }
+ }
+
+ function toString($num)
+ {
+ return $num;
+ }
+}
+
+/**
+ * Exposes GMP math library functionality.
+ *
+ * {@link Auth_OpenID_GmpMathWrapper} wraps the functionality provided
+ * by the GMP extension.
+ *
+ * @access private
+ * @package OpenID
+ */
+class Auth_OpenID_GmpMathWrapper extends Auth_OpenID_MathLibrary{
+ var $type = 'gmp';
+
+ function add($x, $y)
+ {
+ return gmp_add($x, $y);
+ }
+
+ function sub($x, $y)
+ {
+ return gmp_sub($x, $y);
+ }
+
+ function pow($base, $exponent)
+ {
+ return gmp_pow($base, $exponent);
+ }
+
+ function cmp($x, $y)
+ {
+ return gmp_cmp($x, $y);
+ }
+
+ function init($number, $base = 10)
+ {
+ return gmp_init($number, $base);
+ }
+
+ function mod($base, $modulus)
+ {
+ return gmp_mod($base, $modulus);
+ }
+
+ function mul($x, $y)
+ {
+ return gmp_mul($x, $y);
+ }
+
+ function div($x, $y)
+ {
+ return gmp_div_q($x, $y);
+ }
+
+ function powmod($base, $exponent, $modulus)
+ {
+ return gmp_powm($base, $exponent, $modulus);
+ }
+
+ function toString($num)
+ {
+ return gmp_strval($num);
+ }
+}
+
+/**
+ * Define the supported extensions. An extension array has keys
+ * 'modules', 'extension', and 'class'. 'modules' is an array of PHP
+ * module names which the loading code will attempt to load. These
+ * values will be suffixed with a library file extension (e.g. ".so").
+ * 'extension' is the name of a PHP extension which will be tested
+ * before 'modules' are loaded. 'class' is the string name of a
+ * {@link Auth_OpenID_MathWrapper} subclass which should be
+ * instantiated if a given extension is present.
+ *
+ * You can define new math library implementations and add them to
+ * this array.
+ */
+function Auth_OpenID_math_extensions()
+{
+ $result = array();
+
+ if (!defined('Auth_OpenID_BUGGY_GMP')) {
+ $result[] =
+ array('modules' => array('gmp', 'php_gmp'),
+ 'extension' => 'gmp',
+ 'class' => 'Auth_OpenID_GmpMathWrapper');
+ }
+
+ $result[] = array('modules' => array('bcmath', 'php_bcmath'),
+ 'extension' => 'bcmath',
+ 'class' => 'Auth_OpenID_BcMathWrapper');
+
+ return $result;
+}
+
+/**
+ * Detect which (if any) math library is available
+ */
+function Auth_OpenID_detectMathLibrary($exts)
+{
+ $loaded = false;
+
+ foreach ($exts as $extension) {
+ if (extension_loaded($extension['extension'])) {
+ return $extension;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * {@link Auth_OpenID_getMathLib} checks for the presence of long
+ * number extension modules and returns an instance of
+ * {@link Auth_OpenID_MathWrapper} which exposes the module's
+ * functionality.
+ *
+ * Checks for the existence of an extension module described by the
+ * result of {@link Auth_OpenID_math_extensions()} and returns an
+ * instance of a wrapper for that extension module. If no extension
+ * module is found, an instance of {@link Auth_OpenID_MathWrapper} is
+ * returned, which wraps the native PHP integer implementation. The
+ * proper calling convention for this method is $lib =
+ * Auth_OpenID_getMathLib().
+ *
+ * This function checks for the existence of specific long number
+ * implementations in the following order: GMP followed by BCmath.
+ *
+ * @return Auth_OpenID_MathWrapper $instance An instance of
+ * {@link Auth_OpenID_MathWrapper} or one of its subclasses
+ *
+ * @package OpenID
+ */
+function Auth_OpenID_getMathLib()
+{
+ // The instance of Auth_OpenID_MathWrapper that we choose to
+ // supply will be stored here, so that subseqent calls to this
+ // method will return a reference to the same object.
+ static $lib = null;
+
+ if (isset($lib)) {
+ return $lib;
+ }
+
+ if (Auth_OpenID_noMathSupport()) {
+ $null = null;
+ return $null;
+ }
+
+ // If this method has not been called before, look at
+ // Auth_OpenID_math_extensions and try to find an extension that
+ // works.
+ $ext = Auth_OpenID_detectMathLibrary(Auth_OpenID_math_extensions());
+ if ($ext === false) {
+ $tried = array();
+ foreach (Auth_OpenID_math_extensions() as $extinfo) {
+ $tried[] = $extinfo['extension'];
+ }
+ $triedstr = implode(", ", $tried);
+
+ Auth_OpenID_setNoMathSupport();
+
+ $result = null;
+ return $result;
+ }
+
+ // Instantiate a new wrapper
+ $class = $ext['class'];
+ $lib = new $class();
+
+ return $lib;
+}
+
+function Auth_OpenID_setNoMathSupport()
+{
+ if (!defined('Auth_OpenID_NO_MATH_SUPPORT')) {
+ define('Auth_OpenID_NO_MATH_SUPPORT', true);
+ }
+}
+
+function Auth_OpenID_noMathSupport()
+{
+ return defined('Auth_OpenID_NO_MATH_SUPPORT');
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php
new file mode 100644
index 000000000..e480b86f2
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php
@@ -0,0 +1,2234 @@
+<?php
+
+/**
+ * This module documents the main interface with the OpenID consumer
+ * library. The only part of the library which has to be used and
+ * isn't documented in full here is the store required to create an
+ * Auth_OpenID_Consumer instance. More on the abstract store type and
+ * concrete implementations of it that are provided in the
+ * documentation for the Auth_OpenID_Consumer constructor.
+ *
+ * OVERVIEW
+ *
+ * The OpenID identity verification process most commonly uses the
+ * following steps, as visible to the user of this library:
+ *
+ * 1. The user enters their OpenID into a field on the consumer's
+ * site, and hits a login button.
+ * 2. The consumer site discovers the user's OpenID server using the
+ * YADIS protocol.
+ * 3. The consumer site sends the browser a redirect to the identity
+ * server. This is the authentication request as described in
+ * the OpenID specification.
+ * 4. The identity server's site sends the browser a redirect back
+ * to the consumer site. This redirect contains the server's
+ * response to the authentication request.
+ *
+ * The most important part of the flow to note is the consumer's site
+ * must handle two separate HTTP requests in order to perform the full
+ * identity check.
+ *
+ * LIBRARY DESIGN
+ *
+ * This consumer library is designed with that flow in mind. The goal
+ * is to make it as easy as possible to perform the above steps
+ * securely.
+ *
+ * At a high level, there are two important parts in the consumer
+ * library. The first important part is this module, which contains
+ * the interface to actually use this library. The second is the
+ * Auth_OpenID_Interface class, which describes the interface to use
+ * if you need to create a custom method for storing the state this
+ * library needs to maintain between requests.
+ *
+ * In general, the second part is less important for users of the
+ * library to know about, as several implementations are provided
+ * which cover a wide variety of situations in which consumers may use
+ * the library.
+ *
+ * This module contains a class, Auth_OpenID_Consumer, with methods
+ * corresponding to the actions necessary in each of steps 2, 3, and 4
+ * described in the overview. Use of this library should be as easy
+ * as creating an Auth_OpenID_Consumer instance and calling the
+ * methods appropriate for the action the site wants to take.
+ *
+ * STORES AND DUMB MODE
+ *
+ * OpenID is a protocol that works best when the consumer site is able
+ * to store some state. This is the normal mode of operation for the
+ * protocol, and is sometimes referred to as smart mode. There is
+ * also a fallback mode, known as dumb mode, which is available when
+ * the consumer site is not able to store state. This mode should be
+ * avoided when possible, as it leaves the implementation more
+ * vulnerable to replay attacks.
+ *
+ * The mode the library works in for normal operation is determined by
+ * the store that it is given. The store is an abstraction that
+ * handles the data that the consumer needs to manage between http
+ * requests in order to operate efficiently and securely.
+ *
+ * Several store implementation are provided, and the interface is
+ * fully documented so that custom stores can be used as well. See
+ * the documentation for the Auth_OpenID_Consumer class for more
+ * information on the interface for stores. The implementations that
+ * are provided allow the consumer site to store the necessary data in
+ * several different ways, including several SQL databases and normal
+ * files on disk.
+ *
+ * There is an additional concrete store provided that puts the system
+ * in dumb mode. This is not recommended, as it removes the library's
+ * ability to stop replay attacks reliably. It still uses time-based
+ * checking to make replay attacks only possible within a small
+ * window, but they remain possible within that window. This store
+ * should only be used if the consumer site has no way to retain data
+ * between requests at all.
+ *
+ * IMMEDIATE MODE
+ *
+ * In the flow described above, the user may need to confirm to the
+ * lidentity server that it's ok to authorize his or her identity.
+ * The server may draw pages asking for information from the user
+ * before it redirects the browser back to the consumer's site. This
+ * is generally transparent to the consumer site, so it is typically
+ * ignored as an implementation detail.
+ *
+ * There can be times, however, where the consumer site wants to get a
+ * response immediately. When this is the case, the consumer can put
+ * the library in immediate mode. In immediate mode, there is an
+ * extra response possible from the server, which is essentially the
+ * server reporting that it doesn't have enough information to answer
+ * the question yet.
+ *
+ * USING THIS LIBRARY
+ *
+ * Integrating this library into an application is usually a
+ * relatively straightforward process. The process should basically
+ * follow this plan:
+ *
+ * Add an OpenID login field somewhere on your site. When an OpenID
+ * is entered in that field and the form is submitted, it should make
+ * a request to the your site which includes that OpenID URL.
+ *
+ * First, the application should instantiate the Auth_OpenID_Consumer
+ * class using the store of choice (Auth_OpenID_FileStore or one of
+ * the SQL-based stores). If the application has a custom
+ * session-management implementation, an object implementing the
+ * {@link Auth_Yadis_PHPSession} interface should be passed as the
+ * second parameter. Otherwise, the default uses $_SESSION.
+ *
+ * Next, the application should call the Auth_OpenID_Consumer object's
+ * 'begin' method. This method takes the OpenID URL. The 'begin'
+ * method returns an Auth_OpenID_AuthRequest object.
+ *
+ * Next, the application should call the 'redirectURL' method of the
+ * Auth_OpenID_AuthRequest object. The 'return_to' URL parameter is
+ * the URL that the OpenID server will send the user back to after
+ * attempting to verify his or her identity. The 'trust_root' is the
+ * URL (or URL pattern) that identifies your web site to the user when
+ * he or she is authorizing it. Send a redirect to the resulting URL
+ * to the user's browser.
+ *
+ * That's the first half of the authentication process. The second
+ * half of the process is done after the user's ID server sends the
+ * user's browser a redirect back to your site to complete their
+ * login.
+ *
+ * When that happens, the user will contact your site at the URL given
+ * as the 'return_to' URL to the Auth_OpenID_AuthRequest::redirectURL
+ * call made above. The request will have several query parameters
+ * added to the URL by the identity server as the information
+ * necessary to finish the request.
+ *
+ * Lastly, instantiate an Auth_OpenID_Consumer instance as above and
+ * call its 'complete' method, passing in all the received query
+ * arguments.
+ *
+ * There are multiple possible return types possible from that
+ * method. These indicate the whether or not the login was successful,
+ * and include any additional information appropriate for their type.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Require utility classes and functions for the consumer.
+ */
+require_once "Auth/OpenID.php";
+require_once "Auth/OpenID/Message.php";
+require_once "Auth/OpenID/HMAC.php";
+require_once "Auth/OpenID/Association.php";
+require_once "Auth/OpenID/CryptUtil.php";
+require_once "Auth/OpenID/DiffieHellman.php";
+require_once "Auth/OpenID/KVForm.php";
+require_once "Auth/OpenID/Nonce.php";
+require_once "Auth/OpenID/Discover.php";
+require_once "Auth/OpenID/URINorm.php";
+require_once "Auth/Yadis/Manager.php";
+require_once "Auth/Yadis/XRI.php";
+
+/**
+ * This is the status code returned when the complete method returns
+ * successfully.
+ */
+define('Auth_OpenID_SUCCESS', 'success');
+
+/**
+ * Status to indicate cancellation of OpenID authentication.
+ */
+define('Auth_OpenID_CANCEL', 'cancel');
+
+/**
+ * This is the status code completeAuth returns when the value it
+ * received indicated an invalid login.
+ */
+define('Auth_OpenID_FAILURE', 'failure');
+
+/**
+ * This is the status code completeAuth returns when the
+ * {@link Auth_OpenID_Consumer} instance is in immediate mode, and the
+ * identity server sends back a URL to send the user to to complete his
+ * or her login.
+ */
+define('Auth_OpenID_SETUP_NEEDED', 'setup needed');
+
+/**
+ * This is the status code beginAuth returns when the page fetched
+ * from the entered OpenID URL doesn't contain the necessary link tags
+ * to function as an identity page.
+ */
+define('Auth_OpenID_PARSE_ERROR', 'parse error');
+
+/**
+ * An OpenID consumer implementation that performs discovery and does
+ * session management. See the Consumer.php file documentation for
+ * more information.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Consumer {
+
+ /**
+ * @access private
+ */
+ var $discoverMethod = 'Auth_OpenID_discover';
+
+ /**
+ * @access private
+ */
+ var $session_key_prefix = "_openid_consumer_";
+
+ /**
+ * @access private
+ */
+ var $_token_suffix = "last_token";
+
+ /**
+ * Initialize a Consumer instance.
+ *
+ * You should create a new instance of the Consumer object with
+ * every HTTP request that handles OpenID transactions.
+ *
+ * @param Auth_OpenID_OpenIDStore $store This must be an object
+ * that implements the interface in {@link
+ * Auth_OpenID_OpenIDStore}. Several concrete implementations are
+ * provided, to cover most common use cases. For stores backed by
+ * MySQL, PostgreSQL, or SQLite, see the {@link
+ * Auth_OpenID_SQLStore} class and its sublcasses. For a
+ * filesystem-backed store, see the {@link Auth_OpenID_FileStore}
+ * module. As a last resort, if it isn't possible for the server
+ * to store state at all, an instance of {@link
+ * Auth_OpenID_DumbStore} can be used.
+ *
+ * @param mixed $session An object which implements the interface
+ * of the {@link Auth_Yadis_PHPSession} class. Particularly, this
+ * object is expected to have these methods: get($key), set($key),
+ * $value), and del($key). This defaults to a session object
+ * which wraps PHP's native session machinery. You should only
+ * need to pass something here if you have your own sessioning
+ * implementation.
+ *
+ * @param str $consumer_cls The name of the class to instantiate
+ * when creating the internal consumer object. This is used for
+ * testing.
+ */
+ function Auth_OpenID_Consumer($store, $session = null,
+ $consumer_cls = null)
+ {
+ if ($session === null) {
+ $session = new Auth_Yadis_PHPSession();
+ }
+
+ $this->session = $session;
+
+ if ($consumer_cls !== null) {
+ $this->consumer = new $consumer_cls($store);
+ } else {
+ $this->consumer = new Auth_OpenID_GenericConsumer($store);
+ }
+
+ $this->_token_key = $this->session_key_prefix . $this->_token_suffix;
+ }
+
+ /**
+ * Used in testing to define the discovery mechanism.
+ *
+ * @access private
+ */
+ function getDiscoveryObject($session, $openid_url,
+ $session_key_prefix)
+ {
+ return new Auth_Yadis_Discovery($session, $openid_url,
+ $session_key_prefix);
+ }
+
+ /**
+ * Start the OpenID authentication process. See steps 1-2 in the
+ * overview at the top of this file.
+ *
+ * @param string $user_url Identity URL given by the user. This
+ * method performs a textual transformation of the URL to try and
+ * make sure it is normalized. For example, a user_url of
+ * example.com will be normalized to http://example.com/
+ * normalizing and resolving any redirects the server might issue.
+ *
+ * @param bool $anonymous True if the OpenID request is to be sent
+ * to the server without any identifier information. Use this
+ * when you want to transport data but don't want to do OpenID
+ * authentication with identifiers.
+ *
+ * @return Auth_OpenID_AuthRequest $auth_request An object
+ * containing the discovered information will be returned, with a
+ * method for building a redirect URL to the server, as described
+ * in step 3 of the overview. This object may also be used to add
+ * extension arguments to the request, using its 'addExtensionArg'
+ * method.
+ */
+ function begin($user_url, $anonymous=false)
+ {
+ $openid_url = $user_url;
+
+ $disco = $this->getDiscoveryObject($this->session,
+ $openid_url,
+ $this->session_key_prefix);
+
+ // Set the 'stale' attribute of the manager. If discovery
+ // fails in a fatal way, the stale flag will cause the manager
+ // to be cleaned up next time discovery is attempted.
+
+ $m = $disco->getManager();
+ $loader = new Auth_Yadis_ManagerLoader();
+
+ if ($m) {
+ if ($m->stale) {
+ $disco->destroyManager();
+ } else {
+ $m->stale = true;
+ $disco->session->set($disco->session_key,
+ serialize($loader->toSession($m)));
+ }
+ }
+
+ $endpoint = $disco->getNextService($this->discoverMethod,
+ $this->consumer->fetcher);
+
+ // Reset the 'stale' attribute of the manager.
+ $m = $disco->getManager();
+ if ($m) {
+ $m->stale = false;
+ $disco->session->set($disco->session_key,
+ serialize($loader->toSession($m)));
+ }
+
+ if ($endpoint === null) {
+ return null;
+ } else {
+ return $this->beginWithoutDiscovery($endpoint,
+ $anonymous);
+ }
+ }
+
+ /**
+ * Start OpenID verification without doing OpenID server
+ * discovery. This method is used internally by Consumer.begin
+ * after discovery is performed, and exists to provide an
+ * interface for library users needing to perform their own
+ * discovery.
+ *
+ * @param Auth_OpenID_ServiceEndpoint $endpoint an OpenID service
+ * endpoint descriptor.
+ *
+ * @param bool anonymous Set to true if you want to perform OpenID
+ * without identifiers.
+ *
+ * @return Auth_OpenID_AuthRequest $auth_request An OpenID
+ * authentication request object.
+ */
+ function beginWithoutDiscovery($endpoint, $anonymous=false)
+ {
+ $loader = new Auth_OpenID_ServiceEndpointLoader();
+ $auth_req = $this->consumer->begin($endpoint);
+ $this->session->set($this->_token_key,
+ $loader->toSession($auth_req->endpoint));
+ if (!$auth_req->setAnonymous($anonymous)) {
+ return new Auth_OpenID_FailureResponse(null,
+ "OpenID 1 requests MUST include the identifier " .
+ "in the request.");
+ }
+ return $auth_req;
+ }
+
+ /**
+ * Called to interpret the server's response to an OpenID
+ * request. It is called in step 4 of the flow described in the
+ * consumer overview.
+ *
+ * @param string $current_url The URL used to invoke the application.
+ * Extract the URL from your application's web
+ * request framework and specify it here to have it checked
+ * against the openid.current_url value in the response. If
+ * the current_url URL check fails, the status of the
+ * completion will be FAILURE.
+ *
+ * @param array $query An array of the query parameters (key =>
+ * value pairs) for this HTTP request. Defaults to null. If
+ * null, the GET or POST data are automatically gotten from the
+ * PHP environment. It is only useful to override $query for
+ * testing.
+ *
+ * @return Auth_OpenID_ConsumerResponse $response A instance of an
+ * Auth_OpenID_ConsumerResponse subclass. The type of response is
+ * indicated by the status attribute, which will be one of
+ * SUCCESS, CANCEL, FAILURE, or SETUP_NEEDED.
+ */
+ function complete($current_url, $query=null)
+ {
+ if ($current_url && !is_string($current_url)) {
+ // This is ugly, but we need to complain loudly when
+ // someone uses the API incorrectly.
+ trigger_error("current_url must be a string; see NEWS file " .
+ "for upgrading notes.",
+ E_USER_ERROR);
+ }
+
+ if ($query === null) {
+ $query = Auth_OpenID::getQuery();
+ }
+
+ $loader = new Auth_OpenID_ServiceEndpointLoader();
+ $endpoint_data = $this->session->get($this->_token_key);
+ $endpoint =
+ $loader->fromSession($endpoint_data);
+
+ $message = Auth_OpenID_Message::fromPostArgs($query);
+ $response = $this->consumer->complete($message, $endpoint,
+ $current_url);
+ $this->session->del($this->_token_key);
+
+ if (in_array($response->status, array(Auth_OpenID_SUCCESS,
+ Auth_OpenID_CANCEL))) {
+ if ($response->identity_url !== null) {
+ $disco = $this->getDiscoveryObject($this->session,
+ $response->identity_url,
+ $this->session_key_prefix);
+ $disco->cleanup(true);
+ }
+ }
+
+ return $response;
+ }
+}
+
+/**
+ * A class implementing HMAC/DH-SHA1 consumer sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
+ var $session_type = 'DH-SHA1';
+ var $hash_func = 'Auth_OpenID_SHA1';
+ var $secret_size = 20;
+ var $allowed_assoc_types = array('HMAC-SHA1');
+
+ function Auth_OpenID_DiffieHellmanSHA1ConsumerSession($dh = null)
+ {
+ if ($dh === null) {
+ $dh = new Auth_OpenID_DiffieHellman();
+ }
+
+ $this->dh = $dh;
+ }
+
+ function getRequest()
+ {
+ $math = Auth_OpenID_getMathLib();
+
+ $cpub = $math->longToBase64($this->dh->public);
+
+ $args = array('dh_consumer_public' => $cpub);
+
+ if (!$this->dh->usingDefaultValues()) {
+ $args = array_merge($args, array(
+ 'dh_modulus' =>
+ $math->longToBase64($this->dh->mod),
+ 'dh_gen' =>
+ $math->longToBase64($this->dh->gen)));
+ }
+
+ return $args;
+ }
+
+ function extractSecret($response)
+ {
+ if (!$response->hasKey(Auth_OpenID_OPENID_NS,
+ 'dh_server_public')) {
+ return null;
+ }
+
+ if (!$response->hasKey(Auth_OpenID_OPENID_NS,
+ 'enc_mac_key')) {
+ return null;
+ }
+
+ $math = Auth_OpenID_getMathLib();
+
+ $spub = $math->base64ToLong($response->getArg(Auth_OpenID_OPENID_NS,
+ 'dh_server_public'));
+ $enc_mac_key = base64_decode($response->getArg(Auth_OpenID_OPENID_NS,
+ 'enc_mac_key'));
+
+ return $this->dh->xorSecret($spub, $enc_mac_key, $this->hash_func);
+ }
+}
+
+/**
+ * A class implementing HMAC/DH-SHA256 consumer sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DiffieHellmanSHA256ConsumerSession extends
+ Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
+ var $session_type = 'DH-SHA256';
+ var $hash_func = 'Auth_OpenID_SHA256';
+ var $secret_size = 32;
+ var $allowed_assoc_types = array('HMAC-SHA256');
+}
+
+/**
+ * A class implementing plaintext consumer sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_PlainTextConsumerSession {
+ var $session_type = 'no-encryption';
+ var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
+
+ function getRequest()
+ {
+ return array();
+ }
+
+ function extractSecret($response)
+ {
+ if (!$response->hasKey(Auth_OpenID_OPENID_NS, 'mac_key')) {
+ return null;
+ }
+
+ return base64_decode($response->getArg(Auth_OpenID_OPENID_NS,
+ 'mac_key'));
+ }
+}
+
+/**
+ * Returns available session types.
+ */
+function Auth_OpenID_getAvailableSessionTypes()
+{
+ $types = array(
+ 'no-encryption' => 'Auth_OpenID_PlainTextConsumerSession',
+ 'DH-SHA1' => 'Auth_OpenID_DiffieHellmanSHA1ConsumerSession',
+ 'DH-SHA256' => 'Auth_OpenID_DiffieHellmanSHA256ConsumerSession');
+
+ return $types;
+}
+
+/**
+ * This class is the interface to the OpenID consumer logic.
+ * Instances of it maintain no per-request state, so they can be
+ * reused (or even used by multiple threads concurrently) as needed.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_GenericConsumer {
+ /**
+ * @access private
+ */
+ var $discoverMethod = 'Auth_OpenID_discover';
+
+ /**
+ * This consumer's store object.
+ */
+ var $store;
+
+ /**
+ * @access private
+ */
+ var $_use_assocs;
+
+ /**
+ * @access private
+ */
+ var $openid1_nonce_query_arg_name = 'janrain_nonce';
+
+ /**
+ * Another query parameter that gets added to the return_to for
+ * OpenID 1; if the user's session state is lost, use this claimed
+ * identifier to do discovery when verifying the response.
+ */
+ var $openid1_return_to_identifier_name = 'openid1_claimed_id';
+
+ /**
+ * This method initializes a new {@link Auth_OpenID_Consumer}
+ * instance to access the library.
+ *
+ * @param Auth_OpenID_OpenIDStore $store This must be an object
+ * that implements the interface in {@link Auth_OpenID_OpenIDStore}.
+ * Several concrete implementations are provided, to cover most common use
+ * cases. For stores backed by MySQL, PostgreSQL, or SQLite, see
+ * the {@link Auth_OpenID_SQLStore} class and its sublcasses. For a
+ * filesystem-backed store, see the {@link Auth_OpenID_FileStore} module.
+ * As a last resort, if it isn't possible for the server to store
+ * state at all, an instance of {@link Auth_OpenID_DumbStore} can be used.
+ *
+ * @param bool $immediate This is an optional boolean value. It
+ * controls whether the library uses immediate mode, as explained
+ * in the module description. The default value is False, which
+ * disables immediate mode.
+ */
+ function Auth_OpenID_GenericConsumer($store)
+ {
+ $this->store = $store;
+ $this->negotiator = Auth_OpenID_getDefaultNegotiator();
+ $this->_use_assocs = (is_null($this->store) ? false : true);
+
+ $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+
+ $this->session_types = Auth_OpenID_getAvailableSessionTypes();
+ }
+
+ /**
+ * Called to begin OpenID authentication using the specified
+ * {@link Auth_OpenID_ServiceEndpoint}.
+ *
+ * @access private
+ */
+ function begin($service_endpoint)
+ {
+ $assoc = $this->_getAssociation($service_endpoint);
+ $r = new Auth_OpenID_AuthRequest($service_endpoint, $assoc);
+ $r->return_to_args[$this->openid1_nonce_query_arg_name] =
+ Auth_OpenID_mkNonce();
+
+ if ($r->message->isOpenID1()) {
+ $r->return_to_args[$this->openid1_return_to_identifier_name] =
+ $r->endpoint->claimed_id;
+ }
+
+ return $r;
+ }
+
+ /**
+ * Given an {@link Auth_OpenID_Message}, {@link
+ * Auth_OpenID_ServiceEndpoint} and optional return_to URL,
+ * complete OpenID authentication.
+ *
+ * @access private
+ */
+ function complete($message, $endpoint, $return_to)
+ {
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
+ '<no mode set>');
+
+ $mode_methods = array(
+ 'cancel' => '_complete_cancel',
+ 'error' => '_complete_error',
+ 'setup_needed' => '_complete_setup_needed',
+ 'id_res' => '_complete_id_res',
+ );
+
+ $method = Auth_OpenID::arrayGet($mode_methods, $mode,
+ '_completeInvalid');
+
+ return call_user_func_array(array($this, $method),
+ array($message, $endpoint, $return_to));
+ }
+
+ /**
+ * @access private
+ */
+ function _completeInvalid($message, $endpoint, $unused)
+ {
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
+ '<No mode set>');
+
+ return new Auth_OpenID_FailureResponse($endpoint,
+ sprintf("Invalid openid.mode '%s'", $mode));
+ }
+
+ /**
+ * @access private
+ */
+ function _complete_cancel($message, $endpoint, $unused)
+ {
+ return new Auth_OpenID_CancelResponse($endpoint);
+ }
+
+ /**
+ * @access private
+ */
+ function _complete_error($message, $endpoint, $unused)
+ {
+ $error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
+ $contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
+ $reference = $message->getArg(Auth_OpenID_OPENID_NS, 'reference');
+
+ return new Auth_OpenID_FailureResponse($endpoint, $error,
+ $contact, $reference);
+ }
+
+ /**
+ * @access private
+ */
+ function _complete_setup_needed($message, $endpoint, $unused)
+ {
+ if (!$message->isOpenID2()) {
+ return $this->_completeInvalid($message, $endpoint);
+ }
+
+ $user_setup_url = $message->getArg(Auth_OpenID_OPENID2_NS,
+ 'user_setup_url');
+ return new Auth_OpenID_SetupNeededResponse($endpoint, $user_setup_url);
+ }
+
+ /**
+ * @access private
+ */
+ function _complete_id_res($message, $endpoint, $return_to)
+ {
+ $user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
+ 'user_setup_url');
+
+ if ($this->_checkSetupNeeded($message)) {
+ return new Auth_OpenID_SetupNeededResponse(
+ $endpoint, $user_setup_url);
+ } else {
+ return $this->_doIdRes($message, $endpoint, $return_to);
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _checkSetupNeeded($message)
+ {
+ // In OpenID 1, we check to see if this is a cancel from
+ // immediate mode by the presence of the user_setup_url
+ // parameter.
+ if ($message->isOpenID1()) {
+ $user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
+ 'user_setup_url');
+ if ($user_setup_url !== null) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @access private
+ */
+ function _doIdRes($message, $endpoint, $return_to)
+ {
+ // Checks for presence of appropriate fields (and checks
+ // signed list fields)
+ $result = $this->_idResCheckForFields($message);
+
+ if (Auth_OpenID::isFailure($result)) {
+ return $result;
+ }
+
+ if (!$this->_checkReturnTo($message, $return_to)) {
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf("return_to does not match return URL. Expected %s, got %s",
+ $return_to,
+ $message->getArg(Auth_OpenID_OPENID_NS, 'return_to')));
+ }
+
+ // Verify discovery information:
+ $result = $this->_verifyDiscoveryResults($message, $endpoint);
+
+ if (Auth_OpenID::isFailure($result)) {
+ return $result;
+ }
+
+ $endpoint = $result;
+
+ $result = $this->_idResCheckSignature($message,
+ $endpoint->server_url);
+
+ if (Auth_OpenID::isFailure($result)) {
+ return $result;
+ }
+
+ $result = $this->_idResCheckNonce($message, $endpoint);
+
+ if (Auth_OpenID::isFailure($result)) {
+ return $result;
+ }
+
+ $signed_list_str = $message->getArg(Auth_OpenID_OPENID_NS, 'signed',
+ Auth_OpenID_NO_DEFAULT);
+ if (Auth_OpenID::isFailure($signed_list_str)) {
+ return $signed_list_str;
+ }
+ $signed_list = explode(',', $signed_list_str);
+
+ $signed_fields = Auth_OpenID::addPrefix($signed_list, "openid.");
+
+ return new Auth_OpenID_SuccessResponse($endpoint, $message,
+ $signed_fields);
+
+ }
+
+ /**
+ * @access private
+ */
+ function _checkReturnTo($message, $return_to)
+ {
+ // Check an OpenID message and its openid.return_to value
+ // against a return_to URL from an application. Return True
+ // on success, False on failure.
+
+ // Check the openid.return_to args against args in the
+ // original message.
+ $result = Auth_OpenID_GenericConsumer::_verifyReturnToArgs(
+ $message->toPostArgs());
+ if (Auth_OpenID::isFailure($result)) {
+ return false;
+ }
+
+ // Check the return_to base URL against the one in the
+ // message.
+ $msg_return_to = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'return_to');
+ if (Auth_OpenID::isFailure($return_to)) {
+ // XXX log me
+ return false;
+ }
+
+ $return_to_parts = parse_url(Auth_OpenID_urinorm($return_to));
+ $msg_return_to_parts = parse_url(Auth_OpenID_urinorm($msg_return_to));
+
+ // If port is absent from both, add it so it's equal in the
+ // check below.
+ if ((!array_key_exists('port', $return_to_parts)) &&
+ (!array_key_exists('port', $msg_return_to_parts))) {
+ $return_to_parts['port'] = null;
+ $msg_return_to_parts['port'] = null;
+ }
+
+ // If path is absent from both, add it so it's equal in the
+ // check below.
+ if ((!array_key_exists('path', $return_to_parts)) &&
+ (!array_key_exists('path', $msg_return_to_parts))) {
+ $return_to_parts['path'] = null;
+ $msg_return_to_parts['path'] = null;
+ }
+
+ // The URL scheme, authority, and path MUST be the same
+ // between the two URLs.
+ foreach (array('scheme', 'host', 'port', 'path') as $component) {
+ // If the url component is absent in either URL, fail.
+ // There should always be a scheme, host, port, and path.
+ if (!array_key_exists($component, $return_to_parts)) {
+ return false;
+ }
+
+ if (!array_key_exists($component, $msg_return_to_parts)) {
+ return false;
+ }
+
+ if (Auth_OpenID::arrayGet($return_to_parts, $component) !==
+ Auth_OpenID::arrayGet($msg_return_to_parts, $component)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyReturnToArgs($query)
+ {
+ // Verify that the arguments in the return_to URL are present in this
+ // response.
+
+ $message = Auth_OpenID_Message::fromPostArgs($query);
+ $return_to = $message->getArg(Auth_OpenID_OPENID_NS, 'return_to');
+
+ if (Auth_OpenID::isFailure($return_to)) {
+ return $return_to;
+ }
+ // XXX: this should be checked by _idResCheckForFields
+ if (!$return_to) {
+ return new Auth_OpenID_FailureResponse(null,
+ "Response has no return_to");
+ }
+
+ $parsed_url = parse_url($return_to);
+
+ $q = array();
+ if (array_key_exists('query', $parsed_url)) {
+ $rt_query = $parsed_url['query'];
+ $q = Auth_OpenID::parse_str($rt_query);
+ }
+
+ foreach ($q as $rt_key => $rt_value) {
+ if (!array_key_exists($rt_key, $query)) {
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf("return_to parameter %s absent from query", $rt_key));
+ } else {
+ $value = $query[$rt_key];
+ if ($rt_value != $value) {
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf("parameter %s value %s does not match " .
+ "return_to value %s", $rt_key,
+ $value, $rt_value));
+ }
+ }
+ }
+
+ // Make sure all non-OpenID arguments in the response are also
+ // in the signed return_to.
+ $bare_args = $message->getArgs(Auth_OpenID_BARE_NS);
+ foreach ($bare_args as $key => $value) {
+ if (Auth_OpenID::arrayGet($q, $key) != $value) {
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf("Parameter %s = %s not in return_to URL",
+ $key, $value));
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @access private
+ */
+ function _idResCheckSignature($message, $server_url)
+ {
+ $assoc_handle = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'assoc_handle');
+ if (Auth_OpenID::isFailure($assoc_handle)) {
+ return $assoc_handle;
+ }
+
+ $assoc = $this->store->getAssociation($server_url, $assoc_handle);
+
+ if ($assoc) {
+ if ($assoc->getExpiresIn() <= 0) {
+ // XXX: It might be a good idea sometimes to re-start
+ // the authentication with a new association. Doing it
+ // automatically opens the possibility for
+ // denial-of-service by a server that just returns
+ // expired associations (or really short-lived
+ // associations)
+ return new Auth_OpenID_FailureResponse(null,
+ 'Association with ' . $server_url . ' expired');
+ }
+
+ if (!$assoc->checkMessageSignature($message)) {
+ // If we get a "bad signature" here, it means that the association
+ // is unrecoverabley corrupted in some way. Any futher attempts
+ // to login with this association is likely to fail. Drop it.
+ $this->store->removeAssociation($server_url, $assoc_handle);
+ return new Auth_OpenID_FailureResponse(null,
+ "Bad signature");
+ }
+ } else {
+ // It's not an association we know about. Stateless mode
+ // is our only possible path for recovery. XXX - async
+ // framework will not want to block on this call to
+ // _checkAuth.
+ if (!$this->_checkAuth($message, $server_url)) {
+ return new Auth_OpenID_FailureResponse(null,
+ "Server denied check_authentication");
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyDiscoveryResults($message, $endpoint=null)
+ {
+ if ($message->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS) {
+ return $this->_verifyDiscoveryResultsOpenID2($message,
+ $endpoint);
+ } else {
+ return $this->_verifyDiscoveryResultsOpenID1($message,
+ $endpoint);
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyDiscoveryResultsOpenID1($message, $endpoint)
+ {
+ $claimed_id = $message->getArg(Auth_OpenID_BARE_NS,
+ $this->openid1_return_to_identifier_name);
+
+ if (($endpoint === null) && ($claimed_id === null)) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ 'When using OpenID 1, the claimed ID must be supplied, ' .
+ 'either by passing it through as a return_to parameter ' .
+ 'or by using a session, and supplied to the GenericConsumer ' .
+ 'as the argument to complete()');
+ } else if (($endpoint !== null) && ($claimed_id === null)) {
+ $claimed_id = $endpoint->claimed_id;
+ }
+
+ $to_match = new Auth_OpenID_ServiceEndpoint();
+ $to_match->type_uris = array(Auth_OpenID_TYPE_1_1);
+ $to_match->local_id = $message->getArg(Auth_OpenID_OPENID1_NS,
+ 'identity');
+
+ // Restore delegate information from the initiation phase
+ $to_match->claimed_id = $claimed_id;
+
+ if ($to_match->local_id === null) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "Missing required field openid.identity");
+ }
+
+ $to_match_1_0 = $to_match->copy();
+ $to_match_1_0->type_uris = array(Auth_OpenID_TYPE_1_0);
+
+ if ($endpoint !== null) {
+ $result = $this->_verifyDiscoverySingle($endpoint, $to_match);
+
+ if (is_a($result, 'Auth_OpenID_TypeURIMismatch')) {
+ $result = $this->_verifyDiscoverySingle($endpoint,
+ $to_match_1_0);
+ }
+
+ if (Auth_OpenID::isFailure($result)) {
+ // oidutil.log("Error attempting to use stored
+ // discovery information: " + str(e))
+ // oidutil.log("Attempting discovery to
+ // verify endpoint")
+ } else {
+ return $endpoint;
+ }
+ }
+
+ // Endpoint is either bad (failed verification) or None
+ return $this->_discoverAndVerify($to_match->claimed_id,
+ array($to_match, $to_match_1_0));
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyDiscoverySingle($endpoint, $to_match)
+ {
+ // Every type URI that's in the to_match endpoint has to be
+ // present in the discovered endpoint.
+ foreach ($to_match->type_uris as $type_uri) {
+ if (!$endpoint->usesExtension($type_uri)) {
+ return new Auth_OpenID_TypeURIMismatch($endpoint,
+ "Required type ".$type_uri." not present");
+ }
+ }
+
+ // Fragments do not influence discovery, so we can't compare a
+ // claimed identifier with a fragment to discovered
+ // information.
+ list($defragged_claimed_id, $_) =
+ Auth_OpenID::urldefrag($to_match->claimed_id);
+
+ if ($defragged_claimed_id != $endpoint->claimed_id) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ sprintf('Claimed ID does not match (different subjects!), ' .
+ 'Expected %s, got %s', $defragged_claimed_id,
+ $endpoint->claimed_id));
+ }
+
+ if ($to_match->getLocalID() != $endpoint->getLocalID()) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ sprintf('local_id mismatch. Expected %s, got %s',
+ $to_match->getLocalID(), $endpoint->getLocalID()));
+ }
+
+ // If the server URL is None, this must be an OpenID 1
+ // response, because op_endpoint is a required parameter in
+ // OpenID 2. In that case, we don't actually care what the
+ // discovered server_url is, because signature checking or
+ // check_auth should take care of that check for us.
+ if ($to_match->server_url === null) {
+ if ($to_match->preferredNamespace() != Auth_OpenID_OPENID1_NS) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "Preferred namespace mismatch (bug)");
+ }
+ } else if ($to_match->server_url != $endpoint->server_url) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ sprintf('OP Endpoint mismatch. Expected %s, got %s',
+ $to_match->server_url, $endpoint->server_url));
+ }
+
+ return null;
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyDiscoveryResultsOpenID2($message, $endpoint)
+ {
+ $to_match = new Auth_OpenID_ServiceEndpoint();
+ $to_match->type_uris = array(Auth_OpenID_TYPE_2_0);
+ $to_match->claimed_id = $message->getArg(Auth_OpenID_OPENID2_NS,
+ 'claimed_id');
+
+ $to_match->local_id = $message->getArg(Auth_OpenID_OPENID2_NS,
+ 'identity');
+
+ $to_match->server_url = $message->getArg(Auth_OpenID_OPENID2_NS,
+ 'op_endpoint');
+
+ if ($to_match->server_url === null) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "OP Endpoint URL missing");
+ }
+
+ // claimed_id and identifier must both be present or both be
+ // absent
+ if (($to_match->claimed_id === null) &&
+ ($to_match->local_id !== null)) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ 'openid.identity is present without openid.claimed_id');
+ }
+
+ if (($to_match->claimed_id !== null) &&
+ ($to_match->local_id === null)) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ 'openid.claimed_id is present without openid.identity');
+ }
+
+ if ($to_match->claimed_id === null) {
+ // This is a response without identifiers, so there's
+ // really no checking that we can do, so return an
+ // endpoint that's for the specified `openid.op_endpoint'
+ return Auth_OpenID_ServiceEndpoint::fromOPEndpointURL(
+ $to_match->server_url);
+ }
+
+ if (!$endpoint) {
+ // The claimed ID doesn't match, so we have to do
+ // discovery again. This covers not using sessions, OP
+ // identifier endpoints and responses that didn't match
+ // the original request.
+ // oidutil.log('No pre-discovered information supplied.')
+ return $this->_discoverAndVerify($to_match->claimed_id,
+ array($to_match));
+ } else {
+
+ // The claimed ID matches, so we use the endpoint that we
+ // discovered in initiation. This should be the most
+ // common case.
+ $result = $this->_verifyDiscoverySingle($endpoint, $to_match);
+
+ if (Auth_OpenID::isFailure($result)) {
+ $endpoint = $this->_discoverAndVerify($to_match->claimed_id,
+ array($to_match));
+ if (Auth_OpenID::isFailure($endpoint)) {
+ return $endpoint;
+ }
+ }
+ }
+
+ // The endpoint we return should have the claimed ID from the
+ // message we just verified, fragment and all.
+ if ($endpoint->claimed_id != $to_match->claimed_id) {
+ $endpoint->claimed_id = $to_match->claimed_id;
+ }
+
+ return $endpoint;
+ }
+
+ /**
+ * @access private
+ */
+ function _discoverAndVerify($claimed_id, $to_match_endpoints)
+ {
+ // oidutil.log('Performing discovery on %s' % (claimed_id,))
+ list($unused, $services) = call_user_func($this->discoverMethod,
+ $claimed_id,
+ $this->fetcher);
+
+ if (!$services) {
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf("No OpenID information found at %s",
+ $claimed_id));
+ }
+
+ return $this->_verifyDiscoveryServices($claimed_id, $services,
+ $to_match_endpoints);
+ }
+
+ /**
+ * @access private
+ */
+ function _verifyDiscoveryServices($claimed_id,
+ $services, $to_match_endpoints)
+ {
+ // Search the services resulting from discovery to find one
+ // that matches the information from the assertion
+
+ foreach ($services as $endpoint) {
+ foreach ($to_match_endpoints as $to_match_endpoint) {
+ $result = $this->_verifyDiscoverySingle($endpoint,
+ $to_match_endpoint);
+
+ if (!Auth_OpenID::isFailure($result)) {
+ // It matches, so discover verification has
+ // succeeded. Return this endpoint.
+ return $endpoint;
+ }
+ }
+ }
+
+ return new Auth_OpenID_FailureResponse(null,
+ sprintf('No matching endpoint found after discovering %s: %s',
+ $claimed_id, $result->message));
+ }
+
+ /**
+ * Extract the nonce from an OpenID 1 response. Return the nonce
+ * from the BARE_NS since we independently check the return_to
+ * arguments are the same as those in the response message.
+ *
+ * See the openid1_nonce_query_arg_name class variable
+ *
+ * @returns $nonce The nonce as a string or null
+ *
+ * @access private
+ */
+ function _idResGetNonceOpenID1($message, $endpoint)
+ {
+ return $message->getArg(Auth_OpenID_BARE_NS,
+ $this->openid1_nonce_query_arg_name);
+ }
+
+ /**
+ * @access private
+ */
+ function _idResCheckNonce($message, $endpoint)
+ {
+ if ($message->isOpenID1()) {
+ // This indicates that the nonce was generated by the consumer
+ $nonce = $this->_idResGetNonceOpenID1($message, $endpoint);
+ $server_url = '';
+ } else {
+ $nonce = $message->getArg(Auth_OpenID_OPENID2_NS,
+ 'response_nonce');
+
+ $server_url = $endpoint->server_url;
+ }
+
+ if ($nonce === null) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "Nonce missing from response");
+ }
+
+ $parts = Auth_OpenID_splitNonce($nonce);
+
+ if ($parts === null) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "Malformed nonce in response");
+ }
+
+ list($timestamp, $salt) = $parts;
+
+ if (!$this->store->useNonce($server_url, $timestamp, $salt)) {
+ return new Auth_OpenID_FailureResponse($endpoint,
+ "Nonce already used or out of range");
+ }
+
+ return null;
+ }
+
+ /**
+ * @access private
+ */
+ function _idResCheckForFields($message)
+ {
+ $basic_fields = array('return_to', 'assoc_handle', 'sig', 'signed');
+ $basic_sig_fields = array('return_to', 'identity');
+
+ $require_fields = array(
+ Auth_OpenID_OPENID2_NS => array_merge($basic_fields,
+ array('op_endpoint')),
+
+ Auth_OpenID_OPENID1_NS => array_merge($basic_fields,
+ array('identity'))
+ );
+
+ $require_sigs = array(
+ Auth_OpenID_OPENID2_NS => array_merge($basic_sig_fields,
+ array('response_nonce',
+ 'claimed_id',
+ 'assoc_handle',
+ 'op_endpoint')),
+ Auth_OpenID_OPENID1_NS => array_merge($basic_sig_fields,
+ array('nonce'))
+ );
+
+ foreach ($require_fields[$message->getOpenIDNamespace()] as $field) {
+ if (!$message->hasKey(Auth_OpenID_OPENID_NS, $field)) {
+ return new Auth_OpenID_FailureResponse(null,
+ "Missing required field '".$field."'");
+ }
+ }
+
+ $signed_list_str = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'signed',
+ Auth_OpenID_NO_DEFAULT);
+ if (Auth_OpenID::isFailure($signed_list_str)) {
+ return $signed_list_str;
+ }
+ $signed_list = explode(',', $signed_list_str);
+
+ foreach ($require_sigs[$message->getOpenIDNamespace()] as $field) {
+ // Field is present and not in signed list
+ if ($message->hasKey(Auth_OpenID_OPENID_NS, $field) &&
+ (!in_array($field, $signed_list))) {
+ return new Auth_OpenID_FailureResponse(null,
+ "'".$field."' not signed");
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @access private
+ */
+ function _checkAuth($message, $server_url)
+ {
+ $request = $this->_createCheckAuthRequest($message);
+ if ($request === null) {
+ return false;
+ }
+
+ $resp_message = $this->_makeKVPost($request, $server_url);
+ if (($resp_message === null) ||
+ (is_a($resp_message, 'Auth_OpenID_ServerErrorContainer'))) {
+ return false;
+ }
+
+ return $this->_processCheckAuthResponse($resp_message, $server_url);
+ }
+
+ /**
+ * @access private
+ */
+ function _createCheckAuthRequest($message)
+ {
+ $signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
+ if ($signed) {
+ foreach (explode(',', $signed) as $k) {
+ $value = $message->getAliasedArg($k);
+ if ($value === null) {
+ return null;
+ }
+ }
+ }
+ $ca_message = $message->copy();
+ $ca_message->setArg(Auth_OpenID_OPENID_NS, 'mode',
+ 'check_authentication');
+ return $ca_message;
+ }
+
+ /**
+ * @access private
+ */
+ function _processCheckAuthResponse($response, $server_url)
+ {
+ $is_valid = $response->getArg(Auth_OpenID_OPENID_NS, 'is_valid',
+ 'false');
+
+ $invalidate_handle = $response->getArg(Auth_OpenID_OPENID_NS,
+ 'invalidate_handle');
+
+ if ($invalidate_handle !== null) {
+ $this->store->removeAssociation($server_url,
+ $invalidate_handle);
+ }
+
+ if ($is_valid == 'true') {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Adapt a POST response to a Message.
+ *
+ * @param $response Result of a POST to an OpenID endpoint.
+ *
+ * @access private
+ */
+ static function _httpResponseToMessage($response, $server_url)
+ {
+ // Should this function be named Message.fromHTTPResponse instead?
+ $response_message = Auth_OpenID_Message::fromKVForm($response->body);
+
+ if ($response->status == 400) {
+ return Auth_OpenID_ServerErrorContainer::fromMessage(
+ $response_message);
+ } else if ($response->status != 200 and $response->status != 206) {
+ return null;
+ }
+
+ return $response_message;
+ }
+
+ /**
+ * @access private
+ */
+ function _makeKVPost($message, $server_url)
+ {
+ $body = $message->toURLEncoded();
+ $resp = $this->fetcher->post($server_url, $body);
+
+ if ($resp === null) {
+ return null;
+ }
+
+ return $this->_httpResponseToMessage($resp, $server_url);
+ }
+
+ /**
+ * @access private
+ */
+ function _getAssociation($endpoint)
+ {
+ if (!$this->_use_assocs) {
+ return null;
+ }
+
+ $assoc = $this->store->getAssociation($endpoint->server_url);
+
+ if (($assoc === null) ||
+ ($assoc->getExpiresIn() <= 0)) {
+
+ $assoc = $this->_negotiateAssociation($endpoint);
+
+ if ($assoc !== null) {
+ $this->store->storeAssociation($endpoint->server_url,
+ $assoc);
+ }
+ }
+
+ return $assoc;
+ }
+
+ /**
+ * Handle ServerErrors resulting from association requests.
+ *
+ * @return $result If server replied with an C{unsupported-type}
+ * error, return a tuple of supported C{association_type},
+ * C{session_type}. Otherwise logs the error and returns null.
+ *
+ * @access private
+ */
+ function _extractSupportedAssociationType($server_error, $endpoint,
+ $assoc_type)
+ {
+ // Any error message whose code is not 'unsupported-type'
+ // should be considered a total failure.
+ if (($server_error->error_code != 'unsupported-type') ||
+ ($server_error->message->isOpenID1())) {
+ return null;
+ }
+
+ // The server didn't like the association/session type that we
+ // sent, and it sent us back a message that might tell us how
+ // to handle it.
+
+ // Extract the session_type and assoc_type from the error
+ // message
+ $assoc_type = $server_error->message->getArg(Auth_OpenID_OPENID_NS,
+ 'assoc_type');
+
+ $session_type = $server_error->message->getArg(Auth_OpenID_OPENID_NS,
+ 'session_type');
+
+ if (($assoc_type === null) || ($session_type === null)) {
+ return null;
+ } else if (!$this->negotiator->isAllowed($assoc_type,
+ $session_type)) {
+ return null;
+ } else {
+ return array($assoc_type, $session_type);
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _negotiateAssociation($endpoint)
+ {
+ // Get our preferred session/association type from the negotiatior.
+ list($assoc_type, $session_type) = $this->negotiator->getAllowedType();
+
+ $assoc = $this->_requestAssociation(
+ $endpoint, $assoc_type, $session_type);
+
+ if (Auth_OpenID::isFailure($assoc)) {
+ return null;
+ }
+
+ if (is_a($assoc, 'Auth_OpenID_ServerErrorContainer')) {
+ $why = $assoc;
+
+ $supportedTypes = $this->_extractSupportedAssociationType(
+ $why, $endpoint, $assoc_type);
+
+ if ($supportedTypes !== null) {
+ list($assoc_type, $session_type) = $supportedTypes;
+
+ // Attempt to create an association from the assoc_type
+ // and session_type that the server told us it
+ // supported.
+ $assoc = $this->_requestAssociation(
+ $endpoint, $assoc_type, $session_type);
+
+ if (is_a($assoc, 'Auth_OpenID_ServerErrorContainer')) {
+ // Do not keep trying, since it rejected the
+ // association type that it told us to use.
+ // oidutil.log('Server %s refused its suggested association
+ // 'type: session_type=%s, assoc_type=%s'
+ // % (endpoint.server_url, session_type,
+ // assoc_type))
+ return null;
+ } else {
+ return $assoc;
+ }
+ } else {
+ return null;
+ }
+ } else {
+ return $assoc;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _requestAssociation($endpoint, $assoc_type, $session_type)
+ {
+ list($assoc_session, $args) = $this->_createAssociateRequest(
+ $endpoint, $assoc_type, $session_type);
+
+ $response_message = $this->_makeKVPost($args, $endpoint->server_url);
+
+ if ($response_message === null) {
+ // oidutil.log('openid.associate request failed: %s' % (why[0],))
+ return null;
+ } else if (is_a($response_message,
+ 'Auth_OpenID_ServerErrorContainer')) {
+ return $response_message;
+ }
+
+ return $this->_extractAssociation($response_message, $assoc_session);
+ }
+
+ /**
+ * @access private
+ */
+ function _extractAssociation($assoc_response, $assoc_session)
+ {
+ // Extract the common fields from the response, raising an
+ // exception if they are not found
+ $assoc_type = $assoc_response->getArg(
+ Auth_OpenID_OPENID_NS, 'assoc_type',
+ Auth_OpenID_NO_DEFAULT);
+
+ if (Auth_OpenID::isFailure($assoc_type)) {
+ return $assoc_type;
+ }
+
+ $assoc_handle = $assoc_response->getArg(
+ Auth_OpenID_OPENID_NS, 'assoc_handle',
+ Auth_OpenID_NO_DEFAULT);
+
+ if (Auth_OpenID::isFailure($assoc_handle)) {
+ return $assoc_handle;
+ }
+
+ // expires_in is a base-10 string. The Python parsing will
+ // accept literals that have whitespace around them and will
+ // accept negative values. Neither of these are really in-spec,
+ // but we think it's OK to accept them.
+ $expires_in_str = $assoc_response->getArg(
+ Auth_OpenID_OPENID_NS, 'expires_in',
+ Auth_OpenID_NO_DEFAULT);
+
+ if (Auth_OpenID::isFailure($expires_in_str)) {
+ return $expires_in_str;
+ }
+
+ $expires_in = Auth_OpenID::intval($expires_in_str);
+ if ($expires_in === false) {
+
+ $err = sprintf("Could not parse expires_in from association ".
+ "response %s", print_r($assoc_response, true));
+ return new Auth_OpenID_FailureResponse(null, $err);
+ }
+
+ // OpenID 1 has funny association session behaviour.
+ if ($assoc_response->isOpenID1()) {
+ $session_type = $this->_getOpenID1SessionType($assoc_response);
+ } else {
+ $session_type = $assoc_response->getArg(
+ Auth_OpenID_OPENID2_NS, 'session_type',
+ Auth_OpenID_NO_DEFAULT);
+
+ if (Auth_OpenID::isFailure($session_type)) {
+ return $session_type;
+ }
+ }
+
+ // Session type mismatch
+ if ($assoc_session->session_type != $session_type) {
+ if ($assoc_response->isOpenID1() &&
+ ($session_type == 'no-encryption')) {
+ // In OpenID 1, any association request can result in
+ // a 'no-encryption' association response. Setting
+ // assoc_session to a new no-encryption session should
+ // make the rest of this function work properly for
+ // that case.
+ $assoc_session = new Auth_OpenID_PlainTextConsumerSession();
+ } else {
+ // Any other mismatch, regardless of protocol version
+ // results in the failure of the association session
+ // altogether.
+ return null;
+ }
+ }
+
+ // Make sure assoc_type is valid for session_type
+ if (!in_array($assoc_type, $assoc_session->allowed_assoc_types)) {
+ return null;
+ }
+
+ // Delegate to the association session to extract the secret
+ // from the response, however is appropriate for that session
+ // type.
+ $secret = $assoc_session->extractSecret($assoc_response);
+
+ if ($secret === null) {
+ return null;
+ }
+
+ return Auth_OpenID_Association::fromExpiresIn(
+ $expires_in, $assoc_handle, $secret, $assoc_type);
+ }
+
+ /**
+ * @access private
+ */
+ function _createAssociateRequest($endpoint, $assoc_type, $session_type)
+ {
+ if (array_key_exists($session_type, $this->session_types)) {
+ $session_type_class = $this->session_types[$session_type];
+
+ if (is_callable($session_type_class)) {
+ $assoc_session = $session_type_class();
+ } else {
+ $assoc_session = new $session_type_class();
+ }
+ } else {
+ return null;
+ }
+
+ $args = array(
+ 'mode' => 'associate',
+ 'assoc_type' => $assoc_type);
+
+ if (!$endpoint->compatibilityMode()) {
+ $args['ns'] = Auth_OpenID_OPENID2_NS;
+ }
+
+ // Leave out the session type if we're in compatibility mode
+ // *and* it's no-encryption.
+ if ((!$endpoint->compatibilityMode()) ||
+ ($assoc_session->session_type != 'no-encryption')) {
+ $args['session_type'] = $assoc_session->session_type;
+ }
+
+ $args = array_merge($args, $assoc_session->getRequest());
+ $message = Auth_OpenID_Message::fromOpenIDArgs($args);
+ return array($assoc_session, $message);
+ }
+
+ /**
+ * Given an association response message, extract the OpenID 1.X
+ * session type.
+ *
+ * This function mostly takes care of the 'no-encryption' default
+ * behavior in OpenID 1.
+ *
+ * If the association type is plain-text, this function will
+ * return 'no-encryption'
+ *
+ * @access private
+ * @return $typ The association type for this message
+ */
+ function _getOpenID1SessionType($assoc_response)
+ {
+ // If it's an OpenID 1 message, allow session_type to default
+ // to None (which signifies "no-encryption")
+ $session_type = $assoc_response->getArg(Auth_OpenID_OPENID1_NS,
+ 'session_type');
+
+ // Handle the differences between no-encryption association
+ // respones in OpenID 1 and 2:
+
+ // no-encryption is not really a valid session type for OpenID
+ // 1, but we'll accept it anyway, while issuing a warning.
+ if ($session_type == 'no-encryption') {
+ // oidutil.log('WARNING: OpenID server sent "no-encryption"'
+ // 'for OpenID 1.X')
+ } else if (($session_type == '') || ($session_type === null)) {
+ // Missing or empty session type is the way to flag a
+ // 'no-encryption' response. Change the session type to
+ // 'no-encryption' so that it can be handled in the same
+ // way as OpenID 2 'no-encryption' respones.
+ $session_type = 'no-encryption';
+ }
+
+ return $session_type;
+ }
+}
+
+/**
+ * This class represents an authentication request from a consumer to
+ * an OpenID server.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AuthRequest {
+
+ /**
+ * Initialize an authentication request with the specified token,
+ * association, and endpoint.
+ *
+ * Users of this library should not create instances of this
+ * class. Instances of this class are created by the library when
+ * needed.
+ */
+ function Auth_OpenID_AuthRequest($endpoint, $assoc)
+ {
+ $this->assoc = $assoc;
+ $this->endpoint = $endpoint;
+ $this->return_to_args = array();
+ $this->message = new Auth_OpenID_Message(
+ $endpoint->preferredNamespace());
+ $this->_anonymous = false;
+ }
+
+ /**
+ * Add an extension to this checkid request.
+ *
+ * $extension_request: An object that implements the extension
+ * request interface for adding arguments to an OpenID message.
+ */
+ function addExtension($extension_request)
+ {
+ $extension_request->toMessage($this->message);
+ }
+
+ /**
+ * Add an extension argument to this OpenID authentication
+ * request.
+ *
+ * Use caution when adding arguments, because they will be
+ * URL-escaped and appended to the redirect URL, which can easily
+ * get quite long.
+ *
+ * @param string $namespace The namespace for the extension. For
+ * example, the simple registration extension uses the namespace
+ * 'sreg'.
+ *
+ * @param string $key The key within the extension namespace. For
+ * example, the nickname field in the simple registration
+ * extension's key is 'nickname'.
+ *
+ * @param string $value The value to provide to the server for
+ * this argument.
+ */
+ function addExtensionArg($namespace, $key, $value)
+ {
+ return $this->message->setArg($namespace, $key, $value);
+ }
+
+ /**
+ * Set whether this request should be made anonymously. If a
+ * request is anonymous, the identifier will not be sent in the
+ * request. This is only useful if you are making another kind of
+ * request with an extension in this request.
+ *
+ * Anonymous requests are not allowed when the request is made
+ * with OpenID 1.
+ */
+ function setAnonymous($is_anonymous)
+ {
+ if ($is_anonymous && $this->message->isOpenID1()) {
+ return false;
+ } else {
+ $this->_anonymous = $is_anonymous;
+ return true;
+ }
+ }
+
+ /**
+ * Produce a {@link Auth_OpenID_Message} representing this
+ * request.
+ *
+ * @param string $realm The URL (or URL pattern) that identifies
+ * your web site to the user when she is authorizing it.
+ *
+ * @param string $return_to The URL that the OpenID provider will
+ * send the user back to after attempting to verify her identity.
+ *
+ * Not specifying a return_to URL means that the user will not be
+ * returned to the site issuing the request upon its completion.
+ *
+ * @param bool $immediate If true, the OpenID provider is to send
+ * back a response immediately, useful for behind-the-scenes
+ * authentication attempts. Otherwise the OpenID provider may
+ * engage the user before providing a response. This is the
+ * default case, as the user may need to provide credentials or
+ * approve the request before a positive response can be sent.
+ */
+ function getMessage($realm, $return_to=null, $immediate=false)
+ {
+ if ($return_to) {
+ $return_to = Auth_OpenID::appendArgs($return_to,
+ $this->return_to_args);
+ } else if ($immediate) {
+ // raise ValueError(
+ // '"return_to" is mandatory when
+ //using "checkid_immediate"')
+ return new Auth_OpenID_FailureResponse(null,
+ "'return_to' is mandatory when using checkid_immediate");
+ } else if ($this->message->isOpenID1()) {
+ // raise ValueError('"return_to" is
+ // mandatory for OpenID 1 requests')
+ return new Auth_OpenID_FailureResponse(null,
+ "'return_to' is mandatory for OpenID 1 requests");
+ } else if ($this->return_to_args) {
+ // raise ValueError('extra "return_to" arguments
+ // were specified, but no return_to was specified')
+ return new Auth_OpenID_FailureResponse(null,
+ "extra 'return_to' arguments where specified, " .
+ "but no return_to was specified");
+ }
+
+ if ($immediate) {
+ $mode = 'checkid_immediate';
+ } else {
+ $mode = 'checkid_setup';
+ }
+
+ $message = $this->message->copy();
+ if ($message->isOpenID1()) {
+ $realm_key = 'trust_root';
+ } else {
+ $realm_key = 'realm';
+ }
+
+ $message->updateArgs(Auth_OpenID_OPENID_NS,
+ array(
+ $realm_key => $realm,
+ 'mode' => $mode,
+ 'return_to' => $return_to));
+
+ if (!$this->_anonymous) {
+ if ($this->endpoint->isOPIdentifier()) {
+ // This will never happen when we're in compatibility
+ // mode, as long as isOPIdentifier() returns False
+ // whenever preferredNamespace() returns OPENID1_NS.
+ $claimed_id = $request_identity =
+ Auth_OpenID_IDENTIFIER_SELECT;
+ } else {
+ $request_identity = $this->endpoint->getLocalID();
+ $claimed_id = $this->endpoint->claimed_id;
+ }
+
+ // This is true for both OpenID 1 and 2
+ $message->setArg(Auth_OpenID_OPENID_NS, 'identity',
+ $request_identity);
+
+ if ($message->isOpenID2()) {
+ $message->setArg(Auth_OpenID_OPENID2_NS, 'claimed_id',
+ $claimed_id);
+ }
+ }
+
+ if ($this->assoc) {
+ $message->setArg(Auth_OpenID_OPENID_NS, 'assoc_handle',
+ $this->assoc->handle);
+ }
+
+ return $message;
+ }
+
+ function redirectURL($realm, $return_to = null,
+ $immediate = false)
+ {
+ $message = $this->getMessage($realm, $return_to, $immediate);
+
+ if (Auth_OpenID::isFailure($message)) {
+ return $message;
+ }
+
+ return $message->toURL($this->endpoint->server_url);
+ }
+
+ /**
+ * Get html for a form to submit this request to the IDP.
+ *
+ * form_tag_attrs: An array of attributes to be added to the form
+ * tag. 'accept-charset' and 'enctype' have defaults that can be
+ * overridden. If a value is supplied for 'action' or 'method', it
+ * will be replaced.
+ */
+ function formMarkup($realm, $return_to=null, $immediate=false,
+ $form_tag_attrs=null)
+ {
+ $message = $this->getMessage($realm, $return_to, $immediate);
+
+ if (Auth_OpenID::isFailure($message)) {
+ return $message;
+ }
+
+ return $message->toFormMarkup($this->endpoint->server_url,
+ $form_tag_attrs);
+ }
+
+ /**
+ * Get a complete html document that will autosubmit the request
+ * to the IDP.
+ *
+ * Wraps formMarkup. See the documentation for that function.
+ */
+ function htmlMarkup($realm, $return_to=null, $immediate=false,
+ $form_tag_attrs=null)
+ {
+ $form = $this->formMarkup($realm, $return_to, $immediate,
+ $form_tag_attrs);
+
+ if (Auth_OpenID::isFailure($form)) {
+ return $form;
+ }
+ return Auth_OpenID::autoSubmitHTML($form);
+ }
+
+ function shouldSendRedirect()
+ {
+ return $this->endpoint->compatibilityMode();
+ }
+}
+
+/**
+ * The base class for responses from the Auth_OpenID_Consumer.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_ConsumerResponse {
+ var $status = null;
+
+ function setEndpoint($endpoint)
+ {
+ $this->endpoint = $endpoint;
+ if ($endpoint === null) {
+ $this->identity_url = null;
+ } else {
+ $this->identity_url = $endpoint->claimed_id;
+ }
+ }
+
+ /**
+ * Return the display identifier for this response.
+ *
+ * The display identifier is related to the Claimed Identifier, but the
+ * two are not always identical. The display identifier is something the
+ * user should recognize as what they entered, whereas the response's
+ * claimed identifier (in the identity_url attribute) may have extra
+ * information for better persistence.
+ *
+ * URLs will be stripped of their fragments for display. XRIs will
+ * display the human-readable identifier (i-name) instead of the
+ * persistent identifier (i-number).
+ *
+ * Use the display identifier in your user interface. Use
+ * identity_url for querying your database or authorization server.
+ *
+ */
+ function getDisplayIdentifier()
+ {
+ if ($this->endpoint !== null) {
+ return $this->endpoint->getDisplayIdentifier();
+ }
+ return null;
+ }
+}
+
+/**
+ * A response with a status of Auth_OpenID_SUCCESS. Indicates that
+ * this request is a successful acknowledgement from the OpenID server
+ * that the supplied URL is, indeed controlled by the requesting
+ * agent. This has three relevant attributes:
+ *
+ * claimed_id - The identity URL that has been authenticated
+ *
+ * signed_args - The arguments in the server's response that were
+ * signed and verified.
+ *
+ * status - Auth_OpenID_SUCCESS.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SuccessResponse extends Auth_OpenID_ConsumerResponse {
+ var $status = Auth_OpenID_SUCCESS;
+
+ /**
+ * @access private
+ */
+ function Auth_OpenID_SuccessResponse($endpoint, $message, $signed_args=null)
+ {
+ $this->endpoint = $endpoint;
+ $this->identity_url = $endpoint->claimed_id;
+ $this->signed_args = $signed_args;
+ $this->message = $message;
+
+ if ($this->signed_args === null) {
+ $this->signed_args = array();
+ }
+ }
+
+ /**
+ * Extract signed extension data from the server's response.
+ *
+ * @param string $prefix The extension namespace from which to
+ * extract the extension data.
+ */
+ function extensionResponse($namespace_uri, $require_signed)
+ {
+ if ($require_signed) {
+ return $this->getSignedNS($namespace_uri);
+ } else {
+ return $this->message->getArgs($namespace_uri);
+ }
+ }
+
+ function isOpenID1()
+ {
+ return $this->message->isOpenID1();
+ }
+
+ function isSigned($ns_uri, $ns_key)
+ {
+ // Return whether a particular key is signed, regardless of
+ // its namespace alias
+ return in_array($this->message->getKey($ns_uri, $ns_key),
+ $this->signed_args);
+ }
+
+ function getSigned($ns_uri, $ns_key, $default = null)
+ {
+ // Return the specified signed field if available, otherwise
+ // return default
+ if ($this->isSigned($ns_uri, $ns_key)) {
+ return $this->message->getArg($ns_uri, $ns_key, $default);
+ } else {
+ return $default;
+ }
+ }
+
+ function getSignedNS($ns_uri)
+ {
+ $args = array();
+
+ $msg_args = $this->message->getArgs($ns_uri);
+ if (Auth_OpenID::isFailure($msg_args)) {
+ return null;
+ }
+
+ foreach ($msg_args as $key => $value) {
+ if (!$this->isSigned($ns_uri, $key)) {
+ unset($msg_args[$key]);
+ }
+ }
+
+ return $msg_args;
+ }
+
+ /**
+ * Get the openid.return_to argument from this response.
+ *
+ * This is useful for verifying that this request was initiated by
+ * this consumer.
+ *
+ * @return string $return_to The return_to URL supplied to the
+ * server on the initial request, or null if the response did not
+ * contain an 'openid.return_to' argument.
+ */
+ function getReturnTo()
+ {
+ return $this->getSigned(Auth_OpenID_OPENID_NS, 'return_to');
+ }
+}
+
+/**
+ * A response with a status of Auth_OpenID_FAILURE. Indicates that the
+ * OpenID protocol has failed. This could be locally or remotely
+ * triggered. This has three relevant attributes:
+ *
+ * claimed_id - The identity URL for which authentication was
+ * attempted, if it can be determined. Otherwise, null.
+ *
+ * message - A message indicating why the request failed, if one is
+ * supplied. Otherwise, null.
+ *
+ * status - Auth_OpenID_FAILURE.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_FailureResponse extends Auth_OpenID_ConsumerResponse {
+ var $status = Auth_OpenID_FAILURE;
+
+ function Auth_OpenID_FailureResponse($endpoint, $message = null,
+ $contact = null, $reference = null)
+ {
+ $this->setEndpoint($endpoint);
+ $this->message = $message;
+ $this->contact = $contact;
+ $this->reference = $reference;
+ }
+}
+
+/**
+ * A specific, internal failure used to detect type URI mismatch.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_TypeURIMismatch extends Auth_OpenID_FailureResponse {
+}
+
+/**
+ * Exception that is raised when the server returns a 400 response
+ * code to a direct request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_ServerErrorContainer {
+ function Auth_OpenID_ServerErrorContainer($error_text,
+ $error_code,
+ $message)
+ {
+ $this->error_text = $error_text;
+ $this->error_code = $error_code;
+ $this->message = $message;
+ }
+
+ /**
+ * @access private
+ */
+ static function fromMessage($message)
+ {
+ $error_text = $message->getArg(
+ Auth_OpenID_OPENID_NS, 'error', '<no error message supplied>');
+ $error_code = $message->getArg(Auth_OpenID_OPENID_NS, 'error_code');
+ return new Auth_OpenID_ServerErrorContainer($error_text,
+ $error_code,
+ $message);
+ }
+}
+
+/**
+ * A response with a status of Auth_OpenID_CANCEL. Indicates that the
+ * user cancelled the OpenID authentication request. This has two
+ * relevant attributes:
+ *
+ * claimed_id - The identity URL for which authentication was
+ * attempted, if it can be determined. Otherwise, null.
+ *
+ * status - Auth_OpenID_SUCCESS.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_CancelResponse extends Auth_OpenID_ConsumerResponse {
+ var $status = Auth_OpenID_CANCEL;
+
+ function Auth_OpenID_CancelResponse($endpoint)
+ {
+ $this->setEndpoint($endpoint);
+ }
+}
+
+/**
+ * A response with a status of Auth_OpenID_SETUP_NEEDED. Indicates
+ * that the request was in immediate mode, and the server is unable to
+ * authenticate the user without further interaction.
+ *
+ * claimed_id - The identity URL for which authentication was
+ * attempted.
+ *
+ * setup_url - A URL that can be used to send the user to the server
+ * to set up for authentication. The user should be redirected in to
+ * the setup_url, either in the current window or in a new browser
+ * window. Null in OpenID 2.
+ *
+ * status - Auth_OpenID_SETUP_NEEDED.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SetupNeededResponse extends Auth_OpenID_ConsumerResponse {
+ var $status = Auth_OpenID_SETUP_NEEDED;
+
+ function Auth_OpenID_SetupNeededResponse($endpoint,
+ $setup_url = null)
+ {
+ $this->setEndpoint($endpoint);
+ $this->setup_url = $setup_url;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php
new file mode 100644
index 000000000..3c60cea17
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * CryptUtil: A suite of wrapper utility functions for the OpenID
+ * library.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+if (!defined('Auth_OpenID_RAND_SOURCE')) {
+ /**
+ * The filename for a source of random bytes. Define this yourself
+ * if you have a different source of randomness.
+ */
+ define('Auth_OpenID_RAND_SOURCE', '/dev/urandom');
+}
+
+class Auth_OpenID_CryptUtil {
+ /**
+ * Get the specified number of random bytes.
+ *
+ * Attempts to use a cryptographically secure (not predictable)
+ * source of randomness if available. If there is no high-entropy
+ * randomness source available, it will fail. As a last resort,
+ * for non-critical systems, define
+ * <code>Auth_OpenID_RAND_SOURCE</code> as <code>null</code>, and
+ * the code will fall back on a pseudo-random number generator.
+ *
+ * @param int $num_bytes The length of the return value
+ * @return string $bytes random bytes
+ */
+ static function getBytes($num_bytes)
+ {
+ static $f = null;
+ $bytes = '';
+ if ($f === null) {
+ if (Auth_OpenID_RAND_SOURCE === null) {
+ $f = false;
+ } else {
+ $f = @fopen(Auth_OpenID_RAND_SOURCE, "r");
+ if ($f === false) {
+ $msg = 'Define Auth_OpenID_RAND_SOURCE as null to ' .
+ ' continue with an insecure random number generator.';
+ trigger_error($msg, E_USER_ERROR);
+ }
+ }
+ }
+ if ($f === false) {
+ // pseudorandom used
+ $bytes = '';
+ for ($i = 0; $i < $num_bytes; $i += 4) {
+ $bytes .= pack('L', mt_rand());
+ }
+ $bytes = substr($bytes, 0, $num_bytes);
+ } else {
+ $bytes = fread($f, $num_bytes);
+ }
+ return $bytes;
+ }
+
+ /**
+ * Produce a string of length random bytes, chosen from chrs. If
+ * $chrs is null, the resulting string may contain any characters.
+ *
+ * @param integer $length The length of the resulting
+ * randomly-generated string
+ * @param string $chrs A string of characters from which to choose
+ * to build the new string
+ * @return string $result A string of randomly-chosen characters
+ * from $chrs
+ */
+ static function randomString($length, $population = null)
+ {
+ if ($population === null) {
+ return Auth_OpenID_CryptUtil::getBytes($length);
+ }
+
+ $popsize = strlen($population);
+
+ if ($popsize > 256) {
+ $msg = 'More than 256 characters supplied to ' . __FUNCTION__;
+ trigger_error($msg, E_USER_ERROR);
+ }
+
+ $duplicate = 256 % $popsize;
+
+ $str = "";
+ for ($i = 0; $i < $length; $i++) {
+ do {
+ $n = ord(Auth_OpenID_CryptUtil::getBytes(1));
+ } while ($n < $duplicate);
+
+ $n %= $popsize;
+ $str .= $population[$n];
+ }
+
+ return $str;
+ }
+
+ static function constEq($s1, $s2)
+ {
+ if (strlen($s1) != strlen($s2)) {
+ return false;
+ }
+
+ $result = true;
+ $length = strlen($s1);
+ for ($i = 0; $i < $length; $i++) {
+ $result &= ($s1[$i] == $s2[$i]);
+ }
+ return $result;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php
new file mode 100644
index 000000000..0c7d08f91
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php
@@ -0,0 +1,130 @@
+<?php
+
+/**
+ * The Auth_OpenID_DatabaseConnection class, which is used to emulate
+ * a PEAR database connection.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * An empty base class intended to emulate PEAR connection
+ * functionality in applications that supply their own database
+ * abstraction mechanisms. See {@link Auth_OpenID_SQLStore} for more
+ * information. You should subclass this class if you need to create
+ * an SQL store that needs to access its database using an
+ * application's database abstraction layer instead of a PEAR database
+ * connection. Any subclass of Auth_OpenID_DatabaseConnection MUST
+ * adhere to the interface specified here.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DatabaseConnection {
+ /**
+ * Sets auto-commit mode on this database connection.
+ *
+ * @param bool $mode True if auto-commit is to be used; false if
+ * not.
+ */
+ function autoCommit($mode)
+ {
+ }
+
+ /**
+ * Run an SQL query with the specified parameters, if any.
+ *
+ * @param string $sql An SQL string with placeholders. The
+ * placeholders are assumed to be specific to the database engine
+ * for this connection.
+ *
+ * @param array $params An array of parameters to insert into the
+ * SQL string using this connection's escaping mechanism.
+ *
+ * @return mixed $result The result of calling this connection's
+ * internal query function. The type of result depends on the
+ * underlying database engine. This method is usually used when
+ * the result of a query is not important, like a DDL query.
+ */
+ function query($sql, $params = array())
+ {
+ }
+
+ /**
+ * Starts a transaction on this connection, if supported.
+ */
+ function begin()
+ {
+ }
+
+ /**
+ * Commits a transaction on this connection, if supported.
+ */
+ function commit()
+ {
+ }
+
+ /**
+ * Performs a rollback on this connection, if supported.
+ */
+ function rollback()
+ {
+ }
+
+ /**
+ * Run an SQL query and return the first column of the first row
+ * of the result set, if any.
+ *
+ * @param string $sql An SQL string with placeholders. The
+ * placeholders are assumed to be specific to the database engine
+ * for this connection.
+ *
+ * @param array $params An array of parameters to insert into the
+ * SQL string using this connection's escaping mechanism.
+ *
+ * @return mixed $result The value of the first column of the
+ * first row of the result set. False if no such result was
+ * found.
+ */
+ function getOne($sql, $params = array())
+ {
+ }
+
+ /**
+ * Run an SQL query and return the first row of the result set, if
+ * any.
+ *
+ * @param string $sql An SQL string with placeholders. The
+ * placeholders are assumed to be specific to the database engine
+ * for this connection.
+ *
+ * @param array $params An array of parameters to insert into the
+ * SQL string using this connection's escaping mechanism.
+ *
+ * @return array $result The first row of the result set, if any,
+ * keyed on column name. False if no such result was found.
+ */
+ function getRow($sql, $params = array())
+ {
+ }
+
+ /**
+ * Run an SQL query with the specified parameters, if any.
+ *
+ * @param string $sql An SQL string with placeholders. The
+ * placeholders are assumed to be specific to the database engine
+ * for this connection.
+ *
+ * @param array $params An array of parameters to insert into the
+ * SQL string using this connection's escaping mechanism.
+ *
+ * @return array $result An array of arrays representing the
+ * result of the query; each array is keyed on column name.
+ */
+ function getAll($sql, $params = array())
+ {
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php
new file mode 100644
index 000000000..3e25b7dbb
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * The OpenID library's Diffie-Hellman implementation.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/OpenID.php';
+require_once 'Auth/OpenID/BigMath.php';
+
+function Auth_OpenID_getDefaultMod()
+{
+ return '155172898181473697471232257763715539915724801'.
+ '966915404479707795314057629378541917580651227423'.
+ '698188993727816152646631438561595825688188889951'.
+ '272158842675419950341258706556549803580104870537'.
+ '681476726513255747040765857479291291572334510643'.
+ '245094715007229621094194349783925984760375594985'.
+ '848253359305585439638443';
+}
+
+function Auth_OpenID_getDefaultGen()
+{
+ return '2';
+}
+
+/**
+ * The Diffie-Hellman key exchange class. This class relies on
+ * {@link Auth_OpenID_MathLibrary} to perform large number operations.
+ *
+ * @access private
+ * @package OpenID
+ */
+class Auth_OpenID_DiffieHellman {
+
+ var $mod;
+ var $gen;
+ var $private;
+ var $lib = null;
+
+ function Auth_OpenID_DiffieHellman($mod = null, $gen = null,
+ $private = null, $lib = null)
+ {
+ if ($lib === null) {
+ $this->lib = Auth_OpenID_getMathLib();
+ } else {
+ $this->lib = $lib;
+ }
+
+ if ($mod === null) {
+ $this->mod = $this->lib->init(Auth_OpenID_getDefaultMod());
+ } else {
+ $this->mod = $mod;
+ }
+
+ if ($gen === null) {
+ $this->gen = $this->lib->init(Auth_OpenID_getDefaultGen());
+ } else {
+ $this->gen = $gen;
+ }
+
+ if ($private === null) {
+ $r = $this->lib->rand($this->mod);
+ $this->private = $this->lib->add($r, 1);
+ } else {
+ $this->private = $private;
+ }
+
+ $this->public = $this->lib->powmod($this->gen, $this->private,
+ $this->mod);
+ }
+
+ function getSharedSecret($composite)
+ {
+ return $this->lib->powmod($composite, $this->private, $this->mod);
+ }
+
+ function getPublicKey()
+ {
+ return $this->public;
+ }
+
+ function usingDefaultValues()
+ {
+ return ($this->mod == Auth_OpenID_getDefaultMod() &&
+ $this->gen == Auth_OpenID_getDefaultGen());
+ }
+
+ function xorSecret($composite, $secret, $hash_func)
+ {
+ $dh_shared = $this->getSharedSecret($composite);
+ $dh_shared_str = $this->lib->longToBinary($dh_shared);
+ $hash_dh_shared = $hash_func($dh_shared_str);
+
+ $xsecret = "";
+ for ($i = 0; $i < Auth_OpenID::bytes($secret); $i++) {
+ $xsecret .= chr(ord($secret[$i]) ^ ord($hash_dh_shared[$i]));
+ }
+
+ return $xsecret;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php
new file mode 100644
index 000000000..7b0c640c5
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php
@@ -0,0 +1,606 @@
+<?php
+
+/**
+ * The OpenID and Yadis discovery implementation for OpenID 1.2.
+ */
+
+require_once "Auth/OpenID.php";
+require_once "Auth/OpenID/Parse.php";
+require_once "Auth/OpenID/Message.php";
+require_once "Auth/Yadis/XRIRes.php";
+require_once "Auth/Yadis/Yadis.php";
+
+// XML namespace value
+define('Auth_OpenID_XMLNS_1_0', 'http://openid.net/xmlns/1.0');
+
+// Yadis service types
+define('Auth_OpenID_TYPE_1_2', 'http://openid.net/signon/1.2');
+define('Auth_OpenID_TYPE_1_1', 'http://openid.net/signon/1.1');
+define('Auth_OpenID_TYPE_1_0', 'http://openid.net/signon/1.0');
+define('Auth_OpenID_TYPE_2_0_IDP', 'http://specs.openid.net/auth/2.0/server');
+define('Auth_OpenID_TYPE_2_0', 'http://specs.openid.net/auth/2.0/signon');
+define('Auth_OpenID_RP_RETURN_TO_URL_TYPE',
+ 'http://specs.openid.net/auth/2.0/return_to');
+
+function Auth_OpenID_getOpenIDTypeURIs()
+{
+ return array(Auth_OpenID_TYPE_2_0_IDP,
+ Auth_OpenID_TYPE_2_0,
+ Auth_OpenID_TYPE_1_2,
+ Auth_OpenID_TYPE_1_1,
+ Auth_OpenID_TYPE_1_0);
+}
+
+function Auth_OpenID_getOpenIDConsumerTypeURIs()
+{
+ return array(Auth_OpenID_RP_RETURN_TO_URL_TYPE);
+}
+
+
+/*
+ * Provides a user-readable interpretation of a type uri.
+ * Useful for error messages.
+ */
+function Auth_OpenID_getOpenIDTypeName($type_uri) {
+ switch ($type_uri) {
+ case Auth_OpenID_TYPE_2_0_IDP:
+ return 'OpenID 2.0 IDP';
+ case Auth_OpenID_TYPE_2_0:
+ return 'OpenID 2.0';
+ case Auth_OpenID_TYPE_1_2:
+ return 'OpenID 1.2';
+ case Auth_OpenID_TYPE_1_1:
+ return 'OpenID 1.1';
+ case Auth_OpenID_TYPE_1_0:
+ return 'OpenID 1.0';
+ case Auth_OpenID_RP_RETURN_TO_URL_TYPE:
+ return 'OpenID relying party';
+ }
+}
+
+/**
+ * Object representing an OpenID service endpoint.
+ */
+class Auth_OpenID_ServiceEndpoint {
+ function Auth_OpenID_ServiceEndpoint()
+ {
+ $this->claimed_id = null;
+ $this->server_url = null;
+ $this->type_uris = array();
+ $this->local_id = null;
+ $this->canonicalID = null;
+ $this->used_yadis = false; // whether this came from an XRDS
+ $this->display_identifier = null;
+ }
+
+ function getDisplayIdentifier()
+ {
+ if ($this->display_identifier) {
+ return $this->display_identifier;
+ }
+ if (! $this->claimed_id) {
+ return $this->claimed_id;
+ }
+ $parsed = parse_url($this->claimed_id);
+ $scheme = $parsed['scheme'];
+ $host = $parsed['host'];
+ $path = $parsed['path'];
+ if (array_key_exists('query', $parsed)) {
+ $query = $parsed['query'];
+ $no_frag = "$scheme://$host$path?$query";
+ } else {
+ $no_frag = "$scheme://$host$path";
+ }
+ return $no_frag;
+ }
+
+ function usesExtension($extension_uri)
+ {
+ return in_array($extension_uri, $this->type_uris);
+ }
+
+ function preferredNamespace()
+ {
+ if (in_array(Auth_OpenID_TYPE_2_0_IDP, $this->type_uris) ||
+ in_array(Auth_OpenID_TYPE_2_0, $this->type_uris)) {
+ return Auth_OpenID_OPENID2_NS;
+ } else {
+ return Auth_OpenID_OPENID1_NS;
+ }
+ }
+
+ /*
+ * Query this endpoint to see if it has any of the given type
+ * URIs. This is useful for implementing other endpoint classes
+ * that e.g. need to check for the presence of multiple versions
+ * of a single protocol.
+ *
+ * @param $type_uris The URIs that you wish to check
+ *
+ * @return all types that are in both in type_uris and
+ * $this->type_uris
+ */
+ function matchTypes($type_uris)
+ {
+ $result = array();
+ foreach ($type_uris as $test_uri) {
+ if ($this->supportsType($test_uri)) {
+ $result[] = $test_uri;
+ }
+ }
+
+ return $result;
+ }
+
+ function supportsType($type_uri)
+ {
+ // Does this endpoint support this type?
+ return ((in_array($type_uri, $this->type_uris)) ||
+ (($type_uri == Auth_OpenID_TYPE_2_0) &&
+ $this->isOPIdentifier()));
+ }
+
+ function compatibilityMode()
+ {
+ return $this->preferredNamespace() != Auth_OpenID_OPENID2_NS;
+ }
+
+ function isOPIdentifier()
+ {
+ return in_array(Auth_OpenID_TYPE_2_0_IDP, $this->type_uris);
+ }
+
+ static function fromOPEndpointURL($op_endpoint_url)
+ {
+ // Construct an OP-Identifier OpenIDServiceEndpoint object for
+ // a given OP Endpoint URL
+ $obj = new Auth_OpenID_ServiceEndpoint();
+ $obj->server_url = $op_endpoint_url;
+ $obj->type_uris = array(Auth_OpenID_TYPE_2_0_IDP);
+ return $obj;
+ }
+
+ function parseService($yadis_url, $uri, $type_uris, $service_element)
+ {
+ // Set the state of this object based on the contents of the
+ // service element. Return true if successful, false if not
+ // (if findOPLocalIdentifier returns false).
+ $this->type_uris = $type_uris;
+ $this->server_url = $uri;
+ $this->used_yadis = true;
+
+ if (!$this->isOPIdentifier()) {
+ $this->claimed_id = $yadis_url;
+ $this->local_id = Auth_OpenID_findOPLocalIdentifier(
+ $service_element,
+ $this->type_uris);
+ if ($this->local_id === false) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function getLocalID()
+ {
+ // Return the identifier that should be sent as the
+ // openid.identity_url parameter to the server.
+ if ($this->local_id === null && $this->canonicalID === null) {
+ return $this->claimed_id;
+ } else {
+ if ($this->local_id) {
+ return $this->local_id;
+ } else {
+ return $this->canonicalID;
+ }
+ }
+ }
+
+ /*
+ * Parse the given document as XRDS looking for OpenID consumer services.
+ *
+ * @return array of Auth_OpenID_ServiceEndpoint or null if the
+ * document cannot be parsed.
+ */
+ function consumerFromXRDS($uri, $xrds_text)
+ {
+ $xrds =& Auth_Yadis_XRDS::parseXRDS($xrds_text);
+
+ if ($xrds) {
+ $yadis_services =
+ $xrds->services(array('filter_MatchesAnyOpenIDConsumerType'));
+ return Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services);
+ }
+
+ return null;
+ }
+
+ /*
+ * Parse the given document as XRDS looking for OpenID services.
+ *
+ * @return array of Auth_OpenID_ServiceEndpoint or null if the
+ * document cannot be parsed.
+ */
+ static function fromXRDS($uri, $xrds_text)
+ {
+ $xrds = Auth_Yadis_XRDS::parseXRDS($xrds_text);
+
+ if ($xrds) {
+ $yadis_services =
+ $xrds->services(array('filter_MatchesAnyOpenIDType'));
+ return Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services);
+ }
+
+ return null;
+ }
+
+ /*
+ * Create endpoints from a DiscoveryResult.
+ *
+ * @param discoveryResult Auth_Yadis_DiscoveryResult
+ * @return array of Auth_OpenID_ServiceEndpoint or null if
+ * endpoints cannot be created.
+ */
+ static function fromDiscoveryResult($discoveryResult)
+ {
+ if ($discoveryResult->isXRDS()) {
+ return Auth_OpenID_ServiceEndpoint::fromXRDS(
+ $discoveryResult->normalized_uri,
+ $discoveryResult->response_text);
+ } else {
+ return Auth_OpenID_ServiceEndpoint::fromHTML(
+ $discoveryResult->normalized_uri,
+ $discoveryResult->response_text);
+ }
+ }
+
+ static function fromHTML($uri, $html)
+ {
+ $discovery_types = array(
+ array(Auth_OpenID_TYPE_2_0,
+ 'openid2.provider', 'openid2.local_id'),
+ array(Auth_OpenID_TYPE_1_1,
+ 'openid.server', 'openid.delegate')
+ );
+
+ $services = array();
+
+ foreach ($discovery_types as $triple) {
+ list($type_uri, $server_rel, $delegate_rel) = $triple;
+
+ $urls = Auth_OpenID_legacy_discover($html, $server_rel,
+ $delegate_rel);
+
+ if ($urls === false) {
+ continue;
+ }
+
+ list($delegate_url, $server_url) = $urls;
+
+ $service = new Auth_OpenID_ServiceEndpoint();
+ $service->claimed_id = $uri;
+ $service->local_id = $delegate_url;
+ $service->server_url = $server_url;
+ $service->type_uris = array($type_uri);
+
+ $services[] = $service;
+ }
+
+ return $services;
+ }
+
+ function copy()
+ {
+ $x = new Auth_OpenID_ServiceEndpoint();
+
+ $x->claimed_id = $this->claimed_id;
+ $x->server_url = $this->server_url;
+ $x->type_uris = $this->type_uris;
+ $x->local_id = $this->local_id;
+ $x->canonicalID = $this->canonicalID;
+ $x->used_yadis = $this->used_yadis;
+
+ return $x;
+ }
+}
+
+function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
+{
+ // Extract a openid:Delegate value from a Yadis Service element.
+ // If no delegate is found, returns null. Returns false on
+ // discovery failure (when multiple delegate/localID tags have
+ // different values).
+
+ $service->parser->registerNamespace('openid',
+ Auth_OpenID_XMLNS_1_0);
+
+ $service->parser->registerNamespace('xrd',
+ Auth_Yadis_XMLNS_XRD_2_0);
+
+ $parser = $service->parser;
+
+ $permitted_tags = array();
+
+ if (in_array(Auth_OpenID_TYPE_1_1, $type_uris) ||
+ in_array(Auth_OpenID_TYPE_1_0, $type_uris)) {
+ $permitted_tags[] = 'openid:Delegate';
+ }
+
+ if (in_array(Auth_OpenID_TYPE_2_0, $type_uris)) {
+ $permitted_tags[] = 'xrd:LocalID';
+ }
+
+ $local_id = null;
+
+ foreach ($permitted_tags as $tag_name) {
+ $tags = $service->getElements($tag_name);
+
+ foreach ($tags as $tag) {
+ $content = $parser->content($tag);
+
+ if ($local_id === null) {
+ $local_id = $content;
+ } else if ($local_id != $content) {
+ return false;
+ }
+ }
+ }
+
+ return $local_id;
+}
+
+function filter_MatchesAnyOpenIDType($service)
+{
+ $uris = $service->getTypes();
+
+ foreach ($uris as $uri) {
+ if (in_array($uri, Auth_OpenID_getOpenIDTypeURIs())) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function filter_MatchesAnyOpenIDConsumerType(&$service)
+{
+ $uris = $service->getTypes();
+
+ foreach ($uris as $uri) {
+ if (in_array($uri, Auth_OpenID_getOpenIDConsumerTypeURIs())) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function Auth_OpenID_bestMatchingService($service, $preferred_types)
+{
+ // Return the index of the first matching type, or something
+ // higher if no type matches.
+ //
+ // This provides an ordering in which service elements that
+ // contain a type that comes earlier in the preferred types list
+ // come before service elements that come later. If a service
+ // element has more than one type, the most preferred one wins.
+
+ foreach ($preferred_types as $index => $typ) {
+ if (in_array($typ, $service->type_uris)) {
+ return $index;
+ }
+ }
+
+ return count($preferred_types);
+}
+
+function Auth_OpenID_arrangeByType($service_list, $preferred_types)
+{
+ // Rearrange service_list in a new list so services are ordered by
+ // types listed in preferred_types. Return the new list.
+
+ // Build a list with the service elements in tuples whose
+ // comparison will prefer the one with the best matching service
+ $prio_services = array();
+ foreach ($service_list as $index => $service) {
+ $prio_services[] = array(Auth_OpenID_bestMatchingService($service,
+ $preferred_types),
+ $index, $service);
+ }
+
+ sort($prio_services);
+
+ // Now that the services are sorted by priority, remove the sort
+ // keys from the list.
+ foreach ($prio_services as $index => $s) {
+ $prio_services[$index] = $prio_services[$index][2];
+ }
+
+ return $prio_services;
+}
+
+// Extract OP Identifier services. If none found, return the rest,
+// sorted with most preferred first according to
+// OpenIDServiceEndpoint.openid_type_uris.
+//
+// openid_services is a list of OpenIDServiceEndpoint objects.
+//
+// Returns a list of OpenIDServiceEndpoint objects."""
+function Auth_OpenID_getOPOrUserServices($openid_services)
+{
+ $op_services = Auth_OpenID_arrangeByType($openid_services,
+ array(Auth_OpenID_TYPE_2_0_IDP));
+
+ $openid_services = Auth_OpenID_arrangeByType($openid_services,
+ Auth_OpenID_getOpenIDTypeURIs());
+
+ if ($op_services) {
+ return $op_services;
+ } else {
+ return $openid_services;
+ }
+}
+
+function Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services)
+{
+ $s = array();
+
+ if (!$yadis_services) {
+ return $s;
+ }
+
+ foreach ($yadis_services as $service) {
+ $type_uris = $service->getTypes();
+ $uris = $service->getURIs();
+
+ // If any Type URIs match and there is an endpoint URI
+ // specified, then this is an OpenID endpoint
+ if ($type_uris &&
+ $uris) {
+ foreach ($uris as $service_uri) {
+ $openid_endpoint = new Auth_OpenID_ServiceEndpoint();
+ if ($openid_endpoint->parseService($uri,
+ $service_uri,
+ $type_uris,
+ $service)) {
+ $s[] = $openid_endpoint;
+ }
+ }
+ }
+ }
+
+ return $s;
+}
+
+function Auth_OpenID_discoverWithYadis($uri, $fetcher,
+ $endpoint_filter='Auth_OpenID_getOPOrUserServices',
+ $discover_function=null)
+{
+ // Discover OpenID services for a URI. Tries Yadis and falls back
+ // on old-style <link rel='...'> discovery if Yadis fails.
+
+ // Might raise a yadis.discover.DiscoveryFailure if no document
+ // came back for that URI at all. I don't think falling back to
+ // OpenID 1.0 discovery on the same URL will help, so don't bother
+ // to catch it.
+ if ($discover_function === null) {
+ $discover_function = array('Auth_Yadis_Yadis', 'discover');
+ }
+
+ $openid_services = array();
+
+ $response = call_user_func_array($discover_function,
+ array($uri, $fetcher));
+
+ $yadis_url = $response->normalized_uri;
+ $yadis_services = array();
+
+ if ($response->isFailure() && !$response->isXRDS()) {
+ return array($uri, array());
+ }
+
+ $openid_services = Auth_OpenID_ServiceEndpoint::fromXRDS(
+ $yadis_url,
+ $response->response_text);
+
+ if (!$openid_services) {
+ if ($response->isXRDS()) {
+ return Auth_OpenID_discoverWithoutYadis($uri,
+ $fetcher);
+ }
+
+ // Try to parse the response as HTML to get OpenID 1.0/1.1
+ // <link rel="...">
+ $openid_services = Auth_OpenID_ServiceEndpoint::fromHTML(
+ $yadis_url,
+ $response->response_text);
+ }
+
+ $openid_services = call_user_func_array($endpoint_filter,
+ array($openid_services));
+
+ return array($yadis_url, $openid_services);
+}
+
+function Auth_OpenID_discoverURI($uri, $fetcher)
+{
+ $uri = Auth_OpenID::normalizeUrl($uri);
+ return Auth_OpenID_discoverWithYadis($uri, $fetcher);
+}
+
+function Auth_OpenID_discoverWithoutYadis($uri, $fetcher)
+{
+ $http_resp = @$fetcher->get($uri);
+
+ if ($http_resp->status != 200 and $http_resp->status != 206) {
+ return array($uri, array());
+ }
+
+ $identity_url = $http_resp->final_url;
+
+ // Try to parse the response as HTML to get OpenID 1.0/1.1 <link
+ // rel="...">
+ $openid_services = Auth_OpenID_ServiceEndpoint::fromHTML(
+ $identity_url,
+ $http_resp->body);
+
+ return array($identity_url, $openid_services);
+}
+
+function Auth_OpenID_discoverXRI($iname, $fetcher)
+{
+ $resolver = new Auth_Yadis_ProxyResolver($fetcher);
+ list($canonicalID, $yadis_services) =
+ $resolver->query($iname,
+ Auth_OpenID_getOpenIDTypeURIs(),
+ array('filter_MatchesAnyOpenIDType'));
+
+ $openid_services = Auth_OpenID_makeOpenIDEndpoints($iname,
+ $yadis_services);
+
+ $openid_services = Auth_OpenID_getOPOrUserServices($openid_services);
+
+ for ($i = 0; $i < count($openid_services); $i++) {
+ $openid_services[$i]->canonicalID = $canonicalID;
+ $openid_services[$i]->claimed_id = $canonicalID;
+ $openid_services[$i]->display_identifier = $iname;
+ }
+
+ // FIXME: returned xri should probably be in some normal form
+ return array($iname, $openid_services);
+}
+
+function Auth_OpenID_discover($uri, $fetcher)
+{
+ // If the fetcher (i.e., PHP) doesn't support SSL, we can't do
+ // discovery on an HTTPS URL.
+ if ($fetcher->isHTTPS($uri) && !$fetcher->supportsSSL()) {
+ return array($uri, array());
+ }
+
+ if (Auth_Yadis_identifierScheme($uri) == 'XRI') {
+ $result = Auth_OpenID_discoverXRI($uri, $fetcher);
+ } else {
+ $result = Auth_OpenID_discoverURI($uri, $fetcher);
+ }
+
+ // If the fetcher doesn't support SSL, we can't interact with
+ // HTTPS server URLs; remove those endpoints from the list.
+ if (!$fetcher->supportsSSL()) {
+ $http_endpoints = array();
+ list($new_uri, $endpoints) = $result;
+
+ foreach ($endpoints as $e) {
+ if (!$fetcher->isHTTPS($e->server_url)) {
+ $http_endpoints[] = $e;
+ }
+ }
+
+ $result = array($new_uri, $http_endpoints);
+ }
+
+ return $result;
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php
new file mode 100644
index 000000000..e8f29ace5
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * This file supplies a dumb store backend for OpenID servers and
+ * consumers.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Import the interface for creating a new store class.
+ */
+require_once 'Auth/OpenID/Interface.php';
+require_once 'Auth/OpenID/HMAC.php';
+
+/**
+ * This is a store for use in the worst case, when you have no way of
+ * saving state on the consumer site. Using this store makes the
+ * consumer vulnerable to replay attacks, as it's unable to use
+ * nonces. Avoid using this store if it is at all possible.
+ *
+ * Most of the methods of this class are implementation details.
+ * Users of this class need to worry only about the constructor.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DumbStore extends Auth_OpenID_OpenIDStore {
+
+ /**
+ * Creates a new {@link Auth_OpenID_DumbStore} instance. For the security
+ * of the tokens generated by the library, this class attempts to
+ * at least have a secure implementation of getAuthKey.
+ *
+ * When you create an instance of this class, pass in a secret
+ * phrase. The phrase is hashed with sha1 to make it the correct
+ * length and form for an auth key. That allows you to use a long
+ * string as the secret phrase, which means you can make it very
+ * difficult to guess.
+ *
+ * Each {@link Auth_OpenID_DumbStore} instance that is created for use by
+ * your consumer site needs to use the same $secret_phrase.
+ *
+ * @param string secret_phrase The phrase used to create the auth
+ * key returned by getAuthKey
+ */
+ function Auth_OpenID_DumbStore($secret_phrase)
+ {
+ $this->auth_key = Auth_OpenID_SHA1($secret_phrase);
+ }
+
+ /**
+ * This implementation does nothing.
+ */
+ function storeAssociation($server_url, $association)
+ {
+ }
+
+ /**
+ * This implementation always returns null.
+ */
+ function getAssociation($server_url, $handle = null)
+ {
+ return null;
+ }
+
+ /**
+ * This implementation always returns false.
+ */
+ function removeAssociation($server_url, $handle)
+ {
+ return false;
+ }
+
+ /**
+ * In a system truly limited to dumb mode, nonces must all be
+ * accepted. This therefore always returns true, which makes
+ * replay attacks feasible.
+ */
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ return true;
+ }
+
+ /**
+ * This method returns the auth key generated by the constructor.
+ */
+ function getAuthKey()
+ {
+ return $this->auth_key;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php
new file mode 100644
index 000000000..c4e38c038
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * An interface for OpenID extensions.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Require the Message implementation.
+ */
+require_once 'Auth/OpenID/Message.php';
+
+/**
+ * A base class for accessing extension request and response data for
+ * the OpenID 2 protocol.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Extension {
+ /**
+ * ns_uri: The namespace to which to add the arguments for this
+ * extension
+ */
+ var $ns_uri = null;
+ var $ns_alias = null;
+
+ /**
+ * Get the string arguments that should be added to an OpenID
+ * message for this extension.
+ */
+ function getExtensionArgs()
+ {
+ return null;
+ }
+
+ /**
+ * Add the arguments from this extension to the provided message.
+ *
+ * Returns the message with the extension arguments added.
+ */
+ function toMessage($message)
+ {
+ $implicit = $message->isOpenID1();
+ $added = $message->namespaces->addAlias($this->ns_uri,
+ $this->ns_alias,
+ $implicit);
+
+ if ($added === null) {
+ if ($message->namespaces->getAlias($this->ns_uri) !=
+ $this->ns_alias) {
+ return null;
+ }
+ }
+
+ $message->updateArgs($this->ns_uri,
+ $this->getExtensionArgs());
+ return $message;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php
new file mode 100644
index 000000000..074421a0b
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php
@@ -0,0 +1,618 @@
+<?php
+
+/**
+ * This file supplies a Memcached store backend for OpenID servers and
+ * consumers.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Require base class for creating a new interface.
+ */
+require_once 'Auth/OpenID.php';
+require_once 'Auth/OpenID/Interface.php';
+require_once 'Auth/OpenID/HMAC.php';
+require_once 'Auth/OpenID/Nonce.php';
+
+/**
+ * This is a filesystem-based store for OpenID associations and
+ * nonces. This store should be safe for use in concurrent systems on
+ * both windows and unix (excluding NFS filesystems). There are a
+ * couple race conditions in the system, but those failure cases have
+ * been set up in such a way that the worst-case behavior is someone
+ * having to try to log in a second time.
+ *
+ * Most of the methods of this class are implementation details.
+ * People wishing to just use this store need only pay attention to
+ * the constructor.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
+
+ /**
+ * Initializes a new {@link Auth_OpenID_FileStore}. This
+ * initializes the nonce and association directories, which are
+ * subdirectories of the directory passed in.
+ *
+ * @param string $directory This is the directory to put the store
+ * directories in.
+ */
+ function Auth_OpenID_FileStore($directory)
+ {
+ if (!Auth_OpenID::ensureDir($directory)) {
+ trigger_error('Not a directory and failed to create: '
+ . $directory, E_USER_ERROR);
+ }
+ $directory = realpath($directory);
+
+ $this->directory = $directory;
+ $this->active = true;
+
+ $this->nonce_dir = $directory . DIRECTORY_SEPARATOR . 'nonces';
+
+ $this->association_dir = $directory . DIRECTORY_SEPARATOR .
+ 'associations';
+
+ // Temp dir must be on the same filesystem as the assciations
+ // $directory.
+ $this->temp_dir = $directory . DIRECTORY_SEPARATOR . 'temp';
+
+ $this->max_nonce_age = 6 * 60 * 60; // Six hours, in seconds
+
+ if (!$this->_setup()) {
+ trigger_error('Failed to initialize OpenID file store in ' .
+ $directory, E_USER_ERROR);
+ }
+ }
+
+ function destroy()
+ {
+ Auth_OpenID_FileStore::_rmtree($this->directory);
+ $this->active = false;
+ }
+
+ /**
+ * Make sure that the directories in which we store our data
+ * exist.
+ *
+ * @access private
+ */
+ function _setup()
+ {
+ return (Auth_OpenID::ensureDir($this->nonce_dir) &&
+ Auth_OpenID::ensureDir($this->association_dir) &&
+ Auth_OpenID::ensureDir($this->temp_dir));
+ }
+
+ /**
+ * Create a temporary file on the same filesystem as
+ * $this->association_dir.
+ *
+ * The temporary directory should not be cleaned if there are any
+ * processes using the store. If there is no active process using
+ * the store, it is safe to remove all of the files in the
+ * temporary directory.
+ *
+ * @return array ($fd, $filename)
+ * @access private
+ */
+ function _mktemp()
+ {
+ $name = Auth_OpenID_FileStore::_mkstemp($dir = $this->temp_dir);
+ $file_obj = @fopen($name, 'wb');
+ if ($file_obj !== false) {
+ return array($file_obj, $name);
+ } else {
+ Auth_OpenID_FileStore::_removeIfPresent($name);
+ }
+ }
+
+ function cleanupNonces()
+ {
+ global $Auth_OpenID_SKEW;
+
+ $nonces = Auth_OpenID_FileStore::_listdir($this->nonce_dir);
+ $now = time();
+
+ $removed = 0;
+ // Check all nonces for expiry
+ foreach ($nonces as $nonce_fname) {
+ $base = basename($nonce_fname);
+ $parts = explode('-', $base, 2);
+ $timestamp = $parts[0];
+ $timestamp = intval($timestamp, 16);
+ if (abs($timestamp - $now) > $Auth_OpenID_SKEW) {
+ Auth_OpenID_FileStore::_removeIfPresent($nonce_fname);
+ $removed += 1;
+ }
+ }
+ return $removed;
+ }
+
+ /**
+ * Create a unique filename for a given server url and
+ * handle. This implementation does not assume anything about the
+ * format of the handle. The filename that is returned will
+ * contain the domain name from the server URL for ease of human
+ * inspection of the data directory.
+ *
+ * @return string $filename
+ */
+ function getAssociationFilename($server_url, $handle)
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ if (strpos($server_url, '://') === false) {
+ trigger_error(sprintf("Bad server URL: %s", $server_url),
+ E_USER_WARNING);
+ return null;
+ }
+
+ list($proto, $rest) = explode('://', $server_url, 2);
+ $parts = explode('/', $rest);
+ $domain = Auth_OpenID_FileStore::_filenameEscape($parts[0]);
+ $url_hash = Auth_OpenID_FileStore::_safe64($server_url);
+ if ($handle) {
+ $handle_hash = Auth_OpenID_FileStore::_safe64($handle);
+ } else {
+ $handle_hash = '';
+ }
+
+ $filename = sprintf('%s-%s-%s-%s', $proto, $domain, $url_hash,
+ $handle_hash);
+
+ return $this->association_dir. DIRECTORY_SEPARATOR . $filename;
+ }
+
+ /**
+ * Store an association in the association directory.
+ */
+ function storeAssociation($server_url, $association)
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return false;
+ }
+
+ $association_s = $association->serialize();
+ $filename = $this->getAssociationFilename($server_url,
+ $association->handle);
+ list($tmp_file, $tmp) = $this->_mktemp();
+
+ if (!$tmp_file) {
+ trigger_error("_mktemp didn't return a valid file descriptor",
+ E_USER_WARNING);
+ return false;
+ }
+
+ fwrite($tmp_file, $association_s);
+
+ fflush($tmp_file);
+
+ fclose($tmp_file);
+
+ if (@rename($tmp, $filename)) {
+ return true;
+ } else {
+ // In case we are running on Windows, try unlinking the
+ // file in case it exists.
+ @unlink($filename);
+
+ // Now the target should not exist. Try renaming again,
+ // giving up if it fails.
+ if (@rename($tmp, $filename)) {
+ return true;
+ }
+ }
+
+ // If there was an error, don't leave the temporary file
+ // around.
+ Auth_OpenID_FileStore::_removeIfPresent($tmp);
+ return false;
+ }
+
+ /**
+ * Retrieve an association. If no handle is specified, return the
+ * association with the most recent issue time.
+ *
+ * @return mixed $association
+ */
+ function getAssociation($server_url, $handle = null)
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ if ($handle === null) {
+ $handle = '';
+ }
+
+ // The filename with the empty handle is a prefix of all other
+ // associations for the given server URL.
+ $filename = $this->getAssociationFilename($server_url, $handle);
+
+ if ($handle) {
+ return $this->_getAssociation($filename);
+ } else {
+ $association_files =
+ Auth_OpenID_FileStore::_listdir($this->association_dir);
+ $matching_files = array();
+
+ // strip off the path to do the comparison
+ $name = basename($filename);
+ foreach ($association_files as $association_file) {
+ $base = basename($association_file);
+ if (strpos($base, $name) === 0) {
+ $matching_files[] = $association_file;
+ }
+ }
+
+ $matching_associations = array();
+ // read the matching files and sort by time issued
+ foreach ($matching_files as $full_name) {
+ $association = $this->_getAssociation($full_name);
+ if ($association !== null) {
+ $matching_associations[] = array($association->issued,
+ $association);
+ }
+ }
+
+ $issued = array();
+ $assocs = array();
+ foreach ($matching_associations as $key => $assoc) {
+ $issued[$key] = $assoc[0];
+ $assocs[$key] = $assoc[1];
+ }
+
+ array_multisort($issued, SORT_DESC, $assocs, SORT_DESC,
+ $matching_associations);
+
+ // return the most recently issued one.
+ if ($matching_associations) {
+ list($issued, $assoc) = $matching_associations[0];
+ return $assoc;
+ } else {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _getAssociation($filename)
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ $assoc_file = @fopen($filename, 'rb');
+
+ if ($assoc_file === false) {
+ return null;
+ }
+
+ $assoc_s = fread($assoc_file, filesize($filename));
+ fclose($assoc_file);
+
+ if (!$assoc_s) {
+ return null;
+ }
+
+ $association =
+ Auth_OpenID_Association::deserialize('Auth_OpenID_Association',
+ $assoc_s);
+
+ if (!$association) {
+ Auth_OpenID_FileStore::_removeIfPresent($filename);
+ return null;
+ }
+
+ if ($association->getExpiresIn() == 0) {
+ Auth_OpenID_FileStore::_removeIfPresent($filename);
+ return null;
+ } else {
+ return $association;
+ }
+ }
+
+ /**
+ * Remove an association if it exists. Do nothing if it does not.
+ *
+ * @return bool $success
+ */
+ function removeAssociation($server_url, $handle)
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ $assoc = $this->getAssociation($server_url, $handle);
+ if ($assoc === null) {
+ return false;
+ } else {
+ $filename = $this->getAssociationFilename($server_url, $handle);
+ return Auth_OpenID_FileStore::_removeIfPresent($filename);
+ }
+ }
+
+ /**
+ * Return whether this nonce is present. As a side effect, mark it
+ * as no longer present.
+ *
+ * @return bool $present
+ */
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ global $Auth_OpenID_SKEW;
+
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
+ return false;
+ }
+
+ if ($server_url) {
+ list($proto, $rest) = explode('://', $server_url, 2);
+ } else {
+ $proto = '';
+ $rest = '';
+ }
+
+ $parts = explode('/', $rest, 2);
+ $domain = $this->_filenameEscape($parts[0]);
+ $url_hash = $this->_safe64($server_url);
+ $salt_hash = $this->_safe64($salt);
+
+ $filename = sprintf('%08x-%s-%s-%s-%s', $timestamp, $proto,
+ $domain, $url_hash, $salt_hash);
+ $filename = $this->nonce_dir . DIRECTORY_SEPARATOR . $filename;
+
+ $result = @fopen($filename, 'x');
+
+ if ($result === false) {
+ return false;
+ } else {
+ fclose($result);
+ return true;
+ }
+ }
+
+ /**
+ * Remove expired entries from the database. This is potentially
+ * expensive, so only run when it is acceptable to take time.
+ *
+ * @access private
+ */
+ function _allAssocs()
+ {
+ $all_associations = array();
+
+ $association_filenames =
+ Auth_OpenID_FileStore::_listdir($this->association_dir);
+
+ foreach ($association_filenames as $association_filename) {
+ $association_file = fopen($association_filename, 'rb');
+
+ if ($association_file !== false) {
+ $assoc_s = fread($association_file,
+ filesize($association_filename));
+ fclose($association_file);
+
+ // Remove expired or corrupted associations
+ $association =
+ Auth_OpenID_Association::deserialize(
+ 'Auth_OpenID_Association', $assoc_s);
+
+ if ($association === null) {
+ Auth_OpenID_FileStore::_removeIfPresent(
+ $association_filename);
+ } else {
+ if ($association->getExpiresIn() == 0) {
+ $all_associations[] = array($association_filename,
+ $association);
+ }
+ }
+ }
+ }
+
+ return $all_associations;
+ }
+
+ function clean()
+ {
+ if (!$this->active) {
+ trigger_error("FileStore no longer active", E_USER_ERROR);
+ return null;
+ }
+
+ $nonces = Auth_OpenID_FileStore::_listdir($this->nonce_dir);
+ $now = time();
+
+ // Check all nonces for expiry
+ foreach ($nonces as $nonce) {
+ if (!Auth_OpenID_checkTimestamp($nonce, $now)) {
+ $filename = $this->nonce_dir . DIRECTORY_SEPARATOR . $nonce;
+ Auth_OpenID_FileStore::_removeIfPresent($filename);
+ }
+ }
+
+ foreach ($this->_allAssocs() as $pair) {
+ list($assoc_filename, $assoc) = $pair;
+ if ($assoc->getExpiresIn() == 0) {
+ Auth_OpenID_FileStore::_removeIfPresent($assoc_filename);
+ }
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _rmtree($dir)
+ {
+ if ($dir[strlen($dir) - 1] != DIRECTORY_SEPARATOR) {
+ $dir .= DIRECTORY_SEPARATOR;
+ }
+
+ if ($handle = opendir($dir)) {
+ while ($item = readdir($handle)) {
+ if (!in_array($item, array('.', '..'))) {
+ if (is_dir($dir . $item)) {
+
+ if (!Auth_OpenID_FileStore::_rmtree($dir . $item)) {
+ return false;
+ }
+ } else if (is_file($dir . $item)) {
+ if (!unlink($dir . $item)) {
+ return false;
+ }
+ }
+ }
+ }
+
+ closedir($handle);
+
+ if (!@rmdir($dir)) {
+ return false;
+ }
+
+ return true;
+ } else {
+ // Couldn't open directory.
+ return false;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _mkstemp($dir)
+ {
+ foreach (range(0, 4) as $i) {
+ $name = tempnam($dir, "php_openid_filestore_");
+
+ if ($name !== false) {
+ return $name;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @access private
+ */
+ static function _mkdtemp($dir)
+ {
+ foreach (range(0, 4) as $i) {
+ $name = $dir . strval(DIRECTORY_SEPARATOR) . strval(getmypid()) .
+ "-" . strval(rand(1, time()));
+ if (!mkdir($name, 0700)) {
+ return false;
+ } else {
+ return $name;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @access private
+ */
+ function _listdir($dir)
+ {
+ $handle = opendir($dir);
+ $files = array();
+ while (false !== ($filename = readdir($handle))) {
+ if (!in_array($filename, array('.', '..'))) {
+ $files[] = $dir . DIRECTORY_SEPARATOR . $filename;
+ }
+ }
+ return $files;
+ }
+
+ /**
+ * @access private
+ */
+ function _isFilenameSafe($char)
+ {
+ $_Auth_OpenID_filename_allowed = Auth_OpenID_letters .
+ Auth_OpenID_digits . ".";
+ return (strpos($_Auth_OpenID_filename_allowed, $char) !== false);
+ }
+
+ /**
+ * @access private
+ */
+ function _safe64($str)
+ {
+ $h64 = base64_encode(Auth_OpenID_SHA1($str));
+ $h64 = str_replace('+', '_', $h64);
+ $h64 = str_replace('/', '.', $h64);
+ $h64 = str_replace('=', '', $h64);
+ return $h64;
+ }
+
+ /**
+ * @access private
+ */
+ function _filenameEscape($str)
+ {
+ $filename = "";
+ $b = Auth_OpenID::toBytes($str);
+
+ for ($i = 0; $i < count($b); $i++) {
+ $c = $b[$i];
+ if (Auth_OpenID_FileStore::_isFilenameSafe($c)) {
+ $filename .= $c;
+ } else {
+ $filename .= sprintf("_%02X", ord($c));
+ }
+ }
+ return $filename;
+ }
+
+ /**
+ * Attempt to remove a file, returning whether the file existed at
+ * the time of the call.
+ *
+ * @access private
+ * @return bool $result True if the file was present, false if not.
+ */
+ function _removeIfPresent($filename)
+ {
+ return @unlink($filename);
+ }
+
+ function cleanupAssociations()
+ {
+ $removed = 0;
+ foreach ($this->_allAssocs() as $pair) {
+ list($assoc_filename, $assoc) = $pair;
+ if ($assoc->getExpiresIn() == 0) {
+ $this->_removeIfPresent($assoc_filename);
+ $removed += 1;
+ }
+ }
+ return $removed;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php
new file mode 100644
index 000000000..e6c4bdfd9
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * This is the HMACSHA1 implementation for the OpenID library.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/OpenID.php';
+
+/**
+ * SHA1_BLOCKSIZE is this module's SHA1 blocksize used by the fallback
+ * implementation.
+ */
+define('Auth_OpenID_SHA1_BLOCKSIZE', 64);
+
+function Auth_OpenID_SHA1($text)
+{
+ if (function_exists('hash') &&
+ function_exists('hash_algos') &&
+ (in_array('sha1', hash_algos()))) {
+ // PHP 5 case (sometimes): 'hash' available and 'sha1' algo
+ // supported.
+ return hash('sha1', $text, true);
+ } else if (function_exists('sha1')) {
+ // PHP 4 case: 'sha1' available.
+ $hex = sha1($text);
+ $raw = '';
+ for ($i = 0; $i < 40; $i += 2) {
+ $hexcode = substr($hex, $i, 2);
+ $charcode = (int)base_convert($hexcode, 16, 10);
+ $raw .= chr($charcode);
+ }
+ return $raw;
+ } else {
+ // Explode.
+ trigger_error('No SHA1 function found', E_USER_ERROR);
+ }
+}
+
+/**
+ * Compute an HMAC/SHA1 hash.
+ *
+ * @access private
+ * @param string $key The HMAC key
+ * @param string $text The message text to hash
+ * @return string $mac The MAC
+ */
+function Auth_OpenID_HMACSHA1($key, $text)
+{
+ if (Auth_OpenID::bytes($key) > Auth_OpenID_SHA1_BLOCKSIZE) {
+ $key = Auth_OpenID_SHA1($key, true);
+ }
+
+ if (function_exists('hash_hmac') &&
+ function_exists('hash_algos') &&
+ (in_array('sha1', hash_algos()))) {
+ return hash_hmac('sha1', $text, $key, true);
+ }
+ // Home-made solution
+
+ $key = str_pad($key, Auth_OpenID_SHA1_BLOCKSIZE, chr(0x00));
+ $ipad = str_repeat(chr(0x36), Auth_OpenID_SHA1_BLOCKSIZE);
+ $opad = str_repeat(chr(0x5c), Auth_OpenID_SHA1_BLOCKSIZE);
+ $hash1 = Auth_OpenID_SHA1(($key ^ $ipad) . $text, true);
+ $hmac = Auth_OpenID_SHA1(($key ^ $opad) . $hash1, true);
+ return $hmac;
+}
+
+if (function_exists('hash') &&
+ function_exists('hash_algos') &&
+ (in_array('sha256', hash_algos()))) {
+ function Auth_OpenID_SHA256($text)
+ {
+ // PHP 5 case: 'hash' available and 'sha256' algo supported.
+ return hash('sha256', $text, true);
+ }
+ define('Auth_OpenID_SHA256_SUPPORTED', true);
+} else {
+ define('Auth_OpenID_SHA256_SUPPORTED', false);
+}
+
+if (function_exists('hash_hmac') &&
+ function_exists('hash_algos') &&
+ (in_array('sha256', hash_algos()))) {
+
+ function Auth_OpenID_HMACSHA256($key, $text)
+ {
+ // Return raw MAC (not hex string).
+ return hash_hmac('sha256', $text, $key, true);
+ }
+
+ define('Auth_OpenID_HMACSHA256_SUPPORTED', true);
+} else {
+ define('Auth_OpenID_HMACSHA256_SUPPORTED', false);
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php
new file mode 100644
index 000000000..eca6b9c50
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php
@@ -0,0 +1,196 @@
+<?php
+
+/**
+ * This file specifies the interface for PHP OpenID store implementations.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * This is the interface for the store objects the OpenID library
+ * uses. It is a single class that provides all of the persistence
+ * mechanisms that the OpenID library needs, for both servers and
+ * consumers. If you want to create an SQL-driven store, please see
+ * then {@link Auth_OpenID_SQLStore} class.
+ *
+ * Change: Version 2.0 removed the storeNonce, getAuthKey, and isDumb
+ * methods, and changed the behavior of the useNonce method to support
+ * one-way nonces.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ */
+class Auth_OpenID_OpenIDStore {
+ /**
+ * This method puts an Association object into storage,
+ * retrievable by server URL and handle.
+ *
+ * @param string $server_url The URL of the identity server that
+ * this association is with. Because of the way the server portion
+ * of the library uses this interface, don't assume there are any
+ * limitations on the character set of the input string. In
+ * particular, expect to see unescaped non-url-safe characters in
+ * the server_url field.
+ *
+ * @param Association $association The Association to store.
+ */
+ function storeAssociation($server_url, $association)
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::storeAssociation ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /*
+ * Remove expired nonces from the store.
+ *
+ * Discards any nonce from storage that is old enough that its
+ * timestamp would not pass useNonce().
+ *
+ * This method is not called in the normal operation of the
+ * library. It provides a way for store admins to keep their
+ * storage from filling up with expired data.
+ *
+ * @return the number of nonces expired
+ */
+ function cleanupNonces()
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::cleanupNonces ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /*
+ * Remove expired associations from the store.
+ *
+ * This method is not called in the normal operation of the
+ * library. It provides a way for store admins to keep their
+ * storage from filling up with expired data.
+ *
+ * @return the number of associations expired.
+ */
+ function cleanupAssociations()
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::cleanupAssociations ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /*
+ * Shortcut for cleanupNonces(), cleanupAssociations().
+ *
+ * This method is not called in the normal operation of the
+ * library. It provides a way for store admins to keep their
+ * storage from filling up with expired data.
+ */
+ function cleanup()
+ {
+ return array($this->cleanupNonces(),
+ $this->cleanupAssociations());
+ }
+
+ /**
+ * Report whether this storage supports cleanup
+ */
+ function supportsCleanup()
+ {
+ return true;
+ }
+
+ /**
+ * This method returns an Association object from storage that
+ * matches the server URL and, if specified, handle. It returns
+ * null if no such association is found or if the matching
+ * association is expired.
+ *
+ * If no handle is specified, the store may return any association
+ * which matches the server URL. If multiple associations are
+ * valid, the recommended return value for this method is the one
+ * most recently issued.
+ *
+ * This method is allowed (and encouraged) to garbage collect
+ * expired associations when found. This method must not return
+ * expired associations.
+ *
+ * @param string $server_url The URL of the identity server to get
+ * the association for. Because of the way the server portion of
+ * the library uses this interface, don't assume there are any
+ * limitations on the character set of the input string. In
+ * particular, expect to see unescaped non-url-safe characters in
+ * the server_url field.
+ *
+ * @param mixed $handle This optional parameter is the handle of
+ * the specific association to get. If no specific handle is
+ * provided, any valid association matching the server URL is
+ * returned.
+ *
+ * @return Association The Association for the given identity
+ * server.
+ */
+ function getAssociation($server_url, $handle = null)
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::getAssociation ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /**
+ * This method removes the matching association if it's found, and
+ * returns whether the association was removed or not.
+ *
+ * @param string $server_url The URL of the identity server the
+ * association to remove belongs to. Because of the way the server
+ * portion of the library uses this interface, don't assume there
+ * are any limitations on the character set of the input
+ * string. In particular, expect to see unescaped non-url-safe
+ * characters in the server_url field.
+ *
+ * @param string $handle This is the handle of the association to
+ * remove. If there isn't an association found that matches both
+ * the given URL and handle, then there was no matching handle
+ * found.
+ *
+ * @return mixed Returns whether or not the given association existed.
+ */
+ function removeAssociation($server_url, $handle)
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::removeAssociation ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /**
+ * Called when using a nonce.
+ *
+ * This method should return C{True} if the nonce has not been
+ * used before, and store it for a while to make sure nobody
+ * tries to use the same value again. If the nonce has already
+ * been used, return C{False}.
+ *
+ * Change: In earlier versions, round-trip nonces were used and a
+ * nonce was only valid if it had been previously stored with
+ * storeNonce. Version 2.0 uses one-way nonces, requiring a
+ * different implementation here that does not depend on a
+ * storeNonce call. (storeNonce is no longer part of the
+ * interface.
+ *
+ * @param string $nonce The nonce to use.
+ *
+ * @return bool Whether or not the nonce was valid.
+ */
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ trigger_error("Auth_OpenID_OpenIDStore::useNonce ".
+ "not implemented", E_USER_ERROR);
+ }
+
+ /**
+ * Removes all entries from the store; implementation is optional.
+ */
+ function reset()
+ {
+ }
+
+}
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php
new file mode 100644
index 000000000..dd02661d8
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * OpenID protocol key-value/comma-newline format parsing and
+ * serialization
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Container for key-value/comma-newline OpenID format and parsing
+ */
+class Auth_OpenID_KVForm {
+ /**
+ * Convert an OpenID colon/newline separated string into an
+ * associative array
+ *
+ * @static
+ * @access private
+ */
+ static function toArray($kvs, $strict=false)
+ {
+ $lines = explode("\n", $kvs);
+
+ $last = array_pop($lines);
+ if ($last !== '') {
+ array_push($lines, $last);
+ if ($strict) {
+ return false;
+ }
+ }
+
+ $values = array();
+
+ for ($lineno = 0; $lineno < count($lines); $lineno++) {
+ $line = $lines[$lineno];
+ $kv = explode(':', $line, 2);
+ if (count($kv) != 2) {
+ if ($strict) {
+ return false;
+ }
+ continue;
+ }
+
+ $key = $kv[0];
+ $tkey = trim($key);
+ if ($tkey != $key) {
+ if ($strict) {
+ return false;
+ }
+ }
+
+ $value = $kv[1];
+ $tval = trim($value);
+ if ($tval != $value) {
+ if ($strict) {
+ return false;
+ }
+ }
+
+ $values[$tkey] = $tval;
+ }
+
+ return $values;
+ }
+
+ /**
+ * Convert an array into an OpenID colon/newline separated string
+ *
+ * @static
+ * @access private
+ */
+ static function fromArray($values)
+ {
+ if ($values === null) {
+ return null;
+ }
+
+ ksort($values);
+
+ $serialized = '';
+ foreach ($values as $key => $value) {
+ if (is_array($value)) {
+ list($key, $value) = array($value[0], $value[1]);
+ }
+
+ if (strpos($key, ':') !== false) {
+ return null;
+ }
+
+ if (strpos($key, "\n") !== false) {
+ return null;
+ }
+
+ if (strpos($value, "\n") !== false) {
+ return null;
+ }
+ $serialized .= "$key:$value\n";
+ }
+ return $serialized;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php
new file mode 100644
index 000000000..80024bada
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php
@@ -0,0 +1,413 @@
+<?php
+
+/**
+ * SQL-backed OpenID stores for use with PEAR::MDB2.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005 Janrain, Inc.
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL
+ */
+
+require_once 'MDB2.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/Interface.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/Nonce.php';
+
+/**
+ * This store uses a PEAR::MDB2 connection to store persistence
+ * information.
+ *
+ * The table names used are determined by the class variables
+ * associations_table_name and nonces_table_name. To change the name
+ * of the tables used, pass new table names into the constructor.
+ *
+ * To create the tables with the proper schema, see the createTables
+ * method.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_MDB2Store extends Auth_OpenID_OpenIDStore {
+ /**
+ * This creates a new MDB2Store instance. It requires an
+ * established database connection be given to it, and it allows
+ * overriding the default table names.
+ *
+ * @param connection $connection This must be an established
+ * connection to a database of the correct type for the SQLStore
+ * subclass you're using. This must be a PEAR::MDB2 connection
+ * handle.
+ *
+ * @param associations_table: This is an optional parameter to
+ * specify the name of the table used for storing associations.
+ * The default value is 'oid_associations'.
+ *
+ * @param nonces_table: This is an optional parameter to specify
+ * the name of the table used for storing nonces. The default
+ * value is 'oid_nonces'.
+ */
+ function Auth_OpenID_MDB2Store($connection,
+ $associations_table = null,
+ $nonces_table = null)
+ {
+ $this->associations_table_name = "oid_associations";
+ $this->nonces_table_name = "oid_nonces";
+
+ // Check the connection object type to be sure it's a PEAR
+ // database connection.
+ if (!is_object($connection) ||
+ !is_subclass_of($connection, 'mdb2_driver_common')) {
+ trigger_error("Auth_OpenID_MDB2Store expected PEAR connection " .
+ "object (got ".get_class($connection).")",
+ E_USER_ERROR);
+ return;
+ }
+
+ $this->connection = $connection;
+
+ // Be sure to set the fetch mode so the results are keyed on
+ // column name instead of column index.
+ $this->connection->setFetchMode(MDB2_FETCHMODE_ASSOC);
+
+ if (PEAR::isError($this->connection->loadModule('Extended'))) {
+ trigger_error("Unable to load MDB2_Extended module", E_USER_ERROR);
+ return;
+ }
+
+ if ($associations_table) {
+ $this->associations_table_name = $associations_table;
+ }
+
+ if ($nonces_table) {
+ $this->nonces_table_name = $nonces_table;
+ }
+
+ $this->max_nonce_age = 6 * 60 * 60;
+ }
+
+ function tableExists($table_name)
+ {
+ return !PEAR::isError($this->connection->query(
+ sprintf("SELECT * FROM %s LIMIT 0",
+ $table_name)));
+ }
+
+ function createTables()
+ {
+ $n = $this->create_nonce_table();
+ $a = $this->create_assoc_table();
+
+ if (!$n || !$a) {
+ return false;
+ }
+ return true;
+ }
+
+ function create_nonce_table()
+ {
+ if (!$this->tableExists($this->nonces_table_name)) {
+ switch ($this->connection->phptype) {
+ case "mysql":
+ case "mysqli":
+ // Custom SQL for MySQL to use InnoDB and variable-
+ // length keys
+ $r = $this->connection->exec(
+ sprintf("CREATE TABLE %s (\n".
+ " server_url VARCHAR(2047) NOT NULL DEFAULT '',\n".
+ " timestamp INTEGER NOT NULL,\n".
+ " salt CHAR(40) NOT NULL,\n".
+ " UNIQUE (server_url(255), timestamp, salt)\n".
+ ") TYPE=InnoDB",
+ $this->nonces_table_name));
+ if (PEAR::isError($r)) {
+ return false;
+ }
+ break;
+ default:
+ if (PEAR::isError(
+ $this->connection->loadModule('Manager'))) {
+ return false;
+ }
+ $fields = array(
+ "server_url" => array(
+ "type" => "text",
+ "length" => 2047,
+ "notnull" => true
+ ),
+ "timestamp" => array(
+ "type" => "integer",
+ "notnull" => true
+ ),
+ "salt" => array(
+ "type" => "text",
+ "length" => 40,
+ "fixed" => true,
+ "notnull" => true
+ )
+ );
+ $constraint = array(
+ "unique" => 1,
+ "fields" => array(
+ "server_url" => true,
+ "timestamp" => true,
+ "salt" => true
+ )
+ );
+
+ $r = $this->connection->createTable($this->nonces_table_name,
+ $fields);
+ if (PEAR::isError($r)) {
+ return false;
+ }
+
+ $r = $this->connection->createConstraint(
+ $this->nonces_table_name,
+ $this->nonces_table_name . "_constraint",
+ $constraint);
+ if (PEAR::isError($r)) {
+ return false;
+ }
+ break;
+ }
+ }
+ return true;
+ }
+
+ function create_assoc_table()
+ {
+ if (!$this->tableExists($this->associations_table_name)) {
+ switch ($this->connection->phptype) {
+ case "mysql":
+ case "mysqli":
+ // Custom SQL for MySQL to use InnoDB and variable-
+ // length keys
+ $r = $this->connection->exec(
+ sprintf("CREATE TABLE %s(\n".
+ " server_url VARCHAR(2047) NOT NULL DEFAULT '',\n".
+ " handle VARCHAR(255) NOT NULL,\n".
+ " secret BLOB NOT NULL,\n".
+ " issued INTEGER NOT NULL,\n".
+ " lifetime INTEGER NOT NULL,\n".
+ " assoc_type VARCHAR(64) NOT NULL,\n".
+ " PRIMARY KEY (server_url(255), handle)\n".
+ ") TYPE=InnoDB",
+ $this->associations_table_name));
+ if (PEAR::isError($r)) {
+ return false;
+ }
+ break;
+ default:
+ if (PEAR::isError(
+ $this->connection->loadModule('Manager'))) {
+ return false;
+ }
+ $fields = array(
+ "server_url" => array(
+ "type" => "text",
+ "length" => 2047,
+ "notnull" => true
+ ),
+ "handle" => array(
+ "type" => "text",
+ "length" => 255,
+ "notnull" => true
+ ),
+ "secret" => array(
+ "type" => "blob",
+ "length" => "255",
+ "notnull" => true
+ ),
+ "issued" => array(
+ "type" => "integer",
+ "notnull" => true
+ ),
+ "lifetime" => array(
+ "type" => "integer",
+ "notnull" => true
+ ),
+ "assoc_type" => array(
+ "type" => "text",
+ "length" => 64,
+ "notnull" => true
+ )
+ );
+ $options = array(
+ "primary" => array(
+ "server_url" => true,
+ "handle" => true
+ )
+ );
+
+ $r = $this->connection->createTable(
+ $this->associations_table_name,
+ $fields,
+ $options);
+ if (PEAR::isError($r)) {
+ return false;
+ }
+ break;
+ }
+ }
+ return true;
+ }
+
+ function storeAssociation($server_url, $association)
+ {
+ $fields = array(
+ "server_url" => array(
+ "value" => $server_url,
+ "key" => true
+ ),
+ "handle" => array(
+ "value" => $association->handle,
+ "key" => true
+ ),
+ "secret" => array(
+ "value" => $association->secret,
+ "type" => "blob"
+ ),
+ "issued" => array(
+ "value" => $association->issued
+ ),
+ "lifetime" => array(
+ "value" => $association->lifetime
+ ),
+ "assoc_type" => array(
+ "value" => $association->assoc_type
+ )
+ );
+
+ return !PEAR::isError($this->connection->replace(
+ $this->associations_table_name,
+ $fields));
+ }
+
+ function cleanupNonces()
+ {
+ global $Auth_OpenID_SKEW;
+ $v = time() - $Auth_OpenID_SKEW;
+
+ return $this->connection->exec(
+ sprintf("DELETE FROM %s WHERE timestamp < %d",
+ $this->nonces_table_name, $v));
+ }
+
+ function cleanupAssociations()
+ {
+ return $this->connection->exec(
+ sprintf("DELETE FROM %s WHERE issued + lifetime < %d",
+ $this->associations_table_name, time()));
+ }
+
+ function getAssociation($server_url, $handle = null)
+ {
+ $sql = "";
+ $params = null;
+ $types = array(
+ "text",
+ "blob",
+ "integer",
+ "integer",
+ "text"
+ );
+ if ($handle !== null) {
+ $sql = sprintf("SELECT handle, secret, issued, lifetime, assoc_type " .
+ "FROM %s WHERE server_url = ? AND handle = ?",
+ $this->associations_table_name);
+ $params = array($server_url, $handle);
+ } else {
+ $sql = sprintf("SELECT handle, secret, issued, lifetime, assoc_type " .
+ "FROM %s WHERE server_url = ? ORDER BY issued DESC",
+ $this->associations_table_name);
+ $params = array($server_url);
+ }
+
+ $assoc = $this->connection->getRow($sql, $types, $params);
+
+ if (!$assoc || PEAR::isError($assoc)) {
+ return null;
+ } else {
+ $association = new Auth_OpenID_Association($assoc['handle'],
+ stream_get_contents(
+ $assoc['secret']),
+ $assoc['issued'],
+ $assoc['lifetime'],
+ $assoc['assoc_type']);
+ fclose($assoc['secret']);
+ return $association;
+ }
+ }
+
+ function removeAssociation($server_url, $handle)
+ {
+ $r = $this->connection->execParam(
+ sprintf("DELETE FROM %s WHERE server_url = ? AND handle = ?",
+ $this->associations_table_name),
+ array($server_url, $handle));
+
+ if (PEAR::isError($r) || $r == 0) {
+ return false;
+ }
+ return true;
+ }
+
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ global $Auth_OpenID_SKEW;
+
+ if (abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
+ return false;
+ }
+
+ $fields = array(
+ "timestamp" => $timestamp,
+ "salt" => $salt
+ );
+
+ if (!empty($server_url)) {
+ $fields["server_url"] = $server_url;
+ }
+
+ $r = $this->connection->autoExecute(
+ $this->nonces_table_name,
+ $fields,
+ MDB2_AUTOQUERY_INSERT);
+
+ if (PEAR::isError($r)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Resets the store by removing all records from the store's
+ * tables.
+ */
+ function reset()
+ {
+ $this->connection->query(sprintf("DELETE FROM %s",
+ $this->associations_table_name));
+
+ $this->connection->query(sprintf("DELETE FROM %s",
+ $this->nonces_table_name));
+ }
+
+}
+
+?>
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php
new file mode 100644
index 000000000..fc10800b1
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php
@@ -0,0 +1,207 @@
+<?php
+
+/**
+ * This file supplies a memcached store backend for OpenID servers and
+ * consumers.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author Artemy Tregubenko <me@arty.name>
+ * @copyright 2008 JanRain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ * Contributed by Open Web Technologies <http://openwebtech.ru/>
+ */
+
+/**
+ * Import the interface for creating a new store class.
+ */
+require_once 'Auth/OpenID/Interface.php';
+
+/**
+ * This is a memcached-based store for OpenID associations and
+ * nonces.
+ *
+ * As memcache has limit of 250 chars for key length,
+ * server_url, handle and salt are hashed with sha1().
+ *
+ * Most of the methods of this class are implementation details.
+ * People wishing to just use this store need only pay attention to
+ * the constructor.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_MemcachedStore extends Auth_OpenID_OpenIDStore {
+
+ /**
+ * Initializes a new {@link Auth_OpenID_MemcachedStore} instance.
+ * Just saves memcached object as property.
+ *
+ * @param resource connection Memcache connection resourse
+ */
+ function Auth_OpenID_MemcachedStore($connection, $compress = false)
+ {
+ $this->connection = $connection;
+ $this->compress = $compress ? MEMCACHE_COMPRESSED : 0;
+ }
+
+ /**
+ * Store association until its expiration time in memcached.
+ * Overwrites any existing association with same server_url and
+ * handle. Handles list of associations for every server.
+ */
+ function storeAssociation($server_url, $association)
+ {
+ // create memcached keys for association itself
+ // and list of associations for this server
+ $associationKey = $this->associationKey($server_url,
+ $association->handle);
+ $serverKey = $this->associationServerKey($server_url);
+
+ // get list of associations
+ $serverAssociations = $this->connection->get($serverKey);
+
+ // if no such list, initialize it with empty array
+ if (!$serverAssociations) {
+ $serverAssociations = array();
+ }
+ // and store given association key in it
+ $serverAssociations[$association->issued] = $associationKey;
+
+ // save associations' keys list
+ $this->connection->set(
+ $serverKey,
+ $serverAssociations,
+ $this->compress
+ );
+ // save association itself
+ $this->connection->set(
+ $associationKey,
+ $association,
+ $this->compress,
+ $association->issued + $association->lifetime);
+ }
+
+ /**
+ * Read association from memcached. If no handle given
+ * and multiple associations found, returns latest issued
+ */
+ function getAssociation($server_url, $handle = null)
+ {
+ // simple case: handle given
+ if ($handle !== null) {
+ // get association, return null if failed
+ $association = $this->connection->get(
+ $this->associationKey($server_url, $handle));
+ return $association ? $association : null;
+ }
+
+ // no handle given, working with list
+ // create key for list of associations
+ $serverKey = $this->associationServerKey($server_url);
+
+ // get list of associations
+ $serverAssociations = $this->connection->get($serverKey);
+ // return null if failed or got empty list
+ if (!$serverAssociations) {
+ return null;
+ }
+
+ // get key of most recently issued association
+ $keys = array_keys($serverAssociations);
+ sort($keys);
+ $lastKey = $serverAssociations[array_pop($keys)];
+
+ // get association, return null if failed
+ $association = $this->connection->get($lastKey);
+ return $association ? $association : null;
+ }
+
+ /**
+ * Immediately delete association from memcache.
+ */
+ function removeAssociation($server_url, $handle)
+ {
+ // create memcached keys for association itself
+ // and list of associations for this server
+ $serverKey = $this->associationServerKey($server_url);
+ $associationKey = $this->associationKey($server_url,
+ $handle);
+
+ // get list of associations
+ $serverAssociations = $this->connection->get($serverKey);
+ // return null if failed or got empty list
+ if (!$serverAssociations) {
+ return false;
+ }
+
+ // ensure that given association key exists in list
+ $serverAssociations = array_flip($serverAssociations);
+ if (!array_key_exists($associationKey, $serverAssociations)) {
+ return false;
+ }
+
+ // remove given association key from list
+ unset($serverAssociations[$associationKey]);
+ $serverAssociations = array_flip($serverAssociations);
+
+ // save updated list
+ $this->connection->set(
+ $serverKey,
+ $serverAssociations,
+ $this->compress
+ );
+
+ // delete association
+ return $this->connection->delete($associationKey);
+ }
+
+ /**
+ * Create nonce for server and salt, expiring after
+ * $Auth_OpenID_SKEW seconds.
+ */
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ global $Auth_OpenID_SKEW;
+
+ // save one request to memcache when nonce obviously expired
+ if (abs($timestamp - time()) > $Auth_OpenID_SKEW) {
+ return false;
+ }
+
+ // returns false when nonce already exists
+ // otherwise adds nonce
+ return $this->connection->add(
+ 'openid_nonce_' . sha1($server_url) . '_' . sha1($salt),
+ 1, // any value here
+ $this->compress,
+ $Auth_OpenID_SKEW);
+ }
+
+ /**
+ * Memcache key is prefixed with 'openid_association_' string.
+ */
+ function associationKey($server_url, $handle = null)
+ {
+ return 'openid_association_' . sha1($server_url) . '_' . sha1($handle);
+ }
+
+ /**
+ * Memcache key is prefixed with 'openid_association_' string.
+ */
+ function associationServerKey($server_url)
+ {
+ return 'openid_association_server_' . sha1($server_url);
+ }
+
+ /**
+ * Report that this storage doesn't support cleanup
+ */
+ function supportsCleanup()
+ {
+ return false;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php
new file mode 100644
index 000000000..9a5b20d0a
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php
@@ -0,0 +1,920 @@
+<?php
+
+/**
+ * Extension argument processing code
+ *
+ * @package OpenID
+ */
+
+/**
+ * Import tools needed to deal with messages.
+ */
+require_once 'Auth/OpenID.php';
+require_once 'Auth/OpenID/KVForm.php';
+require_once 'Auth/Yadis/XML.php';
+require_once 'Auth/OpenID/Consumer.php'; // For Auth_OpenID_FailureResponse
+
+// This doesn't REALLY belong here, but where is better?
+define('Auth_OpenID_IDENTIFIER_SELECT',
+ "http://specs.openid.net/auth/2.0/identifier_select");
+
+// URI for Simple Registration extension, the only commonly deployed
+// OpenID 1.x extension, and so a special case
+define('Auth_OpenID_SREG_URI', 'http://openid.net/sreg/1.0');
+
+// The OpenID 1.X namespace URI
+define('Auth_OpenID_OPENID1_NS', 'http://openid.net/signon/1.0');
+define('Auth_OpenID_THE_OTHER_OPENID1_NS', 'http://openid.net/signon/1.1');
+
+function Auth_OpenID_isOpenID1($ns)
+{
+ return ($ns == Auth_OpenID_THE_OTHER_OPENID1_NS) ||
+ ($ns == Auth_OpenID_OPENID1_NS);
+}
+
+// The OpenID 2.0 namespace URI
+define('Auth_OpenID_OPENID2_NS', 'http://specs.openid.net/auth/2.0');
+
+// The namespace consisting of pairs with keys that are prefixed with
+// "openid." but not in another namespace.
+define('Auth_OpenID_NULL_NAMESPACE', 'Null namespace');
+
+// The null namespace, when it is an allowed OpenID namespace
+define('Auth_OpenID_OPENID_NS', 'OpenID namespace');
+
+// The top-level namespace, excluding all pairs with keys that start
+// with "openid."
+define('Auth_OpenID_BARE_NS', 'Bare namespace');
+
+// Sentinel for Message implementation to indicate that getArg should
+// return null instead of returning a default.
+define('Auth_OpenID_NO_DEFAULT', 'NO DEFAULT ALLOWED');
+
+// Limit, in bytes, of identity provider and return_to URLs, including
+// response payload. See OpenID 1.1 specification, Appendix D.
+define('Auth_OpenID_OPENID1_URL_LIMIT', 2047);
+
+// All OpenID protocol fields. Used to check namespace aliases.
+global $Auth_OpenID_OPENID_PROTOCOL_FIELDS;
+$Auth_OpenID_OPENID_PROTOCOL_FIELDS = array(
+ 'ns', 'mode', 'error', 'return_to', 'contact', 'reference',
+ 'signed', 'assoc_type', 'session_type', 'dh_modulus', 'dh_gen',
+ 'dh_consumer_public', 'claimed_id', 'identity', 'realm',
+ 'invalidate_handle', 'op_endpoint', 'response_nonce', 'sig',
+ 'assoc_handle', 'trust_root', 'openid');
+
+// Global namespace / alias registration map. See
+// Auth_OpenID_registerNamespaceAlias.
+global $Auth_OpenID_registered_aliases;
+$Auth_OpenID_registered_aliases = array();
+
+/**
+ * Registers a (namespace URI, alias) mapping in a global namespace
+ * alias map. Raises NamespaceAliasRegistrationError if either the
+ * namespace URI or alias has already been registered with a different
+ * value. This function is required if you want to use a namespace
+ * with an OpenID 1 message.
+ */
+function Auth_OpenID_registerNamespaceAlias($namespace_uri, $alias)
+{
+ global $Auth_OpenID_registered_aliases;
+
+ if (Auth_OpenID::arrayGet($Auth_OpenID_registered_aliases,
+ $alias) == $namespace_uri) {
+ return true;
+ }
+
+ if (in_array($namespace_uri,
+ array_values($Auth_OpenID_registered_aliases))) {
+ return false;
+ }
+
+ if (in_array($alias, array_keys($Auth_OpenID_registered_aliases))) {
+ return false;
+ }
+
+ $Auth_OpenID_registered_aliases[$alias] = $namespace_uri;
+ return true;
+}
+
+/**
+ * Removes a (namespace_uri, alias) registration from the global
+ * namespace alias map. Returns true if the removal succeeded; false
+ * if not (if the mapping did not exist).
+ */
+function Auth_OpenID_removeNamespaceAlias($namespace_uri, $alias)
+{
+ global $Auth_OpenID_registered_aliases;
+
+ if (Auth_OpenID::arrayGet($Auth_OpenID_registered_aliases,
+ $alias) === $namespace_uri) {
+ unset($Auth_OpenID_registered_aliases[$alias]);
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * An Auth_OpenID_Mapping maintains a mapping from arbitrary keys to
+ * arbitrary values. (This is unlike an ordinary PHP array, whose
+ * keys may be only simple scalars.)
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Mapping {
+ /**
+ * Initialize a mapping. If $classic_array is specified, its keys
+ * and values are used to populate the mapping.
+ */
+ function Auth_OpenID_Mapping($classic_array = null)
+ {
+ $this->keys = array();
+ $this->values = array();
+
+ if (is_array($classic_array)) {
+ foreach ($classic_array as $key => $value) {
+ $this->set($key, $value);
+ }
+ }
+ }
+
+ /**
+ * Returns true if $thing is an Auth_OpenID_Mapping object; false
+ * if not.
+ */
+ static function isA($thing)
+ {
+ return (is_object($thing) &&
+ strtolower(get_class($thing)) == 'auth_openid_mapping');
+ }
+
+ /**
+ * Returns an array of the keys in the mapping.
+ */
+ function keys()
+ {
+ return $this->keys;
+ }
+
+ /**
+ * Returns an array of values in the mapping.
+ */
+ function values()
+ {
+ return $this->values;
+ }
+
+ /**
+ * Returns an array of (key, value) pairs in the mapping.
+ */
+ function items()
+ {
+ $temp = array();
+
+ for ($i = 0; $i < count($this->keys); $i++) {
+ $temp[] = array($this->keys[$i],
+ $this->values[$i]);
+ }
+ return $temp;
+ }
+
+ /**
+ * Returns the "length" of the mapping, or the number of keys.
+ */
+ function len()
+ {
+ return count($this->keys);
+ }
+
+ /**
+ * Sets a key-value pair in the mapping. If the key already
+ * exists, its value is replaced with the new value.
+ */
+ function set($key, $value)
+ {
+ $index = array_search($key, $this->keys);
+
+ if ($index !== false) {
+ $this->values[$index] = $value;
+ } else {
+ $this->keys[] = $key;
+ $this->values[] = $value;
+ }
+ }
+
+ /**
+ * Gets a specified value from the mapping, associated with the
+ * specified key. If the key does not exist in the mapping,
+ * $default is returned instead.
+ */
+ function get($key, $default = null)
+ {
+ $index = array_search($key, $this->keys);
+
+ if ($index !== false) {
+ return $this->values[$index];
+ } else {
+ return $default;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _reflow()
+ {
+ // PHP is broken yet again. Sort the arrays to remove the
+ // hole in the numeric indexes that make up the array.
+ $old_keys = $this->keys;
+ $old_values = $this->values;
+
+ $this->keys = array();
+ $this->values = array();
+
+ foreach ($old_keys as $k) {
+ $this->keys[] = $k;
+ }
+
+ foreach ($old_values as $v) {
+ $this->values[] = $v;
+ }
+ }
+
+ /**
+ * Deletes a key-value pair from the mapping with the specified
+ * key.
+ */
+ function del($key)
+ {
+ $index = array_search($key, $this->keys);
+
+ if ($index !== false) {
+ unset($this->keys[$index]);
+ unset($this->values[$index]);
+ $this->_reflow();
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns true if the specified value has a key in the mapping;
+ * false if not.
+ */
+ function contains($value)
+ {
+ return (array_search($value, $this->keys) !== false);
+ }
+}
+
+/**
+ * Maintains a bijective map between namespace uris and aliases.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_NamespaceMap {
+ function Auth_OpenID_NamespaceMap()
+ {
+ $this->alias_to_namespace = new Auth_OpenID_Mapping();
+ $this->namespace_to_alias = new Auth_OpenID_Mapping();
+ $this->implicit_namespaces = array();
+ }
+
+ function getAlias($namespace_uri)
+ {
+ return $this->namespace_to_alias->get($namespace_uri);
+ }
+
+ function getNamespaceURI($alias)
+ {
+ return $this->alias_to_namespace->get($alias);
+ }
+
+ function iterNamespaceURIs()
+ {
+ // Return an iterator over the namespace URIs
+ return $this->namespace_to_alias->keys();
+ }
+
+ function iterAliases()
+ {
+ // Return an iterator over the aliases"""
+ return $this->alias_to_namespace->keys();
+ }
+
+ function iteritems()
+ {
+ return $this->namespace_to_alias->items();
+ }
+
+ function isImplicit($namespace_uri)
+ {
+ return in_array($namespace_uri, $this->implicit_namespaces);
+ }
+
+ function addAlias($namespace_uri, $desired_alias, $implicit=false)
+ {
+ // Add an alias from this namespace URI to the desired alias
+ global $Auth_OpenID_OPENID_PROTOCOL_FIELDS;
+
+ // Check that desired_alias is not an openid protocol field as
+ // per the spec.
+ if (in_array($desired_alias, $Auth_OpenID_OPENID_PROTOCOL_FIELDS)) {
+ Auth_OpenID::log("\"%s\" is not an allowed namespace alias",
+ $desired_alias);
+ return null;
+ }
+
+ // Check that desired_alias does not contain a period as per
+ // the spec.
+ if (strpos($desired_alias, '.') !== false) {
+ Auth_OpenID::log('"%s" must not contain a dot', $desired_alias);
+ return null;
+ }
+
+ // Check that there is not a namespace already defined for the
+ // desired alias
+ $current_namespace_uri =
+ $this->alias_to_namespace->get($desired_alias);
+
+ if (($current_namespace_uri !== null) &&
+ ($current_namespace_uri != $namespace_uri)) {
+ Auth_OpenID::log('Cannot map "%s" because previous mapping exists',
+ $namespace_uri);
+ return null;
+ }
+
+ // Check that there is not already a (different) alias for
+ // this namespace URI
+ $alias = $this->namespace_to_alias->get($namespace_uri);
+
+ if (($alias !== null) && ($alias != $desired_alias)) {
+ Auth_OpenID::log('Cannot map %s to alias %s. ' .
+ 'It is already mapped to alias %s',
+ $namespace_uri, $desired_alias, $alias);
+ return null;
+ }
+
+ assert((Auth_OpenID_NULL_NAMESPACE === $desired_alias) ||
+ is_string($desired_alias));
+
+ $this->alias_to_namespace->set($desired_alias, $namespace_uri);
+ $this->namespace_to_alias->set($namespace_uri, $desired_alias);
+ if ($implicit) {
+ array_push($this->implicit_namespaces, $namespace_uri);
+ }
+
+ return $desired_alias;
+ }
+
+ function add($namespace_uri)
+ {
+ // Add this namespace URI to the mapping, without caring what
+ // alias it ends up with
+
+ // See if this namespace is already mapped to an alias
+ $alias = $this->namespace_to_alias->get($namespace_uri);
+
+ if ($alias !== null) {
+ return $alias;
+ }
+
+ // Fall back to generating a numerical alias
+ $i = 0;
+ while (1) {
+ $alias = 'ext' . strval($i);
+ if ($this->addAlias($namespace_uri, $alias) === null) {
+ $i += 1;
+ } else {
+ return $alias;
+ }
+ }
+
+ // Should NEVER be reached!
+ return null;
+ }
+
+ function contains($namespace_uri)
+ {
+ return $this->isDefined($namespace_uri);
+ }
+
+ function isDefined($namespace_uri)
+ {
+ return $this->namespace_to_alias->contains($namespace_uri);
+ }
+}
+
+/**
+ * In the implementation of this object, null represents the global
+ * namespace as well as a namespace with no key.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Message {
+
+ function Auth_OpenID_Message($openid_namespace = null)
+ {
+ // Create an empty Message
+ $this->allowed_openid_namespaces = array(
+ Auth_OpenID_OPENID1_NS,
+ Auth_OpenID_THE_OTHER_OPENID1_NS,
+ Auth_OpenID_OPENID2_NS);
+
+ $this->args = new Auth_OpenID_Mapping();
+ $this->namespaces = new Auth_OpenID_NamespaceMap();
+ if ($openid_namespace === null) {
+ $this->_openid_ns_uri = null;
+ } else {
+ $implicit = Auth_OpenID_isOpenID1($openid_namespace);
+ $this->setOpenIDNamespace($openid_namespace, $implicit);
+ }
+ }
+
+ function isOpenID1()
+ {
+ return Auth_OpenID_isOpenID1($this->getOpenIDNamespace());
+ }
+
+ function isOpenID2()
+ {
+ return $this->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS;
+ }
+
+ static function fromPostArgs($args)
+ {
+ // Construct a Message containing a set of POST arguments
+ $obj = new Auth_OpenID_Message();
+
+ // Partition into "openid." args and bare args
+ $openid_args = array();
+ foreach ($args as $key => $value) {
+
+ if (is_array($value)) {
+ return null;
+ }
+
+ $parts = explode('.', $key, 2);
+
+ if (count($parts) == 2) {
+ list($prefix, $rest) = $parts;
+ } else {
+ $prefix = null;
+ }
+
+ if ($prefix != 'openid') {
+ $obj->args->set(array(Auth_OpenID_BARE_NS, $key), $value);
+ } else {
+ $openid_args[$rest] = $value;
+ }
+ }
+
+ if ($obj->_fromOpenIDArgs($openid_args)) {
+ return $obj;
+ } else {
+ return null;
+ }
+ }
+
+ static function fromOpenIDArgs($openid_args)
+ {
+ // Takes an array.
+
+ // Construct a Message from a parsed KVForm message
+ $obj = new Auth_OpenID_Message();
+ if ($obj->_fromOpenIDArgs($openid_args)) {
+ return $obj;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _fromOpenIDArgs($openid_args)
+ {
+ global $Auth_OpenID_registered_aliases;
+
+ // Takes an Auth_OpenID_Mapping instance OR an array.
+
+ if (!Auth_OpenID_Mapping::isA($openid_args)) {
+ $openid_args = new Auth_OpenID_Mapping($openid_args);
+ }
+
+ $ns_args = array();
+
+ // Resolve namespaces
+ foreach ($openid_args->items() as $pair) {
+ list($rest, $value) = $pair;
+
+ $parts = explode('.', $rest, 2);
+
+ if (count($parts) == 2) {
+ list($ns_alias, $ns_key) = $parts;
+ } else {
+ $ns_alias = Auth_OpenID_NULL_NAMESPACE;
+ $ns_key = $rest;
+ }
+
+ if ($ns_alias == 'ns') {
+ if ($this->namespaces->addAlias($value, $ns_key) === null) {
+ return false;
+ }
+ } else if (($ns_alias == Auth_OpenID_NULL_NAMESPACE) &&
+ ($ns_key == 'ns')) {
+ // null namespace
+ if ($this->setOpenIDNamespace($value, false) === false) {
+ return false;
+ }
+ } else {
+ $ns_args[] = array($ns_alias, $ns_key, $value);
+ }
+ }
+
+ if (!$this->getOpenIDNamespace()) {
+ if ($this->setOpenIDNamespace(Auth_OpenID_OPENID1_NS, true) ===
+ false) {
+ return false;
+ }
+ }
+
+ // Actually put the pairs into the appropriate namespaces
+ foreach ($ns_args as $triple) {
+ list($ns_alias, $ns_key, $value) = $triple;
+ $ns_uri = $this->namespaces->getNamespaceURI($ns_alias);
+ if ($ns_uri === null) {
+ $ns_uri = $this->_getDefaultNamespace($ns_alias);
+ if ($ns_uri === null) {
+
+ $ns_uri = Auth_OpenID_OPENID_NS;
+ $ns_key = sprintf('%s.%s', $ns_alias, $ns_key);
+ } else {
+ $this->namespaces->addAlias($ns_uri, $ns_alias, true);
+ }
+ }
+
+ $this->setArg($ns_uri, $ns_key, $value);
+ }
+
+ return true;
+ }
+
+ function _getDefaultNamespace($mystery_alias)
+ {
+ global $Auth_OpenID_registered_aliases;
+ if ($this->isOpenID1()) {
+ return @$Auth_OpenID_registered_aliases[$mystery_alias];
+ }
+ return null;
+ }
+
+ function setOpenIDNamespace($openid_ns_uri, $implicit)
+ {
+ if (!in_array($openid_ns_uri, $this->allowed_openid_namespaces)) {
+ Auth_OpenID::log('Invalid null namespace: "%s"', $openid_ns_uri);
+ return false;
+ }
+
+ $succeeded = $this->namespaces->addAlias($openid_ns_uri,
+ Auth_OpenID_NULL_NAMESPACE,
+ $implicit);
+ if ($succeeded === false) {
+ return false;
+ }
+
+ $this->_openid_ns_uri = $openid_ns_uri;
+
+ return true;
+ }
+
+ function getOpenIDNamespace()
+ {
+ return $this->_openid_ns_uri;
+ }
+
+ static function fromKVForm($kvform_string)
+ {
+ // Create a Message from a KVForm string
+ return Auth_OpenID_Message::fromOpenIDArgs(
+ Auth_OpenID_KVForm::toArray($kvform_string));
+ }
+
+ function copy()
+ {
+ return $this;
+ }
+
+ function toPostArgs()
+ {
+ // Return all arguments with openid. in front of namespaced
+ // arguments.
+
+ $args = array();
+
+ // Add namespace definitions to the output
+ foreach ($this->namespaces->iteritems() as $pair) {
+ list($ns_uri, $alias) = $pair;
+ if ($this->namespaces->isImplicit($ns_uri)) {
+ continue;
+ }
+ if ($alias == Auth_OpenID_NULL_NAMESPACE) {
+ $ns_key = 'openid.ns';
+ } else {
+ $ns_key = 'openid.ns.' . $alias;
+ }
+ $args[$ns_key] = $ns_uri;
+ }
+
+ foreach ($this->args->items() as $pair) {
+ list($ns_parts, $value) = $pair;
+ list($ns_uri, $ns_key) = $ns_parts;
+ $key = $this->getKey($ns_uri, $ns_key);
+ $args[$key] = $value;
+ }
+
+ return $args;
+ }
+
+ function toArgs()
+ {
+ // Return all namespaced arguments, failing if any
+ // non-namespaced arguments exist.
+ $post_args = $this->toPostArgs();
+ $kvargs = array();
+ foreach ($post_args as $k => $v) {
+ if (strpos($k, 'openid.') !== 0) {
+ // raise ValueError(
+ // 'This message can only be encoded as a POST, because it '
+ // 'contains arguments that are not prefixed with "openid."')
+ return null;
+ } else {
+ $kvargs[substr($k, 7)] = $v;
+ }
+ }
+
+ return $kvargs;
+ }
+
+ function toFormMarkup($action_url, $form_tag_attrs = null,
+ $submit_text = "Continue")
+ {
+ $form = "<form accept-charset=\"UTF-8\" ".
+ "enctype=\"application/x-www-form-urlencoded\"";
+
+ if (!$form_tag_attrs) {
+ $form_tag_attrs = array();
+ }
+
+ $form_tag_attrs['action'] = $action_url;
+ $form_tag_attrs['method'] = 'post';
+
+ unset($form_tag_attrs['enctype']);
+ unset($form_tag_attrs['accept-charset']);
+
+ if ($form_tag_attrs) {
+ foreach ($form_tag_attrs as $name => $attr) {
+ $form .= sprintf(" %s=\"%s\"", $name, $attr);
+ }
+ }
+
+ $form .= ">\n";
+
+ foreach ($this->toPostArgs() as $name => $value) {
+ $form .= sprintf(
+ "<input type=\"hidden\" name=\"%s\" value=\"%s\" />\n",
+ $name, urldecode($value));
+ }
+
+ $form .= sprintf("<input type=\"submit\" value=\"%s\" />\n",
+ $submit_text);
+
+ $form .= "</form>\n";
+
+ return $form;
+ }
+
+ function toURL($base_url)
+ {
+ // Generate a GET URL with the parameters in this message
+ // attached as query parameters.
+ return Auth_OpenID::appendArgs($base_url, $this->toPostArgs());
+ }
+
+ function toKVForm()
+ {
+ // Generate a KVForm string that contains the parameters in
+ // this message. This will fail if the message contains
+ // arguments outside of the 'openid.' prefix.
+ return Auth_OpenID_KVForm::fromArray($this->toArgs());
+ }
+
+ function toURLEncoded()
+ {
+ // Generate an x-www-urlencoded string
+ $args = array();
+
+ foreach ($this->toPostArgs() as $k => $v) {
+ $args[] = array($k, $v);
+ }
+
+ sort($args);
+ return Auth_OpenID::httpBuildQuery($args);
+ }
+
+ /**
+ * @access private
+ */
+ function _fixNS($namespace)
+ {
+ // Convert an input value into the internally used values of
+ // this object
+
+ if ($namespace == Auth_OpenID_OPENID_NS) {
+ if ($this->_openid_ns_uri === null) {
+ return new Auth_OpenID_FailureResponse(null,
+ 'OpenID namespace not set');
+ } else {
+ $namespace = $this->_openid_ns_uri;
+ }
+ }
+
+ if (($namespace != Auth_OpenID_BARE_NS) &&
+ (!is_string($namespace))) {
+ //TypeError
+ $err_msg = sprintf("Namespace must be Auth_OpenID_BARE_NS, ".
+ "Auth_OpenID_OPENID_NS or a string. got %s",
+ print_r($namespace, true));
+ return new Auth_OpenID_FailureResponse(null, $err_msg);
+ }
+
+ if (($namespace != Auth_OpenID_BARE_NS) &&
+ (strpos($namespace, ':') === false)) {
+ // fmt = 'OpenID 2.0 namespace identifiers SHOULD be URIs. Got %r'
+ // warnings.warn(fmt % (namespace,), DeprecationWarning)
+
+ if ($namespace == 'sreg') {
+ // fmt = 'Using %r instead of "sreg" as namespace'
+ // warnings.warn(fmt % (SREG_URI,), DeprecationWarning,)
+ return Auth_OpenID_SREG_URI;
+ }
+ }
+
+ return $namespace;
+ }
+
+ function hasKey($namespace, $ns_key)
+ {
+ $namespace = $this->_fixNS($namespace);
+ if (Auth_OpenID::isFailure($namespace)) {
+ // XXX log me
+ return false;
+ } else {
+ return $this->args->contains(array($namespace, $ns_key));
+ }
+ }
+
+ function getKey($namespace, $ns_key)
+ {
+ // Get the key for a particular namespaced argument
+ $namespace = $this->_fixNS($namespace);
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ }
+ if ($namespace == Auth_OpenID_BARE_NS) {
+ return $ns_key;
+ }
+
+ $ns_alias = $this->namespaces->getAlias($namespace);
+
+ // No alias is defined, so no key can exist
+ if ($ns_alias === null) {
+ return null;
+ }
+
+ if ($ns_alias == Auth_OpenID_NULL_NAMESPACE) {
+ $tail = $ns_key;
+ } else {
+ $tail = sprintf('%s.%s', $ns_alias, $ns_key);
+ }
+
+ return 'openid.' . $tail;
+ }
+
+ function getArg($namespace, $key, $default = null)
+ {
+ // Get a value for a namespaced key.
+ $namespace = $this->_fixNS($namespace);
+
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ } else {
+ if ((!$this->args->contains(array($namespace, $key))) &&
+ ($default == Auth_OpenID_NO_DEFAULT)) {
+ $err_msg = sprintf("Namespace %s missing required field %s",
+ $namespace, $key);
+ return new Auth_OpenID_FailureResponse(null, $err_msg);
+ } else {
+ return $this->args->get(array($namespace, $key), $default);
+ }
+ }
+ }
+
+ function getArgs($namespace)
+ {
+ // Get the arguments that are defined for this namespace URI
+
+ $namespace = $this->_fixNS($namespace);
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ } else {
+ $stuff = array();
+ foreach ($this->args->items() as $pair) {
+ list($key, $value) = $pair;
+ list($pair_ns, $ns_key) = $key;
+ if ($pair_ns == $namespace) {
+ $stuff[$ns_key] = $value;
+ }
+ }
+
+ return $stuff;
+ }
+ }
+
+ function updateArgs($namespace, $updates)
+ {
+ // Set multiple key/value pairs in one call
+
+ $namespace = $this->_fixNS($namespace);
+
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ } else {
+ foreach ($updates as $k => $v) {
+ $this->setArg($namespace, $k, $v);
+ }
+ return true;
+ }
+ }
+
+ function setArg($namespace, $key, $value)
+ {
+ // Set a single argument in this namespace
+ $namespace = $this->_fixNS($namespace);
+
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ } else {
+ $this->args->set(array($namespace, $key), $value);
+ if ($namespace !== Auth_OpenID_BARE_NS) {
+ $this->namespaces->add($namespace);
+ }
+ return true;
+ }
+ }
+
+ function delArg($namespace, $key)
+ {
+ $namespace = $this->_fixNS($namespace);
+
+ if (Auth_OpenID::isFailure($namespace)) {
+ return $namespace;
+ } else {
+ return $this->args->del(array($namespace, $key));
+ }
+ }
+
+ function getAliasedArg($aliased_key, $default = null)
+ {
+ if ($aliased_key == 'ns') {
+ // Return the namespace URI for the OpenID namespace
+ return $this->getOpenIDNamespace();
+ }
+
+ $parts = explode('.', $aliased_key, 2);
+
+ if (count($parts) != 2) {
+ $ns = null;
+ } else {
+ list($alias, $key) = $parts;
+
+ if ($alias == 'ns') {
+ // Return the namespace URI for a namespace alias
+ // parameter.
+ return $this->namespaces->getNamespaceURI($key);
+ } else {
+ $ns = $this->namespaces->getNamespaceURI($alias);
+ }
+ }
+
+ if ($ns === null) {
+ $key = $aliased_key;
+ $ns = $this->getOpenIDNamespace();
+ }
+
+ return $this->getArg($ns, $key, $default);
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php
new file mode 100644
index 000000000..810f059f1
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * A MySQL store.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Require the base class file.
+ */
+require_once "Auth/OpenID/SQLStore.php";
+
+/**
+ * An SQL store that uses MySQL as its backend.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_MySQLStore extends Auth_OpenID_SQLStore {
+ /**
+ * @access private
+ */
+ function setSQL()
+ {
+ $this->sql['nonce_table'] =
+ "CREATE TABLE %s (\n".
+ " server_url VARCHAR(2047) NOT NULL,\n".
+ " timestamp INTEGER NOT NULL,\n".
+ " salt CHAR(40) NOT NULL,\n".
+ " UNIQUE (server_url(255), timestamp, salt)\n".
+ ") ENGINE=InnoDB";
+
+ $this->sql['assoc_table'] =
+ "CREATE TABLE %s (\n".
+ " server_url BLOB NOT NULL,\n".
+ " handle VARCHAR(255) NOT NULL,\n".
+ " secret BLOB NOT NULL,\n".
+ " issued INTEGER NOT NULL,\n".
+ " lifetime INTEGER NOT NULL,\n".
+ " assoc_type VARCHAR(64) NOT NULL,\n".
+ " PRIMARY KEY (server_url(255), handle)\n".
+ ") ENGINE=InnoDB";
+
+ $this->sql['set_assoc'] =
+ "REPLACE INTO %s (server_url, handle, secret, issued,\n".
+ " lifetime, assoc_type) VALUES (?, ?, !, ?, ?, ?)";
+
+ $this->sql['get_assocs'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ?";
+
+ $this->sql['get_assoc'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ? AND handle = ?";
+
+ $this->sql['remove_assoc'] =
+ "DELETE FROM %s WHERE server_url = ? AND handle = ?";
+
+ $this->sql['add_nonce'] =
+ "INSERT INTO %s (server_url, timestamp, salt) VALUES (?, ?, ?)";
+
+ $this->sql['clean_nonce'] =
+ "DELETE FROM %s WHERE timestamp < ?";
+
+ $this->sql['clean_assoc'] =
+ "DELETE FROM %s WHERE issued + lifetime < ?";
+ }
+
+ /**
+ * @access private
+ */
+ function blobEncode($blob)
+ {
+ return "0x" . bin2hex($blob);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php
new file mode 100644
index 000000000..b83c5911f
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php
@@ -0,0 +1,108 @@
+<?php
+
+/**
+ * Nonce-related functionality.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Need CryptUtil to generate random strings.
+ */
+require_once 'Auth/OpenID/CryptUtil.php';
+
+/**
+ * This is the characters that the nonces are made from.
+ */
+define('Auth_OpenID_Nonce_CHRS',"abcdefghijklmnopqrstuvwxyz" .
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
+
+// Keep nonces for five hours (allow five hours for the combination of
+// request time and clock skew). This is probably way more than is
+// necessary, but there is not much overhead in storing nonces.
+global $Auth_OpenID_SKEW;
+$Auth_OpenID_SKEW = 60 * 60 * 5;
+
+define('Auth_OpenID_Nonce_REGEX',
+ '/(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z(.*)/');
+
+define('Auth_OpenID_Nonce_TIME_FMT',
+ '%Y-%m-%dT%H:%M:%SZ');
+
+function Auth_OpenID_splitNonce($nonce_string)
+{
+ // Extract a timestamp from the given nonce string
+ $result = preg_match(Auth_OpenID_Nonce_REGEX, $nonce_string, $matches);
+ if ($result != 1 || count($matches) != 8) {
+ return null;
+ }
+
+ list($unused,
+ $tm_year,
+ $tm_mon,
+ $tm_mday,
+ $tm_hour,
+ $tm_min,
+ $tm_sec,
+ $uniquifier) = $matches;
+
+ $timestamp =
+ @gmmktime($tm_hour, $tm_min, $tm_sec, $tm_mon, $tm_mday, $tm_year);
+
+ if ($timestamp === false || $timestamp < 0) {
+ return null;
+ }
+
+ return array($timestamp, $uniquifier);
+}
+
+function Auth_OpenID_checkTimestamp($nonce_string,
+ $allowed_skew = null,
+ $now = null)
+{
+ // Is the timestamp that is part of the specified nonce string
+ // within the allowed clock-skew of the current time?
+ global $Auth_OpenID_SKEW;
+
+ if ($allowed_skew === null) {
+ $allowed_skew = $Auth_OpenID_SKEW;
+ }
+
+ $parts = Auth_OpenID_splitNonce($nonce_string);
+ if ($parts == null) {
+ return false;
+ }
+
+ if ($now === null) {
+ $now = time();
+ }
+
+ $stamp = $parts[0];
+
+ // Time after which we should not use the nonce
+ $past = $now - $allowed_skew;
+
+ // Time that is too far in the future for us to allow
+ $future = $now + $allowed_skew;
+
+ // the stamp is not too far in the future and is not too far
+ // in the past
+ return (($past <= $stamp) && ($stamp <= $future));
+}
+
+function Auth_OpenID_mkNonce($when = null)
+{
+ // Generate a nonce with the current timestamp
+ $salt = Auth_OpenID_CryptUtil::randomString(
+ 6, Auth_OpenID_Nonce_CHRS);
+ if ($when === null) {
+ // It's safe to call time() with no arguments; it returns a
+ // GMT unix timestamp on PHP 4 and PHP 5. gmmktime() with no
+ // args returns a local unix timestamp on PHP 4, so don't use
+ // that.
+ $when = time();
+ }
+ $time_str = gmstrftime(Auth_OpenID_Nonce_TIME_FMT, $when);
+ return $time_str . $salt;
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php
new file mode 100644
index 000000000..f08ca8bd0
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php
@@ -0,0 +1,300 @@
+<?php
+
+/**
+ * An implementation of the OpenID Provider Authentication Policy
+ * Extension 1.0
+ *
+ * See:
+ * http://openid.net/developers/specs/
+ */
+
+require_once "Auth/OpenID/Extension.php";
+
+define('Auth_OpenID_PAPE_NS_URI',
+ "http://specs.openid.net/extensions/pape/1.0");
+
+define('PAPE_AUTH_MULTI_FACTOR_PHYSICAL',
+ 'http://schemas.openid.net/pape/policies/2007/06/multi-factor-physical');
+define('PAPE_AUTH_MULTI_FACTOR',
+ 'http://schemas.openid.net/pape/policies/2007/06/multi-factor');
+define('PAPE_AUTH_PHISHING_RESISTANT',
+ 'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant');
+
+define('PAPE_TIME_VALIDATOR',
+ '/^[0-9]{4,4}-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$/');
+/**
+ * A Provider Authentication Policy request, sent from a relying party
+ * to a provider
+ *
+ * preferred_auth_policies: The authentication policies that
+ * the relying party prefers
+ *
+ * max_auth_age: The maximum time, in seconds, that the relying party
+ * wants to allow to have elapsed before the user must re-authenticate
+ */
+class Auth_OpenID_PAPE_Request extends Auth_OpenID_Extension {
+
+ var $ns_alias = 'pape';
+ var $ns_uri = Auth_OpenID_PAPE_NS_URI;
+
+ function Auth_OpenID_PAPE_Request($preferred_auth_policies=null,
+ $max_auth_age=null)
+ {
+ if ($preferred_auth_policies === null) {
+ $preferred_auth_policies = array();
+ }
+
+ $this->preferred_auth_policies = $preferred_auth_policies;
+ $this->max_auth_age = $max_auth_age;
+ }
+
+ /**
+ * Add an acceptable authentication policy URI to this request
+ *
+ * This method is intended to be used by the relying party to add
+ * acceptable authentication types to the request.
+ *
+ * policy_uri: The identifier for the preferred type of
+ * authentication.
+ */
+ function addPolicyURI($policy_uri)
+ {
+ if (!in_array($policy_uri, $this->preferred_auth_policies)) {
+ $this->preferred_auth_policies[] = $policy_uri;
+ }
+ }
+
+ function getExtensionArgs()
+ {
+ $ns_args = array(
+ 'preferred_auth_policies' =>
+ implode(' ', $this->preferred_auth_policies)
+ );
+
+ if ($this->max_auth_age !== null) {
+ $ns_args['max_auth_age'] = strval($this->max_auth_age);
+ }
+
+ return $ns_args;
+ }
+
+ /**
+ * Instantiate a Request object from the arguments in a checkid_*
+ * OpenID message
+ */
+ static function fromOpenIDRequest($request)
+ {
+ $obj = new Auth_OpenID_PAPE_Request();
+ $args = $request->message->getArgs(Auth_OpenID_PAPE_NS_URI);
+
+ if ($args === null || $args === array()) {
+ return null;
+ }
+
+ $obj->parseExtensionArgs($args);
+ return $obj;
+ }
+
+ /**
+ * Set the state of this request to be that expressed in these
+ * PAPE arguments
+ *
+ * @param args: The PAPE arguments without a namespace
+ */
+ function parseExtensionArgs($args)
+ {
+ // preferred_auth_policies is a space-separated list of policy
+ // URIs
+ $this->preferred_auth_policies = array();
+
+ $policies_str = Auth_OpenID::arrayGet($args, 'preferred_auth_policies');
+ if ($policies_str) {
+ foreach (explode(' ', $policies_str) as $uri) {
+ if (!in_array($uri, $this->preferred_auth_policies)) {
+ $this->preferred_auth_policies[] = $uri;
+ }
+ }
+ }
+
+ // max_auth_age is base-10 integer number of seconds
+ $max_auth_age_str = Auth_OpenID::arrayGet($args, 'max_auth_age');
+ if ($max_auth_age_str) {
+ $this->max_auth_age = Auth_OpenID::intval($max_auth_age_str);
+ } else {
+ $this->max_auth_age = null;
+ }
+ }
+
+ /**
+ * Given a list of authentication policy URIs that a provider
+ * supports, this method returns the subsequence of those types
+ * that are preferred by the relying party.
+ *
+ * @param supported_types: A sequence of authentication policy
+ * type URIs that are supported by a provider
+ *
+ * @return array The sub-sequence of the supported types that are
+ * preferred by the relying party. This list will be ordered in
+ * the order that the types appear in the supported_types
+ * sequence, and may be empty if the provider does not prefer any
+ * of the supported authentication types.
+ */
+ function preferredTypes($supported_types)
+ {
+ $result = array();
+
+ foreach ($supported_types as $st) {
+ if (in_array($st, $this->preferred_auth_policies)) {
+ $result[] = $st;
+ }
+ }
+ return $result;
+ }
+}
+
+/**
+ * A Provider Authentication Policy response, sent from a provider to
+ * a relying party
+ */
+class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
+
+ var $ns_alias = 'pape';
+ var $ns_uri = Auth_OpenID_PAPE_NS_URI;
+
+ function Auth_OpenID_PAPE_Response($auth_policies=null, $auth_time=null,
+ $nist_auth_level=null)
+ {
+ if ($auth_policies) {
+ $this->auth_policies = $auth_policies;
+ } else {
+ $this->auth_policies = array();
+ }
+
+ $this->auth_time = $auth_time;
+ $this->nist_auth_level = $nist_auth_level;
+ }
+
+ /**
+ * Add a authentication policy to this response
+ *
+ * This method is intended to be used by the provider to add a
+ * policy that the provider conformed to when authenticating the
+ * user.
+ *
+ * @param policy_uri: The identifier for the preferred type of
+ * authentication.
+ */
+ function addPolicyURI($policy_uri)
+ {
+ if (!in_array($policy_uri, $this->auth_policies)) {
+ $this->auth_policies[] = $policy_uri;
+ }
+ }
+
+ /**
+ * Create an Auth_OpenID_PAPE_Response object from a successful
+ * OpenID library response.
+ *
+ * @param success_response $success_response A SuccessResponse
+ * from Auth_OpenID_Consumer::complete()
+ *
+ * @returns: A provider authentication policy response from the
+ * data that was supplied with the id_res response.
+ */
+ static function fromSuccessResponse($success_response)
+ {
+ $obj = new Auth_OpenID_PAPE_Response();
+
+ // PAPE requires that the args be signed.
+ $args = $success_response->getSignedNS(Auth_OpenID_PAPE_NS_URI);
+
+ if ($args === null || $args === array()) {
+ return null;
+ }
+
+ $result = $obj->parseExtensionArgs($args);
+
+ if ($result === false) {
+ return null;
+ } else {
+ return $obj;
+ }
+ }
+
+ /**
+ * Parse the provider authentication policy arguments into the
+ * internal state of this object
+ *
+ * @param args: unqualified provider authentication policy
+ * arguments
+ *
+ * @param strict: Whether to return false when bad data is
+ * encountered
+ *
+ * @return null The data is parsed into the internal fields of
+ * this object.
+ */
+ function parseExtensionArgs($args, $strict=false)
+ {
+ $policies_str = Auth_OpenID::arrayGet($args, 'auth_policies');
+ if ($policies_str && $policies_str != "none") {
+ $this->auth_policies = explode(" ", $policies_str);
+ }
+
+ $nist_level_str = Auth_OpenID::arrayGet($args, 'nist_auth_level');
+ if ($nist_level_str !== null) {
+ $nist_level = Auth_OpenID::intval($nist_level_str);
+
+ if ($nist_level === false) {
+ if ($strict) {
+ return false;
+ } else {
+ $nist_level = null;
+ }
+ }
+
+ if (0 <= $nist_level && $nist_level < 5) {
+ $this->nist_auth_level = $nist_level;
+ } else if ($strict) {
+ return false;
+ }
+ }
+
+ $auth_time = Auth_OpenID::arrayGet($args, 'auth_time');
+ if ($auth_time !== null) {
+ if (preg_match(PAPE_TIME_VALIDATOR, $auth_time)) {
+ $this->auth_time = $auth_time;
+ } else if ($strict) {
+ return false;
+ }
+ }
+ }
+
+ function getExtensionArgs()
+ {
+ $ns_args = array();
+ if (count($this->auth_policies) > 0) {
+ $ns_args['auth_policies'] = implode(' ', $this->auth_policies);
+ } else {
+ $ns_args['auth_policies'] = 'none';
+ }
+
+ if ($this->nist_auth_level !== null) {
+ if (!in_array($this->nist_auth_level, range(0, 4), true)) {
+ return false;
+ }
+ $ns_args['nist_auth_level'] = strval($this->nist_auth_level);
+ }
+
+ if ($this->auth_time !== null) {
+ if (!preg_match(PAPE_TIME_VALIDATOR, $this->auth_time)) {
+ return false;
+ }
+
+ $ns_args['auth_time'] = $this->auth_time;
+ }
+
+ return $ns_args;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php
new file mode 100644
index 000000000..c81cb0103
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php
@@ -0,0 +1,377 @@
+<?php
+
+/**
+ * This module implements a VERY limited parser that finds <link> tags
+ * in the head of HTML or XHTML documents and parses out their
+ * attributes according to the OpenID spec. It is a liberal parser,
+ * but it requires these things from the data in order to work:
+ *
+ * - There must be an open <html> tag
+ *
+ * - There must be an open <head> tag inside of the <html> tag
+ *
+ * - Only <link>s that are found inside of the <head> tag are parsed
+ * (this is by design)
+ *
+ * - The parser follows the OpenID specification in resolving the
+ * attributes of the link tags. This means that the attributes DO
+ * NOT get resolved as they would by an XML or HTML parser. In
+ * particular, only certain entities get replaced, and href
+ * attributes do not get resolved relative to a base URL.
+ *
+ * From http://openid.net/specs.bml:
+ *
+ * - The openid.server URL MUST be an absolute URL. OpenID consumers
+ * MUST NOT attempt to resolve relative URLs.
+ *
+ * - The openid.server URL MUST NOT include entities other than &amp;,
+ * &lt;, &gt;, and &quot;.
+ *
+ * The parser ignores SGML comments and <![CDATA[blocks]]>. Both kinds
+ * of quoting are allowed for attributes.
+ *
+ * The parser deals with invalid markup in these ways:
+ *
+ * - Tag names are not case-sensitive
+ *
+ * - The <html> tag is accepted even when it is not at the top level
+ *
+ * - The <head> tag is accepted even when it is not a direct child of
+ * the <html> tag, but a <html> tag must be an ancestor of the
+ * <head> tag
+ *
+ * - <link> tags are accepted even when they are not direct children
+ * of the <head> tag, but a <head> tag must be an ancestor of the
+ * <link> tag
+ *
+ * - If there is no closing tag for an open <html> or <head> tag, the
+ * remainder of the document is viewed as being inside of the
+ * tag. If there is no closing tag for a <link> tag, the link tag is
+ * treated as a short tag. Exceptions to this rule are that <html>
+ * closes <html> and <body> or <head> closes <head>
+ *
+ * - Attributes of the <link> tag are not required to be quoted.
+ *
+ * - In the case of duplicated attribute names, the attribute coming
+ * last in the tag will be the value returned.
+ *
+ * - Any text that does not parse as an attribute within a link tag
+ * will be ignored. (e.g. <link pumpkin rel='openid.server' /> will
+ * ignore pumpkin)
+ *
+ * - If there are more than one <html> or <head> tag, the parser only
+ * looks inside of the first one.
+ *
+ * - The contents of <script> tags are ignored entirely, except
+ * unclosed <script> tags. Unclosed <script> tags are ignored.
+ *
+ * - Any other invalid markup is ignored, including unclosed SGML
+ * comments and unclosed <![CDATA[blocks.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @access private
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Require Auth_OpenID::arrayGet().
+ */
+require_once "Auth/OpenID.php";
+
+class Auth_OpenID_Parse {
+
+ /**
+ * Specify some flags for use with regex matching.
+ */
+ var $_re_flags = "si";
+
+ /**
+ * Stuff to remove before we start looking for tags
+ */
+ var $_removed_re =
+ "<!--.*?-->|<!\[CDATA\[.*?\]\]>|<script\b(?!:)[^>]*>.*?<\/script>";
+
+ /**
+ * Starts with the tag name at a word boundary, where the tag name
+ * is not a namespace
+ */
+ var $_tag_expr = "<%s\b(?!:)([^>]*?)(?:\/>|>(.*)(?:<\/?%s\s*>|\Z))";
+
+ var $_attr_find = '\b(\w+)=("[^"]*"|\'[^\']*\'|[^\'"\s\/<>]+)';
+
+ var $_open_tag_expr = "<%s\b";
+ var $_close_tag_expr = "<((\/%s\b)|(%s[^>\/]*\/))>";
+
+ function Auth_OpenID_Parse()
+ {
+ $this->_link_find = sprintf("/<link\b(?!:)([^>]*)(?!<)>/%s",
+ $this->_re_flags);
+
+ $this->_entity_replacements = array(
+ 'amp' => '&',
+ 'lt' => '<',
+ 'gt' => '>',
+ 'quot' => '"'
+ );
+
+ $this->_attr_find = sprintf("/%s/%s",
+ $this->_attr_find,
+ $this->_re_flags);
+
+ $this->_removed_re = sprintf("/%s/%s",
+ $this->_removed_re,
+ $this->_re_flags);
+
+ $this->_ent_replace =
+ sprintf("&(%s);", implode("|",
+ $this->_entity_replacements));
+ }
+
+ /**
+ * Returns a regular expression that will match a given tag in an
+ * SGML string.
+ */
+ function tagMatcher($tag_name, $close_tags = null)
+ {
+ $expr = $this->_tag_expr;
+
+ if ($close_tags) {
+ $options = implode("|", array_merge(array($tag_name), $close_tags));
+ $closer = sprintf("(?:%s)", $options);
+ } else {
+ $closer = $tag_name;
+ }
+
+ $expr = sprintf($expr, $tag_name, $closer);
+ return sprintf("/%s/%s", $expr, $this->_re_flags);
+ }
+
+ function openTag($tag_name)
+ {
+ $expr = sprintf($this->_open_tag_expr, $tag_name);
+ return sprintf("/%s/%s", $expr, $this->_re_flags);
+ }
+
+ function closeTag($tag_name)
+ {
+ $expr = sprintf($this->_close_tag_expr, $tag_name, $tag_name);
+ return sprintf("/%s/%s", $expr, $this->_re_flags);
+ }
+
+ function htmlBegin($s)
+ {
+ $matches = array();
+ $result = preg_match($this->openTag('html'), $s,
+ $matches, PREG_OFFSET_CAPTURE);
+ if ($result === false || !$matches) {
+ return false;
+ }
+ // Return the offset of the first match.
+ return $matches[0][1];
+ }
+
+ function htmlEnd($s)
+ {
+ $matches = array();
+ $result = preg_match($this->closeTag('html'), $s,
+ $matches, PREG_OFFSET_CAPTURE);
+ if ($result === false || !$matches) {
+ return false;
+ }
+ // Return the offset of the first match.
+ return $matches[count($matches) - 1][1];
+ }
+
+ function headFind()
+ {
+ return $this->tagMatcher('head', array('body', 'html'));
+ }
+
+ function replaceEntities($str)
+ {
+ foreach ($this->_entity_replacements as $old => $new) {
+ $str = preg_replace(sprintf("/&%s;/", $old), $new, $str);
+ }
+ return $str;
+ }
+
+ function removeQuotes($str)
+ {
+ $matches = array();
+ $double = '/^"(.*)"$/';
+ $single = "/^\'(.*)\'$/";
+
+ if (preg_match($double, $str, $matches)) {
+ return $matches[1];
+ } else if (preg_match($single, $str, $matches)) {
+ return $matches[1];
+ } else {
+ return $str;
+ }
+ }
+
+ function match($regexp, $text, &$match)
+ {
+ if (!is_callable('mb_ereg_search_init')) {
+ return preg_match($regexp, $text, $match);
+ }
+
+ $regexp = substr($regexp, 1, strlen($regexp) - 2 - strlen($this->_re_flags));
+ mb_ereg_search_init($text);
+ if (!mb_ereg_search($regexp)) {
+ return false;
+ }
+ $match = mb_ereg_search_getregs();
+ return true;
+ }
+
+ /**
+ * Find all link tags in a string representing a HTML document and
+ * return a list of their attributes.
+ *
+ * @todo This is quite ineffective and may fail with the default
+ * pcre.backtrack_limit of 100000 in PHP 5.2, if $html is big.
+ * It should rather use stripos (in PHP5) or strpos()+strtoupper()
+ * in PHP4 to manage this.
+ *
+ * @param string $html The text to parse
+ * @return array $list An array of arrays of attributes, one for each
+ * link tag
+ */
+ function parseLinkAttrs($html)
+ {
+ $stripped = preg_replace($this->_removed_re,
+ "",
+ $html);
+
+ $html_begin = $this->htmlBegin($stripped);
+ $html_end = $this->htmlEnd($stripped);
+
+ if ($html_begin === false) {
+ return array();
+ }
+
+ if ($html_end === false) {
+ $html_end = strlen($stripped);
+ }
+
+ $stripped = substr($stripped, $html_begin,
+ $html_end - $html_begin);
+
+ // Workaround to prevent PREG_BACKTRACK_LIMIT_ERROR:
+ $old_btlimit = ini_set( 'pcre.backtrack_limit', -1 );
+
+ // Try to find the <HEAD> tag.
+ $head_re = $this->headFind();
+ $head_match = array();
+ if (!$this->match($head_re, $stripped, $head_match)) {
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
+ return array();
+ }
+
+ $link_data = array();
+ $link_matches = array();
+
+ if (!preg_match_all($this->_link_find, $head_match[0],
+ $link_matches)) {
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
+ return array();
+ }
+
+ foreach ($link_matches[0] as $link) {
+ $attr_matches = array();
+ preg_match_all($this->_attr_find, $link, $attr_matches);
+ $link_attrs = array();
+ foreach ($attr_matches[0] as $index => $full_match) {
+ $name = $attr_matches[1][$index];
+ $value = $this->replaceEntities(
+ $this->removeQuotes($attr_matches[2][$index]));
+
+ $link_attrs[strtolower($name)] = $value;
+ }
+ $link_data[] = $link_attrs;
+ }
+
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
+ return $link_data;
+ }
+
+ function relMatches($rel_attr, $target_rel)
+ {
+ // Does this target_rel appear in the rel_str?
+ // XXX: TESTME
+ $rels = preg_split("/\s+/", trim($rel_attr));
+ foreach ($rels as $rel) {
+ $rel = strtolower($rel);
+ if ($rel == $target_rel) {
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+
+ function linkHasRel($link_attrs, $target_rel)
+ {
+ // Does this link have target_rel as a relationship?
+ // XXX: TESTME
+ $rel_attr = Auth_OpeniD::arrayGet($link_attrs, 'rel', null);
+ return ($rel_attr && $this->relMatches($rel_attr,
+ $target_rel));
+ }
+
+ function findLinksRel($link_attrs_list, $target_rel)
+ {
+ // Filter the list of link attributes on whether it has
+ // target_rel as a relationship.
+ // XXX: TESTME
+ $result = array();
+ foreach ($link_attrs_list as $attr) {
+ if ($this->linkHasRel($attr, $target_rel)) {
+ $result[] = $attr;
+ }
+ }
+
+ return $result;
+ }
+
+ function findFirstHref($link_attrs_list, $target_rel)
+ {
+ // Return the value of the href attribute for the first link
+ // tag in the list that has target_rel as a relationship.
+ // XXX: TESTME
+ $matches = $this->findLinksRel($link_attrs_list,
+ $target_rel);
+ if (!$matches) {
+ return null;
+ }
+ $first = $matches[0];
+ return Auth_OpenID::arrayGet($first, 'href', null);
+ }
+}
+
+function Auth_OpenID_legacy_discover($html_text, $server_rel,
+ $delegate_rel)
+{
+ $p = new Auth_OpenID_Parse();
+
+ $link_attrs = $p->parseLinkAttrs($html_text);
+
+ $server_url = $p->findFirstHref($link_attrs,
+ $server_rel);
+
+ if ($server_url === null) {
+ return false;
+ } else {
+ $delegate_url = $p->findFirstHref($link_attrs,
+ $delegate_rel);
+ return array($delegate_url, $server_url);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php
new file mode 100644
index 000000000..d90e43e00
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * A PostgreSQL store.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Require the base class file.
+ */
+require_once "Auth/OpenID/SQLStore.php";
+
+/**
+ * An SQL store that uses PostgreSQL as its backend.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_PostgreSQLStore extends Auth_OpenID_SQLStore {
+ /**
+ * @access private
+ */
+ function setSQL()
+ {
+ $this->sql['nonce_table'] =
+ "CREATE TABLE %s (server_url VARCHAR(2047) NOT NULL, ".
+ "timestamp INTEGER NOT NULL, ".
+ "salt CHAR(40) NOT NULL, ".
+ "UNIQUE (server_url, timestamp, salt))";
+
+ $this->sql['assoc_table'] =
+ "CREATE TABLE %s (server_url VARCHAR(2047) NOT NULL, ".
+ "handle VARCHAR(255) NOT NULL, ".
+ "secret BYTEA NOT NULL, ".
+ "issued INTEGER NOT NULL, ".
+ "lifetime INTEGER NOT NULL, ".
+ "assoc_type VARCHAR(64) NOT NULL, ".
+ "PRIMARY KEY (server_url, handle), ".
+ "CONSTRAINT secret_length_constraint CHECK ".
+ "(LENGTH(secret) <= 128))";
+
+ $this->sql['set_assoc'] =
+ array(
+ 'insert_assoc' => "INSERT INTO %s (server_url, handle, ".
+ "secret, issued, lifetime, assoc_type) VALUES ".
+ "(?, ?, '!', ?, ?, ?)",
+ 'update_assoc' => "UPDATE %s SET secret = '!', issued = ?, ".
+ "lifetime = ?, assoc_type = ? WHERE server_url = ? AND ".
+ "handle = ?"
+ );
+
+ $this->sql['get_assocs'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ?";
+
+ $this->sql['get_assoc'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ? AND handle = ?";
+
+ $this->sql['remove_assoc'] =
+ "DELETE FROM %s WHERE server_url = ? AND handle = ?";
+
+ $this->sql['add_nonce'] =
+ "INSERT INTO %s (server_url, timestamp, salt) VALUES ".
+ "(?, ?, ?)"
+ ;
+
+ $this->sql['clean_nonce'] =
+ "DELETE FROM %s WHERE timestamp < ?";
+
+ $this->sql['clean_assoc'] =
+ "DELETE FROM %s WHERE issued + lifetime < ?";
+ }
+
+ /**
+ * @access private
+ */
+ function _set_assoc($server_url, $handle, $secret, $issued, $lifetime,
+ $assoc_type)
+ {
+ $result = $this->_get_assoc($server_url, $handle);
+ if ($result) {
+ // Update the table since this associations already exists.
+ $this->connection->query($this->sql['set_assoc']['update_assoc'],
+ array($secret, $issued, $lifetime,
+ $assoc_type, $server_url, $handle));
+ } else {
+ // Insert a new record because this association wasn't
+ // found.
+ $this->connection->query($this->sql['set_assoc']['insert_assoc'],
+ array($server_url, $handle, $secret,
+ $issued, $lifetime, $assoc_type));
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function blobEncode($blob)
+ {
+ return $this->_octify($blob);
+ }
+
+ /**
+ * @access private
+ */
+ function blobDecode($blob)
+ {
+ return $this->_unoctify($blob);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php
new file mode 100644
index 000000000..c04059732
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php
@@ -0,0 +1,557 @@
+<?php
+
+/**
+ * SQL-backed OpenID stores.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/Interface.php';
+require_once 'Auth/OpenID/Nonce.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID.php';
+
+/**
+ * @access private
+ */
+require_once 'Auth/OpenID/Nonce.php';
+
+/**
+ * This is the parent class for the SQL stores, which contains the
+ * logic common to all of the SQL stores.
+ *
+ * The table names used are determined by the class variables
+ * associations_table_name and nonces_table_name. To change the name
+ * of the tables used, pass new table names into the constructor.
+ *
+ * To create the tables with the proper schema, see the createTables
+ * method.
+ *
+ * This class shouldn't be used directly. Use one of its subclasses
+ * instead, as those contain the code necessary to use a specific
+ * database. If you're an OpenID integrator and you'd like to create
+ * an SQL-driven store that wraps an application's database
+ * abstraction, be sure to create a subclass of
+ * {@link Auth_OpenID_DatabaseConnection} that calls the application's
+ * database abstraction calls. Then, pass an instance of your new
+ * database connection class to your SQLStore subclass constructor.
+ *
+ * All methods other than the constructor and createTables should be
+ * considered implementation details.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
+
+ /**
+ * This creates a new SQLStore instance. It requires an
+ * established database connection be given to it, and it allows
+ * overriding the default table names.
+ *
+ * @param connection $connection This must be an established
+ * connection to a database of the correct type for the SQLStore
+ * subclass you're using. This must either be an PEAR DB
+ * connection handle or an instance of a subclass of
+ * Auth_OpenID_DatabaseConnection.
+ *
+ * @param associations_table: This is an optional parameter to
+ * specify the name of the table used for storing associations.
+ * The default value is 'oid_associations'.
+ *
+ * @param nonces_table: This is an optional parameter to specify
+ * the name of the table used for storing nonces. The default
+ * value is 'oid_nonces'.
+ */
+ function Auth_OpenID_SQLStore($connection,
+ $associations_table = null,
+ $nonces_table = null)
+ {
+ $this->associations_table_name = "oid_associations";
+ $this->nonces_table_name = "oid_nonces";
+
+ // Check the connection object type to be sure it's a PEAR
+ // database connection.
+ if (!(is_object($connection) &&
+ (is_subclass_of($connection, 'db_common') ||
+ is_subclass_of($connection,
+ 'auth_openid_databaseconnection')))) {
+ trigger_error("Auth_OpenID_SQLStore expected PEAR connection " .
+ "object (got ".get_class($connection).")",
+ E_USER_ERROR);
+ return;
+ }
+
+ $this->connection = $connection;
+
+ // Be sure to set the fetch mode so the results are keyed on
+ // column name instead of column index. This is a PEAR
+ // constant, so only try to use it if PEAR is present. Note
+ // that Auth_Openid_Databaseconnection instances need not
+ // implement ::setFetchMode for this reason.
+ if (is_subclass_of($this->connection, 'db_common')) {
+ $this->connection->setFetchMode(DB_FETCHMODE_ASSOC);
+ }
+
+ if ($associations_table) {
+ $this->associations_table_name = $associations_table;
+ }
+
+ if ($nonces_table) {
+ $this->nonces_table_name = $nonces_table;
+ }
+
+ $this->max_nonce_age = 6 * 60 * 60;
+
+ // Be sure to run the database queries with auto-commit mode
+ // turned OFF, because we want every function to run in a
+ // transaction, implicitly. As a rule, methods named with a
+ // leading underscore will NOT control transaction behavior.
+ // Callers of these methods will worry about transactions.
+ $this->connection->autoCommit(false);
+
+ // Create an empty SQL strings array.
+ $this->sql = array();
+
+ // Call this method (which should be overridden by subclasses)
+ // to populate the $this->sql array with SQL strings.
+ $this->setSQL();
+
+ // Verify that all required SQL statements have been set, and
+ // raise an error if any expected SQL strings were either
+ // absent or empty.
+ list($missing, $empty) = $this->_verifySQL();
+
+ if ($missing) {
+ trigger_error("Expected keys in SQL query list: " .
+ implode(", ", $missing),
+ E_USER_ERROR);
+ return;
+ }
+
+ if ($empty) {
+ trigger_error("SQL list keys have no SQL strings: " .
+ implode(", ", $empty),
+ E_USER_ERROR);
+ return;
+ }
+
+ // Add table names to queries.
+ $this->_fixSQL();
+ }
+
+ function tableExists($table_name)
+ {
+ return !$this->isError(
+ $this->connection->query(
+ sprintf("SELECT * FROM %s LIMIT 0",
+ $table_name)));
+ }
+
+ /**
+ * Returns true if $value constitutes a database error; returns
+ * false otherwise.
+ */
+ function isError($value)
+ {
+ return PEAR::isError($value);
+ }
+
+ /**
+ * Converts a query result to a boolean. If the result is a
+ * database error according to $this->isError(), this returns
+ * false; otherwise, this returns true.
+ */
+ function resultToBool($obj)
+ {
+ if ($this->isError($obj)) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * This method should be overridden by subclasses. This method is
+ * called by the constructor to set values in $this->sql, which is
+ * an array keyed on sql name.
+ */
+ function setSQL()
+ {
+ }
+
+ /**
+ * Resets the store by removing all records from the store's
+ * tables.
+ */
+ function reset()
+ {
+ $this->connection->query(sprintf("DELETE FROM %s",
+ $this->associations_table_name));
+
+ $this->connection->query(sprintf("DELETE FROM %s",
+ $this->nonces_table_name));
+ }
+
+ /**
+ * @access private
+ */
+ function _verifySQL()
+ {
+ $missing = array();
+ $empty = array();
+
+ $required_sql_keys = array(
+ 'nonce_table',
+ 'assoc_table',
+ 'set_assoc',
+ 'get_assoc',
+ 'get_assocs',
+ 'remove_assoc'
+ );
+
+ foreach ($required_sql_keys as $key) {
+ if (!array_key_exists($key, $this->sql)) {
+ $missing[] = $key;
+ } else if (!$this->sql[$key]) {
+ $empty[] = $key;
+ }
+ }
+
+ return array($missing, $empty);
+ }
+
+ /**
+ * @access private
+ */
+ function _fixSQL()
+ {
+ $replacements = array(
+ array(
+ 'value' => $this->nonces_table_name,
+ 'keys' => array('nonce_table',
+ 'add_nonce',
+ 'clean_nonce')
+ ),
+ array(
+ 'value' => $this->associations_table_name,
+ 'keys' => array('assoc_table',
+ 'set_assoc',
+ 'get_assoc',
+ 'get_assocs',
+ 'remove_assoc',
+ 'clean_assoc')
+ )
+ );
+
+ foreach ($replacements as $item) {
+ $value = $item['value'];
+ $keys = $item['keys'];
+
+ foreach ($keys as $k) {
+ if (is_array($this->sql[$k])) {
+ foreach ($this->sql[$k] as $part_key => $part_value) {
+ $this->sql[$k][$part_key] = sprintf($part_value,
+ $value);
+ }
+ } else {
+ $this->sql[$k] = sprintf($this->sql[$k], $value);
+ }
+ }
+ }
+ }
+
+ function blobDecode($blob)
+ {
+ return $blob;
+ }
+
+ function blobEncode($str)
+ {
+ return $str;
+ }
+
+ function createTables()
+ {
+ $this->connection->autoCommit(true);
+ $n = $this->create_nonce_table();
+ $a = $this->create_assoc_table();
+ $this->connection->autoCommit(false);
+
+ if ($n && $a) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function create_nonce_table()
+ {
+ if (!$this->tableExists($this->nonces_table_name)) {
+ $r = $this->connection->query($this->sql['nonce_table']);
+ return $this->resultToBool($r);
+ }
+ return true;
+ }
+
+ function create_assoc_table()
+ {
+ if (!$this->tableExists($this->associations_table_name)) {
+ $r = $this->connection->query($this->sql['assoc_table']);
+ return $this->resultToBool($r);
+ }
+ return true;
+ }
+
+ /**
+ * @access private
+ */
+ function _set_assoc($server_url, $handle, $secret, $issued,
+ $lifetime, $assoc_type)
+ {
+ return $this->connection->query($this->sql['set_assoc'],
+ array(
+ $server_url,
+ $handle,
+ $secret,
+ $issued,
+ $lifetime,
+ $assoc_type));
+ }
+
+ function storeAssociation($server_url, $association)
+ {
+ if ($this->resultToBool($this->_set_assoc(
+ $server_url,
+ $association->handle,
+ $this->blobEncode(
+ $association->secret),
+ $association->issued,
+ $association->lifetime,
+ $association->assoc_type
+ ))) {
+ $this->connection->commit();
+ } else {
+ $this->connection->rollback();
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _get_assoc($server_url, $handle)
+ {
+ $result = $this->connection->getRow($this->sql['get_assoc'],
+ array($server_url, $handle));
+ if ($this->isError($result)) {
+ return null;
+ } else {
+ return $result;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _get_assocs($server_url)
+ {
+ $result = $this->connection->getAll($this->sql['get_assocs'],
+ array($server_url));
+
+ if ($this->isError($result)) {
+ return array();
+ } else {
+ return $result;
+ }
+ }
+
+ function removeAssociation($server_url, $handle)
+ {
+ if ($this->_get_assoc($server_url, $handle) == null) {
+ return false;
+ }
+
+ if ($this->resultToBool($this->connection->query(
+ $this->sql['remove_assoc'],
+ array($server_url, $handle)))) {
+ $this->connection->commit();
+ } else {
+ $this->connection->rollback();
+ }
+
+ return true;
+ }
+
+ function getAssociation($server_url, $handle = null)
+ {
+ if ($handle !== null) {
+ $assoc = $this->_get_assoc($server_url, $handle);
+
+ $assocs = array();
+ if ($assoc) {
+ $assocs[] = $assoc;
+ }
+ } else {
+ $assocs = $this->_get_assocs($server_url);
+ }
+
+ if (!$assocs || (count($assocs) == 0)) {
+ return null;
+ } else {
+ $associations = array();
+
+ foreach ($assocs as $assoc_row) {
+ $assoc = new Auth_OpenID_Association($assoc_row['handle'],
+ $assoc_row['secret'],
+ $assoc_row['issued'],
+ $assoc_row['lifetime'],
+ $assoc_row['assoc_type']);
+
+ $assoc->secret = $this->blobDecode($assoc->secret);
+
+ if ($assoc->getExpiresIn() == 0) {
+ $this->removeAssociation($server_url, $assoc->handle);
+ } else {
+ $associations[] = array($assoc->issued, $assoc);
+ }
+ }
+
+ if ($associations) {
+ $issued = array();
+ $assocs = array();
+ foreach ($associations as $key => $assoc) {
+ $issued[$key] = $assoc[0];
+ $assocs[$key] = $assoc[1];
+ }
+
+ array_multisort($issued, SORT_DESC, $assocs, SORT_DESC,
+ $associations);
+
+ // return the most recently issued one.
+ list($issued, $assoc) = $associations[0];
+ return $assoc;
+ } else {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function _add_nonce($server_url, $timestamp, $salt)
+ {
+ $sql = $this->sql['add_nonce'];
+ $result = $this->connection->query($sql, array($server_url,
+ $timestamp,
+ $salt));
+ if ($this->isError($result)) {
+ $this->connection->rollback();
+ } else {
+ $this->connection->commit();
+ }
+ return $this->resultToBool($result);
+ }
+
+ function useNonce($server_url, $timestamp, $salt)
+ {
+ global $Auth_OpenID_SKEW;
+
+ if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
+ return false;
+ }
+
+ return $this->_add_nonce($server_url, $timestamp, $salt);
+ }
+
+ /**
+ * "Octifies" a binary string by returning a string with escaped
+ * octal bytes. This is used for preparing binary data for
+ * PostgreSQL BYTEA fields.
+ *
+ * @access private
+ */
+ function _octify($str)
+ {
+ $result = "";
+ for ($i = 0; $i < Auth_OpenID::bytes($str); $i++) {
+ $ch = substr($str, $i, 1);
+ if ($ch == "\\") {
+ $result .= "\\\\\\\\";
+ } else if (ord($ch) == 0) {
+ $result .= "\\\\000";
+ } else {
+ $result .= "\\" . strval(decoct(ord($ch)));
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * "Unoctifies" octal-escaped data from PostgreSQL and returns the
+ * resulting ASCII (possibly binary) string.
+ *
+ * @access private
+ */
+ function _unoctify($str)
+ {
+ $result = "";
+ $i = 0;
+ while ($i < strlen($str)) {
+ $char = $str[$i];
+ if ($char == "\\") {
+ // Look to see if the next char is a backslash and
+ // append it.
+ if ($str[$i + 1] != "\\") {
+ $octal_digits = substr($str, $i + 1, 3);
+ $dec = octdec($octal_digits);
+ $char = chr($dec);
+ $i += 4;
+ } else {
+ $char = "\\";
+ $i += 2;
+ }
+ } else {
+ $i += 1;
+ }
+
+ $result .= $char;
+ }
+
+ return $result;
+ }
+
+ function cleanupNonces()
+ {
+ global $Auth_OpenID_SKEW;
+ $v = time() - $Auth_OpenID_SKEW;
+
+ $this->connection->query($this->sql['clean_nonce'], array($v));
+ $num = $this->connection->affectedRows();
+ $this->connection->commit();
+ return $num;
+ }
+
+ function cleanupAssociations()
+ {
+ $this->connection->query($this->sql['clean_assoc'],
+ array(time()));
+ $num = $this->connection->affectedRows();
+ $this->connection->commit();
+ return $num;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php
new file mode 100644
index 000000000..4558fa1c3
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * An SQLite store.
+ *
+ * @package OpenID
+ */
+
+/**
+ * Require the base class file.
+ */
+require_once "Auth/OpenID/SQLStore.php";
+
+/**
+ * An SQL store that uses SQLite as its backend.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SQLiteStore extends Auth_OpenID_SQLStore {
+ function setSQL()
+ {
+ $this->sql['nonce_table'] =
+ "CREATE TABLE %s (server_url VARCHAR(2047), timestamp INTEGER, ".
+ "salt CHAR(40), UNIQUE (server_url, timestamp, salt))";
+
+ $this->sql['assoc_table'] =
+ "CREATE TABLE %s (server_url VARCHAR(2047), handle VARCHAR(255), ".
+ "secret BLOB(128), issued INTEGER, lifetime INTEGER, ".
+ "assoc_type VARCHAR(64), PRIMARY KEY (server_url, handle))";
+
+ $this->sql['set_assoc'] =
+ "INSERT OR REPLACE INTO %s VALUES (?, ?, ?, ?, ?, ?)";
+
+ $this->sql['get_assocs'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ?";
+
+ $this->sql['get_assoc'] =
+ "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ".
+ "WHERE server_url = ? AND handle = ?";
+
+ $this->sql['remove_assoc'] =
+ "DELETE FROM %s WHERE server_url = ? AND handle = ?";
+
+ $this->sql['add_nonce'] =
+ "INSERT INTO %s (server_url, timestamp, salt) VALUES (?, ?, ?)";
+
+ $this->sql['clean_nonce'] =
+ "DELETE FROM %s WHERE timestamp < ?";
+
+ $this->sql['clean_assoc'] =
+ "DELETE FROM %s WHERE issued + lifetime < ?";
+ }
+
+ /**
+ * @access private
+ */
+ function _add_nonce($server_url, $timestamp, $salt)
+ {
+ // PECL SQLite extensions 1.0.3 and older (1.0.3 is the
+ // current release at the time of this writing) have a broken
+ // sqlite_escape_string function that breaks when passed the
+ // empty string. Prefixing all strings with one character
+ // keeps them unique and avoids this bug. The nonce table is
+ // write-only, so we don't have to worry about updating other
+ // functions with this same bad hack.
+ return parent::_add_nonce('x' . $server_url, $timestamp, $salt);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php
new file mode 100644
index 000000000..5ece70724
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php
@@ -0,0 +1,521 @@
+<?php
+
+/**
+ * Simple registration request and response parsing and object
+ * representation.
+ *
+ * This module contains objects representing simple registration
+ * requests and responses that can be used with both OpenID relying
+ * parties and OpenID providers.
+ *
+ * 1. The relying party creates a request object and adds it to the
+ * {@link Auth_OpenID_AuthRequest} object before making the
+ * checkid request to the OpenID provider:
+ *
+ * $sreg_req = Auth_OpenID_SRegRequest::build(array('email'));
+ * $auth_request->addExtension($sreg_req);
+ *
+ * 2. The OpenID provider extracts the simple registration request
+ * from the OpenID request using {@link
+ * Auth_OpenID_SRegRequest::fromOpenIDRequest}, gets the user's
+ * approval and data, creates an {@link Auth_OpenID_SRegResponse}
+ * object and adds it to the id_res response:
+ *
+ * $sreg_req = Auth_OpenID_SRegRequest::fromOpenIDRequest(
+ * $checkid_request);
+ * // [ get the user's approval and data, informing the user that
+ * // the fields in sreg_response were requested ]
+ * $sreg_resp = Auth_OpenID_SRegResponse::extractResponse(
+ * $sreg_req, $user_data);
+ * $sreg_resp->toMessage($openid_response->fields);
+ *
+ * 3. The relying party uses {@link
+ * Auth_OpenID_SRegResponse::fromSuccessResponse} to extract the data
+ * from the OpenID response:
+ *
+ * $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse(
+ * $success_response);
+ *
+ * @package OpenID
+ */
+
+/**
+ * Import message and extension internals.
+ */
+require_once 'Auth/OpenID/Message.php';
+require_once 'Auth/OpenID/Extension.php';
+
+// The data fields that are listed in the sreg spec
+global $Auth_OpenID_sreg_data_fields;
+$Auth_OpenID_sreg_data_fields = array(
+ 'fullname' => 'Full Name',
+ 'nickname' => 'Nickname',
+ 'dob' => 'Date of Birth',
+ 'email' => 'E-mail Address',
+ 'gender' => 'Gender',
+ 'postcode' => 'Postal Code',
+ 'country' => 'Country',
+ 'language' => 'Language',
+ 'timezone' => 'Time Zone');
+
+/**
+ * Check to see that the given value is a valid simple registration
+ * data field name. Return true if so, false if not.
+ */
+function Auth_OpenID_checkFieldName($field_name)
+{
+ global $Auth_OpenID_sreg_data_fields;
+
+ if (!in_array($field_name, array_keys($Auth_OpenID_sreg_data_fields))) {
+ return false;
+ }
+ return true;
+}
+
+// URI used in the wild for Yadis documents advertising simple
+// registration support
+define('Auth_OpenID_SREG_NS_URI_1_0', 'http://openid.net/sreg/1.0');
+
+// URI in the draft specification for simple registration 1.1
+// <http://openid.net/specs/openid-simple-registration-extension-1_1-01.html>
+define('Auth_OpenID_SREG_NS_URI_1_1', 'http://openid.net/extensions/sreg/1.1');
+
+// This attribute will always hold the preferred URI to use when
+// adding sreg support to an XRDS file or in an OpenID namespace
+// declaration.
+define('Auth_OpenID_SREG_NS_URI', Auth_OpenID_SREG_NS_URI_1_1);
+
+Auth_OpenID_registerNamespaceAlias(Auth_OpenID_SREG_NS_URI_1_1, 'sreg');
+
+/**
+ * Does the given endpoint advertise support for simple
+ * registration?
+ *
+ * $endpoint: The endpoint object as returned by OpenID discovery.
+ * returns whether an sreg type was advertised by the endpoint
+ */
+function Auth_OpenID_supportsSReg($endpoint)
+{
+ return ($endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_1) ||
+ $endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_0));
+}
+
+/**
+ * A base class for classes dealing with Simple Registration protocol
+ * messages.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SRegBase extends Auth_OpenID_Extension {
+ /**
+ * Extract the simple registration namespace URI from the given
+ * OpenID message. Handles OpenID 1 and 2, as well as both sreg
+ * namespace URIs found in the wild, as well as missing namespace
+ * definitions (for OpenID 1)
+ *
+ * $message: The OpenID message from which to parse simple
+ * registration fields. This may be a request or response message.
+ *
+ * Returns the sreg namespace URI for the supplied message. The
+ * message may be modified to define a simple registration
+ * namespace.
+ *
+ * @access private
+ */
+ static function _getSRegNS($message)
+ {
+ $alias = null;
+ $found_ns_uri = null;
+
+ // See if there exists an alias for one of the two defined
+ // simple registration types.
+ foreach (array(Auth_OpenID_SREG_NS_URI_1_1,
+ Auth_OpenID_SREG_NS_URI_1_0) as $sreg_ns_uri) {
+ $alias = $message->namespaces->getAlias($sreg_ns_uri);
+ if ($alias !== null) {
+ $found_ns_uri = $sreg_ns_uri;
+ break;
+ }
+ }
+
+ if ($alias === null) {
+ // There is no alias for either of the types, so try to
+ // add one. We default to using the modern value (1.1)
+ $found_ns_uri = Auth_OpenID_SREG_NS_URI_1_1;
+ if ($message->namespaces->addAlias(Auth_OpenID_SREG_NS_URI_1_1,
+ 'sreg') === null) {
+ // An alias for the string 'sreg' already exists, but
+ // it's defined for something other than simple
+ // registration
+ return null;
+ }
+ }
+
+ return $found_ns_uri;
+ }
+}
+
+/**
+ * An object to hold the state of a simple registration request.
+ *
+ * required: A list of the required fields in this simple registration
+ * request
+ *
+ * optional: A list of the optional fields in this simple registration
+ * request
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
+
+ var $ns_alias = 'sreg';
+
+ /**
+ * Initialize an empty simple registration request.
+ */
+ static function build($required=null, $optional=null,
+ $policy_url=null,
+ $sreg_ns_uri=Auth_OpenID_SREG_NS_URI,
+ $cls='Auth_OpenID_SRegRequest')
+ {
+ $obj = new $cls();
+
+ $obj->required = array();
+ $obj->optional = array();
+ $obj->policy_url = $policy_url;
+ $obj->ns_uri = $sreg_ns_uri;
+
+ if ($required) {
+ if (!$obj->requestFields($required, true, true)) {
+ return null;
+ }
+ }
+
+ if ($optional) {
+ if (!$obj->requestFields($optional, false, true)) {
+ return null;
+ }
+ }
+
+ return $obj;
+ }
+
+ /**
+ * Create a simple registration request that contains the fields
+ * that were requested in the OpenID request with the given
+ * arguments
+ *
+ * $request: The OpenID authentication request from which to
+ * extract an sreg request.
+ *
+ * $cls: name of class to use when creating sreg request object.
+ * Used for testing.
+ *
+ * Returns the newly created simple registration request
+ */
+ static function fromOpenIDRequest($request, $cls='Auth_OpenID_SRegRequest')
+ {
+
+ $obj = call_user_func_array(array($cls, 'build'),
+ array(null, null, null, Auth_OpenID_SREG_NS_URI, $cls));
+
+ // Since we're going to mess with namespace URI mapping, don't
+ // mutate the object that was passed in.
+ $m = $request->message;
+
+ $obj->ns_uri = $obj->_getSRegNS($m);
+ $args = $m->getArgs($obj->ns_uri);
+
+ if ($args === null || Auth_OpenID::isFailure($args)) {
+ return null;
+ }
+
+ $obj->parseExtensionArgs($args);
+
+ return $obj;
+ }
+
+ /**
+ * Parse the unqualified simple registration request parameters
+ * and add them to this object.
+ *
+ * This method is essentially the inverse of
+ * getExtensionArgs. This method restores the serialized simple
+ * registration request fields.
+ *
+ * If you are extracting arguments from a standard OpenID
+ * checkid_* request, you probably want to use fromOpenIDRequest,
+ * which will extract the sreg namespace and arguments from the
+ * OpenID request. This method is intended for cases where the
+ * OpenID server needs more control over how the arguments are
+ * parsed than that method provides.
+ *
+ * $args == $message->getArgs($ns_uri);
+ * $request->parseExtensionArgs($args);
+ *
+ * $args: The unqualified simple registration arguments
+ *
+ * strict: Whether requests with fields that are not defined in
+ * the simple registration specification should be tolerated (and
+ * ignored)
+ */
+ function parseExtensionArgs($args, $strict=false)
+ {
+ foreach (array('required', 'optional') as $list_name) {
+ $required = ($list_name == 'required');
+ $items = Auth_OpenID::arrayGet($args, $list_name);
+ if ($items) {
+ foreach (explode(',', $items) as $field_name) {
+ if (!$this->requestField($field_name, $required, $strict)) {
+ if ($strict) {
+ return false;
+ }
+ }
+ }
+ }
+ }
+
+ $this->policy_url = Auth_OpenID::arrayGet($args, 'policy_url');
+
+ return true;
+ }
+
+ /**
+ * A list of all of the simple registration fields that were
+ * requested, whether they were required or optional.
+ */
+ function allRequestedFields()
+ {
+ return array_merge($this->required, $this->optional);
+ }
+
+ /**
+ * Have any simple registration fields been requested?
+ */
+ function wereFieldsRequested()
+ {
+ return count($this->allRequestedFields());
+ }
+
+ /**
+ * Was this field in the request?
+ */
+ function contains($field_name)
+ {
+ return (in_array($field_name, $this->required) ||
+ in_array($field_name, $this->optional));
+ }
+
+ /**
+ * Request the specified field from the OpenID user
+ *
+ * $field_name: the unqualified simple registration field name
+ *
+ * required: whether the given field should be presented to the
+ * user as being a required to successfully complete the request
+ *
+ * strict: whether to raise an exception when a field is added to
+ * a request more than once
+ */
+ function requestField($field_name,
+ $required=false, $strict=false)
+ {
+ if (!Auth_OpenID_checkFieldName($field_name)) {
+ return false;
+ }
+
+ if ($strict) {
+ if ($this->contains($field_name)) {
+ return false;
+ }
+ } else {
+ if (in_array($field_name, $this->required)) {
+ return true;
+ }
+
+ if (in_array($field_name, $this->optional)) {
+ if ($required) {
+ unset($this->optional[array_search($field_name,
+ $this->optional)]);
+ } else {
+ return true;
+ }
+ }
+ }
+
+ if ($required) {
+ $this->required[] = $field_name;
+ } else {
+ $this->optional[] = $field_name;
+ }
+
+ return true;
+ }
+
+ /**
+ * Add the given list of fields to the request
+ *
+ * field_names: The simple registration data fields to request
+ *
+ * required: Whether these values should be presented to the user
+ * as required
+ *
+ * strict: whether to raise an exception when a field is added to
+ * a request more than once
+ */
+ function requestFields($field_names, $required=false, $strict=false)
+ {
+ if (!is_array($field_names)) {
+ return false;
+ }
+
+ foreach ($field_names as $field_name) {
+ if (!$this->requestField($field_name, $required, $strict=$strict)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Get a dictionary of unqualified simple registration arguments
+ * representing this request.
+ *
+ * This method is essentially the inverse of
+ * C{L{parseExtensionArgs}}. This method serializes the simple
+ * registration request fields.
+ */
+ function getExtensionArgs()
+ {
+ $args = array();
+
+ if ($this->required) {
+ $args['required'] = implode(',', $this->required);
+ }
+
+ if ($this->optional) {
+ $args['optional'] = implode(',', $this->optional);
+ }
+
+ if ($this->policy_url) {
+ $args['policy_url'] = $this->policy_url;
+ }
+
+ return $args;
+ }
+}
+
+/**
+ * Represents the data returned in a simple registration response
+ * inside of an OpenID C{id_res} response. This object will be created
+ * by the OpenID server, added to the C{id_res} response object, and
+ * then extracted from the C{id_res} message by the Consumer.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
+
+ var $ns_alias = 'sreg';
+
+ function Auth_OpenID_SRegResponse($data=null,
+ $sreg_ns_uri=Auth_OpenID_SREG_NS_URI)
+ {
+ if ($data === null) {
+ $this->data = array();
+ } else {
+ $this->data = $data;
+ }
+
+ $this->ns_uri = $sreg_ns_uri;
+ }
+
+ /**
+ * Take a C{L{SRegRequest}} and a dictionary of simple
+ * registration values and create a C{L{SRegResponse}} object
+ * containing that data.
+ *
+ * request: The simple registration request object
+ *
+ * data: The simple registration data for this response, as a
+ * dictionary from unqualified simple registration field name to
+ * string (unicode) value. For instance, the nickname should be
+ * stored under the key 'nickname'.
+ */
+ static function extractResponse($request, $data)
+ {
+ $obj = new Auth_OpenID_SRegResponse();
+ $obj->ns_uri = $request->ns_uri;
+
+ foreach ($request->allRequestedFields() as $field) {
+ $value = Auth_OpenID::arrayGet($data, $field);
+ if ($value !== null) {
+ $obj->data[$field] = $value;
+ }
+ }
+
+ return $obj;
+ }
+
+ /**
+ * Create a C{L{SRegResponse}} object from a successful OpenID
+ * library response
+ * (C{L{openid.consumer.consumer.SuccessResponse}}) response
+ * message
+ *
+ * success_response: A SuccessResponse from consumer.complete()
+ *
+ * signed_only: Whether to process only data that was
+ * signed in the id_res message from the server.
+ *
+ * Returns a simple registration response containing the data that
+ * was supplied with the C{id_res} response.
+ */
+ static function fromSuccessResponse($success_response, $signed_only=true)
+ {
+ global $Auth_OpenID_sreg_data_fields;
+
+ $obj = new Auth_OpenID_SRegResponse();
+ $obj->ns_uri = $obj->_getSRegNS($success_response->message);
+
+ if ($signed_only) {
+ $args = $success_response->getSignedNS($obj->ns_uri);
+ } else {
+ $args = $success_response->message->getArgs($obj->ns_uri);
+ }
+
+ if ($args === null || Auth_OpenID::isFailure($args)) {
+ return null;
+ }
+
+ foreach ($Auth_OpenID_sreg_data_fields as $field_name => $desc) {
+ if (in_array($field_name, array_keys($args))) {
+ $obj->data[$field_name] = $args[$field_name];
+ }
+ }
+
+ return $obj;
+ }
+
+ function getExtensionArgs()
+ {
+ return $this->data;
+ }
+
+ // Read-only dictionary interface
+ function get($field_name, $default=null)
+ {
+ if (!Auth_OpenID_checkFieldName($field_name)) {
+ return null;
+ }
+
+ return Auth_OpenID::arrayGet($this->data, $field_name, $default);
+ }
+
+ function contents()
+ {
+ return $this->data;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php
new file mode 100644
index 000000000..312a92866
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php
@@ -0,0 +1,1765 @@
+<?php
+
+/**
+ * OpenID server protocol and logic.
+ *
+ * Overview
+ *
+ * An OpenID server must perform three tasks:
+ *
+ * 1. Examine the incoming request to determine its nature and validity.
+ * 2. Make a decision about how to respond to this request.
+ * 3. Format the response according to the protocol.
+ *
+ * The first and last of these tasks may performed by the {@link
+ * Auth_OpenID_Server::decodeRequest()} and {@link
+ * Auth_OpenID_Server::encodeResponse} methods. Who gets to do the
+ * intermediate task -- deciding how to respond to the request -- will
+ * depend on what type of request it is.
+ *
+ * If it's a request to authenticate a user (a 'checkid_setup' or
+ * 'checkid_immediate' request), you need to decide if you will assert
+ * that this user may claim the identity in question. Exactly how you
+ * do that is a matter of application policy, but it generally
+ * involves making sure the user has an account with your system and
+ * is logged in, checking to see if that identity is hers to claim,
+ * and verifying with the user that she does consent to releasing that
+ * information to the party making the request.
+ *
+ * Examine the properties of the {@link Auth_OpenID_CheckIDRequest}
+ * object, and if and when you've come to a decision, form a response
+ * by calling {@link Auth_OpenID_CheckIDRequest::answer()}.
+ *
+ * Other types of requests relate to establishing associations between
+ * client and server and verifing the authenticity of previous
+ * communications. {@link Auth_OpenID_Server} contains all the logic
+ * and data necessary to respond to such requests; just pass it to
+ * {@link Auth_OpenID_Server::handleRequest()}.
+ *
+ * OpenID Extensions
+ *
+ * Do you want to provide other information for your users in addition
+ * to authentication? Version 1.2 of the OpenID protocol allows
+ * consumers to add extensions to their requests. For example, with
+ * sites using the Simple Registration
+ * Extension
+ * (http://openid.net/specs/openid-simple-registration-extension-1_0.html),
+ * a user can agree to have their nickname and e-mail address sent to
+ * a site when they sign up.
+ *
+ * Since extensions do not change the way OpenID authentication works,
+ * code to handle extension requests may be completely separate from
+ * the {@link Auth_OpenID_Request} class here. But you'll likely want
+ * data sent back by your extension to be signed. {@link
+ * Auth_OpenID_ServerResponse} provides methods with which you can add
+ * data to it which can be signed with the other data in the OpenID
+ * signature.
+ *
+ * For example:
+ *
+ * <pre> // when request is a checkid_* request
+ * $response = $request->answer(true);
+ * // this will a signed 'openid.sreg.timezone' parameter to the response
+ * response.addField('sreg', 'timezone', 'America/Los_Angeles')</pre>
+ *
+ * Stores
+ *
+ * The OpenID server needs to maintain state between requests in order
+ * to function. Its mechanism for doing this is called a store. The
+ * store interface is defined in Interface.php. Additionally, several
+ * concrete store implementations are provided, so that most sites
+ * won't need to implement a custom store. For a store backed by flat
+ * files on disk, see {@link Auth_OpenID_FileStore}. For stores based
+ * on MySQL, SQLite, or PostgreSQL, see the {@link
+ * Auth_OpenID_SQLStore} subclasses.
+ *
+ * Upgrading
+ *
+ * The keys by which a server looks up associations in its store have
+ * changed in version 1.2 of this library. If your store has entries
+ * created from version 1.0 code, you should empty it.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Required imports
+ */
+require_once "Auth/OpenID.php";
+require_once "Auth/OpenID/Association.php";
+require_once "Auth/OpenID/CryptUtil.php";
+require_once "Auth/OpenID/BigMath.php";
+require_once "Auth/OpenID/DiffieHellman.php";
+require_once "Auth/OpenID/KVForm.php";
+require_once "Auth/OpenID/TrustRoot.php";
+require_once "Auth/OpenID/ServerRequest.php";
+require_once "Auth/OpenID/Message.php";
+require_once "Auth/OpenID/Nonce.php";
+
+define('AUTH_OPENID_HTTP_OK', 200);
+define('AUTH_OPENID_HTTP_REDIRECT', 302);
+define('AUTH_OPENID_HTTP_ERROR', 400);
+
+/**
+ * @access private
+ */
+global $_Auth_OpenID_Request_Modes;
+$_Auth_OpenID_Request_Modes = array('checkid_setup',
+ 'checkid_immediate');
+
+/**
+ * @access private
+ */
+define('Auth_OpenID_ENCODE_KVFORM', 'kfvorm');
+
+/**
+ * @access private
+ */
+define('Auth_OpenID_ENCODE_URL', 'URL/redirect');
+
+/**
+ * @access private
+ */
+define('Auth_OpenID_ENCODE_HTML_FORM', 'HTML form');
+
+/**
+ * @access private
+ */
+function Auth_OpenID_isError($obj, $cls = 'Auth_OpenID_ServerError')
+{
+ return is_a($obj, $cls);
+}
+
+/**
+ * An error class which gets instantiated and returned whenever an
+ * OpenID protocol error occurs. Be prepared to use this in place of
+ * an ordinary server response.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_ServerError {
+ /**
+ * @access private
+ */
+ function Auth_OpenID_ServerError($message = null, $text = null,
+ $reference = null, $contact = null)
+ {
+ $this->message = $message;
+ $this->text = $text;
+ $this->contact = $contact;
+ $this->reference = $reference;
+ }
+
+ function getReturnTo()
+ {
+ if ($this->message &&
+ $this->message->hasKey(Auth_OpenID_OPENID_NS, 'return_to')) {
+ return $this->message->getArg(Auth_OpenID_OPENID_NS,
+ 'return_to');
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the return_to URL for the request which caused this
+ * error.
+ */
+ function hasReturnTo()
+ {
+ return $this->getReturnTo() !== null;
+ }
+
+ /**
+ * Encodes this error's response as a URL suitable for
+ * redirection. If the response has no return_to, another
+ * Auth_OpenID_ServerError is returned.
+ */
+ function encodeToURL()
+ {
+ if (!$this->message) {
+ return null;
+ }
+
+ $msg = $this->toMessage();
+ return $msg->toURL($this->getReturnTo());
+ }
+
+ /**
+ * Encodes the response to key-value form. This is a
+ * machine-readable format used to respond to messages which came
+ * directly from the consumer and not through the user-agent. See
+ * the OpenID specification.
+ */
+ function encodeToKVForm()
+ {
+ return Auth_OpenID_KVForm::fromArray(
+ array('mode' => 'error',
+ 'error' => $this->toString()));
+ }
+
+ function toFormMarkup($form_tag_attrs=null)
+ {
+ $msg = $this->toMessage();
+ return $msg->toFormMarkup($this->getReturnTo(), $form_tag_attrs);
+ }
+
+ function toHTML($form_tag_attrs=null)
+ {
+ return Auth_OpenID::autoSubmitHTML(
+ $this->toFormMarkup($form_tag_attrs));
+ }
+
+ function toMessage()
+ {
+ // Generate a Message object for sending to the relying party,
+ // after encoding.
+ $namespace = $this->message->getOpenIDNamespace();
+ $reply = new Auth_OpenID_Message($namespace);
+ $reply->setArg(Auth_OpenID_OPENID_NS, 'mode', 'error');
+ $reply->setArg(Auth_OpenID_OPENID_NS, 'error', $this->toString());
+
+ if ($this->contact !== null) {
+ $reply->setArg(Auth_OpenID_OPENID_NS, 'contact', $this->contact);
+ }
+
+ if ($this->reference !== null) {
+ $reply->setArg(Auth_OpenID_OPENID_NS, 'reference',
+ $this->reference);
+ }
+
+ return $reply;
+ }
+
+ /**
+ * Returns one of Auth_OpenID_ENCODE_URL,
+ * Auth_OpenID_ENCODE_KVFORM, or null, depending on the type of
+ * encoding expected for this error's payload.
+ */
+ function whichEncoding()
+ {
+ global $_Auth_OpenID_Request_Modes;
+
+ if ($this->hasReturnTo()) {
+ if ($this->message->isOpenID2() &&
+ (strlen($this->encodeToURL()) >
+ Auth_OpenID_OPENID1_URL_LIMIT)) {
+ return Auth_OpenID_ENCODE_HTML_FORM;
+ } else {
+ return Auth_OpenID_ENCODE_URL;
+ }
+ }
+
+ if (!$this->message) {
+ return null;
+ }
+
+ $mode = $this->message->getArg(Auth_OpenID_OPENID_NS,
+ 'mode');
+
+ if ($mode) {
+ if (!in_array($mode, $_Auth_OpenID_Request_Modes)) {
+ return Auth_OpenID_ENCODE_KVFORM;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns this error message.
+ */
+ function toString()
+ {
+ if ($this->text) {
+ return $this->text;
+ } else {
+ return get_class($this) . " error";
+ }
+ }
+}
+
+/**
+ * Error returned by the server code when a return_to is absent from a
+ * request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_NoReturnToError extends Auth_OpenID_ServerError {
+ function Auth_OpenID_NoReturnToError($message = null,
+ $text = "No return_to URL available")
+ {
+ parent::Auth_OpenID_ServerError($message, $text);
+ }
+
+ function toString()
+ {
+ return "No return_to available";
+ }
+}
+
+/**
+ * An error indicating that the return_to URL is malformed.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_MalformedReturnURL extends Auth_OpenID_ServerError {
+ function Auth_OpenID_MalformedReturnURL($message, $return_to)
+ {
+ $this->return_to = $return_to;
+ parent::Auth_OpenID_ServerError($message, "malformed return_to URL");
+ }
+}
+
+/**
+ * This error is returned when the trust_root value is malformed.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_MalformedTrustRoot extends Auth_OpenID_ServerError {
+ function Auth_OpenID_MalformedTrustRoot($message = null,
+ $text = "Malformed trust root")
+ {
+ parent::Auth_OpenID_ServerError($message, $text);
+ }
+
+ function toString()
+ {
+ return "Malformed trust root";
+ }
+}
+
+/**
+ * The base class for all server request classes.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Request {
+ var $mode = null;
+}
+
+/**
+ * A request to verify the validity of a previous response.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
+ var $mode = "check_authentication";
+ var $invalidate_handle = null;
+
+ function Auth_OpenID_CheckAuthRequest($assoc_handle, $signed,
+ $invalidate_handle = null)
+ {
+ $this->assoc_handle = $assoc_handle;
+ $this->signed = $signed;
+ if ($invalidate_handle !== null) {
+ $this->invalidate_handle = $invalidate_handle;
+ }
+ $this->namespace = Auth_OpenID_OPENID2_NS;
+ $this->message = null;
+ }
+
+ static function fromMessage($message, $server=null)
+ {
+ $required_keys = array('assoc_handle', 'sig', 'signed');
+
+ foreach ($required_keys as $k) {
+ if (!$message->getArg(Auth_OpenID_OPENID_NS, $k)) {
+ return new Auth_OpenID_ServerError($message,
+ sprintf("%s request missing required parameter %s from \
+ query", "check_authentication", $k));
+ }
+ }
+
+ $assoc_handle = $message->getArg(Auth_OpenID_OPENID_NS, 'assoc_handle');
+ $sig = $message->getArg(Auth_OpenID_OPENID_NS, 'sig');
+
+ $signed_list = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
+ $signed_list = explode(",", $signed_list);
+
+ $signed = $message;
+ if ($signed->hasKey(Auth_OpenID_OPENID_NS, 'mode')) {
+ $signed->setArg(Auth_OpenID_OPENID_NS, 'mode', 'id_res');
+ }
+
+ $result = new Auth_OpenID_CheckAuthRequest($assoc_handle, $signed);
+ $result->message = $message;
+ $result->sig = $sig;
+ $result->invalidate_handle = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'invalidate_handle');
+ return $result;
+ }
+
+ function answer($signatory)
+ {
+ $is_valid = $signatory->verify($this->assoc_handle, $this->signed);
+
+ // Now invalidate that assoc_handle so it this checkAuth
+ // message cannot be replayed.
+ $signatory->invalidate($this->assoc_handle, true);
+ $response = new Auth_OpenID_ServerResponse($this);
+
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'is_valid',
+ ($is_valid ? "true" : "false"));
+
+ if ($this->invalidate_handle) {
+ $assoc = $signatory->getAssociation($this->invalidate_handle,
+ false);
+ if (!$assoc) {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'invalidate_handle',
+ $this->invalidate_handle);
+ }
+ }
+ return $response;
+ }
+}
+
+/**
+ * A class implementing plaintext server sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_PlainTextServerSession {
+ /**
+ * An object that knows how to handle association requests with no
+ * session type.
+ */
+ var $session_type = 'no-encryption';
+ var $needs_math = false;
+ var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
+
+ static function fromMessage($unused_request)
+ {
+ return new Auth_OpenID_PlainTextServerSession();
+ }
+
+ function answer($secret)
+ {
+ return array('mac_key' => base64_encode($secret));
+ }
+}
+
+/**
+ * A class implementing DH-SHA1 server sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DiffieHellmanSHA1ServerSession {
+ /**
+ * An object that knows how to handle association requests with
+ * the Diffie-Hellman session type.
+ */
+
+ var $session_type = 'DH-SHA1';
+ var $needs_math = true;
+ var $allowed_assoc_types = array('HMAC-SHA1');
+ var $hash_func = 'Auth_OpenID_SHA1';
+
+ function Auth_OpenID_DiffieHellmanSHA1ServerSession($dh, $consumer_pubkey)
+ {
+ $this->dh = $dh;
+ $this->consumer_pubkey = $consumer_pubkey;
+ }
+
+ static function getDH($message)
+ {
+ $dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
+ $dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
+
+ if ((($dh_modulus === null) && ($dh_gen !== null)) ||
+ (($dh_gen === null) && ($dh_modulus !== null))) {
+
+ if ($dh_modulus === null) {
+ $missing = 'modulus';
+ } else {
+ $missing = 'generator';
+ }
+
+ return new Auth_OpenID_ServerError($message,
+ 'If non-default modulus or generator is '.
+ 'supplied, both must be supplied. Missing '.
+ $missing);
+ }
+
+ $lib = Auth_OpenID_getMathLib();
+
+ if ($dh_modulus || $dh_gen) {
+ $dh_modulus = $lib->base64ToLong($dh_modulus);
+ $dh_gen = $lib->base64ToLong($dh_gen);
+ if ($lib->cmp($dh_modulus, 0) == 0 ||
+ $lib->cmp($dh_gen, 0) == 0) {
+ return new Auth_OpenID_ServerError(
+ $message, "Failed to parse dh_mod or dh_gen");
+ }
+ $dh = new Auth_OpenID_DiffieHellman($dh_modulus, $dh_gen);
+ } else {
+ $dh = new Auth_OpenID_DiffieHellman();
+ }
+
+ $consumer_pubkey = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'dh_consumer_public');
+ if ($consumer_pubkey === null) {
+ return new Auth_OpenID_ServerError($message,
+ 'Public key for DH-SHA1 session '.
+ 'not found in query');
+ }
+
+ $consumer_pubkey =
+ $lib->base64ToLong($consumer_pubkey);
+
+ if ($consumer_pubkey === false) {
+ return new Auth_OpenID_ServerError($message,
+ "dh_consumer_public is not base64");
+ }
+
+ return array($dh, $consumer_pubkey);
+ }
+
+ static function fromMessage($message)
+ {
+ $result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
+
+ if (is_a($result, 'Auth_OpenID_ServerError')) {
+ return $result;
+ } else {
+ list($dh, $consumer_pubkey) = $result;
+ return new Auth_OpenID_DiffieHellmanSHA1ServerSession($dh,
+ $consumer_pubkey);
+ }
+ }
+
+ function answer($secret)
+ {
+ $lib = Auth_OpenID_getMathLib();
+ $mac_key = $this->dh->xorSecret($this->consumer_pubkey, $secret,
+ $this->hash_func);
+ return array(
+ 'dh_server_public' =>
+ $lib->longToBase64($this->dh->public),
+ 'enc_mac_key' => base64_encode($mac_key));
+ }
+}
+
+/**
+ * A class implementing DH-SHA256 server sessions.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_DiffieHellmanSHA256ServerSession
+ extends Auth_OpenID_DiffieHellmanSHA1ServerSession {
+
+ var $session_type = 'DH-SHA256';
+ var $hash_func = 'Auth_OpenID_SHA256';
+ var $allowed_assoc_types = array('HMAC-SHA256');
+
+ static function fromMessage($message)
+ {
+ $result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
+
+ if (is_a($result, 'Auth_OpenID_ServerError')) {
+ return $result;
+ } else {
+ list($dh, $consumer_pubkey) = $result;
+ return new Auth_OpenID_DiffieHellmanSHA256ServerSession($dh,
+ $consumer_pubkey);
+ }
+ }
+}
+
+/**
+ * A request to associate with the server.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
+ var $mode = "associate";
+
+ static function getSessionClasses()
+ {
+ return array(
+ 'no-encryption' => 'Auth_OpenID_PlainTextServerSession',
+ 'DH-SHA1' => 'Auth_OpenID_DiffieHellmanSHA1ServerSession',
+ 'DH-SHA256' => 'Auth_OpenID_DiffieHellmanSHA256ServerSession');
+ }
+
+ function Auth_OpenID_AssociateRequest($session, $assoc_type)
+ {
+ $this->session = $session;
+ $this->namespace = Auth_OpenID_OPENID2_NS;
+ $this->assoc_type = $assoc_type;
+ }
+
+ static function fromMessage($message, $server=null)
+ {
+ if ($message->isOpenID1()) {
+ $session_type = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'session_type');
+
+ if ($session_type == 'no-encryption') {
+ // oidutil.log('Received OpenID 1 request with a no-encryption '
+ // 'assocaition session type. Continuing anyway.')
+ } else if (!$session_type) {
+ $session_type = 'no-encryption';
+ }
+ } else {
+ $session_type = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'session_type');
+ if ($session_type === null) {
+ return new Auth_OpenID_ServerError($message,
+ "session_type missing from request");
+ }
+ }
+
+ $session_class = Auth_OpenID::arrayGet(
+ Auth_OpenID_AssociateRequest::getSessionClasses(),
+ $session_type);
+
+ if ($session_class === null) {
+ return new Auth_OpenID_ServerError($message,
+ "Unknown session type " .
+ $session_type);
+ }
+
+ $session = call_user_func(array($session_class, 'fromMessage'),
+ $message);
+ if (is_a($session, 'Auth_OpenID_ServerError')) {
+ return $session;
+ }
+
+ $assoc_type = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'assoc_type', 'HMAC-SHA1');
+
+ if (!in_array($assoc_type, $session->allowed_assoc_types)) {
+ $fmt = "Session type %s does not support association type %s";
+ return new Auth_OpenID_ServerError($message,
+ sprintf($fmt, $session_type, $assoc_type));
+ }
+
+ $obj = new Auth_OpenID_AssociateRequest($session, $assoc_type);
+ $obj->message = $message;
+ $obj->namespace = $message->getOpenIDNamespace();
+ return $obj;
+ }
+
+ function answer($assoc)
+ {
+ $response = new Auth_OpenID_ServerResponse($this);
+ $response->fields->updateArgs(Auth_OpenID_OPENID_NS,
+ array(
+ 'expires_in' => sprintf('%d', $assoc->getExpiresIn()),
+ 'assoc_type' => $this->assoc_type,
+ 'assoc_handle' => $assoc->handle));
+
+ $response->fields->updateArgs(Auth_OpenID_OPENID_NS,
+ $this->session->answer($assoc->secret));
+
+ if (! ($this->session->session_type == 'no-encryption'
+ && $this->message->isOpenID1())) {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'session_type',
+ $this->session->session_type);
+ }
+
+ return $response;
+ }
+
+ function answerUnsupported($text_message,
+ $preferred_association_type=null,
+ $preferred_session_type=null)
+ {
+ if ($this->message->isOpenID1()) {
+ return new Auth_OpenID_ServerError($this->message);
+ }
+
+ $response = new Auth_OpenID_ServerResponse($this);
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'error_code', 'unsupported-type');
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'error', $text_message);
+
+ if ($preferred_association_type) {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'assoc_type',
+ $preferred_association_type);
+ }
+
+ if ($preferred_session_type) {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'session_type',
+ $preferred_session_type);
+ }
+ $response->code = AUTH_OPENID_HTTP_ERROR;
+ return $response;
+ }
+}
+
+/**
+ * A request to confirm the identity of a user.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
+ /**
+ * Return-to verification callback. Default is
+ * Auth_OpenID_verifyReturnTo from TrustRoot.php.
+ */
+ var $verifyReturnTo = 'Auth_OpenID_verifyReturnTo';
+
+ /**
+ * The mode of this request.
+ */
+ var $mode = "checkid_setup"; // or "checkid_immediate"
+
+ /**
+ * Whether this request is for immediate mode.
+ */
+ var $immediate = false;
+
+ /**
+ * The trust_root value for this request.
+ */
+ var $trust_root = null;
+
+ /**
+ * The OpenID namespace for this request.
+ * deprecated since version 2.0.2
+ */
+ var $namespace;
+
+ static function make($message, $identity, $return_to, $trust_root = null,
+ $immediate = false, $assoc_handle = null, $server = null)
+ {
+ if ($server === null) {
+ return new Auth_OpenID_ServerError($message,
+ "server must not be null");
+ }
+
+ if ($return_to &&
+ !Auth_OpenID_TrustRoot::_parse($return_to)) {
+ return new Auth_OpenID_MalformedReturnURL($message, $return_to);
+ }
+
+ $r = new Auth_OpenID_CheckIDRequest($identity, $return_to,
+ $trust_root, $immediate,
+ $assoc_handle, $server);
+
+ $r->namespace = $message->getOpenIDNamespace();
+ $r->message = $message;
+
+ if (!$r->trustRootValid()) {
+ return new Auth_OpenID_UntrustedReturnURL($message,
+ $return_to,
+ $trust_root);
+ } else {
+ return $r;
+ }
+ }
+
+ function Auth_OpenID_CheckIDRequest($identity, $return_to,
+ $trust_root = null, $immediate = false,
+ $assoc_handle = null, $server = null,
+ $claimed_id = null)
+ {
+ $this->namespace = Auth_OpenID_OPENID2_NS;
+ $this->assoc_handle = $assoc_handle;
+ $this->identity = $identity;
+ if ($claimed_id === null) {
+ $this->claimed_id = $identity;
+ } else {
+ $this->claimed_id = $claimed_id;
+ }
+ $this->return_to = $return_to;
+ $this->trust_root = $trust_root;
+ $this->server = $server;
+
+ if ($immediate) {
+ $this->immediate = true;
+ $this->mode = "checkid_immediate";
+ } else {
+ $this->immediate = false;
+ $this->mode = "checkid_setup";
+ }
+ }
+
+ function equals($other)
+ {
+ return (
+ (is_a($other, 'Auth_OpenID_CheckIDRequest')) &&
+ ($this->namespace == $other->namespace) &&
+ ($this->assoc_handle == $other->assoc_handle) &&
+ ($this->identity == $other->identity) &&
+ ($this->claimed_id == $other->claimed_id) &&
+ ($this->return_to == $other->return_to) &&
+ ($this->trust_root == $other->trust_root));
+ }
+
+ /*
+ * Does the relying party publish the return_to URL for this
+ * response under the realm? It is up to the provider to set a
+ * policy for what kinds of realms should be allowed. This
+ * return_to URL verification reduces vulnerability to data-theft
+ * attacks based on open proxies, corss-site-scripting, or open
+ * redirectors.
+ *
+ * This check should only be performed after making sure that the
+ * return_to URL matches the realm.
+ *
+ * @return true if the realm publishes a document with the
+ * return_to URL listed, false if not or if discovery fails
+ */
+ function returnToVerified()
+ {
+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+ return call_user_func_array($this->verifyReturnTo,
+ array($this->trust_root, $this->return_to, $fetcher));
+ }
+
+ static function fromMessage($message, $server)
+ {
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
+ $immediate = null;
+
+ if ($mode == "checkid_immediate") {
+ $immediate = true;
+ $mode = "checkid_immediate";
+ } else {
+ $immediate = false;
+ $mode = "checkid_setup";
+ }
+
+ $return_to = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'return_to');
+
+ if (($message->isOpenID1()) &&
+ (!$return_to)) {
+ $fmt = "Missing required field 'return_to' from checkid request";
+ return new Auth_OpenID_ServerError($message, $fmt);
+ }
+
+ $identity = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'identity');
+ $claimed_id = $message->getArg(Auth_OpenID_OPENID_NS, 'claimed_id');
+ if ($message->isOpenID1()) {
+ if ($identity === null) {
+ $s = "OpenID 1 message did not contain openid.identity";
+ return new Auth_OpenID_ServerError($message, $s);
+ }
+ } else {
+ if ($identity && !$claimed_id) {
+ $s = "OpenID 2.0 message contained openid.identity but not " .
+ "claimed_id";
+ return new Auth_OpenID_ServerError($message, $s);
+ } else if ($claimed_id && !$identity) {
+ $s = "OpenID 2.0 message contained openid.claimed_id " .
+ "but not identity";
+ return new Auth_OpenID_ServerError($message, $s);
+ }
+ }
+
+ // There's a case for making self.trust_root be a TrustRoot
+ // here. But if TrustRoot isn't currently part of the
+ // "public" API, I'm not sure it's worth doing.
+ if ($message->isOpenID1()) {
+ $trust_root_param = 'trust_root';
+ } else {
+ $trust_root_param = 'realm';
+ }
+ $trust_root = $message->getArg(Auth_OpenID_OPENID_NS,
+ $trust_root_param);
+ if (! $trust_root) {
+ $trust_root = $return_to;
+ }
+
+ if (! $message->isOpenID1() &&
+ ($return_to === null) &&
+ ($trust_root === null)) {
+ return new Auth_OpenID_ServerError($message,
+ "openid.realm required when openid.return_to absent");
+ }
+
+ $assoc_handle = $message->getArg(Auth_OpenID_OPENID_NS,
+ 'assoc_handle');
+
+ $obj = Auth_OpenID_CheckIDRequest::make($message,
+ $identity,
+ $return_to,
+ $trust_root,
+ $immediate,
+ $assoc_handle,
+ $server);
+
+ if (is_a($obj, 'Auth_OpenID_ServerError')) {
+ return $obj;
+ }
+
+ $obj->claimed_id = $claimed_id;
+
+ return $obj;
+ }
+
+ function idSelect()
+ {
+ // Is the identifier to be selected by the IDP?
+ // So IDPs don't have to import the constant
+ return $this->identity == Auth_OpenID_IDENTIFIER_SELECT;
+ }
+
+ function trustRootValid()
+ {
+ if (!$this->trust_root) {
+ return true;
+ }
+
+ $tr = Auth_OpenID_TrustRoot::_parse($this->trust_root);
+ if ($tr === false) {
+ return new Auth_OpenID_MalformedTrustRoot($this->message,
+ $this->trust_root);
+ }
+
+ if ($this->return_to !== null) {
+ return Auth_OpenID_TrustRoot::match($this->trust_root,
+ $this->return_to);
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * Respond to this request. Return either an
+ * {@link Auth_OpenID_ServerResponse} or
+ * {@link Auth_OpenID_ServerError}.
+ *
+ * @param bool $allow Allow this user to claim this identity, and
+ * allow the consumer to have this information?
+ *
+ * @param string $server_url DEPRECATED. Passing $op_endpoint to
+ * the {@link Auth_OpenID_Server} constructor makes this optional.
+ *
+ * When an OpenID 1.x immediate mode request does not succeed, it
+ * gets back a URL where the request may be carried out in a
+ * not-so-immediate fashion. Pass my URL in here (the fully
+ * qualified address of this server's endpoint, i.e.
+ * http://example.com/server), and I will use it as a base for the
+ * URL for a new request.
+ *
+ * Optional for requests where {@link $immediate} is false or
+ * $allow is true.
+ *
+ * @param string $identity The OP-local identifier to answer with.
+ * Only for use when the relying party requested identifier
+ * selection.
+ *
+ * @param string $claimed_id The claimed identifier to answer
+ * with, for use with identifier selection in the case where the
+ * claimed identifier and the OP-local identifier differ,
+ * i.e. when the claimed_id uses delegation.
+ *
+ * If $identity is provided but this is not, $claimed_id will
+ * default to the value of $identity. When answering requests
+ * that did not ask for identifier selection, the response
+ * $claimed_id will default to that of the request.
+ *
+ * This parameter is new in OpenID 2.0.
+ *
+ * @return mixed
+ */
+ function answer($allow, $server_url = null, $identity = null,
+ $claimed_id = null)
+ {
+ if (!$this->return_to) {
+ return new Auth_OpenID_NoReturnToError();
+ }
+
+ if (!$server_url) {
+ if ((!$this->message->isOpenID1()) &&
+ (!$this->server->op_endpoint)) {
+ return new Auth_OpenID_ServerError(null,
+ "server should be constructed with op_endpoint to " .
+ "respond to OpenID 2.0 messages.");
+ }
+
+ $server_url = $this->server->op_endpoint;
+ }
+
+ if ($allow) {
+ $mode = 'id_res';
+ } else if ($this->message->isOpenID1()) {
+ if ($this->immediate) {
+ $mode = 'id_res';
+ } else {
+ $mode = 'cancel';
+ }
+ } else {
+ if ($this->immediate) {
+ $mode = 'setup_needed';
+ } else {
+ $mode = 'cancel';
+ }
+ }
+
+ if (!$this->trustRootValid()) {
+ return new Auth_OpenID_UntrustedReturnURL(null,
+ $this->return_to,
+ $this->trust_root);
+ }
+
+ $response = new Auth_OpenID_ServerResponse($this);
+
+ if ($claimed_id &&
+ ($this->message->isOpenID1())) {
+ return new Auth_OpenID_ServerError(null,
+ "claimed_id is new in OpenID 2.0 and not " .
+ "available for ".$this->namespace);
+ }
+
+ if ($identity && !$claimed_id) {
+ $claimed_id = $identity;
+ }
+
+ if ($allow) {
+
+ if ($this->identity == Auth_OpenID_IDENTIFIER_SELECT) {
+ if (!$identity) {
+ return new Auth_OpenID_ServerError(null,
+ "This request uses IdP-driven identifier selection. " .
+ "You must supply an identifier in the response.");
+ }
+
+ $response_identity = $identity;
+ $response_claimed_id = $claimed_id;
+
+ } else if ($this->identity) {
+ if ($identity &&
+ ($this->identity != $identity)) {
+ $fmt = "Request was for %s, cannot reply with identity %s";
+ return new Auth_OpenID_ServerError(null,
+ sprintf($fmt, $this->identity, $identity));
+ }
+
+ $response_identity = $this->identity;
+ $response_claimed_id = $this->claimed_id;
+ } else {
+ if ($identity) {
+ return new Auth_OpenID_ServerError(null,
+ "This request specified no identity and " .
+ "you supplied ".$identity);
+ }
+
+ $response_identity = null;
+ }
+
+ if (($this->message->isOpenID1()) &&
+ ($response_identity === null)) {
+ return new Auth_OpenID_ServerError(null,
+ "Request was an OpenID 1 request, so response must " .
+ "include an identifier.");
+ }
+
+ $response->fields->updateArgs(Auth_OpenID_OPENID_NS,
+ array('mode' => $mode,
+ 'return_to' => $this->return_to,
+ 'response_nonce' => Auth_OpenID_mkNonce()));
+
+ if (!$this->message->isOpenID1()) {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'op_endpoint', $server_url);
+ }
+
+ if ($response_identity !== null) {
+ $response->fields->setArg(
+ Auth_OpenID_OPENID_NS,
+ 'identity',
+ $response_identity);
+ if ($this->message->isOpenID2()) {
+ $response->fields->setArg(
+ Auth_OpenID_OPENID_NS,
+ 'claimed_id',
+ $response_claimed_id);
+ }
+ }
+
+ } else {
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'mode', $mode);
+
+ if ($this->immediate) {
+ if (($this->message->isOpenID1()) &&
+ (!$server_url)) {
+ return new Auth_OpenID_ServerError(null,
+ 'setup_url is required for $allow=false \
+ in OpenID 1.x immediate mode.');
+ }
+
+ $setup_request = new Auth_OpenID_CheckIDRequest(
+ $this->identity,
+ $this->return_to,
+ $this->trust_root,
+ false,
+ $this->assoc_handle,
+ $this->server,
+ $this->claimed_id);
+ $setup_request->message = $this->message;
+
+ $setup_url = $setup_request->encodeToURL($server_url);
+
+ if ($setup_url === null) {
+ return new Auth_OpenID_NoReturnToError();
+ }
+
+ $response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'user_setup_url',
+ $setup_url);
+ }
+ }
+
+ return $response;
+ }
+
+ function encodeToURL($server_url)
+ {
+ if (!$this->return_to) {
+ return new Auth_OpenID_NoReturnToError();
+ }
+
+ // Imported from the alternate reality where these classes are
+ // used in both the client and server code, so Requests are
+ // Encodable too. That's right, code imported from alternate
+ // realities all for the love of you, id_res/user_setup_url.
+
+ $q = array('mode' => $this->mode,
+ 'identity' => $this->identity,
+ 'claimed_id' => $this->claimed_id,
+ 'return_to' => $this->return_to);
+
+ if ($this->trust_root) {
+ if ($this->message->isOpenID1()) {
+ $q['trust_root'] = $this->trust_root;
+ } else {
+ $q['realm'] = $this->trust_root;
+ }
+ }
+
+ if ($this->assoc_handle) {
+ $q['assoc_handle'] = $this->assoc_handle;
+ }
+
+ $response = new Auth_OpenID_Message(
+ $this->message->getOpenIDNamespace());
+ $response->updateArgs(Auth_OpenID_OPENID_NS, $q);
+ return $response->toURL($server_url);
+ }
+
+ function getCancelURL()
+ {
+ if (!$this->return_to) {
+ return new Auth_OpenID_NoReturnToError();
+ }
+
+ if ($this->immediate) {
+ return new Auth_OpenID_ServerError(null,
+ "Cancel is not an appropriate \
+ response to immediate mode \
+ requests.");
+ }
+
+ $response = new Auth_OpenID_Message(
+ $this->message->getOpenIDNamespace());
+ $response->setArg(Auth_OpenID_OPENID_NS, 'mode', 'cancel');
+ return $response->toURL($this->return_to);
+ }
+}
+
+/**
+ * This class encapsulates the response to an OpenID server request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_ServerResponse {
+
+ function Auth_OpenID_ServerResponse($request)
+ {
+ $this->request = $request;
+ $this->fields = new Auth_OpenID_Message($this->request->namespace);
+ }
+
+ function whichEncoding()
+ {
+ global $_Auth_OpenID_Request_Modes;
+
+ if (in_array($this->request->mode, $_Auth_OpenID_Request_Modes)) {
+ if ($this->fields->isOpenID2() &&
+ (strlen($this->encodeToURL()) >
+ Auth_OpenID_OPENID1_URL_LIMIT)) {
+ return Auth_OpenID_ENCODE_HTML_FORM;
+ } else {
+ return Auth_OpenID_ENCODE_URL;
+ }
+ } else {
+ return Auth_OpenID_ENCODE_KVFORM;
+ }
+ }
+
+ /*
+ * Returns the form markup for this response.
+ *
+ * @return str
+ */
+ function toFormMarkup($form_tag_attrs=null)
+ {
+ return $this->fields->toFormMarkup($this->request->return_to,
+ $form_tag_attrs);
+ }
+
+ /*
+ * Returns an HTML document containing the form markup for this
+ * response that autosubmits with javascript.
+ */
+ function toHTML()
+ {
+ return Auth_OpenID::autoSubmitHTML($this->toFormMarkup());
+ }
+
+ /*
+ * Returns True if this response's encoding is ENCODE_HTML_FORM.
+ * Convenience method for server authors.
+ *
+ * @return bool
+ */
+ function renderAsForm()
+ {
+ return $this->whichEncoding() == Auth_OpenID_ENCODE_HTML_FORM;
+ }
+
+
+ function encodeToURL()
+ {
+ return $this->fields->toURL($this->request->return_to);
+ }
+
+ function addExtension($extension_response)
+ {
+ $extension_response->toMessage($this->fields);
+ }
+
+ function needsSigning()
+ {
+ return $this->fields->getArg(Auth_OpenID_OPENID_NS,
+ 'mode') == 'id_res';
+ }
+
+ function encodeToKVForm()
+ {
+ return $this->fields->toKVForm();
+ }
+}
+
+/**
+ * A web-capable response object which you can use to generate a
+ * user-agent response.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_WebResponse {
+ var $code = AUTH_OPENID_HTTP_OK;
+ var $body = "";
+
+ function Auth_OpenID_WebResponse($code = null, $headers = null,
+ $body = null)
+ {
+ if ($code) {
+ $this->code = $code;
+ }
+
+ if ($headers !== null) {
+ $this->headers = $headers;
+ } else {
+ $this->headers = array();
+ }
+
+ if ($body !== null) {
+ $this->body = $body;
+ }
+ }
+}
+
+/**
+ * Responsible for the signature of query data and the verification of
+ * OpenID signature values.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Signatory {
+
+ // = 14 * 24 * 60 * 60; # 14 days, in seconds
+ var $SECRET_LIFETIME = 1209600;
+
+ // keys have a bogus server URL in them because the filestore
+ // really does expect that key to be a URL. This seems a little
+ // silly for the server store, since I expect there to be only one
+ // server URL.
+ var $normal_key = 'http://localhost/|normal';
+ var $dumb_key = 'http://localhost/|dumb';
+
+ /**
+ * Create a new signatory using a given store.
+ */
+ function Auth_OpenID_Signatory($store)
+ {
+ // assert store is not None
+ $this->store = $store;
+ }
+
+ /**
+ * Verify, using a given association handle, a signature with
+ * signed key-value pairs from an HTTP request.
+ */
+ function verify($assoc_handle, $message)
+ {
+ $assoc = $this->getAssociation($assoc_handle, true);
+ if (!$assoc) {
+ // oidutil.log("failed to get assoc with handle %r to verify sig %r"
+ // % (assoc_handle, sig))
+ return false;
+ }
+
+ return $assoc->checkMessageSignature($message);
+ }
+
+ /**
+ * Given a response, sign the fields in the response's 'signed'
+ * list, and insert the signature into the response.
+ */
+ function sign($response)
+ {
+ $signed_response = $response;
+ $assoc_handle = $response->request->assoc_handle;
+
+ if ($assoc_handle) {
+ // normal mode
+ $assoc = $this->getAssociation($assoc_handle, false, false);
+ if (!$assoc || ($assoc->getExpiresIn() <= 0)) {
+ // fall back to dumb mode
+ $signed_response->fields->setArg(Auth_OpenID_OPENID_NS,
+ 'invalidate_handle', $assoc_handle);
+ $assoc_type = ($assoc ? $assoc->assoc_type : 'HMAC-SHA1');
+
+ if ($assoc && ($assoc->getExpiresIn() <= 0)) {
+ $this->invalidate($assoc_handle, false);
+ }
+
+ $assoc = $this->createAssociation(true, $assoc_type);
+ }
+ } else {
+ // dumb mode.
+ $assoc = $this->createAssociation(true);
+ }
+
+ $signed_response->fields = $assoc->signMessage(
+ $signed_response->fields);
+ return $signed_response;
+ }
+
+ /**
+ * Make a new association.
+ */
+ function createAssociation($dumb = true, $assoc_type = 'HMAC-SHA1')
+ {
+ $secret = Auth_OpenID_CryptUtil::getBytes(
+ Auth_OpenID_getSecretSize($assoc_type));
+
+ $uniq = base64_encode(Auth_OpenID_CryptUtil::getBytes(4));
+ $handle = sprintf('{%s}{%x}{%s}', $assoc_type, intval(time()), $uniq);
+
+ $assoc = Auth_OpenID_Association::fromExpiresIn(
+ $this->SECRET_LIFETIME, $handle, $secret, $assoc_type);
+
+ if ($dumb) {
+ $key = $this->dumb_key;
+ } else {
+ $key = $this->normal_key;
+ }
+
+ $this->store->storeAssociation($key, $assoc);
+ return $assoc;
+ }
+
+ /**
+ * Given an association handle, get the association from the
+ * store, or return a ServerError or null if something goes wrong.
+ */
+ function getAssociation($assoc_handle, $dumb, $check_expiration=true)
+ {
+ if ($assoc_handle === null) {
+ return new Auth_OpenID_ServerError(null,
+ "assoc_handle must not be null");
+ }
+
+ if ($dumb) {
+ $key = $this->dumb_key;
+ } else {
+ $key = $this->normal_key;
+ }
+
+ $assoc = $this->store->getAssociation($key, $assoc_handle);
+
+ if (($assoc !== null) && ($assoc->getExpiresIn() <= 0)) {
+ if ($check_expiration) {
+ $this->store->removeAssociation($key, $assoc_handle);
+ $assoc = null;
+ }
+ }
+
+ return $assoc;
+ }
+
+ /**
+ * Invalidate a given association handle.
+ */
+ function invalidate($assoc_handle, $dumb)
+ {
+ if ($dumb) {
+ $key = $this->dumb_key;
+ } else {
+ $key = $this->normal_key;
+ }
+ $this->store->removeAssociation($key, $assoc_handle);
+ }
+}
+
+/**
+ * Encode an {@link Auth_OpenID_ServerResponse} to an
+ * {@link Auth_OpenID_WebResponse}.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Encoder {
+
+ var $responseFactory = 'Auth_OpenID_WebResponse';
+
+ /**
+ * Encode an {@link Auth_OpenID_ServerResponse} and return an
+ * {@link Auth_OpenID_WebResponse}.
+ */
+ function encode($response)
+ {
+ $cls = $this->responseFactory;
+
+ $encode_as = $response->whichEncoding();
+ if ($encode_as == Auth_OpenID_ENCODE_KVFORM) {
+ $wr = new $cls(null, null, $response->encodeToKVForm());
+ if (is_a($response, 'Auth_OpenID_ServerError')) {
+ $wr->code = AUTH_OPENID_HTTP_ERROR;
+ }
+ } else if ($encode_as == Auth_OpenID_ENCODE_URL) {
+ $location = $response->encodeToURL();
+ $wr = new $cls(AUTH_OPENID_HTTP_REDIRECT,
+ array('location' => $location));
+ } else if ($encode_as == Auth_OpenID_ENCODE_HTML_FORM) {
+ $wr = new $cls(AUTH_OPENID_HTTP_OK, array(),
+ $response->toHTML());
+ } else {
+ return new Auth_OpenID_EncodingError($response);
+ }
+ /* Allow the response to carry a custom error code (ex: for Association errors) */
+ if(isset($response->code)) {
+ $wr->code = $response->code;
+ }
+ return $wr;
+ }
+}
+
+/**
+ * An encoder which also takes care of signing fields when required.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
+
+ function Auth_OpenID_SigningEncoder($signatory)
+ {
+ $this->signatory = $signatory;
+ }
+
+ /**
+ * Sign an {@link Auth_OpenID_ServerResponse} and return an
+ * {@link Auth_OpenID_WebResponse}.
+ */
+ function encode($response)
+ {
+ // the isinstance is a bit of a kludge... it means there isn't
+ // really an adapter to make the interfaces quite match.
+ if (!is_a($response, 'Auth_OpenID_ServerError') &&
+ $response->needsSigning()) {
+
+ if (!$this->signatory) {
+ return new Auth_OpenID_ServerError(null,
+ "Must have a store to sign request");
+ }
+
+ if ($response->fields->hasKey(Auth_OpenID_OPENID_NS, 'sig')) {
+ return new Auth_OpenID_AlreadySigned($response);
+ }
+ $response = $this->signatory->sign($response);
+ }
+
+ return parent::encode($response);
+ }
+}
+
+/**
+ * Decode an incoming query into an Auth_OpenID_Request.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Decoder {
+
+ function Auth_OpenID_Decoder($server)
+ {
+ $this->server = $server;
+
+ $this->handlers = array(
+ 'checkid_setup' => 'Auth_OpenID_CheckIDRequest',
+ 'checkid_immediate' => 'Auth_OpenID_CheckIDRequest',
+ 'check_authentication' => 'Auth_OpenID_CheckAuthRequest',
+ 'associate' => 'Auth_OpenID_AssociateRequest'
+ );
+ }
+
+ /**
+ * Given an HTTP query in an array (key-value pairs), decode it
+ * into an Auth_OpenID_Request object.
+ */
+ function decode($query)
+ {
+ if (!$query) {
+ return null;
+ }
+
+ $message = Auth_OpenID_Message::fromPostArgs($query);
+
+ if ($message === null) {
+ /*
+ * It's useful to have a Message attached to a
+ * ProtocolError, so we override the bad ns value to build
+ * a Message out of it. Kinda kludgy, since it's made of
+ * lies, but the parts that aren't lies are more useful
+ * than a 'None'.
+ */
+ $old_ns = $query['openid.ns'];
+
+ $query['openid.ns'] = Auth_OpenID_OPENID2_NS;
+ $message = Auth_OpenID_Message::fromPostArgs($query);
+ return new Auth_OpenID_ServerError(
+ $message,
+ sprintf("Invalid OpenID namespace URI: %s", $old_ns));
+ }
+
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
+ if (!$mode) {
+ return new Auth_OpenID_ServerError($message,
+ "No mode value in message");
+ }
+
+ if (Auth_OpenID::isFailure($mode)) {
+ return new Auth_OpenID_ServerError($message,
+ $mode->message);
+ }
+
+ $handlerCls = Auth_OpenID::arrayGet($this->handlers, $mode,
+ $this->defaultDecoder($message));
+
+ if (!is_a($handlerCls, 'Auth_OpenID_ServerError')) {
+ return call_user_func_array(array($handlerCls, 'fromMessage'),
+ array($message, $this->server));
+ } else {
+ return $handlerCls;
+ }
+ }
+
+ function defaultDecoder($message)
+ {
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
+
+ if (Auth_OpenID::isFailure($mode)) {
+ return new Auth_OpenID_ServerError($message,
+ $mode->message);
+ }
+
+ return new Auth_OpenID_ServerError($message,
+ sprintf("Unrecognized OpenID mode %s", $mode));
+ }
+}
+
+/**
+ * An error that indicates an encoding problem occurred.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_EncodingError {
+ function Auth_OpenID_EncodingError($response)
+ {
+ $this->response = $response;
+ }
+}
+
+/**
+ * An error that indicates that a response was already signed.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_AlreadySigned extends Auth_OpenID_EncodingError {
+ // This response is already signed.
+}
+
+/**
+ * An error that indicates that the given return_to is not under the
+ * given trust_root.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_UntrustedReturnURL extends Auth_OpenID_ServerError {
+ function Auth_OpenID_UntrustedReturnURL($message, $return_to,
+ $trust_root)
+ {
+ parent::Auth_OpenID_ServerError($message, "Untrusted return_to URL");
+ $this->return_to = $return_to;
+ $this->trust_root = $trust_root;
+ }
+
+ function toString()
+ {
+ return sprintf("return_to %s not under trust_root %s",
+ $this->return_to, $this->trust_root);
+ }
+}
+
+/**
+ * I handle requests for an OpenID server.
+ *
+ * Some types of requests (those which are not checkid requests) may
+ * be handed to my {@link handleRequest} method, and I will take care
+ * of it and return a response.
+ *
+ * For your convenience, I also provide an interface to {@link
+ * Auth_OpenID_Decoder::decode()} and {@link
+ * Auth_OpenID_SigningEncoder::encode()} through my methods {@link
+ * decodeRequest} and {@link encodeResponse}.
+ *
+ * All my state is encapsulated in an {@link Auth_OpenID_OpenIDStore}.
+ *
+ * Example:
+ *
+ * <pre> $oserver = new Auth_OpenID_Server(Auth_OpenID_FileStore($data_path),
+ * "http://example.com/op");
+ * $request = $oserver->decodeRequest();
+ * if (in_array($request->mode, array('checkid_immediate',
+ * 'checkid_setup'))) {
+ * if ($app->isAuthorized($request->identity, $request->trust_root)) {
+ * $response = $request->answer(true);
+ * } else if ($request->immediate) {
+ * $response = $request->answer(false);
+ * } else {
+ * $app->showDecidePage($request);
+ * return;
+ * }
+ * } else {
+ * $response = $oserver->handleRequest($request);
+ * }
+ *
+ * $webresponse = $oserver->encode($response);</pre>
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_Server {
+ function Auth_OpenID_Server($store, $op_endpoint=null)
+ {
+ $this->store = $store;
+ $this->signatory = new Auth_OpenID_Signatory($this->store);
+ $this->encoder = new Auth_OpenID_SigningEncoder($this->signatory);
+ $this->decoder = new Auth_OpenID_Decoder($this);
+ $this->op_endpoint = $op_endpoint;
+ $this->negotiator = Auth_OpenID_getDefaultNegotiator();
+ }
+
+ /**
+ * Handle a request. Given an {@link Auth_OpenID_Request} object,
+ * call the appropriate {@link Auth_OpenID_Server} method to
+ * process the request and generate a response.
+ *
+ * @param Auth_OpenID_Request $request An {@link Auth_OpenID_Request}
+ * returned by {@link Auth_OpenID_Server::decodeRequest()}.
+ *
+ * @return Auth_OpenID_ServerResponse $response A response object
+ * capable of generating a user-agent reply.
+ */
+ function handleRequest($request)
+ {
+ if (method_exists($this, "openid_" . $request->mode)) {
+ $handler = array($this, "openid_" . $request->mode);
+ return call_user_func($handler, $request);
+ }
+ return null;
+ }
+
+ /**
+ * The callback for 'check_authentication' messages.
+ */
+ function openid_check_authentication($request)
+ {
+ return $request->answer($this->signatory);
+ }
+
+ /**
+ * The callback for 'associate' messages.
+ */
+ function openid_associate($request)
+ {
+ $assoc_type = $request->assoc_type;
+ $session_type = $request->session->session_type;
+ if ($this->negotiator->isAllowed($assoc_type, $session_type)) {
+ $assoc = $this->signatory->createAssociation(false,
+ $assoc_type);
+ return $request->answer($assoc);
+ } else {
+ $message = sprintf('Association type %s is not supported with '.
+ 'session type %s', $assoc_type, $session_type);
+ list($preferred_assoc_type, $preferred_session_type) =
+ $this->negotiator->getAllowedType();
+ return $request->answerUnsupported($message,
+ $preferred_assoc_type,
+ $preferred_session_type);
+ }
+ }
+
+ /**
+ * Encodes as response in the appropriate format suitable for
+ * sending to the user agent.
+ */
+ function encodeResponse($response)
+ {
+ return $this->encoder->encode($response);
+ }
+
+ /**
+ * Decodes a query args array into the appropriate
+ * {@link Auth_OpenID_Request} object.
+ */
+ function decodeRequest($query=null)
+ {
+ if ($query === null) {
+ $query = Auth_OpenID::getQuery();
+ }
+
+ return $this->decoder->decode($query);
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php
new file mode 100644
index 000000000..69222a5e0
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * OpenID Server Request
+ *
+ * @see Auth_OpenID_Server
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Imports
+ */
+require_once "Auth/OpenID.php";
+
+/**
+ * Object that holds the state of a request to the OpenID server
+ *
+ * With accessor functions to get at the internal request data.
+ *
+ * @see Auth_OpenID_Server
+ * @package OpenID
+ */
+class Auth_OpenID_ServerRequest {
+ function Auth_OpenID_ServerRequest()
+ {
+ $this->mode = null;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php
new file mode 100644
index 000000000..0f53958ed
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php
@@ -0,0 +1,461 @@
+<?php
+/**
+ * Functions for dealing with OpenID trust roots
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/OpenID/Discover.php';
+
+/**
+ * A regular expression that matches a domain ending in a top-level domains.
+ * Used in checking trust roots for sanity.
+ *
+ * @access private
+ */
+define('Auth_OpenID___TLDs',
+ '/\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|asia' .
+ '|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br' .
+ '|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co' .
+ '|com|coop|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg' .
+ '|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl' .
+ '|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie' .
+ '|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh' .
+ '|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly' .
+ '|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt' .
+ '|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no' .
+ '|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt' .
+ '|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl' .
+ '|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm' .
+ '|tn|to|tp|tr|travel|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve' .
+ '|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g' .
+ '|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d' .
+ '|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp' .
+ '|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)\.?$/');
+
+define('Auth_OpenID___HostSegmentRe',
+ "/^(?:[-a-zA-Z0-9!$&'\\(\\)\\*+,;=._~]|%[a-zA-Z0-9]{2})*$/");
+
+/**
+ * A wrapper for trust-root related functions
+ */
+class Auth_OpenID_TrustRoot {
+ /*
+ * Return a discovery URL for this realm.
+ *
+ * Return null if the realm could not be parsed or was not valid.
+ *
+ * @param return_to The relying party return URL of the OpenID
+ * authentication request
+ *
+ * @return The URL upon which relying party discovery should be
+ * run in order to verify the return_to URL
+ */
+ static function buildDiscoveryURL($realm)
+ {
+ $parsed = Auth_OpenID_TrustRoot::_parse($realm);
+
+ if ($parsed === false) {
+ return false;
+ }
+
+ if ($parsed['wildcard']) {
+ // Use "www." in place of the star
+ if ($parsed['host'][0] != '.') {
+ return false;
+ }
+
+ $www_domain = 'www' . $parsed['host'];
+
+ return sprintf('%s://%s%s', $parsed['scheme'],
+ $www_domain, $parsed['path']);
+ } else {
+ return $parsed['unparsed'];
+ }
+ }
+
+ /**
+ * Parse a URL into its trust_root parts.
+ *
+ * @static
+ *
+ * @access private
+ *
+ * @param string $trust_root The url to parse
+ *
+ * @return mixed $parsed Either an associative array of trust root
+ * parts or false if parsing failed.
+ */
+ static function _parse($trust_root)
+ {
+ $trust_root = Auth_OpenID_urinorm($trust_root);
+ if ($trust_root === null) {
+ return false;
+ }
+
+ if (preg_match("/:\/\/[^:]+(:\d+){2,}(\/|$)/", $trust_root)) {
+ return false;
+ }
+
+ $parts = @parse_url($trust_root);
+ if ($parts === false) {
+ return false;
+ }
+
+ $required_parts = array('scheme', 'host');
+ $forbidden_parts = array('user', 'pass', 'fragment');
+ $keys = array_keys($parts);
+ if (array_intersect($keys, $required_parts) != $required_parts) {
+ return false;
+ }
+
+ if (array_intersect($keys, $forbidden_parts) != array()) {
+ return false;
+ }
+
+ if (!preg_match(Auth_OpenID___HostSegmentRe, $parts['host'])) {
+ return false;
+ }
+
+ $scheme = strtolower($parts['scheme']);
+ $allowed_schemes = array('http', 'https');
+ if (!in_array($scheme, $allowed_schemes)) {
+ return false;
+ }
+ $parts['scheme'] = $scheme;
+
+ $host = strtolower($parts['host']);
+ $hostparts = explode('*', $host);
+ switch (count($hostparts)) {
+ case 1:
+ $parts['wildcard'] = false;
+ break;
+ case 2:
+ if ($hostparts[0] ||
+ ($hostparts[1] && substr($hostparts[1], 0, 1) != '.')) {
+ return false;
+ }
+ $host = $hostparts[1];
+ $parts['wildcard'] = true;
+ break;
+ default:
+ return false;
+ }
+ if (strpos($host, ':') !== false) {
+ return false;
+ }
+
+ $parts['host'] = $host;
+
+ if (isset($parts['path'])) {
+ $path = strtolower($parts['path']);
+ if (substr($path, 0, 1) != '/') {
+ return false;
+ }
+ } else {
+ $path = '/';
+ }
+
+ $parts['path'] = $path;
+ if (!isset($parts['port'])) {
+ $parts['port'] = false;
+ }
+
+
+ $parts['unparsed'] = $trust_root;
+
+ return $parts;
+ }
+
+ /**
+ * Is this trust root sane?
+ *
+ * A trust root is sane if it is syntactically valid and it has a
+ * reasonable domain name. Specifically, the domain name must be
+ * more than one level below a standard TLD or more than two
+ * levels below a two-letter tld.
+ *
+ * For example, '*.com' is not a sane trust root, but '*.foo.com'
+ * is. '*.co.uk' is not sane, but '*.bbc.co.uk' is.
+ *
+ * This check is not always correct, but it attempts to err on the
+ * side of marking sane trust roots insane instead of marking
+ * insane trust roots sane. For example, 'kink.fm' is marked as
+ * insane even though it "should" (for some meaning of should) be
+ * marked sane.
+ *
+ * This function should be used when creating OpenID servers to
+ * alert the users of the server when a consumer attempts to get
+ * the user to accept a suspicious trust root.
+ *
+ * @static
+ * @param string $trust_root The trust root to check
+ * @return bool $sanity Whether the trust root looks OK
+ */
+ static function isSane($trust_root)
+ {
+ $parts = Auth_OpenID_TrustRoot::_parse($trust_root);
+ if ($parts === false) {
+ return false;
+ }
+
+ // Localhost is a special case
+ if ($parts['host'] == 'localhost') {
+ return true;
+ }
+
+ $host_parts = explode('.', $parts['host']);
+ if ($parts['wildcard']) {
+ // Remove the empty string from the beginning of the array
+ array_shift($host_parts);
+ }
+
+ if ($host_parts && !$host_parts[count($host_parts) - 1]) {
+ array_pop($host_parts);
+ }
+
+ if (!$host_parts) {
+ return false;
+ }
+
+ // Don't allow adjacent dots
+ if (in_array('', $host_parts, true)) {
+ return false;
+ }
+
+ // Get the top-level domain of the host. If it is not a valid TLD,
+ // it's not sane.
+ preg_match(Auth_OpenID___TLDs, $parts['host'], $matches);
+ if (!$matches) {
+ return false;
+ }
+ $tld = $matches[1];
+
+ if (count($host_parts) == 1) {
+ return false;
+ }
+
+ if ($parts['wildcard']) {
+ // It's a 2-letter tld with a short second to last segment
+ // so there needs to be more than two segments specified
+ // (e.g. *.co.uk is insane)
+ $second_level = $host_parts[count($host_parts) - 2];
+ if (strlen($tld) == 2 && strlen($second_level) <= 3) {
+ return count($host_parts) > 2;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Does this URL match the given trust root?
+ *
+ * Return whether the URL falls under the given trust root. This
+ * does not check whether the trust root is sane. If the URL or
+ * trust root do not parse, this function will return false.
+ *
+ * @param string $trust_root The trust root to match against
+ *
+ * @param string $url The URL to check
+ *
+ * @return bool $matches Whether the URL matches against the
+ * trust root
+ */
+ static function match($trust_root, $url)
+ {
+ $trust_root_parsed = Auth_OpenID_TrustRoot::_parse($trust_root);
+ $url_parsed = Auth_OpenID_TrustRoot::_parse($url);
+ if (!$trust_root_parsed || !$url_parsed) {
+ return false;
+ }
+
+ // Check hosts matching
+ if ($url_parsed['wildcard']) {
+ return false;
+ }
+ if ($trust_root_parsed['wildcard']) {
+ $host_tail = $trust_root_parsed['host'];
+ $host = $url_parsed['host'];
+ if ($host_tail &&
+ substr($host, -(strlen($host_tail))) != $host_tail &&
+ substr($host_tail, 1) != $host) {
+ return false;
+ }
+ } else {
+ if ($trust_root_parsed['host'] != $url_parsed['host']) {
+ return false;
+ }
+ }
+
+ // Check path and query matching
+ $base_path = $trust_root_parsed['path'];
+ $path = $url_parsed['path'];
+ if (!isset($trust_root_parsed['query'])) {
+ if ($base_path != $path) {
+ if (substr($path, 0, strlen($base_path)) != $base_path) {
+ return false;
+ }
+ if (substr($base_path, strlen($base_path) - 1, 1) != '/' &&
+ substr($path, strlen($base_path), 1) != '/') {
+ return false;
+ }
+ }
+ } else {
+ $base_query = $trust_root_parsed['query'];
+ $query = @$url_parsed['query'];
+ $qplus = substr($query, 0, strlen($base_query) + 1);
+ $bqplus = $base_query . '&';
+ if ($base_path != $path ||
+ ($base_query != $query && $qplus != $bqplus)) {
+ return false;
+ }
+ }
+
+ // The port and scheme need to match exactly
+ return ($trust_root_parsed['scheme'] == $url_parsed['scheme'] &&
+ $url_parsed['port'] === $trust_root_parsed['port']);
+ }
+}
+
+/*
+ * If the endpoint is a relying party OpenID return_to endpoint,
+ * return the endpoint URL. Otherwise, return None.
+ *
+ * This function is intended to be used as a filter for the Yadis
+ * filtering interface.
+ *
+ * @see: C{L{openid.yadis.services}}
+ * @see: C{L{openid.yadis.filters}}
+ *
+ * @param endpoint: An XRDS BasicServiceEndpoint, as returned by
+ * performing Yadis dicovery.
+ *
+ * @returns: The endpoint URL or None if the endpoint is not a
+ * relying party endpoint.
+ */
+function filter_extractReturnURL($endpoint)
+{
+ if ($endpoint->matchTypes(array(Auth_OpenID_RP_RETURN_TO_URL_TYPE))) {
+ return $endpoint;
+ } else {
+ return null;
+ }
+}
+
+function &Auth_OpenID_extractReturnURL(&$endpoint_list)
+{
+ $result = array();
+
+ foreach ($endpoint_list as $endpoint) {
+ if (filter_extractReturnURL($endpoint)) {
+ $result[] = $endpoint;
+ }
+ }
+
+ return $result;
+}
+
+/*
+ * Is the return_to URL under one of the supplied allowed return_to
+ * URLs?
+ */
+function Auth_OpenID_returnToMatches($allowed_return_to_urls, $return_to)
+{
+ foreach ($allowed_return_to_urls as $allowed_return_to) {
+ // A return_to pattern works the same as a realm, except that
+ // it's not allowed to use a wildcard. We'll model this by
+ // parsing it as a realm, and not trying to match it if it has
+ // a wildcard.
+
+ $return_realm = Auth_OpenID_TrustRoot::_parse($allowed_return_to);
+ if (// Parses as a trust root
+ ($return_realm !== false) &&
+ // Does not have a wildcard
+ (!$return_realm['wildcard']) &&
+ // Matches the return_to that we passed in with it
+ (Auth_OpenID_TrustRoot::match($allowed_return_to, $return_to))) {
+ return true;
+ }
+ }
+
+ // No URL in the list matched
+ return false;
+}
+
+/*
+ * Given a relying party discovery URL return a list of return_to
+ * URLs.
+ */
+function Auth_OpenID_getAllowedReturnURLs($relying_party_url, $fetcher,
+ $discover_function=null)
+{
+ if ($discover_function === null) {
+ $discover_function = array('Auth_Yadis_Yadis', 'discover');
+ }
+
+ $xrds_parse_cb = array('Auth_OpenID_ServiceEndpoint', 'consumerFromXRDS');
+
+ list($rp_url_after_redirects, $endpoints) =
+ Auth_Yadis_getServiceEndpoints($relying_party_url, $xrds_parse_cb,
+ $discover_function, $fetcher);
+
+ if ($rp_url_after_redirects != $relying_party_url) {
+ // Verification caused a redirect
+ return false;
+ }
+
+ call_user_func_array($discover_function,
+ array($relying_party_url, $fetcher));
+
+ $return_to_urls = array();
+ $matching_endpoints = Auth_OpenID_extractReturnURL($endpoints);
+
+ foreach ($matching_endpoints as $e) {
+ $return_to_urls[] = $e->server_url;
+ }
+
+ return $return_to_urls;
+}
+
+/*
+ * Verify that a return_to URL is valid for the given realm.
+ *
+ * This function builds a discovery URL, performs Yadis discovery on
+ * it, makes sure that the URL does not redirect, parses out the
+ * return_to URLs, and finally checks to see if the current return_to
+ * URL matches the return_to.
+ *
+ * @return true if the return_to URL is valid for the realm
+ */
+function Auth_OpenID_verifyReturnTo($realm_str, $return_to, $fetcher,
+ $_vrfy='Auth_OpenID_getAllowedReturnURLs')
+{
+ $disco_url = Auth_OpenID_TrustRoot::buildDiscoveryURL($realm_str);
+
+ if ($disco_url === false) {
+ return false;
+ }
+
+ $allowable_urls = call_user_func_array($_vrfy,
+ array($disco_url, $fetcher));
+
+ // The realm_str could not be parsed.
+ if ($allowable_urls === false) {
+ return false;
+ }
+
+ if (Auth_OpenID_returnToMatches($allowable_urls, $return_to)) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php b/mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php
new file mode 100644
index 000000000..c051b550a
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php
@@ -0,0 +1,249 @@
+<?php
+
+/**
+ * URI normalization routines.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/Yadis/Misc.php';
+
+// from appendix B of rfc 3986 (http://www.ietf.org/rfc/rfc3986.txt)
+function Auth_OpenID_getURIPattern()
+{
+ return '&^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?&';
+}
+
+function Auth_OpenID_getAuthorityPattern()
+{
+ return '/^([^@]*@)?([^:]*)(:.*)?/';
+}
+
+function Auth_OpenID_getEncodedPattern()
+{
+ return '/%([0-9A-Fa-f]{2})/';
+}
+
+# gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
+#
+# sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+# / "*" / "+" / "," / ";" / "="
+#
+# unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+function Auth_OpenID_getURLIllegalCharRE()
+{
+ return "/([^-A-Za-z0-9:\/\?#\[\]@\!\$&'\(\)\*\+,;=\._~\%])/";
+}
+
+function Auth_OpenID_getUnreserved()
+{
+ $_unreserved = array();
+ for ($i = 0; $i < 256; $i++) {
+ $_unreserved[$i] = false;
+ }
+
+ for ($i = ord('A'); $i <= ord('Z'); $i++) {
+ $_unreserved[$i] = true;
+ }
+
+ for ($i = ord('0'); $i <= ord('9'); $i++) {
+ $_unreserved[$i] = true;
+ }
+
+ for ($i = ord('a'); $i <= ord('z'); $i++) {
+ $_unreserved[$i] = true;
+ }
+
+ $_unreserved[ord('-')] = true;
+ $_unreserved[ord('.')] = true;
+ $_unreserved[ord('_')] = true;
+ $_unreserved[ord('~')] = true;
+
+ return $_unreserved;
+}
+
+function Auth_OpenID_getEscapeRE()
+{
+ $parts = array();
+ foreach (array_merge(Auth_Yadis_getUCSChars(),
+ Auth_Yadis_getIPrivateChars()) as $pair) {
+ list($m, $n) = $pair;
+ $parts[] = sprintf("%s-%s", chr($m), chr($n));
+ }
+
+ return sprintf('[%s]', implode('', $parts));
+}
+
+function Auth_OpenID_pct_encoded_replace_unreserved($mo)
+{
+ $_unreserved = Auth_OpenID_getUnreserved();
+
+ $i = intval($mo[1], 16);
+ if ($_unreserved[$i]) {
+ return chr($i);
+ } else {
+ return strtoupper($mo[0]);
+ }
+
+ return $mo[0];
+}
+
+function Auth_OpenID_pct_encoded_replace($mo)
+{
+ return chr(intval($mo[1], 16));
+}
+
+function Auth_OpenID_remove_dot_segments($path)
+{
+ $result_segments = array();
+
+ while ($path) {
+ if (Auth_Yadis_startswith($path, '../')) {
+ $path = substr($path, 3);
+ } else if (Auth_Yadis_startswith($path, './')) {
+ $path = substr($path, 2);
+ } else if (Auth_Yadis_startswith($path, '/./')) {
+ $path = substr($path, 2);
+ } else if ($path == '/.') {
+ $path = '/';
+ } else if (Auth_Yadis_startswith($path, '/../')) {
+ $path = substr($path, 3);
+ if ($result_segments) {
+ array_pop($result_segments);
+ }
+ } else if ($path == '/..') {
+ $path = '/';
+ if ($result_segments) {
+ array_pop($result_segments);
+ }
+ } else if (($path == '..') ||
+ ($path == '.')) {
+ $path = '';
+ } else {
+ $i = 0;
+ if ($path[0] == '/') {
+ $i = 1;
+ }
+ $i = strpos($path, '/', $i);
+ if ($i === false) {
+ $i = strlen($path);
+ }
+ $result_segments[] = substr($path, 0, $i);
+ $path = substr($path, $i);
+ }
+ }
+
+ return implode('', $result_segments);
+}
+
+function Auth_OpenID_urinorm($uri)
+{
+ $uri_matches = array();
+ preg_match(Auth_OpenID_getURIPattern(), $uri, $uri_matches);
+
+ if (count($uri_matches) < 9) {
+ for ($i = count($uri_matches); $i <= 9; $i++) {
+ $uri_matches[] = '';
+ }
+ }
+
+ $illegal_matches = array();
+ preg_match(Auth_OpenID_getURLIllegalCharRE(),
+ $uri, $illegal_matches);
+ if ($illegal_matches) {
+ return null;
+ }
+
+ $scheme = $uri_matches[2];
+ if ($scheme) {
+ $scheme = strtolower($scheme);
+ }
+
+ $scheme = $uri_matches[2];
+ if ($scheme === '') {
+ // No scheme specified
+ return null;
+ }
+
+ $scheme = strtolower($scheme);
+ if (!in_array($scheme, array('http', 'https'))) {
+ // Not an absolute HTTP or HTTPS URI
+ return null;
+ }
+
+ $authority = $uri_matches[4];
+ if ($authority === '') {
+ // Not an absolute URI
+ return null;
+ }
+
+ $authority_matches = array();
+ preg_match(Auth_OpenID_getAuthorityPattern(),
+ $authority, $authority_matches);
+ if (count($authority_matches) === 0) {
+ // URI does not have a valid authority
+ return null;
+ }
+
+ if (count($authority_matches) < 4) {
+ for ($i = count($authority_matches); $i <= 4; $i++) {
+ $authority_matches[] = '';
+ }
+ }
+
+ list($_whole, $userinfo, $host, $port) = $authority_matches;
+
+ if ($userinfo === null) {
+ $userinfo = '';
+ }
+
+ if (strpos($host, '%') !== -1) {
+ $host = strtolower($host);
+ $host = preg_replace_callback(
+ Auth_OpenID_getEncodedPattern(),
+ 'Auth_OpenID_pct_encoded_replace', $host);
+ // NO IDNA.
+ // $host = unicode($host, 'utf-8').encode('idna');
+ } else {
+ $host = strtolower($host);
+ }
+
+ if ($port) {
+ if (($port == ':') ||
+ ($scheme == 'http' && $port == ':80') ||
+ ($scheme == 'https' && $port == ':443')) {
+ $port = '';
+ }
+ } else {
+ $port = '';
+ }
+
+ $authority = $userinfo . $host . $port;
+
+ $path = $uri_matches[5];
+ $path = preg_replace_callback(
+ Auth_OpenID_getEncodedPattern(),
+ 'Auth_OpenID_pct_encoded_replace_unreserved', $path);
+
+ $path = Auth_OpenID_remove_dot_segments($path);
+ if (!$path) {
+ $path = '/';
+ }
+
+ $query = $uri_matches[6];
+ if ($query === null) {
+ $query = '';
+ }
+
+ $fragment = $uri_matches[8];
+ if ($fragment === null) {
+ $fragment = '';
+ }
+
+ return $scheme . '://' . $authority . $path . $query . $fragment;
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php
new file mode 100644
index 000000000..148cde1b2
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php
@@ -0,0 +1,174 @@
+<?php
+
+/**
+ * This module contains the HTTP fetcher interface
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Require logging functionality
+ */
+require_once "Auth/OpenID.php";
+
+define('Auth_OpenID_FETCHER_MAX_RESPONSE_KB', 1024);
+define('Auth_OpenID_USER_AGENT',
+ 'php-openid/'.Auth_OpenID_VERSION.' (php/'.phpversion().')');
+
+class Auth_Yadis_HTTPResponse {
+ function Auth_Yadis_HTTPResponse($final_url = null, $status = null,
+ $headers = null, $body = null)
+ {
+ $this->final_url = $final_url;
+ $this->status = $status;
+ $this->headers = $headers;
+ $this->body = $body;
+ }
+}
+
+/**
+ * This class is the interface for HTTP fetchers the Yadis library
+ * uses. This interface is only important if you need to write a new
+ * fetcher for some reason.
+ *
+ * @access private
+ * @package OpenID
+ */
+class Auth_Yadis_HTTPFetcher {
+
+ var $timeout = 20; // timeout in seconds.
+
+ /**
+ * Return whether a URL can be fetched. Returns false if the URL
+ * scheme is not allowed or is not supported by this fetcher
+ * implementation; returns true otherwise.
+ *
+ * @return bool
+ */
+ function canFetchURL($url)
+ {
+ if ($this->isHTTPS($url) && !$this->supportsSSL()) {
+ Auth_OpenID::log("HTTPS URL unsupported fetching %s",
+ $url);
+ return false;
+ }
+
+ if (!$this->allowedURL($url)) {
+ Auth_OpenID::log("URL fetching not allowed for '%s'",
+ $url);
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Return whether a URL should be allowed. Override this method to
+ * conform to your local policy.
+ *
+ * By default, will attempt to fetch any http or https URL.
+ */
+ function allowedURL($url)
+ {
+ return $this->URLHasAllowedScheme($url);
+ }
+
+ /**
+ * Does this fetcher implementation (and runtime) support fetching
+ * HTTPS URLs? May inspect the runtime environment.
+ *
+ * @return bool $support True if this fetcher supports HTTPS
+ * fetching; false if not.
+ */
+ function supportsSSL()
+ {
+ trigger_error("not implemented", E_USER_ERROR);
+ }
+
+ /**
+ * Is this an https URL?
+ *
+ * @access private
+ */
+ function isHTTPS($url)
+ {
+ return (bool)preg_match('/^https:\/\//i', $url);
+ }
+
+ /**
+ * Is this an http or https URL?
+ *
+ * @access private
+ */
+ function URLHasAllowedScheme($url)
+ {
+ return (bool)preg_match('/^https?:\/\//i', $url);
+ }
+
+ /**
+ * @access private
+ */
+ function _findRedirect($headers, $url)
+ {
+ foreach ($headers as $line) {
+ if (strpos(strtolower($line), "location: ") === 0) {
+ $parts = explode(" ", $line, 2);
+ $loc = $parts[1];
+ $ppos = strpos($loc, "://");
+ if ($ppos === false || $ppos > strpos($loc, "/")) {
+ /* no host; add it */
+ $hpos = strpos($url, "://");
+ $prt = substr($url, 0, $hpos+3);
+ $url = substr($url, $hpos+3);
+ if (substr($loc, 0, 1) == "/") {
+ /* absolute path */
+ $fspos = strpos($url, "/");
+ if ($fspos) $loc = $prt.substr($url, 0, $fspos).$loc;
+ else $loc = $prt.$url.$loc;
+ } else {
+ /* relative path */
+ $pp = $prt;
+ while (1) {
+ $xpos = strpos($url, "/");
+ if ($xpos === false) break;
+ $apos = strpos($url, "?");
+ if ($apos !== false && $apos < $xpos) break;
+ $apos = strpos($url, "&");
+ if ($apos !== false && $apos < $xpos) break;
+ $pp .= substr($url, 0, $xpos+1);
+ $url = substr($url, $xpos+1);
+ }
+ $loc = $pp.$loc;
+ }
+ }
+ return $loc;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Fetches the specified URL using optional extra headers and
+ * returns the server's response.
+ *
+ * @param string $url The URL to be fetched.
+ * @param array $extra_headers An array of header strings
+ * (e.g. "Accept: text/html").
+ * @return mixed $result An array of ($code, $url, $headers,
+ * $body) if the URL could be fetched; null if the URL does not
+ * pass the URLHasAllowedScheme check or if the server's response
+ * is malformed.
+ */
+ function get($url, $headers = null)
+ {
+ trigger_error("not implemented", E_USER_ERROR);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php
new file mode 100644
index 000000000..5829de6ca
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php
@@ -0,0 +1,521 @@
+<?php
+
+/**
+ * Yadis service manager to be used during yadis-driven authentication
+ * attempts.
+ *
+ * @package OpenID
+ */
+
+/**
+ * The base session class used by the Auth_Yadis_Manager. This
+ * class wraps the default PHP session machinery and should be
+ * subclassed if your application doesn't use PHP sessioning.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_PHPSession {
+ /**
+ * Set a session key/value pair.
+ *
+ * @param string $name The name of the session key to add.
+ * @param string $value The value to add to the session.
+ */
+ function set($name, $value)
+ {
+ $_SESSION[$name] = $value;
+ }
+
+ /**
+ * Get a key's value from the session.
+ *
+ * @param string $name The name of the key to retrieve.
+ * @param string $default The optional value to return if the key
+ * is not found in the session.
+ * @return string $result The key's value in the session or
+ * $default if it isn't found.
+ */
+ function get($name, $default=null)
+ {
+ if (array_key_exists($name, $_SESSION)) {
+ return $_SESSION[$name];
+ } else {
+ return $default;
+ }
+ }
+
+ /**
+ * Remove a key/value pair from the session.
+ *
+ * @param string $name The name of the key to remove.
+ */
+ function del($name)
+ {
+ unset($_SESSION[$name]);
+ }
+
+ /**
+ * Return the contents of the session in array form.
+ */
+ function contents()
+ {
+ return $_SESSION;
+ }
+}
+
+/**
+ * A session helper class designed to translate between arrays and
+ * objects. Note that the class used must have a constructor that
+ * takes no parameters. This is not a general solution, but it works
+ * for dumb objects that just need to have attributes set. The idea
+ * is that you'll subclass this and override $this->check($data) ->
+ * bool to implement your own session data validation.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_SessionLoader {
+ /**
+ * Override this.
+ *
+ * @access private
+ */
+ function check($data)
+ {
+ return true;
+ }
+
+ /**
+ * Given a session data value (an array), this creates an object
+ * (returned by $this->newObject()) whose attributes and values
+ * are those in $data. Returns null if $data lacks keys found in
+ * $this->requiredKeys(). Returns null if $this->check($data)
+ * evaluates to false. Returns null if $this->newObject()
+ * evaluates to false.
+ *
+ * @access private
+ */
+ function fromSession($data)
+ {
+ if (!$data) {
+ return null;
+ }
+
+ $required = $this->requiredKeys();
+
+ foreach ($required as $k) {
+ if (!array_key_exists($k, $data)) {
+ return null;
+ }
+ }
+
+ if (!$this->check($data)) {
+ return null;
+ }
+
+ $data = array_merge($data, $this->prepareForLoad($data));
+ $obj = $this->newObject($data);
+
+ if (!$obj) {
+ return null;
+ }
+
+ foreach ($required as $k) {
+ $obj->$k = $data[$k];
+ }
+
+ return $obj;
+ }
+
+ /**
+ * Prepares the data array by making any necessary changes.
+ * Returns an array whose keys and values will be used to update
+ * the original data array before calling $this->newObject($data).
+ *
+ * @access private
+ */
+ function prepareForLoad($data)
+ {
+ return array();
+ }
+
+ /**
+ * Returns a new instance of this loader's class, using the
+ * session data to construct it if necessary. The object need
+ * only be created; $this->fromSession() will take care of setting
+ * the object's attributes.
+ *
+ * @access private
+ */
+ function newObject($data)
+ {
+ return null;
+ }
+
+ /**
+ * Returns an array of keys and values built from the attributes
+ * of $obj. If $this->prepareForSave($obj) returns an array, its keys
+ * and values are used to update the $data array of attributes
+ * from $obj.
+ *
+ * @access private
+ */
+ function toSession($obj)
+ {
+ $data = array();
+ foreach ($obj as $k => $v) {
+ $data[$k] = $v;
+ }
+
+ $extra = $this->prepareForSave($obj);
+
+ if ($extra && is_array($extra)) {
+ foreach ($extra as $k => $v) {
+ $data[$k] = $v;
+ }
+ }
+
+ return $data;
+ }
+
+ /**
+ * Override this.
+ *
+ * @access private
+ */
+ function prepareForSave($obj)
+ {
+ return array();
+ }
+}
+
+/**
+ * A concrete loader implementation for Auth_OpenID_ServiceEndpoints.
+ *
+ * @package OpenID
+ */
+class Auth_OpenID_ServiceEndpointLoader extends Auth_Yadis_SessionLoader {
+ function newObject($data)
+ {
+ return new Auth_OpenID_ServiceEndpoint();
+ }
+
+ function requiredKeys()
+ {
+ $obj = new Auth_OpenID_ServiceEndpoint();
+ $data = array();
+ foreach ($obj as $k => $v) {
+ $data[] = $k;
+ }
+ return $data;
+ }
+
+ function check($data)
+ {
+ return is_array($data['type_uris']);
+ }
+}
+
+/**
+ * A concrete loader implementation for Auth_Yadis_Managers.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_ManagerLoader extends Auth_Yadis_SessionLoader {
+ function requiredKeys()
+ {
+ return array('starting_url',
+ 'yadis_url',
+ 'services',
+ 'session_key',
+ '_current',
+ 'stale');
+ }
+
+ function newObject($data)
+ {
+ return new Auth_Yadis_Manager($data['starting_url'],
+ $data['yadis_url'],
+ $data['services'],
+ $data['session_key']);
+ }
+
+ function check($data)
+ {
+ return is_array($data['services']);
+ }
+
+ function prepareForLoad($data)
+ {
+ $loader = new Auth_OpenID_ServiceEndpointLoader();
+ $services = array();
+ foreach ($data['services'] as $s) {
+ $services[] = $loader->fromSession($s);
+ }
+ return array('services' => $services);
+ }
+
+ function prepareForSave($obj)
+ {
+ $loader = new Auth_OpenID_ServiceEndpointLoader();
+ $services = array();
+ foreach ($obj->services as $s) {
+ $services[] = $loader->toSession($s);
+ }
+ return array('services' => $services);
+ }
+}
+
+/**
+ * The Yadis service manager which stores state in a session and
+ * iterates over <Service> elements in a Yadis XRDS document and lets
+ * a caller attempt to use each one. This is used by the Yadis
+ * library internally.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_Manager {
+
+ /**
+ * Intialize a new yadis service manager.
+ *
+ * @access private
+ */
+ function Auth_Yadis_Manager($starting_url, $yadis_url,
+ $services, $session_key)
+ {
+ // The URL that was used to initiate the Yadis protocol
+ $this->starting_url = $starting_url;
+
+ // The URL after following redirects (the identifier)
+ $this->yadis_url = $yadis_url;
+
+ // List of service elements
+ $this->services = $services;
+
+ $this->session_key = $session_key;
+
+ // Reference to the current service object
+ $this->_current = null;
+
+ // Stale flag for cleanup if PHP lib has trouble.
+ $this->stale = false;
+ }
+
+ /**
+ * @access private
+ */
+ function length()
+ {
+ // How many untried services remain?
+ return count($this->services);
+ }
+
+ /**
+ * Return the next service
+ *
+ * $this->current() will continue to return that service until the
+ * next call to this method.
+ */
+ function nextService()
+ {
+
+ if ($this->services) {
+ $this->_current = array_shift($this->services);
+ } else {
+ $this->_current = null;
+ }
+
+ return $this->_current;
+ }
+
+ /**
+ * @access private
+ */
+ function current()
+ {
+ // Return the current service.
+ // Returns None if there are no services left.
+ return $this->_current;
+ }
+
+ /**
+ * @access private
+ */
+ function forURL($url)
+ {
+ return in_array($url, array($this->starting_url, $this->yadis_url));
+ }
+
+ /**
+ * @access private
+ */
+ function started()
+ {
+ // Has the first service been returned?
+ return $this->_current !== null;
+ }
+}
+
+/**
+ * State management for discovery.
+ *
+ * High-level usage pattern is to call .getNextService(discover) in
+ * order to find the next available service for this user for this
+ * session. Once a request completes, call .cleanup() to clean up the
+ * session state.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_Discovery {
+
+ /**
+ * @access private
+ */
+ var $DEFAULT_SUFFIX = 'auth';
+
+ /**
+ * @access private
+ */
+ var $PREFIX = '_yadis_services_';
+
+ /**
+ * Initialize a discovery object.
+ *
+ * @param Auth_Yadis_PHPSession $session An object which
+ * implements the Auth_Yadis_PHPSession API.
+ * @param string $url The URL on which to attempt discovery.
+ * @param string $session_key_suffix The optional session key
+ * suffix override.
+ */
+ function Auth_Yadis_Discovery($session, $url,
+ $session_key_suffix = null)
+ {
+ /// Initialize a discovery object
+ $this->session = $session;
+ $this->url = $url;
+ if ($session_key_suffix === null) {
+ $session_key_suffix = $this->DEFAULT_SUFFIX;
+ }
+
+ $this->session_key_suffix = $session_key_suffix;
+ $this->session_key = $this->PREFIX . $this->session_key_suffix;
+ }
+
+ /**
+ * Return the next authentication service for the pair of
+ * user_input and session. This function handles fallback.
+ */
+ function getNextService($discover_cb, $fetcher)
+ {
+ $manager = $this->getManager();
+ if (!$manager || (!$manager->services)) {
+ $this->destroyManager();
+
+ list($yadis_url, $services) = call_user_func($discover_cb,
+ $this->url,
+ $fetcher);
+
+ $manager = $this->createManager($services, $yadis_url);
+ }
+
+ if ($manager) {
+ $loader = new Auth_Yadis_ManagerLoader();
+ $service = $manager->nextService();
+ $this->session->set($this->session_key,
+ serialize($loader->toSession($manager)));
+ } else {
+ $service = null;
+ }
+
+ return $service;
+ }
+
+ /**
+ * Clean up Yadis-related services in the session and return the
+ * most-recently-attempted service from the manager, if one
+ * exists.
+ *
+ * @param $force True if the manager should be deleted regardless
+ * of whether it's a manager for $this->url.
+ */
+ function cleanup($force=false)
+ {
+ $manager = $this->getManager($force);
+ if ($manager) {
+ $service = $manager->current();
+ $this->destroyManager($force);
+ } else {
+ $service = null;
+ }
+
+ return $service;
+ }
+
+ /**
+ * @access private
+ */
+ function getSessionKey()
+ {
+ // Get the session key for this starting URL and suffix
+ return $this->PREFIX . $this->session_key_suffix;
+ }
+
+ /**
+ * @access private
+ *
+ * @param $force True if the manager should be returned regardless
+ * of whether it's a manager for $this->url.
+ */
+ function getManager($force=false)
+ {
+ // Extract the YadisServiceManager for this object's URL and
+ // suffix from the session.
+
+ $manager_str = $this->session->get($this->getSessionKey());
+ $manager = null;
+
+ if ($manager_str !== null) {
+ $loader = new Auth_Yadis_ManagerLoader();
+ $manager = $loader->fromSession(unserialize($manager_str));
+ }
+
+ if ($manager && ($manager->forURL($this->url) || $force)) {
+ return $manager;
+ }
+ }
+
+ /**
+ * @access private
+ */
+ function createManager($services, $yadis_url = null)
+ {
+ $key = $this->getSessionKey();
+ if ($this->getManager()) {
+ return $this->getManager();
+ }
+
+ if ($services) {
+ $loader = new Auth_Yadis_ManagerLoader();
+ $manager = new Auth_Yadis_Manager($this->url, $yadis_url,
+ $services, $key);
+ $this->session->set($this->session_key,
+ serialize($loader->toSession($manager)));
+ return $manager;
+ }
+ }
+
+ /**
+ * @access private
+ *
+ * @param $force True if the manager should be deleted regardless
+ * of whether it's a manager for $this->url.
+ */
+ function destroyManager($force=false)
+ {
+ if ($this->getManager($force) !== null) {
+ $key = $this->getSessionKey();
+ $this->session->del($key);
+ }
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php
new file mode 100644
index 000000000..a5afa8e9a
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Miscellaneous utility values and functions for OpenID and Yadis.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+function Auth_Yadis_getUCSChars()
+{
+ return array(
+ array(0xA0, 0xD7FF),
+ array(0xF900, 0xFDCF),
+ array(0xFDF0, 0xFFEF),
+ array(0x10000, 0x1FFFD),
+ array(0x20000, 0x2FFFD),
+ array(0x30000, 0x3FFFD),
+ array(0x40000, 0x4FFFD),
+ array(0x50000, 0x5FFFD),
+ array(0x60000, 0x6FFFD),
+ array(0x70000, 0x7FFFD),
+ array(0x80000, 0x8FFFD),
+ array(0x90000, 0x9FFFD),
+ array(0xA0000, 0xAFFFD),
+ array(0xB0000, 0xBFFFD),
+ array(0xC0000, 0xCFFFD),
+ array(0xD0000, 0xDFFFD),
+ array(0xE1000, 0xEFFFD)
+ );
+}
+
+function Auth_Yadis_getIPrivateChars()
+{
+ return array(
+ array(0xE000, 0xF8FF),
+ array(0xF0000, 0xFFFFD),
+ array(0x100000, 0x10FFFD)
+ );
+}
+
+function Auth_Yadis_pct_escape_unicode($char_match)
+{
+ $c = $char_match[0];
+ $result = "";
+ for ($i = 0; $i < strlen($c); $i++) {
+ $result .= "%".sprintf("%X", ord($c[$i]));
+ }
+ return $result;
+}
+
+function Auth_Yadis_startswith($s, $stuff)
+{
+ return strpos($s, $stuff) === 0;
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php
new file mode 100644
index 000000000..f65ab62f4
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php
@@ -0,0 +1,245 @@
+<?php
+
+/**
+ * This module contains the CURL-based HTTP fetcher implementation.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Interface import
+ */
+require_once "Auth/Yadis/HTTPFetcher.php";
+
+require_once "Auth/OpenID.php";
+
+/**
+ * A paranoid {@link Auth_Yadis_HTTPFetcher} class which uses CURL
+ * for fetching.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
+ function Auth_Yadis_ParanoidHTTPFetcher()
+ {
+ $this->reset();
+ }
+
+ function reset()
+ {
+ $this->headers = array();
+ $this->data = "";
+ }
+
+ /**
+ * @access private
+ */
+ function _writeHeader($ch, $header)
+ {
+ array_push($this->headers, rtrim($header));
+ return strlen($header);
+ }
+
+ /**
+ * @access private
+ */
+ function _writeData($ch, $data)
+ {
+ if (strlen($this->data) > 1024*Auth_OpenID_FETCHER_MAX_RESPONSE_KB) {
+ return 0;
+ } else {
+ $this->data .= $data;
+ return strlen($data);
+ }
+ }
+
+ /**
+ * Does this fetcher support SSL URLs?
+ */
+ function supportsSSL()
+ {
+ $v = curl_version();
+ if(is_array($v)) {
+ return in_array('https', $v['protocols']);
+ } elseif (is_string($v)) {
+ return preg_match('/OpenSSL/i', $v);
+ } else {
+ return 0;
+ }
+ }
+
+ function get($url, $extra_headers = null)
+ {
+ if (!$this->canFetchURL($url)) {
+ return null;
+ }
+
+ $stop = time() + $this->timeout;
+ $off = $this->timeout;
+
+ $redir = true;
+
+ while ($redir && ($off > 0)) {
+ $this->reset();
+
+ $c = curl_init();
+
+ if ($c === false) {
+ Auth_OpenID::log(
+ "curl_init returned false; could not " .
+ "initialize for URL '%s'", $url);
+ return null;
+ }
+
+ if (defined('CURLOPT_NOSIGNAL')) {
+ curl_setopt($c, CURLOPT_NOSIGNAL, true);
+ }
+
+ if (!$this->allowedURL($url)) {
+ Auth_OpenID::log("Fetching URL not allowed: %s",
+ $url);
+ return null;
+ }
+
+ curl_setopt($c, CURLOPT_WRITEFUNCTION,
+ array($this, "_writeData"));
+ curl_setopt($c, CURLOPT_HEADERFUNCTION,
+ array($this, "_writeHeader"));
+
+ if ($extra_headers) {
+ curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers);
+ }
+
+ $cv = curl_version();
+ if(is_array($cv)) {
+ $curl_user_agent = 'curl/'.$cv['version'];
+ } else {
+ $curl_user_agent = $cv;
+ }
+ curl_setopt($c, CURLOPT_USERAGENT,
+ Auth_OpenID_USER_AGENT.' '.$curl_user_agent);
+ curl_setopt($c, CURLOPT_TIMEOUT, $off);
+ curl_setopt($c, CURLOPT_URL, $url);
+
+ if (defined('Auth_OpenID_VERIFY_HOST')) {
+ curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
+ curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
+ }
+ curl_exec($c);
+
+ $code = curl_getinfo($c, CURLINFO_HTTP_CODE);
+ $body = $this->data;
+ $headers = $this->headers;
+
+ if (!$code) {
+ Auth_OpenID::log("Got no response code when fetching %s", $url);
+ Auth_OpenID::log("CURL error (%s): %s",
+ curl_errno($c), curl_error($c));
+ return null;
+ }
+
+ if (in_array($code, array(301, 302, 303, 307))) {
+ $url = $this->_findRedirect($headers, $url);
+ $redir = true;
+ } else {
+ $redir = false;
+ curl_close($c);
+
+ if (defined('Auth_OpenID_VERIFY_HOST') &&
+ $this->isHTTPS($url)) {
+ Auth_OpenID::log('OpenID: Verified SSL host %s using '.
+ 'curl/get', $url);
+ }
+ $new_headers = array();
+
+ foreach ($headers as $header) {
+ if (strpos($header, ': ')) {
+ list($name, $value) = explode(': ', $header, 2);
+ $new_headers[$name] = $value;
+ }
+ }
+
+ Auth_OpenID::log(
+ "Successfully fetched '%s': GET response code %s",
+ $url, $code);
+
+ return new Auth_Yadis_HTTPResponse($url, $code,
+ $new_headers, $body);
+ }
+
+ $off = $stop - time();
+ }
+
+ return null;
+ }
+
+ function post($url, $body, $extra_headers = null)
+ {
+ if (!$this->canFetchURL($url)) {
+ return null;
+ }
+
+ $this->reset();
+
+ $c = curl_init();
+
+ if (defined('CURLOPT_NOSIGNAL')) {
+ curl_setopt($c, CURLOPT_NOSIGNAL, true);
+ }
+
+ curl_setopt($c, CURLOPT_POST, true);
+ curl_setopt($c, CURLOPT_POSTFIELDS, $body);
+ curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
+ curl_setopt($c, CURLOPT_URL, $url);
+ curl_setopt($c, CURLOPT_WRITEFUNCTION,
+ array($this, "_writeData"));
+
+ if (defined('Auth_OpenID_VERIFY_HOST')) {
+ curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
+ curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
+ }
+
+ curl_exec($c);
+
+ $code = curl_getinfo($c, CURLINFO_HTTP_CODE);
+
+ if (!$code) {
+ Auth_OpenID::log("Got no response code when fetching %s", $url);
+ Auth_OpenID::log("CURL error (%s): %s",
+ curl_errno($c), curl_error($c));
+ return null;
+ }
+
+ if (defined('Auth_OpenID_VERIFY_HOST') && $this->isHTTPS($url)) {
+ Auth_OpenID::log('OpenID: Verified SSL host %s using '.
+ 'curl/post', $url);
+ }
+ $body = $this->data;
+
+ curl_close($c);
+
+ $new_headers = $extra_headers;
+
+ foreach ($this->headers as $header) {
+ if (strpos($header, ': ')) {
+ list($name, $value) = explode(': ', $header, 2);
+ $new_headers[$name] = $value;
+ }
+
+ }
+
+ //Auth_OpenID::log("Successfully fetched '%s': POST response code %s",
+ // $url, $code);
+
+ return new Auth_Yadis_HTTPResponse($url, $code,
+ $new_headers, $body);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php
new file mode 100644
index 000000000..6f0f8b7e2
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php
@@ -0,0 +1,258 @@
+<?php
+
+/**
+ * This is the HTML pseudo-parser for the Yadis library.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * This class is responsible for scanning an HTML string to find META
+ * tags and their attributes. This is used by the Yadis discovery
+ * process. This class must be instantiated to be used.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_ParseHTML {
+
+ /**
+ * @access private
+ */
+ var $_re_flags = "si";
+
+ /**
+ * @access private
+ */
+ var $_removed_re =
+ "<!--.*?-->|<!\[CDATA\[.*?\]\]>|<script\b(?!:)[^>]*>.*?<\/script>";
+
+ /**
+ * @access private
+ */
+ var $_tag_expr = "<%s%s(?:\s.*?)?%s>";
+
+ /**
+ * @access private
+ */
+ var $_attr_find = '\b([-\w]+)=(".*?"|\'.*?\'|.+?)[\/\s>]';
+
+ function Auth_Yadis_ParseHTML()
+ {
+ $this->_attr_find = sprintf("/%s/%s",
+ $this->_attr_find,
+ $this->_re_flags);
+
+ $this->_removed_re = sprintf("/%s/%s",
+ $this->_removed_re,
+ $this->_re_flags);
+
+ $this->_entity_replacements = array(
+ 'amp' => '&',
+ 'lt' => '<',
+ 'gt' => '>',
+ 'quot' => '"'
+ );
+
+ $this->_ent_replace =
+ sprintf("&(%s);", implode("|",
+ $this->_entity_replacements));
+ }
+
+ /**
+ * Replace HTML entities (amp, lt, gt, and quot) as well as
+ * numeric entities (e.g. #x9f;) with their actual values and
+ * return the new string.
+ *
+ * @access private
+ * @param string $str The string in which to look for entities
+ * @return string $new_str The new string entities decoded
+ */
+ function replaceEntities($str)
+ {
+ foreach ($this->_entity_replacements as $old => $new) {
+ $str = preg_replace(sprintf("/&%s;/", $old), $new, $str);
+ }
+
+ // Replace numeric entities because html_entity_decode doesn't
+ // do it for us.
+ $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
+ $str = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $str);
+
+ return $str;
+ }
+
+ /**
+ * Strip single and double quotes off of a string, if they are
+ * present.
+ *
+ * @access private
+ * @param string $str The original string
+ * @return string $new_str The new string with leading and
+ * trailing quotes removed
+ */
+ function removeQuotes($str)
+ {
+ $matches = array();
+ $double = '/^"(.*)"$/';
+ $single = "/^\'(.*)\'$/";
+
+ if (preg_match($double, $str, $matches)) {
+ return $matches[1];
+ } else if (preg_match($single, $str, $matches)) {
+ return $matches[1];
+ } else {
+ return $str;
+ }
+ }
+
+ /**
+ * Create a regular expression that will match an opening
+ * or closing tag from a set of names.
+ *
+ * @access private
+ * @param mixed $tag_names Tag names to match
+ * @param mixed $close false/0 = no, true/1 = yes, other = maybe
+ * @param mixed $self_close false/0 = no, true/1 = yes, other = maybe
+ * @return string $regex A regular expression string to be used
+ * in, say, preg_match.
+ */
+ function tagPattern($tag_names, $close, $self_close)
+ {
+ if (is_array($tag_names)) {
+ $tag_names = '(?:'.implode('|',$tag_names).')';
+ }
+ if ($close) {
+ $close = '\/' . (($close == 1)? '' : '?');
+ } else {
+ $close = '';
+ }
+ if ($self_close) {
+ $self_close = '(?:\/\s*)' . (($self_close == 1)? '' : '?');
+ } else {
+ $self_close = '';
+ }
+ $expr = sprintf($this->_tag_expr, $close, $tag_names, $self_close);
+
+ return sprintf("/%s/%s", $expr, $this->_re_flags);
+ }
+
+ /**
+ * Given an HTML document string, this finds all the META tags in
+ * the document, provided they are found in the
+ * <HTML><HEAD>...</HEAD> section of the document. The <HTML> tag
+ * may be missing.
+ *
+ * @access private
+ * @param string $html_string An HTMl document string
+ * @return array $tag_list Array of tags; each tag is an array of
+ * attribute -> value.
+ */
+ function getMetaTags($html_string)
+ {
+ $html_string = preg_replace($this->_removed_re,
+ "",
+ $html_string);
+
+ $key_tags = array($this->tagPattern('html', false, false),
+ $this->tagPattern('head', false, false),
+ $this->tagPattern('head', true, false),
+ $this->tagPattern('html', true, false),
+ $this->tagPattern(array(
+ 'body', 'frameset', 'frame', 'p', 'div',
+ 'table','span','a'), 'maybe', 'maybe'));
+ $key_tags_pos = array();
+ foreach ($key_tags as $pat) {
+ $matches = array();
+ preg_match($pat, $html_string, $matches, PREG_OFFSET_CAPTURE);
+ if($matches) {
+ $key_tags_pos[] = $matches[0][1];
+ } else {
+ $key_tags_pos[] = null;
+ }
+ }
+ // no opening head tag
+ if (is_null($key_tags_pos[1])) {
+ return array();
+ }
+ // the effective </head> is the min of the following
+ if (is_null($key_tags_pos[2])) {
+ $key_tags_pos[2] = strlen($html_string);
+ }
+ foreach (array($key_tags_pos[3], $key_tags_pos[4]) as $pos) {
+ if (!is_null($pos) && $pos < $key_tags_pos[2]) {
+ $key_tags_pos[2] = $pos;
+ }
+ }
+ // closing head tag comes before opening head tag
+ if ($key_tags_pos[1] > $key_tags_pos[2]) {
+ return array();
+ }
+ // if there is an opening html tag, make sure the opening head tag
+ // comes after it
+ if (!is_null($key_tags_pos[0]) && $key_tags_pos[1] < $key_tags_pos[0]) {
+ return array();
+ }
+ $html_string = substr($html_string, $key_tags_pos[1],
+ ($key_tags_pos[2]-$key_tags_pos[1]));
+
+ $link_data = array();
+ $link_matches = array();
+
+ if (!preg_match_all($this->tagPattern('meta', false, 'maybe'),
+ $html_string, $link_matches)) {
+ return array();
+ }
+
+ foreach ($link_matches[0] as $link) {
+ $attr_matches = array();
+ preg_match_all($this->_attr_find, $link, $attr_matches);
+ $link_attrs = array();
+ foreach ($attr_matches[0] as $index => $full_match) {
+ $name = $attr_matches[1][$index];
+ $value = $this->replaceEntities(
+ $this->removeQuotes($attr_matches[2][$index]));
+
+ $link_attrs[strtolower($name)] = $value;
+ }
+ $link_data[] = $link_attrs;
+ }
+
+ return $link_data;
+ }
+
+ /**
+ * Looks for a META tag with an "http-equiv" attribute whose value
+ * is one of ("x-xrds-location", "x-yadis-location"), ignoring
+ * case. If such a META tag is found, its "content" attribute
+ * value is returned.
+ *
+ * @param string $html_string An HTML document in string format
+ * @return mixed $content The "content" attribute value of the
+ * META tag, if found, or null if no such tag was found.
+ */
+ function getHTTPEquiv($html_string)
+ {
+ $meta_tags = $this->getMetaTags($html_string);
+
+ if ($meta_tags) {
+ foreach ($meta_tags as $tag) {
+ if (array_key_exists('http-equiv', $tag) &&
+ (in_array(strtolower($tag['http-equiv']),
+ array('x-xrds-location', 'x-yadis-location'))) &&
+ array_key_exists('content', $tag)) {
+ return $tag['content'];
+ }
+ }
+ }
+
+ return null;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php
new file mode 100644
index 000000000..26890539a
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php
@@ -0,0 +1,248 @@
+<?php
+
+/**
+ * This module contains the plain non-curl HTTP fetcher
+ * implementation.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Interface import
+ */
+require_once "Auth/Yadis/HTTPFetcher.php";
+
+/**
+ * This class implements a plain, hand-built socket-based fetcher
+ * which will be used in the event that CURL is unavailable.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_PlainHTTPFetcher extends Auth_Yadis_HTTPFetcher {
+ /**
+ * Does this fetcher support SSL URLs?
+ */
+ function supportsSSL()
+ {
+ return function_exists('openssl_open');
+ }
+
+ function get($url, $extra_headers = null)
+ {
+ if (!$this->canFetchURL($url)) {
+ return null;
+ }
+
+ $redir = true;
+
+ $stop = time() + $this->timeout;
+ $off = $this->timeout;
+
+ while ($redir && ($off > 0)) {
+
+ $parts = parse_url($url);
+
+ $specify_port = true;
+
+ // Set a default port.
+ if (!array_key_exists('port', $parts)) {
+ $specify_port = false;
+ if ($parts['scheme'] == 'http') {
+ $parts['port'] = 80;
+ } elseif ($parts['scheme'] == 'https') {
+ $parts['port'] = 443;
+ } else {
+ return null;
+ }
+ }
+
+ if (!array_key_exists('path', $parts)) {
+ $parts['path'] = '/';
+ }
+
+ $host = $parts['host'];
+
+ if ($parts['scheme'] == 'https') {
+ $host = 'ssl://' . $host;
+ }
+
+ $user_agent = Auth_OpenID_USER_AGENT;
+
+ $headers = array(
+ "GET ".$parts['path'].
+ (array_key_exists('query', $parts) ?
+ "?".$parts['query'] : "").
+ " HTTP/1.0",
+ "User-Agent: $user_agent",
+ "Host: ".$parts['host'].
+ ($specify_port ? ":".$parts['port'] : ""),
+ "Port: ".$parts['port']);
+
+ $errno = 0;
+ $errstr = '';
+
+ if ($extra_headers) {
+ foreach ($extra_headers as $h) {
+ $headers[] = $h;
+ }
+ }
+
+ @$sock = fsockopen($host, $parts['port'], $errno, $errstr,
+ $this->timeout);
+ if ($sock === false) {
+ return false;
+ }
+
+ stream_set_timeout($sock, $this->timeout);
+
+ fputs($sock, implode("\r\n", $headers) . "\r\n\r\n");
+
+ $data = "";
+ $kilobytes = 0;
+ while (!feof($sock) &&
+ $kilobytes < Auth_OpenID_FETCHER_MAX_RESPONSE_KB ) {
+ $data .= fgets($sock, 1024);
+ $kilobytes += 1;
+ }
+
+ fclose($sock);
+
+ // Split response into header and body sections
+ list($headers, $body) = explode("\r\n\r\n", $data, 2);
+ $headers = explode("\r\n", $headers);
+
+ $http_code = explode(" ", $headers[0]);
+ $code = $http_code[1];
+
+ if (in_array($code, array('301', '302'))) {
+ $url = $this->_findRedirect($headers, $url);
+ $redir = true;
+ } else {
+ $redir = false;
+ }
+
+ $off = $stop - time();
+ }
+
+ $new_headers = array();
+
+ foreach ($headers as $header) {
+ if (preg_match("/:/", $header)) {
+ $parts = explode(": ", $header, 2);
+
+ if (count($parts) == 2) {
+ list($name, $value) = $parts;
+ $new_headers[$name] = $value;
+ }
+ }
+
+ }
+
+ return new Auth_Yadis_HTTPResponse($url, $code, $new_headers, $body);
+ }
+
+ function post($url, $body, $extra_headers = null)
+ {
+ if (!$this->canFetchURL($url)) {
+ return null;
+ }
+
+ $parts = parse_url($url);
+
+ $headers = array();
+
+ $post_path = $parts['path'];
+ if (isset($parts['query'])) {
+ $post_path .= '?' . $parts['query'];
+ }
+
+ $headers[] = "POST ".$post_path." HTTP/1.0";
+ $headers[] = "Host: " . $parts['host'];
+ $headers[] = "Content-type: application/x-www-form-urlencoded";
+ $headers[] = "Content-length: " . strval(strlen($body));
+
+ if ($extra_headers &&
+ is_array($extra_headers)) {
+ $headers = array_merge($headers, $extra_headers);
+ }
+
+ // Join all headers together.
+ $all_headers = implode("\r\n", $headers);
+
+ // Add headers, two newlines, and request body.
+ $request = $all_headers . "\r\n\r\n" . $body;
+
+ // Set a default port.
+ if (!array_key_exists('port', $parts)) {
+ if ($parts['scheme'] == 'http') {
+ $parts['port'] = 80;
+ } elseif ($parts['scheme'] == 'https') {
+ $parts['port'] = 443;
+ } else {
+ return null;
+ }
+ }
+
+ if ($parts['scheme'] == 'https') {
+ $parts['host'] = sprintf("ssl://%s", $parts['host']);
+ }
+
+ // Connect to the remote server.
+ $errno = 0;
+ $errstr = '';
+
+ $sock = fsockopen($parts['host'], $parts['port'], $errno, $errstr,
+ $this->timeout);
+
+ if ($sock === false) {
+ return null;
+ }
+
+ stream_set_timeout($sock, $this->timeout);
+
+ // Write the POST request.
+ fputs($sock, $request);
+
+ // Get the response from the server.
+ $response = "";
+ while (!feof($sock)) {
+ if ($data = fgets($sock, 128)) {
+ $response .= $data;
+ } else {
+ break;
+ }
+ }
+
+ // Split the request into headers and body.
+ list($headers, $response_body) = explode("\r\n\r\n", $response, 2);
+
+ $headers = explode("\r\n", $headers);
+
+ // Expect the first line of the headers data to be something
+ // like HTTP/1.1 200 OK. Split the line on spaces and take
+ // the second token, which should be the return code.
+ $http_code = explode(" ", $headers[0]);
+ $code = $http_code[1];
+
+ $new_headers = array();
+
+ foreach ($headers as $header) {
+ if (preg_match("/:/", $header)) {
+ list($name, $value) = explode(": ", $header, 2);
+ $new_headers[$name] = $value;
+ }
+
+ }
+
+ return new Auth_Yadis_HTTPResponse($url, $code,
+ $new_headers, $response_body);
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php
new file mode 100644
index 000000000..cf1f5c41b
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php
@@ -0,0 +1,352 @@
+<?php
+
+/**
+ * XML-parsing classes to wrap the domxml and DOM extensions for PHP 4
+ * and 5, respectively.
+ *
+ * @package OpenID
+ */
+
+/**
+ * The base class for wrappers for available PHP XML-parsing
+ * extensions. To work with this Yadis library, subclasses of this
+ * class MUST implement the API as defined in the remarks for this
+ * class. Subclasses of Auth_Yadis_XMLParser are used to wrap
+ * particular PHP XML extensions such as 'domxml'. These are used
+ * internally by the library depending on the availability of
+ * supported PHP XML extensions.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_XMLParser {
+ /**
+ * Initialize an instance of Auth_Yadis_XMLParser with some
+ * XML and namespaces. This SHOULD NOT be overridden by
+ * subclasses.
+ *
+ * @param string $xml_string A string of XML to be parsed.
+ * @param array $namespace_map An array of ($ns_name => $ns_uri)
+ * to be registered with the XML parser. May be empty.
+ * @return boolean $result True if the initialization and
+ * namespace registration(s) succeeded; false otherwise.
+ */
+ function init($xml_string, $namespace_map)
+ {
+ if (!$this->setXML($xml_string)) {
+ return false;
+ }
+
+ foreach ($namespace_map as $prefix => $uri) {
+ if (!$this->registerNamespace($prefix, $uri)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Register a namespace with the XML parser. This should be
+ * overridden by subclasses.
+ *
+ * @param string $prefix The namespace prefix to appear in XML tag
+ * names.
+ *
+ * @param string $uri The namespace URI to be used to identify the
+ * namespace in the XML.
+ *
+ * @return boolean $result True if the registration succeeded;
+ * false otherwise.
+ */
+ function registerNamespace($prefix, $uri)
+ {
+ // Not implemented.
+ }
+
+ /**
+ * Set this parser object's XML payload. This should be
+ * overridden by subclasses.
+ *
+ * @param string $xml_string The XML string to pass to this
+ * object's XML parser.
+ *
+ * @return boolean $result True if the initialization succeeded;
+ * false otherwise.
+ */
+ function setXML($xml_string)
+ {
+ // Not implemented.
+ }
+
+ /**
+ * Evaluate an XPath expression and return the resulting node
+ * list. This should be overridden by subclasses.
+ *
+ * @param string $xpath The XPath expression to be evaluated.
+ *
+ * @param mixed $node A node object resulting from a previous
+ * evalXPath call. This node, if specified, provides the context
+ * for the evaluation of this xpath expression.
+ *
+ * @return array $node_list An array of matching opaque node
+ * objects to be used with other methods of this parser class.
+ */
+ function &evalXPath($xpath, $node = null)
+ {
+ // Not implemented.
+ }
+
+ /**
+ * Return the textual content of a specified node.
+ *
+ * @param mixed $node A node object from a previous call to
+ * $this->evalXPath().
+ *
+ * @return string $content The content of this node.
+ */
+ function content($node)
+ {
+ // Not implemented.
+ }
+
+ /**
+ * Return the attributes of a specified node.
+ *
+ * @param mixed $node A node object from a previous call to
+ * $this->evalXPath().
+ *
+ * @return array $attrs An array mapping attribute names to
+ * values.
+ */
+ function attributes($node)
+ {
+ // Not implemented.
+ }
+}
+
+/**
+ * This concrete implementation of Auth_Yadis_XMLParser implements
+ * the appropriate API for the 'domxml' extension which is typically
+ * packaged with PHP 4. This class will be used whenever the 'domxml'
+ * extension is detected. See the Auth_Yadis_XMLParser class for
+ * details on this class's methods.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_domxml extends Auth_Yadis_XMLParser {
+ function Auth_Yadis_domxml()
+ {
+ $this->xml = null;
+ $this->doc = null;
+ $this->xpath = null;
+ $this->errors = array();
+ }
+
+ function setXML($xml_string)
+ {
+ $this->xml = $xml_string;
+ $this->doc = @domxml_open_mem($xml_string, DOMXML_LOAD_PARSING,
+ $this->errors);
+
+ if (!$this->doc) {
+ return false;
+ }
+
+ $this->xpath = $this->doc->xpath_new_context();
+
+ return true;
+ }
+
+ function registerNamespace($prefix, $uri)
+ {
+ return xpath_register_ns($this->xpath, $prefix, $uri);
+ }
+
+ function &evalXPath($xpath, $node = null)
+ {
+ if ($node) {
+ $result = @$this->xpath->xpath_eval($xpath, $node);
+ } else {
+ $result = @$this->xpath->xpath_eval($xpath);
+ }
+
+ if (!$result) {
+ $n = array();
+ return $n;
+ }
+
+ if (!$result->nodeset) {
+ $n = array();
+ return $n;
+ }
+
+ return $result->nodeset;
+ }
+
+ function content($node)
+ {
+ if ($node) {
+ return $node->get_content();
+ }
+ }
+
+ function attributes($node)
+ {
+ if ($node) {
+ $arr = $node->attributes();
+ $result = array();
+
+ if ($arr) {
+ foreach ($arr as $attrnode) {
+ $result[$attrnode->name] = $attrnode->value;
+ }
+ }
+
+ return $result;
+ }
+ }
+}
+
+/**
+ * This concrete implementation of Auth_Yadis_XMLParser implements
+ * the appropriate API for the 'dom' extension which is typically
+ * packaged with PHP 5. This class will be used whenever the 'dom'
+ * extension is detected. See the Auth_Yadis_XMLParser class for
+ * details on this class's methods.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_dom extends Auth_Yadis_XMLParser {
+ function Auth_Yadis_dom()
+ {
+ $this->xml = null;
+ $this->doc = null;
+ $this->xpath = null;
+ $this->errors = array();
+ }
+
+ function setXML($xml_string)
+ {
+ $this->xml = $xml_string;
+ $this->doc = new DOMDocument;
+
+ if (!$this->doc) {
+ return false;
+ }
+
+ if (!@$this->doc->loadXML($xml_string)) {
+ return false;
+ }
+
+ $this->xpath = new DOMXPath($this->doc);
+
+ if ($this->xpath) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function registerNamespace($prefix, $uri)
+ {
+ return $this->xpath->registerNamespace($prefix, $uri);
+ }
+
+ function &evalXPath($xpath, $node = null)
+ {
+ if ($node) {
+ $result = @$this->xpath->query($xpath, $node);
+ } else {
+ $result = @$this->xpath->query($xpath);
+ }
+
+ $n = array();
+
+ if (!$result) {
+ return $n;
+ }
+
+ for ($i = 0; $i < $result->length; $i++) {
+ $n[] = $result->item($i);
+ }
+
+ return $n;
+ }
+
+ function content($node)
+ {
+ if ($node) {
+ return $node->textContent;
+ }
+ }
+
+ function attributes($node)
+ {
+ if ($node) {
+ $arr = $node->attributes;
+ $result = array();
+
+ if ($arr) {
+ for ($i = 0; $i < $arr->length; $i++) {
+ $node = $arr->item($i);
+ $result[$node->nodeName] = $node->nodeValue;
+ }
+ }
+
+ return $result;
+ }
+ }
+}
+
+global $__Auth_Yadis_defaultParser;
+$__Auth_Yadis_defaultParser = null;
+
+/**
+ * Set a default parser to override the extension-driven selection of
+ * available parser classes. This is helpful in a test environment or
+ * one in which multiple parsers can be used but one is more
+ * desirable.
+ *
+ * @param Auth_Yadis_XMLParser $parser An instance of a
+ * Auth_Yadis_XMLParser subclass.
+ */
+function Auth_Yadis_setDefaultParser($parser)
+{
+ global $__Auth_Yadis_defaultParser;
+ $__Auth_Yadis_defaultParser = $parser;
+}
+
+function Auth_Yadis_getSupportedExtensions()
+{
+ return array('dom' => 'Auth_Yadis_dom',
+ 'domxml' => 'Auth_Yadis_domxml');
+}
+
+/**
+ * Returns an instance of a Auth_Yadis_XMLParser subclass based on
+ * the availability of PHP extensions for XML parsing. If
+ * Auth_Yadis_setDefaultParser has been called, the parser used in
+ * that call will be returned instead.
+ */
+function Auth_Yadis_getXMLParser()
+{
+ global $__Auth_Yadis_defaultParser;
+
+ if (isset($__Auth_Yadis_defaultParser)) {
+ return $__Auth_Yadis_defaultParser;
+ }
+
+ foreach(Auth_Yadis_getSupportedExtensions() as $extension => $classname)
+ {
+ if (extension_loaded($extension))
+ {
+ $p = new $classname();
+ Auth_Yadis_setDefaultParser($p);
+ return $p;
+ }
+ }
+
+ return false;
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php
new file mode 100644
index 000000000..044d1e761
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php
@@ -0,0 +1,478 @@
+<?php
+
+/**
+ * This module contains the XRDS parsing code.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Require the XPath implementation.
+ */
+require_once 'Auth/Yadis/XML.php';
+
+/**
+ * This match mode means a given service must match ALL filters passed
+ * to the Auth_Yadis_XRDS::services() call.
+ */
+define('SERVICES_YADIS_MATCH_ALL', 101);
+
+/**
+ * This match mode means a given service must match ANY filters (at
+ * least one) passed to the Auth_Yadis_XRDS::services() call.
+ */
+define('SERVICES_YADIS_MATCH_ANY', 102);
+
+/**
+ * The priority value used for service elements with no priority
+ * specified.
+ */
+define('SERVICES_YADIS_MAX_PRIORITY', pow(2, 30));
+
+/**
+ * XRD XML namespace
+ */
+define('Auth_Yadis_XMLNS_XRD_2_0', 'xri://$xrd*($v*2.0)');
+
+/**
+ * XRDS XML namespace
+ */
+define('Auth_Yadis_XMLNS_XRDS', 'xri://$xrds');
+
+function Auth_Yadis_getNSMap()
+{
+ return array('xrds' => Auth_Yadis_XMLNS_XRDS,
+ 'xrd' => Auth_Yadis_XMLNS_XRD_2_0);
+}
+
+/**
+ * @access private
+ */
+function Auth_Yadis_array_scramble($arr)
+{
+ $result = array();
+
+ while (count($arr)) {
+ $index = array_rand($arr, 1);
+ $result[] = $arr[$index];
+ unset($arr[$index]);
+ }
+
+ return $result;
+}
+
+/**
+ * This class represents a <Service> element in an XRDS document.
+ * Objects of this type are returned by
+ * Auth_Yadis_XRDS::services() and
+ * Auth_Yadis_Yadis::services(). Each object corresponds directly
+ * to a <Service> element in the XRDS and supplies a
+ * getElements($name) method which you should use to inspect the
+ * element's contents. See {@link Auth_Yadis_Yadis} for more
+ * information on the role this class plays in Yadis discovery.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_Service {
+
+ /**
+ * Creates an empty service object.
+ */
+ function Auth_Yadis_Service()
+ {
+ $this->element = null;
+ $this->parser = null;
+ }
+
+ /**
+ * Return the URIs in the "Type" elements, if any, of this Service
+ * element.
+ *
+ * @return array $type_uris An array of Type URI strings.
+ */
+ function getTypes()
+ {
+ $t = array();
+ foreach ($this->getElements('xrd:Type') as $elem) {
+ $c = $this->parser->content($elem);
+ if ($c) {
+ $t[] = $c;
+ }
+ }
+ return $t;
+ }
+
+ function matchTypes($type_uris)
+ {
+ $result = array();
+
+ foreach ($this->getTypes() as $typ) {
+ if (in_array($typ, $type_uris)) {
+ $result[] = $typ;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Return the URIs in the "URI" elements, if any, of this Service
+ * element. The URIs are returned sorted in priority order.
+ *
+ * @return array $uris An array of URI strings.
+ */
+ function getURIs()
+ {
+ $uris = array();
+ $last = array();
+
+ foreach ($this->getElements('xrd:URI') as $elem) {
+ $uri_string = $this->parser->content($elem);
+ $attrs = $this->parser->attributes($elem);
+ if ($attrs &&
+ array_key_exists('priority', $attrs)) {
+ $priority = intval($attrs['priority']);
+ if (!array_key_exists($priority, $uris)) {
+ $uris[$priority] = array();
+ }
+
+ $uris[$priority][] = $uri_string;
+ } else {
+ $last[] = $uri_string;
+ }
+ }
+
+ $keys = array_keys($uris);
+ sort($keys);
+
+ // Rebuild array of URIs.
+ $result = array();
+ foreach ($keys as $k) {
+ $new_uris = Auth_Yadis_array_scramble($uris[$k]);
+ $result = array_merge($result, $new_uris);
+ }
+
+ $result = array_merge($result,
+ Auth_Yadis_array_scramble($last));
+
+ return $result;
+ }
+
+ /**
+ * Returns the "priority" attribute value of this <Service>
+ * element, if the attribute is present. Returns null if not.
+ *
+ * @return mixed $result Null or integer, depending on whether
+ * this Service element has a 'priority' attribute.
+ */
+ function getPriority()
+ {
+ $attributes = $this->parser->attributes($this->element);
+
+ if (array_key_exists('priority', $attributes)) {
+ return intval($attributes['priority']);
+ }
+
+ return null;
+ }
+
+ /**
+ * Used to get XML elements from this object's <Service> element.
+ *
+ * This is what you should use to get all custom information out
+ * of this element. This is used by service filter functions to
+ * determine whether a service element contains specific tags,
+ * etc. NOTE: this only considers elements which are direct
+ * children of the <Service> element for this object.
+ *
+ * @param string $name The name of the element to look for
+ * @return array $list An array of elements with the specified
+ * name which are direct children of the <Service> element. The
+ * nodes returned by this function can be passed to $this->parser
+ * methods (see {@link Auth_Yadis_XMLParser}).
+ */
+ function getElements($name)
+ {
+ return $this->parser->evalXPath($name, $this->element);
+ }
+}
+
+/*
+ * Return the expiration date of this XRD element, or None if no
+ * expiration was specified.
+ *
+ * @param $default The value to use as the expiration if no expiration
+ * was specified in the XRD.
+ */
+function Auth_Yadis_getXRDExpiration($xrd_element, $default=null)
+{
+ $expires_element = $xrd_element->$parser->evalXPath('/xrd:Expires');
+ if ($expires_element === null) {
+ return $default;
+ } else {
+ $expires_string = $expires_element->text;
+
+ // Will raise ValueError if the string is not the expected
+ // format
+ $t = strptime($expires_string, "%Y-%m-%dT%H:%M:%SZ");
+
+ if ($t === false) {
+ return false;
+ }
+
+ // [int $hour [, int $minute [, int $second [,
+ // int $month [, int $day [, int $year ]]]]]]
+ return mktime($t['tm_hour'], $t['tm_min'], $t['tm_sec'],
+ $t['tm_mon'], $t['tm_day'], $t['tm_year']);
+ }
+}
+
+/**
+ * This class performs parsing of XRDS documents.
+ *
+ * You should not instantiate this class directly; rather, call
+ * parseXRDS statically:
+ *
+ * <pre> $xrds = Auth_Yadis_XRDS::parseXRDS($xml_string);</pre>
+ *
+ * If the XRDS can be parsed and is valid, an instance of
+ * Auth_Yadis_XRDS will be returned. Otherwise, null will be
+ * returned. This class is used by the Auth_Yadis_Yadis::discover
+ * method.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_XRDS {
+
+ /**
+ * Instantiate a Auth_Yadis_XRDS object. Requires an XPath
+ * instance which has been used to parse a valid XRDS document.
+ */
+ function Auth_Yadis_XRDS($xmlParser, $xrdNodes)
+ {
+ $this->parser = $xmlParser;
+ $this->xrdNode = $xrdNodes[count($xrdNodes) - 1];
+ $this->allXrdNodes = $xrdNodes;
+ $this->serviceList = array();
+ $this->_parse();
+ }
+
+ /**
+ * Parse an XML string (XRDS document) and return either a
+ * Auth_Yadis_XRDS object or null, depending on whether the
+ * XRDS XML is valid.
+ *
+ * @param string $xml_string An XRDS XML string.
+ * @return mixed $xrds An instance of Auth_Yadis_XRDS or null,
+ * depending on the validity of $xml_string
+ */
+ static function parseXRDS($xml_string, $extra_ns_map = null)
+ {
+ $_null = null;
+
+ if (!$xml_string) {
+ return $_null;
+ }
+
+ $parser = Auth_Yadis_getXMLParser();
+
+ $ns_map = Auth_Yadis_getNSMap();
+
+ if ($extra_ns_map && is_array($extra_ns_map)) {
+ $ns_map = array_merge($ns_map, $extra_ns_map);
+ }
+
+ if (!($parser && $parser->init($xml_string, $ns_map))) {
+ return $_null;
+ }
+
+ // Try to get root element.
+ $root = $parser->evalXPath('/xrds:XRDS[1]');
+ if (!$root) {
+ return $_null;
+ }
+
+ if (is_array($root)) {
+ $root = $root[0];
+ }
+
+ $attrs = $parser->attributes($root);
+
+ if (array_key_exists('xmlns:xrd', $attrs) &&
+ $attrs['xmlns:xrd'] != Auth_Yadis_XMLNS_XRDS) {
+ return $_null;
+ } else if (array_key_exists('xmlns', $attrs) &&
+ preg_match('/xri/', $attrs['xmlns']) &&
+ $attrs['xmlns'] != Auth_Yadis_XMLNS_XRD_2_0) {
+ return $_null;
+ }
+
+ // Get the last XRD node.
+ $xrd_nodes = $parser->evalXPath('/xrds:XRDS[1]/xrd:XRD');
+
+ if (!$xrd_nodes) {
+ return $_null;
+ }
+
+ $xrds = new Auth_Yadis_XRDS($parser, $xrd_nodes);
+ return $xrds;
+ }
+
+ /**
+ * @access private
+ */
+ function _addService($priority, $service)
+ {
+ $priority = intval($priority);
+
+ if (!array_key_exists($priority, $this->serviceList)) {
+ $this->serviceList[$priority] = array();
+ }
+
+ $this->serviceList[$priority][] = $service;
+ }
+
+ /**
+ * Creates the service list using nodes from the XRDS XML
+ * document.
+ *
+ * @access private
+ */
+ function _parse()
+ {
+ $this->serviceList = array();
+
+ $services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
+
+ foreach ($services as $node) {
+ $s = new Auth_Yadis_Service();
+ $s->element = $node;
+ $s->parser = $this->parser;
+
+ $priority = $s->getPriority();
+
+ if ($priority === null) {
+ $priority = SERVICES_YADIS_MAX_PRIORITY;
+ }
+
+ $this->_addService($priority, $s);
+ }
+ }
+
+ /**
+ * Returns a list of service objects which correspond to <Service>
+ * elements in the XRDS XML document for this object.
+ *
+ * Optionally, an array of filter callbacks may be given to limit
+ * the list of returned service objects. Furthermore, the default
+ * mode is to return all service objects which match ANY of the
+ * specified filters, but $filter_mode may be
+ * SERVICES_YADIS_MATCH_ALL if you want to be sure that the
+ * returned services match all the given filters. See {@link
+ * Auth_Yadis_Yadis} for detailed usage information on filter
+ * functions.
+ *
+ * @param mixed $filters An array of callbacks to filter the
+ * returned services, or null if all services are to be returned.
+ * @param integer $filter_mode SERVICES_YADIS_MATCH_ALL or
+ * SERVICES_YADIS_MATCH_ANY, depending on whether the returned
+ * services should match ALL or ANY of the specified filters,
+ * respectively.
+ * @return mixed $services An array of {@link
+ * Auth_Yadis_Service} objects if $filter_mode is a valid
+ * mode; null if $filter_mode is an invalid mode (i.e., not
+ * SERVICES_YADIS_MATCH_ANY or SERVICES_YADIS_MATCH_ALL).
+ */
+ function services($filters = null,
+ $filter_mode = SERVICES_YADIS_MATCH_ANY)
+ {
+
+ $pri_keys = array_keys($this->serviceList);
+ sort($pri_keys, SORT_NUMERIC);
+
+ // If no filters are specified, return the entire service
+ // list, ordered by priority.
+ if (!$filters ||
+ (!is_array($filters))) {
+
+ $result = array();
+ foreach ($pri_keys as $pri) {
+ $result = array_merge($result, $this->serviceList[$pri]);
+ }
+
+ return $result;
+ }
+
+ // If a bad filter mode is specified, return null.
+ if (!in_array($filter_mode, array(SERVICES_YADIS_MATCH_ANY,
+ SERVICES_YADIS_MATCH_ALL))) {
+ return null;
+ }
+
+ // Otherwise, use the callbacks in the filter list to
+ // determine which services are returned.
+ $filtered = array();
+
+ foreach ($pri_keys as $priority_value) {
+ $service_obj_list = $this->serviceList[$priority_value];
+
+ foreach ($service_obj_list as $service) {
+
+ $matches = 0;
+
+ foreach ($filters as $filter) {
+
+ if (call_user_func_array($filter, array($service))) {
+ $matches++;
+
+ if ($filter_mode == SERVICES_YADIS_MATCH_ANY) {
+ $pri = $service->getPriority();
+ if ($pri === null) {
+ $pri = SERVICES_YADIS_MAX_PRIORITY;
+ }
+
+ if (!array_key_exists($pri, $filtered)) {
+ $filtered[$pri] = array();
+ }
+
+ $filtered[$pri][] = $service;
+ break;
+ }
+ }
+ }
+
+ if (($filter_mode == SERVICES_YADIS_MATCH_ALL) &&
+ ($matches == count($filters))) {
+
+ $pri = $service->getPriority();
+ if ($pri === null) {
+ $pri = SERVICES_YADIS_MAX_PRIORITY;
+ }
+
+ if (!array_key_exists($pri, $filtered)) {
+ $filtered[$pri] = array();
+ }
+ $filtered[$pri][] = $service;
+ }
+ }
+ }
+
+ $pri_keys = array_keys($filtered);
+ sort($pri_keys, SORT_NUMERIC);
+
+ $result = array();
+ foreach ($pri_keys as $pri) {
+ $result = array_merge($result, $filtered[$pri]);
+ }
+
+ return $result;
+ }
+}
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php
new file mode 100644
index 000000000..0143a692e
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php
@@ -0,0 +1,234 @@
+<?php
+
+/**
+ * Routines for XRI resolution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+require_once 'Auth/Yadis/Misc.php';
+require_once 'Auth/Yadis/Yadis.php';
+require_once 'Auth/OpenID.php';
+
+function Auth_Yadis_getDefaultProxy()
+{
+ return 'http://xri.net/';
+}
+
+function Auth_Yadis_getXRIAuthorities()
+{
+ return array('!', '=', '@', '+', '$', '(');
+}
+
+function Auth_Yadis_getEscapeRE()
+{
+ $parts = array();
+ foreach (array_merge(Auth_Yadis_getUCSChars(),
+ Auth_Yadis_getIPrivateChars()) as $pair) {
+ list($m, $n) = $pair;
+ $parts[] = sprintf("%s-%s", chr($m), chr($n));
+ }
+
+ return sprintf('/[%s]/', implode('', $parts));
+}
+
+function Auth_Yadis_getXrefRE()
+{
+ return '/\((.*?)\)/';
+}
+
+function Auth_Yadis_identifierScheme($identifier)
+{
+ if (Auth_Yadis_startswith($identifier, 'xri://') ||
+ ($identifier &&
+ in_array($identifier[0], Auth_Yadis_getXRIAuthorities()))) {
+ return "XRI";
+ } else {
+ return "URI";
+ }
+}
+
+function Auth_Yadis_toIRINormal($xri)
+{
+ if (!Auth_Yadis_startswith($xri, 'xri://')) {
+ $xri = 'xri://' . $xri;
+ }
+
+ return Auth_Yadis_escapeForIRI($xri);
+}
+
+function _escape_xref($xref_match)
+{
+ $xref = $xref_match[0];
+ $xref = str_replace('/', '%2F', $xref);
+ $xref = str_replace('?', '%3F', $xref);
+ $xref = str_replace('#', '%23', $xref);
+ return $xref;
+}
+
+function Auth_Yadis_escapeForIRI($xri)
+{
+ $xri = str_replace('%', '%25', $xri);
+ $xri = preg_replace_callback(Auth_Yadis_getXrefRE(),
+ '_escape_xref', $xri);
+ return $xri;
+}
+
+function Auth_Yadis_toURINormal($xri)
+{
+ return Auth_Yadis_iriToURI(Auth_Yadis_toIRINormal($xri));
+}
+
+function Auth_Yadis_iriToURI($iri)
+{
+ if (1) {
+ return $iri;
+ } else {
+ // According to RFC 3987, section 3.1, "Mapping of IRIs to URIs"
+ return preg_replace_callback(Auth_Yadis_getEscapeRE(),
+ 'Auth_Yadis_pct_escape_unicode', $iri);
+ }
+}
+
+
+function Auth_Yadis_XRIAppendArgs($url, $args)
+{
+ // Append some arguments to an HTTP query. Yes, this is just like
+ // OpenID's appendArgs, but with special seasoning for XRI
+ // queries.
+
+ if (count($args) == 0) {
+ return $url;
+ }
+
+ // Non-empty array; if it is an array of arrays, use multisort;
+ // otherwise use sort.
+ if (array_key_exists(0, $args) &&
+ is_array($args[0])) {
+ // Do nothing here.
+ } else {
+ $keys = array_keys($args);
+ sort($keys);
+ $new_args = array();
+ foreach ($keys as $key) {
+ $new_args[] = array($key, $args[$key]);
+ }
+ $args = $new_args;
+ }
+
+ // According to XRI Resolution section "QXRI query parameters":
+ //
+ // "If the original QXRI had a null query component (only a
+ // leading question mark), or a query component consisting of
+ // only question marks, one additional leading question mark MUST
+ // be added when adding any XRI resolution parameters."
+ if (strpos(rtrim($url, '?'), '?') !== false) {
+ $sep = '&';
+ } else {
+ $sep = '?';
+ }
+
+ return $url . $sep . Auth_OpenID::httpBuildQuery($args);
+}
+
+function Auth_Yadis_providerIsAuthoritative($providerID, $canonicalID)
+{
+ $lastbang = strrpos($canonicalID, '!');
+ $p = substr($canonicalID, 0, $lastbang);
+ return $p == $providerID;
+}
+
+function Auth_Yadis_rootAuthority($xri)
+{
+ // Return the root authority for an XRI.
+
+ $root = null;
+
+ if (Auth_Yadis_startswith($xri, 'xri://')) {
+ $xri = substr($xri, 6);
+ }
+
+ $authority = explode('/', $xri, 2);
+ $authority = $authority[0];
+ if ($authority[0] == '(') {
+ // Cross-reference.
+ // XXX: This is incorrect if someone nests cross-references so
+ // there is another close-paren in there. Hopefully nobody
+ // does that before we have a real xriparse function.
+ // Hopefully nobody does that *ever*.
+ $root = substr($authority, 0, strpos($authority, ')') + 1);
+ } else if (in_array($authority[0], Auth_Yadis_getXRIAuthorities())) {
+ // Other XRI reference.
+ $root = $authority[0];
+ } else {
+ // IRI reference.
+ $_segments = explode("!", $authority);
+ $segments = array();
+ foreach ($_segments as $s) {
+ $segments = array_merge($segments, explode("*", $s));
+ }
+ $root = $segments[0];
+ }
+
+ return Auth_Yadis_XRI($root);
+}
+
+function Auth_Yadis_XRI($xri)
+{
+ if (!Auth_Yadis_startswith($xri, 'xri://')) {
+ $xri = 'xri://' . $xri;
+ }
+ return $xri;
+}
+
+function Auth_Yadis_getCanonicalID($iname, $xrds)
+{
+ // Returns false or a canonical ID value.
+
+ // Now nodes are in reverse order.
+ $xrd_list = array_reverse($xrds->allXrdNodes);
+ $parser = $xrds->parser;
+ $node = $xrd_list[0];
+
+ $canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
+
+ if (!$canonicalID_nodes) {
+ return false;
+ }
+
+ $canonicalID = $canonicalID_nodes[0];
+ $canonicalID = Auth_Yadis_XRI($parser->content($canonicalID));
+
+ $childID = $canonicalID;
+
+ for ($i = 1; $i < count($xrd_list); $i++) {
+ $xrd = $xrd_list[$i];
+
+ $parent_sought = substr($childID, 0, strrpos($childID, '!'));
+ $parentCID = $parser->evalXPath('xrd:CanonicalID', $xrd);
+ if (!$parentCID) {
+ return false;
+ }
+ $parentCID = Auth_Yadis_XRI($parser->content($parentCID[0]));
+
+ if (strcasecmp($parent_sought, $parentCID)) {
+ // raise XRDSFraud.
+ return false;
+ }
+
+ $childID = $parent_sought;
+ }
+
+ $root = Auth_Yadis_rootAuthority($iname);
+ if (!Auth_Yadis_providerIsAuthoritative($root, $childID)) {
+ // raise XRDSFraud.
+ return false;
+ }
+
+ return $canonicalID;
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php
new file mode 100644
index 000000000..5e1158735
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Code for using a proxy XRI resolver.
+ */
+
+require_once 'Auth/Yadis/XRDS.php';
+require_once 'Auth/Yadis/XRI.php';
+
+class Auth_Yadis_ProxyResolver {
+ function Auth_Yadis_ProxyResolver($fetcher, $proxy_url = null)
+ {
+ $this->fetcher = $fetcher;
+ $this->proxy_url = $proxy_url;
+ if (!$this->proxy_url) {
+ $this->proxy_url = Auth_Yadis_getDefaultProxy();
+ }
+ }
+
+ function queryURL($xri, $service_type = null)
+ {
+ // trim off the xri:// prefix
+ $qxri = substr(Auth_Yadis_toURINormal($xri), 6);
+ $hxri = $this->proxy_url . $qxri;
+ $args = array(
+ '_xrd_r' => 'application/xrds+xml'
+ );
+
+ if ($service_type) {
+ $args['_xrd_t'] = $service_type;
+ } else {
+ // Don't perform service endpoint selection.
+ $args['_xrd_r'] .= ';sep=false';
+ }
+
+ $query = Auth_Yadis_XRIAppendArgs($hxri, $args);
+ return $query;
+ }
+
+ function query($xri, $service_types, $filters = array())
+ {
+ $services = array();
+ $canonicalID = null;
+ foreach ($service_types as $service_type) {
+ $url = $this->queryURL($xri, $service_type);
+ $response = $this->fetcher->get($url);
+ if ($response->status != 200 and $response->status != 206) {
+ continue;
+ }
+ $xrds = Auth_Yadis_XRDS::parseXRDS($response->body);
+ if (!$xrds) {
+ continue;
+ }
+ $canonicalID = Auth_Yadis_getCanonicalID($xri,
+ $xrds);
+
+ if ($canonicalID === false) {
+ return null;
+ }
+
+ $some_services = $xrds->services($filters);
+ $services = array_merge($services, $some_services);
+ // TODO:
+ // * If we do get hits for multiple service_types, we're
+ // almost certainly going to have duplicated service
+ // entries and broken priority ordering.
+ }
+ return array($canonicalID, $services);
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php b/mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php
new file mode 100644
index 000000000..f8853671e
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php
@@ -0,0 +1,382 @@
+<?php
+
+/**
+ * The core PHP Yadis implementation.
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: See the COPYING file included in this distribution.
+ *
+ * @package OpenID
+ * @author JanRain, Inc. <openid@janrain.com>
+ * @copyright 2005-2008 Janrain, Inc.
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
+ */
+
+/**
+ * Need both fetcher types so we can use the right one based on the
+ * presence or absence of CURL.
+ */
+require_once "Auth/Yadis/PlainHTTPFetcher.php";
+require_once "Auth/Yadis/ParanoidHTTPFetcher.php";
+
+/**
+ * Need this for parsing HTML (looking for META tags).
+ */
+require_once "Auth/Yadis/ParseHTML.php";
+
+/**
+ * Need this to parse the XRDS document during Yadis discovery.
+ */
+require_once "Auth/Yadis/XRDS.php";
+
+/**
+ * XRDS (yadis) content type
+ */
+define('Auth_Yadis_CONTENT_TYPE', 'application/xrds+xml');
+
+/**
+ * Yadis header
+ */
+define('Auth_Yadis_HEADER_NAME', 'X-XRDS-Location');
+
+/**
+ * Contains the result of performing Yadis discovery on a URI.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_DiscoveryResult {
+
+ // The URI that was passed to the fetcher
+ var $request_uri = null;
+
+ // The result of following redirects from the request_uri
+ var $normalized_uri = null;
+
+ // The URI from which the response text was returned (set to
+ // None if there was no XRDS document found)
+ var $xrds_uri = null;
+
+ var $xrds = null;
+
+ // The content-type returned with the response_text
+ var $content_type = null;
+
+ // The document returned from the xrds_uri
+ var $response_text = null;
+
+ // Did the discovery fail miserably?
+ var $failed = false;
+
+ function Auth_Yadis_DiscoveryResult($request_uri)
+ {
+ // Initialize the state of the object
+ // sets all attributes to None except the request_uri
+ $this->request_uri = $request_uri;
+ }
+
+ function fail()
+ {
+ $this->failed = true;
+ }
+
+ function isFailure()
+ {
+ return $this->failed;
+ }
+
+ /**
+ * Returns the list of service objects as described by the XRDS
+ * document, if this yadis object represents a successful Yadis
+ * discovery.
+ *
+ * @return array $services An array of {@link Auth_Yadis_Service}
+ * objects
+ */
+ function services()
+ {
+ if ($this->xrds) {
+ return $this->xrds->services();
+ }
+
+ return null;
+ }
+
+ function usedYadisLocation()
+ {
+ // Was the Yadis protocol's indirection used?
+ return ($this->xrds_uri && $this->normalized_uri != $this->xrds_uri);
+ }
+
+ function isXRDS()
+ {
+ // Is the response text supposed to be an XRDS document?
+ return ($this->usedYadisLocation() ||
+ $this->content_type == Auth_Yadis_CONTENT_TYPE);
+ }
+}
+
+/**
+ *
+ * Perform the Yadis protocol on the input URL and return an iterable
+ * of resulting endpoint objects.
+ *
+ * input_url: The URL on which to perform the Yadis protocol
+ *
+ * @return: The normalized identity URL and an iterable of endpoint
+ * objects generated by the filter function.
+ *
+ * xrds_parse_func: a callback which will take (uri, xrds_text) and
+ * return an array of service endpoint objects or null. Usually
+ * array('Auth_OpenID_ServiceEndpoint', 'fromXRDS').
+ *
+ * discover_func: if not null, a callback which should take (uri) and
+ * return an Auth_Yadis_Yadis object or null.
+ */
+function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
+ $discover_func=null, $fetcher=null)
+{
+ if ($discover_func === null) {
+ $discover_function = array('Auth_Yadis_Yadis', 'discover');
+ }
+
+ $yadis_result = call_user_func_array($discover_func,
+ array($input_url, $fetcher));
+
+ if ($yadis_result === null) {
+ return array($input_url, array());
+ }
+
+ $endpoints = call_user_func_array($xrds_parse_func,
+ array($yadis_result->normalized_uri,
+ $yadis_result->response_text));
+
+ if ($endpoints === null) {
+ $endpoints = array();
+ }
+
+ return array($yadis_result->normalized_uri, $endpoints);
+}
+
+/**
+ * This is the core of the PHP Yadis library. This is the only class
+ * a user needs to use to perform Yadis discovery. This class
+ * performs the discovery AND stores the result of the discovery.
+ *
+ * First, require this library into your program source:
+ *
+ * <pre> require_once "Auth/Yadis/Yadis.php";</pre>
+ *
+ * To perform Yadis discovery, first call the "discover" method
+ * statically with a URI parameter:
+ *
+ * <pre> $http_response = array();
+ * $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+ * $yadis_object = Auth_Yadis_Yadis::discover($uri,
+ * $http_response, $fetcher);</pre>
+ *
+ * If the discovery succeeds, $yadis_object will be an instance of
+ * {@link Auth_Yadis_Yadis}. If not, it will be null. The XRDS
+ * document found during discovery should have service descriptions,
+ * which can be accessed by calling
+ *
+ * <pre> $service_list = $yadis_object->services();</pre>
+ *
+ * which returns an array of objects which describe each service.
+ * These objects are instances of Auth_Yadis_Service. Each object
+ * describes exactly one whole Service element, complete with all of
+ * its Types and URIs (no expansion is performed). The common use
+ * case for using the service objects returned by services() is to
+ * write one or more filter functions and pass those to services():
+ *
+ * <pre> $service_list = $yadis_object->services(
+ * array("filterByURI",
+ * "filterByExtension"));</pre>
+ *
+ * The filter functions (whose names appear in the array passed to
+ * services()) take the following form:
+ *
+ * <pre> function myFilter($service) {
+ * // Query $service object here. Return true if the service
+ * // matches your query; false if not.
+ * }</pre>
+ *
+ * This is an example of a filter which uses a regular expression to
+ * match the content of URI tags (note that the Auth_Yadis_Service
+ * class provides a getURIs() method which you should use instead of
+ * this contrived example):
+ *
+ * <pre>
+ * function URIMatcher($service) {
+ * foreach ($service->getElements('xrd:URI') as $uri) {
+ * if (preg_match("/some_pattern/",
+ * $service->parser->content($uri))) {
+ * return true;
+ * }
+ * }
+ * return false;
+ * }</pre>
+ *
+ * The filter functions you pass will be called for each service
+ * object to determine which ones match the criteria your filters
+ * specify. The default behavior is that if a given service object
+ * matches ANY of the filters specified in the services() call, it
+ * will be returned. You can specify that a given service object will
+ * be returned ONLY if it matches ALL specified filters by changing
+ * the match mode of services():
+ *
+ * <pre> $yadis_object->services(array("filter1", "filter2"),
+ * SERVICES_YADIS_MATCH_ALL);</pre>
+ *
+ * See {@link SERVICES_YADIS_MATCH_ALL} and {@link
+ * SERVICES_YADIS_MATCH_ANY}.
+ *
+ * Services described in an XRDS should have a library which you'll
+ * probably be using. Those libraries are responsible for defining
+ * filters that can be used with the "services()" call. If you need
+ * to write your own filter, see the documentation for {@link
+ * Auth_Yadis_Service}.
+ *
+ * @package OpenID
+ */
+class Auth_Yadis_Yadis {
+
+ /**
+ * Returns an HTTP fetcher object. If the CURL extension is
+ * present, an instance of {@link Auth_Yadis_ParanoidHTTPFetcher}
+ * is returned. If not, an instance of
+ * {@link Auth_Yadis_PlainHTTPFetcher} is returned.
+ *
+ * If Auth_Yadis_CURL_OVERRIDE is defined, this method will always
+ * return a {@link Auth_Yadis_PlainHTTPFetcher}.
+ */
+ static function getHTTPFetcher($timeout = 20)
+ {
+ if (Auth_Yadis_Yadis::curlPresent() &&
+ (!defined('Auth_Yadis_CURL_OVERRIDE'))) {
+ $fetcher = new Auth_Yadis_ParanoidHTTPFetcher($timeout);
+ } else {
+ $fetcher = new Auth_Yadis_PlainHTTPFetcher($timeout);
+ }
+ return $fetcher;
+ }
+
+ static function curlPresent()
+ {
+ return function_exists('curl_init');
+ }
+
+ /**
+ * @access private
+ */
+ static function _getHeader($header_list, $names)
+ {
+ foreach ($header_list as $name => $value) {
+ foreach ($names as $n) {
+ if (strtolower($name) == strtolower($n)) {
+ return $value;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @access private
+ */
+ static function _getContentType($content_type_header)
+ {
+ if ($content_type_header) {
+ $parts = explode(";", $content_type_header);
+ return strtolower($parts[0]);
+ }
+ }
+
+ /**
+ * This should be called statically and will build a Yadis
+ * instance if the discovery process succeeds. This implements
+ * Yadis discovery as specified in the Yadis specification.
+ *
+ * @param string $uri The URI on which to perform Yadis discovery.
+ *
+ * @param array $http_response An array reference where the HTTP
+ * response object will be stored (see {@link
+ * Auth_Yadis_HTTPResponse}.
+ *
+ * @param Auth_Yadis_HTTPFetcher $fetcher An instance of a
+ * Auth_Yadis_HTTPFetcher subclass.
+ *
+ * @param array $extra_ns_map An array which maps namespace names
+ * to namespace URIs to be used when parsing the Yadis XRDS
+ * document.
+ *
+ * @param integer $timeout An optional fetcher timeout, in seconds.
+ *
+ * @return mixed $obj Either null or an instance of
+ * Auth_Yadis_Yadis, depending on whether the discovery
+ * succeeded.
+ */
+ static function discover($uri, $fetcher,
+ $extra_ns_map = null, $timeout = 20)
+ {
+ $result = new Auth_Yadis_DiscoveryResult($uri);
+
+ $request_uri = $uri;
+ $headers = array("Accept: " . Auth_Yadis_CONTENT_TYPE .
+ ', text/html; q=0.3, application/xhtml+xml; q=0.5');
+
+ if ($fetcher === null) {
+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher($timeout);
+ }
+
+ $response = $fetcher->get($uri, $headers);
+
+ if (!$response || ($response->status != 200 and
+ $response->status != 206)) {
+ $result->fail();
+ return $result;
+ }
+
+ $result->normalized_uri = $response->final_url;
+ $result->content_type = Auth_Yadis_Yadis::_getHeader(
+ $response->headers,
+ array('content-type'));
+
+ if ($result->content_type &&
+ (Auth_Yadis_Yadis::_getContentType($result->content_type) ==
+ Auth_Yadis_CONTENT_TYPE)) {
+ $result->xrds_uri = $result->normalized_uri;
+ } else {
+ $yadis_location = Auth_Yadis_Yadis::_getHeader(
+ $response->headers,
+ array(Auth_Yadis_HEADER_NAME));
+
+ if (!$yadis_location) {
+ $parser = new Auth_Yadis_ParseHTML();
+ $yadis_location = $parser->getHTTPEquiv($response->body);
+ }
+
+ if ($yadis_location) {
+ $result->xrds_uri = $yadis_location;
+
+ $response = $fetcher->get($yadis_location);
+
+ if ((!$response) || ($response->status != 200 and
+ $response->status != 206)) {
+ $result->fail();
+ return $result;
+ }
+
+ $result->content_type = Auth_Yadis_Yadis::_getHeader(
+ $response->headers,
+ array('content-type'));
+ }
+ }
+
+ $result->response_text = $response->body;
+ return $result;
+ }
+}
+
+
diff --git a/mod/openid_api/vendors/php-openid/COPYING b/mod/openid_api/vendors/php-openid/COPYING
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/COPYING
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/mod/openid_api/vendors/php-openid/README b/mod/openid_api/vendors/php-openid/README
new file mode 100644
index 000000000..54b873f38
--- /dev/null
+++ b/mod/openid_api/vendors/php-openid/README
@@ -0,0 +1,136 @@
+
+PHP OpenID
+----------
+
+This is the PHP OpenID library by JanRain, Inc. You can visit our
+website for more information about this package and other OpenID
+implementations and tools:
+
+ http://www.openidenabled.com/
+
+GETTING STARTED
+===============
+
+First, run the 'examples/detect.php' script either from the command
+line or via the web. It will generate a report of any system
+configuration changes necessary to run the library.
+
+INSTALLATION
+============
+
+You will need PHP 4.3.0 or greater to use this library. We have
+tested the library Linux on PHP 4.3.0, 4.4.1, 5.0.5, and 5.1.1. We
+have tested the library on Windows XP on PHP 4.4.4.
+
+Follow these steps:
+
+1. Install dependencies.
+
+ - Enable either the GMP extension or Bcmath extension. (GMP is
+ STRONGLY recommended because it's MUCH faster!) This is
+ required.
+
+ - Enable the CURL extension.
+
+ - If you plan to use SQLite, PostgreSQL, or MySQL to store OpenID
+ data, you'll need PEAR DB. You can install this by running this
+ as root:
+
+ # pear install DB
+
+ You'll also need to install and enable the appropriate PHP
+ database extension. Alternatively, you can store OpenID data on
+ the filesystem instead of using a relational database. Nothing
+ special is required for using the filesystem method.
+
+ - Install either the DOM or domxml PHP XML processing extension,
+ but not both (they are incompatible).
+
+2. Copy the Auth/ directory into your PHP include path.
+
+TESTING YOUR SETUP
+==================
+
+You can use the example code to test your setup. To run the example
+consumer or server, follow the instructions in the examples/README
+file.
+
+USING THE API
+=============
+
+The best way to get started using the API is to take a look at the
+example consumer and server in the examples/ directory. See the
+examples/README file for more details.
+
+TROUBLESHOOTING
+===============
+
+* If you're unable to use an OpenID URL with the library, you may want
+to try using the discover tool (examples/discover.php). This tool
+will perform OpenID discovery on the identifier and give a list of
+discovered OpenID services and their types.
+
+* On some systems, PHP basedir restrictions prevent web servers from
+opening a source of randomness, such as /dev/urandom. If your PHP
+OpenID library has trouble getting a satisfactory source of
+randomness, check your Apache and PHP configurations to be sure that
+the randomness source is in the list of allowed paths for the
+"open_basedir" option.
+
+* In some cases, bugs in the GMP math library will result in signature
+validation errors when using this library. Since GMP is preferred
+over bcmath (for performance), you will have to define
+Auth_OpenID_BUGGY_GMP in your application *before* importing any of
+the library code:
+
+ define('Auth_OpenID_BUGGY_GMP', true);
+
+* Not all PHP installations support SSL. You can find out if yours
+supports SSL by reading the "HTTP Fetching" section of the output of
+"examples/detect.php." If your installation does not support SSL,
+then https:// identity URLs and server URLs will not be supported by
+the library. An attempt to use such an identity URL will be
+equivalent to using an invalid OpenID. To enable SSL support,
+recompile PHP with OpenSSL support or install the appropriate OpenSSL
+module for your platform. If you are using CURL, CURL will need to be
+built with OpenSSL support.
+
+GETTING HELP
+============
+
+If you have any questions, recommendations, or patches, please tell
+us! Subscribe to our OpenID development discussion list at
+
+ http://openid.net/developers/dev-mailing-lists/
+
+DOCUMENTATION
+=============
+
+You can view the HTML library documentation in the doc/ directory.
+
+This package's documentation is in PhpDoc format. To generate the
+documentation, install phpdoc and run the admin/makedoc.sh script.
+Phpdoc lives at:
+
+ http://www.phpdoc.org/
+
+CONTRIBUTING
+============
+
+If you have a bugfix or feature you'd like to contribute, don't
+hesitate to send it to us. Post your patch to the development list at
+
+ http://openid.net/developers/dev-mailing-lists/
+
+For more detailed information on how to contribute, see
+
+ http://openidenabled.com/contribute/
+
+To run the test suite included with this package, install PHPUnit 1.x
+and run
+
+ php admin/texttest.php
+
+PHPUnit 1.x can be found at
+
+ http://pear.phpunit.de/get/
>mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/conflict.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/denied.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/diff.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/draft.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/lang.php252
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/login.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/mailtext.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/norev.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/preview.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/pwconfirm.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/read.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/register.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/registermail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/resendpwd.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/stopwords.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/subscribermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/uploadmail.txt13
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh-tw/wordblock.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/admin.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/backlinks.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/conflict.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/denied.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/diff.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/draft.txt7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/editrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/index.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/install.html8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/lang.php230
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/locked.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/login.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/mailtext.txt17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/newpage.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/norev.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/preview.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/pwconfirm.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/read.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/recent.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/register.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/registermail.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/resendpwd.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/revisions.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/searchpage.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/showrev.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/stopwords.txt29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/subscribermail.txt19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/updateprofile.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/uploadmail.txt20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/lang/zh/wordblock.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/mail.php266
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/media.php1102
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/pageutils.php537
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/code.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/handler.php1697
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/lexer.php600
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/metadata.php483
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/parser.php956
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/renderer.php322
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/xhtml.php1142
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parser/xhtmlsummary.php90
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/parserutils.php672
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/plugin.php248
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/plugincontroller.class.php172
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/pluginutils.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/search.php630
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/template.php1413
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/toolbar.php241
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/inc/utf8.php1657
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/index.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/install.php516
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/MultipleUpload.as329
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/README4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/_fla/multipleUpload.flabin0 -> 1812480 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/ajax.php370
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/css.php330
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/detail.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/fetch.php173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/indexer.php375
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/js.php397
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/mediamanager.php105
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/multipleUpload.swfbin0 -> 64561 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/opensearch.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/exe/xmlrpc.php921
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/README2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/acl.pngbin0 -> 1336 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/config.pngbin0 -> 1761 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/plugin.pngbin0 -> 1415 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/popularity.pngbin0 -> 1420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/revert.pngbin0 -> 1598 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/admin/usermanager.pngbin0 -> 1850 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/arrow_down.gifbin0 -> 273 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/arrow_up.gifbin0 -> 274 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/at.gifbin0 -> 57 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/blank.gifbin0 -> 42 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/close.pngbin0 -> 1345 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/del.pngbin0 -> 433 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/diff.pngbin0 -> 219 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/edit.gifbin0 -> 142 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/error.pngbin0 -> 706 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/bz2.pngbin0 -> 720 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/c.pngbin0 -> 774 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/conf.pngbin0 -> 717 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/cpp.pngbin0 -> 859 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/cs.pngbin0 -> 808 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/css.pngbin0 -> 843 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/deb.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/doc.pngbin0 -> 659 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/file.pngbin0 -> 720 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/gif.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/gz.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/htm.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/html.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/index.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/java.pngbin0 -> 739 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/jpeg.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/jpg.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/js.pngbin0 -> 809 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/lua.pngbin0 -> 465 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odc.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odf.pngbin0 -> 807 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odg.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odi.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odp.pngbin0 -> 744 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ods.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/odt.pngbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/pdf.pngbin0 -> 663 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/php.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/pl.pngbin0 -> 698 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/png.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ppt.pngbin0 -> 762 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/ps.pngbin0 -> 534 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/py.pngbin0 -> 714 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rar.pngbin0 -> 631 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rb.pngbin0 -> 828 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rpm.pngbin0 -> 638 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/rtf.pngbin0 -> 474 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/swf.pngbin0 -> 843 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxc.pngbin0 -> 749 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxd.pngbin0 -> 788 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxi.pngbin0 -> 744 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/sxw.pngbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/tar.pngbin0 -> 747 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/tgz.pngbin0 -> 716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/txt.pngbin0 -> 542 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/xls.pngbin0 -> 731 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/xml.pngbin0 -> 475 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/fileicons/zip.pngbin0 -> 874 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/history.pngbin0 -> 202 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/info.pngbin0 -> 783 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki.pngbin0 -> 1089 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.de.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/amazon.uk.gifbin0 -> 882 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/coral.gifbin0 -> 85 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/doku.gifbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/dokubug.gifbin0 -> 166 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/google.gifbin0 -> 980 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/meatball.gifbin0 -> 1100 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/phpfn.gifbin0 -> 330 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/sb.gifbin0 -> 886 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wiki.gifbin0 -> 909 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wp.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpde.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpes.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpfr.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpjp.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wpmeta.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/interwiki/wppl.gifbin0 -> 680 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/larger.gifbin0 -> 87 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc-nd.pngbin0 -> 5281 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc-sa.pngbin0 -> 5460 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nc.pngbin0 -> 5145 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-nd.pngbin0 -> 4880 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by-sa.pngbin0 -> 5083 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc-by.pngbin0 -> 4739 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/cc.pngbin0 -> 958 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/gnufdl.pngbin0 -> 1748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/badge/publicdomain.pngbin0 -> 4962 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc-nd.pngbin0 -> 678 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc-sa.pngbin0 -> 686 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nc.pngbin0 -> 663 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-nd.pngbin0 -> 658 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by-sa.pngbin0 -> 661 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc-by.pngbin0 -> 629 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/cc.pngbin0 -> 728 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/gnufdl.pngbin0 -> 839 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/license/button/publicdomain.pngbin0 -> 621 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/list-minus.gifbin0 -> 64 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/list-plus.gifbin0 -> 67 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/loading.gifbin0 -> 1876 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/magnifier.pngbin0 -> 615 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/minus.gifbin0 -> 858 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/multiupload.pngbin0 -> 698 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/notify.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/ns.pngbin0 -> 853 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/page.pngbin0 -> 635 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/pencil.pngbin0 -> 450 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/plus.gifbin0 -> 860 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smaller.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/delete.gifbin0 -> 1421 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/fixme.gifbin0 -> 1435 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_arrow.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_biggrin.gifbin0 -> 172 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_confused.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_cool.gifbin0 -> 172 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_cry.gifbin0 -> 498 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_doubt.gifbin0 -> 990 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_doubt2.gifbin0 -> 992 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_eek.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_evil.gifbin0 -> 236 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_exclaim.gifbin0 -> 236 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_frown.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_fun.gifbin0 -> 590 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_idea.gifbin0 -> 176 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_kaddi.gifbin0 -> 991 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_lol.gifbin0 -> 336 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_mrgreen.gifbin0 -> 349 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_neutral.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_question.gifbin0 -> 248 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_razz.gifbin0 -> 176 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_redface.gifbin0 -> 650 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_rolleyes.gifbin0 -> 485 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_sad.gifbin0 -> 171 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_silenced.gifbin0 -> 231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_smile.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_smile2.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_surprised.gifbin0 -> 174 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_twisted.gifbin0 -> 238 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/smileys/icon_wink.gifbin0 -> 170 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/success.pngbin0 -> 816 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/throbber.gifbin0 -> 875 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/bold.pngbin0 -> 433 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/chars.pngbin0 -> 619 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h.pngbin0 -> 360 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h1.pngbin0 -> 420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h2.pngbin0 -> 442 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h3.pngbin0 -> 452 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h4.pngbin0 -> 432 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/h5.pngbin0 -> 440 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hequal.pngbin0 -> 426 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hminus.pngbin0 -> 538 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hplus.pngbin0 -> 520 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/hr.pngbin0 -> 329 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/image.pngbin0 -> 625 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/italic.pngbin0 -> 322 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/link.pngbin0 -> 579 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/linkextern.pngbin0 -> 962 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/mono.pngbin0 -> 385 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/ol.pngbin0 -> 403 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/sig.pngbin0 -> 569 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/smiley.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/strike.pngbin0 -> 415 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/ul.pngbin0 -> 383 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/toolbar/underline.pngbin0 -> 375 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/trash.pngbin0 -> 476 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/up.pngbin0 -> 376 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/images/wrap.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/admin.php809
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/ajax.php62
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/af/lang.php10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ar/lang.php24
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/bg/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/bg/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca-valencia/help.txt15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca-valencia/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ca/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/cs/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/cs/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/da/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/da/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de-informal/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de-informal/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/de/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/el/help.txt10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/el/lang.php43
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/en/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/en/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eo/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eo/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/es/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/es/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/et/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eu/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/eu/lang.php34
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fa/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fa/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fi/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fi/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fr/help.txt9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/fr/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/gl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/gl/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/he/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/he/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hu/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/hu/lang.php36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/id/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/is/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/it/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/it/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ja/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ja/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ko/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ko/lang.php41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lt/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lv/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/lv/lang.php35
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/mr/help.txt12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/mr/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ne/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/nl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/nl/lang.php45
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/no/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/no/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pl/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pl/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt-br/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt-br/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt/help.txt9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/pt/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ro/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ro/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ru/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/ru/lang.php42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sk/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sk/lang.php38
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sl/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sr/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sr/lang.php37
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sv/help.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/sv/lang.php46
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/th/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/th/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/tr/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/tr/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/uk/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/uk/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/vi/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh-tw/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh-tw/lang.php40
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh/help.txt11
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/lang/zh/lang.php39
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/group.pngbin0 -> 753 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/ns.pngbin0 -> 853 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/page.pngbin0 -> 635 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/pix/user.pngbin0 -> 706 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/script.js163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/acl/style.css96
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/action.php26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/admin.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/print.css274
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/style.css272
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/box/syntax.php287
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/COPYING340
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/CREDITS58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/VERSION.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/action.php169
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/admin.php453
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/ajax.php196
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/changelog207
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/conf/default.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/conf/metadata.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/edit-full.js152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/edit.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/close.gifbin0 -> 64 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/base.gifbin0 -> 578 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/empty.gifbin0 -> 62 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folder.gifbin0 -> 352 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderh.gifbin0 -> 572 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderhopen.gifbin0 -> 577 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/folderopen.gifbin0 -> 354 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/info.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/join.gifbin0 -> 69 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/joinbottom.gifbin0 -> 66 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/line.gifbin0 -> 66 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/minus.gifbin0 -> 86 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/minusbottom.gifbin0 -> 85 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/nolines_minus.gifbin0 -> 861 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/nolines_plus.gifbin0 -> 870 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/page.gifbin0 -> 565 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/plus.gifbin0 -> 89 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/default/plusbottom.gifbin0 -> 88 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/empty.gifbin0 -> 275 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/indexmenu_toolbar.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/larrow.gifbin0 -> 1829 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/msort.gifbin0 -> 420 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/rarrow.gifbin0 -> 81 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/images/toc_bullet.gifbin0 -> 74 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/inc/pclzip.lib.php5748
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/inc/repo.class.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/indexmenu-full.js640
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/indexmenu.js18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/admmenu.js71
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/menu.js56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/jsmenu/usrmenu.js69
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/de/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/en/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/es/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/lang/it/lang.php29
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/nojsindex-full.js101
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/nojsindex.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/script.js152
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/style.css190
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/syntax/indexmenu.php720
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/indexmenu/syntax/tag.php70
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/info/syntax.php259
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/important.pngbin0 -> 2250 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/note.pngbin0 -> 2520 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_important.pngbin0 -> 1366 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_note.pngbin0 -> 1461 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_tip.pngbin0 -> 1441 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tb_warning.pngbin0 -> 1870 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/tip.pngbin0 -> 2909 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/images/warning.pngbin0 -> 3249 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/script.js36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/style.css41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/note/syntax.php191
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/ChangeLog.txt255
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/README.txt16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/ZipLib.class.php391
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/action.php41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/conf/default.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/conf/metadata.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/de/lang.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/en/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/es/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/fr/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/it/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/ja/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/ru/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/lang/zh/lang.php12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/odt.pngbin0 -> 3320 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/renderer.php1232
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/styles.xml158
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/odt/syntax.php96
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/admin.php202
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/af/lang.php5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ar/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/bg/intro.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/bg/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca-valencia/intro.txt4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca-valencia/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ca/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/cs/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/cs/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/da/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/da/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de-informal/lang.php14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/de/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/el/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/el/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/en/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/en/lang.php23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eo/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eo/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/es/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/es/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eu/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/eu/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fa/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fa/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fi/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fi/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/fr/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/gl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/gl/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/he/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/he/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hu/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/hu/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/id/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/is/lang.php10
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/it/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/it/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ja/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ja/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ko/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ko/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lt/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lv/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/lv/lang.php15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/mr/intro.txt5
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/mr/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ne/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/nl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/nl/lang.php21
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/no/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/no/lang.php26
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pl/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pl/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt-br/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt-br/lang.php25
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/pt/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ro/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ro/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ru/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/ru/lang.php22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sk/intro.txt0
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sk/lang.php17
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sl/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sr/lang.php16
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sv/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/sv/lang.php28
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/th/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/th/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/tr/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/tr/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/uk/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/uk/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh-tw/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh-tw/lang.php19
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh/intro.txt3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/revert/lang/zh/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/README20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/conf/default.php4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/conf/metadata.php4
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/en/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/ru/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/lang/sp/lang.php3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/plugin.info.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/renderer.php338
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/screen.gifbin0 -> 1574 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/syntax.php72
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/license.txt29
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/null.mp3bin0 -> 2508 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/soundmanager2.js658
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/audio_support/soundmanager2.swfbin0 -> 2198 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluebg.gifbin0 -> 2295 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluebottom.gifbin0 -> 3428 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/bluefooter.gifbin0 -> 591 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/pretty.css173
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/blue/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/bodybg.gifbin0 -> 10119 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/pretty.css156
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/default/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/logo.pngbin0 -> 16746 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/pretty.css163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/dokuwiki/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/MIT-LICENSE20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/builder.js136
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/controls.js965
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/dragdrop.js974
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/effects.js1123
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/presentacular.js153
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/prototype.js4874
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/scriptaculous.js68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/slider.js275
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/sound.js59
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/effects_support/unittest.js568
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-foot.pngbin0 -> 451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-head.pngbin0 -> 450 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-head.xcfbin0 -> 6114 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/background-main.pngbin0 -> 92480 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/logo.pngbin0 -> 9760 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pics/table-header.pngbin0 -> 344 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/pretty.css545
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/executive/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/across.pngbin0 -> 178955 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/auto_over.pngbin0 -> 1117 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/blank.gifbin0 -> 49 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/bottom.pngbin0 -> 41109 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/delay_link.pngbin0 -> 1943 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/druplicon.pngbin0 -> 9215 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/fade_over.pngbin0 -> 1093 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/framing.css65
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/next_over.pngbin0 -> 734 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes.css122
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/pretty.css354
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/toggle_over.pngbin0 -> 1071 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/top.pngbin0 -> 74839 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/faucet/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/blume.jpgbin0 -> 6779 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/blumerechts.jpgbin0 -> 2215 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/pretty.css168
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/flower/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/auto_over.pngbin0 -> 1117 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/bg-slide.jpgbin0 -> 48642 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/framing.css23
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/pretty.css130
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/garlandica/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/LEEME.txt32
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-foot.pngbin0 -> 501 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-head.pngbin0 -> 2999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-main.pngbin0 -> 1824 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/background-main2.pngbin0 -> 3735 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/logo.pngbin0 -> 16331 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pics/table-header.pngbin0 -> 247 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/gorilla/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/finish.gifbin0 -> 1364 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/fixed.js1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/help.jpgbin0 -> 30942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/numeric.pngbin0 -> 7144 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/graphic_support/progress.gifbin0 -> 4237 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/00_head.txt8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/bg-shade.pngbin0 -> 594 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/bg-slide.jpgbin0 -> 31239 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/pretty.css139
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/i18n/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back-handout-print.pngbin0 -> 5958 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back-slide-print.pngbin0 -> 5648 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/back_console.pngbin0 -> 11708 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-foot.pngbin0 -> 397 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-head.pngbin0 -> 401 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-head.xcf.7zbin0 -> 2889 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-main.pngbin0 -> 27159 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/background-main2.pngbin0 -> 27171 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/logo.pngbin0 -> 11222 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pics/table-header.pngbin0 -> 654 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/pretty.css584
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/mandarina/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelbg.gifbin0 -> 1716 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelheader.jpgbin0 -> 3571 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pixelslide0bg.gifbin0 -> 3180 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/pretty.css166
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/pixel/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-index.pngbin0 -> 15049 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-foot.pngbin0 -> 389 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-head.pngbin0 -> 373 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/background-main.pngbin0 -> 9066 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/favicon.icobin0 -> 318 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/logo.pngbin0 -> 1312 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pics/table-header.pngbin0 -> 384 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/pretty.css585
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/quality/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/s5-notes.html157
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/backgrnd.jpgbin0 -> 3648 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/chalks.pngbin0 -> 30926 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/footer.pngbin0 -> 34238 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/framing.css22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/header.pngbin0 -> 49918 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/outline.css14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/pretty.css162
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/print.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/s5-core.css8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/triangle.pngbin0 -> 81350 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/school/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/backgrnd.pngbin0 -> 12943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/bank.pngbin0 -> 41837 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/footer.jpgbin0 -> 4451 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/footer.pngbin0 -> 62136 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/framing.css22
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/outline.css14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pattern.pngbin0 -> 226 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/pretty.css163
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/print.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/s5-core.css8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/sun.pngbin0 -> 32851 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/sunny/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-foot.pngbin0 -> 604 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-head.pngbin0 -> 605 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/background-main.pngbin0 -> 51209 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/favicon.icobin0 -> 1406 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/logo.pngbin0 -> 14675 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pics/table-header.pngbin0 -> 309 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tango/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/LEEME.txt36
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-foot.pngbin0 -> 1705 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-head.pngbin0 -> 1700 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/background-main.pngbin0 -> 358052 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/favicon.icobin0 -> 1150 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/logo.pngbin0 -> 13015 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pics/table-header.pngbin0 -> 309 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/pretty.css583
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/tangodevweb/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/LEEME.txt31
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/index.php102
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back-handout-print.pngbin0 -> 5999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back-slide-print.pngbin0 -> 6487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/back_console.pngbin0 -> 14135 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-foot.pngbin0 -> 451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-head.pngbin0 -> 450 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-head.xcfbin0 -> 6114 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/background-main.pngbin0 -> 92480 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/favicon.icobin0 -> 1406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/logo.jpgbin0 -> 7126 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/table-background.pngbin0 -> 460 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pics/table-header.pngbin0 -> 344 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/pretty.css525
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/slides.js2846
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/thesis/zero_over.pngbin0 -> 1004 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/LEEME.txt32
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/backgrnd.pngbin0 -> 10257 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/header.pngbin0 -> 27487 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/iepngfix.htc42
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/images/favicon.icobin0 -> 3638 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/index.html100
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pause_over.pngbin0 -> 757 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-foot.pngbin0 -> 269 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-head.pngbin0 -> 273 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/background-main.pngbin0 -> 14732 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/dot.pngbin0 -> 670 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/dot2.pngbin0 -> 422 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/h1icon.pngbin0 -> 2999 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/link.pngbin0 -> 447 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/logo.pngbin0 -> 15020 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pics/mail.pngbin0 -> 993 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/pretty.css543
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/s5-core.css9
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/ultraviolet/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/bkgr.jpgbin0 -> 9069 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/blank.gifbin0 -> 49 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/bodybg.gifbin0 -> 10119 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/buzzsaw.gifbin0 -> 5087 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/buzzsaw.pngbin0 -> 4494 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/iepngfix.htc42
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/notes_over.pngbin0 -> 789 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/opera.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/pretty.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/prev_over.pngbin0 -> 748 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/print.css1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/vmc/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_link.pngbin0 -> 1183 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_on.pngbin0 -> 1227 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/audio_over.pngbin0 -> 1245 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_link.pngbin0 -> 1076 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_on.pngbin0 -> 1106 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/auto_over.pngbin0 -> 1117 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/backgrnd.pngbin0 -> 10257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/bodybg.gifbin0 -> 1373 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/button.gifbin0 -> 920 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/delay_link.pngbin0 -> 1943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/exit_link.pngbin0 -> 867 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/exit_over.pngbin0 -> 877 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_link.pngbin0 -> 1079 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_on.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/fade_over.pngbin0 -> 1093 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/footer.jpgbin0 -> 4451 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/framing.css23
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/head.gifbin0 -> 1373 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/header.pngbin0 -> 27487 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/last_link.pngbin0 -> 975 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/last_over.pngbin0 -> 1001 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/list_link.pngbin0 -> 908 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_link.pngbin0 -> 1622 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_on.pngbin0 -> 1665 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/loop_over.pngbin0 -> 1711 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/next_link.pngbin0 -> 713 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/next_over.pngbin0 -> 734 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/notes_link.pngbin0 -> 755 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/notes_over.pngbin0 -> 789 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/opera.css7
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/outline.css15
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_link.pngbin0 -> 732 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_on.pngbin0 -> 726 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pause_over.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/pretty.css221
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/prev_link.pngbin0 -> 757 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/prev_over.pngbin0 -> 748 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/print.css1
-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/s5-core.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slide0h1.gifbin0 -> 3143 bytes-rwxr-xr-xmod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slides.css3
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/slides.js2812
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle.gifbin0 -> 1128 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle_link.pngbin0 -> 1039 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/toggle_over.pngbin0 -> 1071 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/volume_link.pngbin0 -> 943 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/wrap.css410
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/zero_link.pngbin0 -> 968 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/s5reloaded/ui/yatil/zero_over.pngbin0 -> 1004 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/syntax.php281
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/script.js207
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/style.css7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/tbt/syntax.php79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/admin.php627
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/images/search.pngbin0 -> 733 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/af/lang.php14
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ar/lang.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/bg/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca-valencia/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ca/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/cs/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/da/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de-informal/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/de/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/lang.php53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/el/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/lang.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/en/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/lang.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eo/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/lang.php60
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/es/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/eu/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fa/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fi/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/lang.php55
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/fr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/gl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/he/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hi/lang.php6
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hr/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/hu/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id-ni/lang.php7
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/id/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/is/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/is/lang.php18
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/lang.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/it/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ja/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ko/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lt/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/lv/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/mr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/lang.php49
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ne/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/lang.php53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/nl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/no/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/lang.php57
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt-br/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/pt/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ro/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/lang.php56
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/ru/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/add.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/delete.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/edit.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/intro.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/lang.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sk/list.txt2
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/lang.php20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sl/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/lang.php48
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/lang.php58
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/sv/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/lang.php47
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/th/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/tr/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/uk/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/lang.php52
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh-tw/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/add.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/delete.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/edit.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/intro.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/lang.php51
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/lang/zh/list.txt1
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/script.js9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/plugins/usermanager/style.css20
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/ajax.js68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/cookie.js112
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/drag.js99
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/edit.js442
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/events.js176
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/helpers.js146
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/index.js116
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/linkwiz.js282
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/media.js351
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/pngbehavior.htc53
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/script.js561
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/textselection.js226
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/toolbar.js252
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/scripts/tw-sack.js136
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/feed.css63
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/index.html12
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/styles/style.css113
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/conf/default.php8
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/conf/metadata.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/design.css796
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/detail.php89
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/footer.html41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/bullet.gifbin0 -> 50 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-cc.gifbin0 -> 1231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-css.pngbin0 -> 299 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-donate.gifbin0 -> 187 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-dw.pngbin0 -> 427 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-php.gifbin0 -> 269 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-rss.pngbin0 -> 280 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/button-xhtml.pngbin0 -> 321 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/buttonshadow.pngbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/closed.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/favicon.icobin0 -> 7406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/inputshadow.pngbin0 -> 155 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/link_icon.gifbin0 -> 942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/mail_icon.gifbin0 -> 918 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/open.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/sidebar-border.gifbin0 -> 34 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/tocdot2.gifbin0 -> 810 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/images/windows.gifbin0 -> 223 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/layout.css79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/main.php69
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/main_index.php135
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/media.css205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/media.php54
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediaedit.php88
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediamanager.php44
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/mediaref.php50
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/print.css238
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/rtl.css119
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar.css189
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar.php9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/sidebar_print.css9
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/style.ini67
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default/tplfn_sidebar.php98
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/_admin.css43
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/_linkwiz.css68
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/design.css835
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/detail.php89
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/footer.html41
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/UWEB.pngbin0 -> 1138 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/UWEBshadow.pngbin0 -> 1123 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/bullet.gifbin0 -> 50 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-cc.gifbin0 -> 1231 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-css.pngbin0 -> 299 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-donate.gifbin0 -> 187 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-dw.pngbin0 -> 427 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-php.gifbin0 -> 207 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-rss.pngbin0 -> 280 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/button-xhtml.pngbin0 -> 321 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/buttonshadow.pngbin0 -> 257 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/closed.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/favicon.icobin0 -> 7406 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/inputshadow.pngbin0 -> 155 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/link_icon.gifbin0 -> 942 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/mail_icon.gifbin0 -> 918 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/open.gifbin0 -> 54 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/tocdot2.gifbin0 -> 810 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/images/windows.gifbin0 -> 223 bytes-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/layout.css79
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/main.php27
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/main_index.php121
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/media.css205
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/mediamanager.php44
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/print.css238
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/rtl.css119
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/default2/style.ini67
-rw-r--r--mod/dokuwiki/vendors/dokuwiki/lib/tpl/index.php68
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/css.php12
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/grouppage.php9
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/index.php13
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/metatags.php5
-rw-r--r--mod/dokuwiki/views/default/dokuwiki/sidebar.php10
-rw-r--r--mod/dokuwiki/views/default/object/dokuwiki.php19
-rw-r--r--mod/dokuwiki/views/default/river/dokuwiki.php17
-rw-r--r--mod/embed/start.php28
-rw-r--r--mod/embed/views/default/js/embed/embed.php22
-rw-r--r--mod/event_calendar/CHANGES.txt154
-rw-r--r--mod/event_calendar/CONTRIBUTIONS.txt7
-rw-r--r--mod/event_calendar/README.txt89
-rw-r--r--mod/event_calendar/actions/event_calendar/add_personal.php17
-rw-r--r--mod/event_calendar/actions/event_calendar/add_to_group.php10
-rw-r--r--mod/event_calendar/actions/event_calendar/add_to_group_members.php15
-rw-r--r--mod/event_calendar/actions/event_calendar/addtocalendar.php33
-rw-r--r--mod/event_calendar/actions/event_calendar/delete.php21
-rw-r--r--mod/event_calendar/actions/event_calendar/edit.php55
-rw-r--r--mod/event_calendar/actions/event_calendar/join_conference.php20
-rw-r--r--mod/event_calendar/actions/event_calendar/killrequest.php23
-rw-r--r--mod/event_calendar/actions/event_calendar/manage_subscribers.php26
-rw-r--r--mod/event_calendar/actions/event_calendar/modify_full_calendar.php24
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_from_group.php8
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_from_group_members.php15
-rw-r--r--mod/event_calendar/actions/event_calendar/remove_personal.php12
-rw-r--r--mod/event_calendar/actions/event_calendar/request_personal_calendar.php16
-rw-r--r--mod/event_calendar/actions/event_calendar/toggle_personal_calendar.php40
-rw-r--r--mod/event_calendar/activate.php4
-rw-r--r--mod/event_calendar/images/calendar.gifbin0 -> 269 bytes-rw-r--r--mod/event_calendar/images/event_icon.gifbin0 -> 1254 bytes-rw-r--r--mod/event_calendar/images/event_icon_old.gifbin0 -> 1531 bytes-rw-r--r--mod/event_calendar/images/ics.pngbin0 -> 344 bytes-rw-r--r--mod/event_calendar/images/river_icon_event.gifbin0 -> 586 bytes-rw-r--r--mod/event_calendar/languages/ca.php143
-rw-r--r--mod/event_calendar/languages/en.php360
-rw-r--r--mod/event_calendar/languages/es.php215
-rw-r--r--mod/event_calendar/languages/fr.php124
-rw-r--r--mod/event_calendar/languages/ru.php365
-rw-r--r--mod/event_calendar/manifest.xml16
-rw-r--r--mod/event_calendar/models/model.php2518
-rw-r--r--mod/event_calendar/start.php414
-rw-r--r--mod/event_calendar/views/default/css/elements/forms/datepicker_multi.php39
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_footer.php5
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_header.php12
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_item_view.php26
-rw-r--r--mod/event_calendar/views/default/event_calendar/agenda_view.php34
-rw-r--r--mod/event_calendar/views/default/event_calendar/calendar.php70
-rw-r--r--mod/event_calendar/views/default/event_calendar/calendar_toggle.php18
-rw-r--r--mod/event_calendar/views/default/event_calendar/conference_button.php33
-rw-r--r--mod/event_calendar/views/default/event_calendar/container.php28
-rw-r--r--mod/event_calendar/views/default/event_calendar/css.php264
-rw-r--r--mod/event_calendar/views/default/event_calendar/datetime_edit.php46
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/entity_list.php66
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/gallery.php44
-rw-r--r--mod/event_calendar/views/default/event_calendar/entities/gallery_item.php63
-rw-r--r--mod/event_calendar/views/default/event_calendar/filter_menu.php78
-rw-r--r--mod/event_calendar/views/default/event_calendar/forms/add_to_group.php74
-rw-r--r--mod/event_calendar/views/default/event_calendar/full_calendar_view.php200
-rw-r--r--mod/event_calendar/views/default/event_calendar/group_module.php37
-rw-r--r--mod/event_calendar/views/default/event_calendar/groupprofile_calendar.php33
-rw-r--r--mod/event_calendar/views/default/event_calendar/groupprofile_calendar_deprecated.php44
-rw-r--r--mod/event_calendar/views/default/event_calendar/input/date_local.php55
-rw-r--r--mod/event_calendar/views/default/event_calendar/metatags.php2
-rw-r--r--mod/event_calendar/views/default/event_calendar/nav.php38
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_footer.php4
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_header.php15
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_item_view.php27
-rw-r--r--mod/event_calendar/views/default/event_calendar/paged_view.php36
-rw-r--r--mod/event_calendar/views/default/event_calendar/personal_manage_section.php20
-rw-r--r--mod/event_calendar/views/default/event_calendar/personal_toggle_js.php20
-rw-r--r--mod/event_calendar/views/default/event_calendar/region_select.php21
-rw-r--r--mod/event_calendar/views/default/event_calendar/reminder_section.php28
-rw-r--r--mod/event_calendar/views/default/event_calendar/repeat_form_element.php32
-rw-r--r--mod/event_calendar/views/default/event_calendar/review_requests.php30
-rw-r--r--mod/event_calendar/views/default/event_calendar/schedule_section.php22
-rw-r--r--mod/event_calendar/views/default/event_calendar/share_section.php26
-rw-r--r--mod/event_calendar/views/default/event_calendar/show_events.php64
-rw-r--r--mod/event_calendar/views/default/event_calendar/strapline.php18
-rw-r--r--mod/event_calendar/views/default/forms/event_calendar/edit.php233
-rw-r--r--mod/event_calendar/views/default/forms/event_calendar/manage_subscribers.php14
-rw-r--r--mod/event_calendar/views/default/fullcalendar/css.php618
-rw-r--r--mod/event_calendar/views/default/fullcalendar/fullcalendar.print.css61
-rw-r--r--mod/event_calendar/views/default/icon/object/event_calendar/small.php3
-rw-r--r--mod/event_calendar/views/default/input/datepicker_inline.php83
-rw-r--r--mod/event_calendar/views/default/input/timepicker.php51
-rw-r--r--mod/event_calendar/views/default/input/timepicker_old.php38
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/event_calendar.php171
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/fullcalendar.min.js114
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/fullcalendar.php5227
-rw-r--r--mod/event_calendar/views/default/js/event_calendar/gcal.js112
-rw-r--r--mod/event_calendar/views/default/object/event_calendar.php115
-rw-r--r--mod/event_calendar/views/default/plugins/event_calendar/settings.php474
-rw-r--r--mod/event_calendar/views/default/river/object/event_calendar/create.php13
-rw-r--r--mod/event_calendar/views/default/river/object/event_calendar/update.php13
-rw-r--r--mod/event_calendar/views/default/widgets/event_calendar/content.php43
-rw-r--r--mod/event_calendar/views/default/widgets/event_calendar/edit.php35
-rw-r--r--mod/event_calendar/views/ical/event_calendar/show_events.php7
-rw-r--r--mod/event_calendar/views/ical/object/event_calendar.php44
-rw-r--r--mod/event_calendar/views/ical/page/default.php17
-rw-r--r--mod/event_calendar/views/ical/page/layouts/default.php2
-rw-r--r--mod/event_calendar/views/rss/event_calendar/show_events.php24
-rw-r--r--mod/event_calendar/views/rss/object/event_calendar.php61
-rw-r--r--mod/externalpages/start.php8
-rw-r--r--mod/externalpages/views/default/expages/wrapper.php2
-rw-r--r--mod/file/actions/file/upload.php27
-rw-r--r--mod/file/pages/file/friends.php2
-rw-r--r--mod/file/pages/file/owner.php7
-rw-r--r--mod/file/pages/file/search.php4
-rw-r--r--mod/file/pages/file/world.php7
-rw-r--r--mod/file/start.php19
-rw-r--r--mod/file/thumbnail.php2
-rw-r--r--mod/file/views/default/object/file.php2
-rw-r--r--mod/friendrequest/actions/friendrequest/decline.php12
-rw-r--r--mod/friendrequest/actions/friends/add.php53
-rw-r--r--mod/friendrequest/actions/friends/remove.php36
-rw-r--r--mod/friendrequest/languages/ca.php20
-rw-r--r--mod/friendrequest/languages/en.php31
-rw-r--r--mod/friendrequest/languages/es.php22
-rw-r--r--mod/friendrequest/languages/gl.php31
-rw-r--r--mod/friendrequest/languages/pt.php31
-rw-r--r--mod/friendrequest/languages/sr.php31
-rw-r--r--mod/friendrequest/manifest.xml16
-rw-r--r--mod/friendrequest/start.php151
-rw-r--r--mod/friendrequest/views/default/friendrequest/requests.php47
-rw-r--r--mod/groups/actions/discussion/save.php2
-rw-r--r--mod/groups/actions/groups/edit.php179
-rw-r--r--mod/groups/actions/groups/membership/invite.php73
-rw-r--r--mod/groups/icon.php6
-rw-r--r--mod/groups/languages/en.php15
-rw-r--r--mod/groups/lib/discussion.php7
-rw-r--r--mod/groups/lib/groups.php135
-rw-r--r--mod/groups/start.php54
-rw-r--r--mod/groups/views/default/forms/groups/edit.php85
-rw-r--r--mod/groups/views/default/groups/css.php22
-rw-r--r--mod/groups/views/default/groups/edit.php4
-rw-r--r--mod/groups/views/default/groups/js.php7
-rw-r--r--mod/groups/views/default/groups/profile/summary.php15
-rw-r--r--mod/groups/views/default/groups/sidebar/featured.php2
-rw-r--r--mod/groups/views/default/groups/sidebar/members.php2
-rw-r--r--mod/groups/views/default/groups/sidebar/my_status.php62
-rw-r--r--mod/groups/views/default/object/groupforumtopic.php5
-rw-r--r--mod/groups/views/default/plugins/groups/settings.php18
-rw-r--r--mod/groups/views/rss/groups/profile/layout.php13
-rw-r--r--mod/groups/views/rss/object/groupforumtopic.php2
-rw-r--r--mod/habitorio_theme/graphics/button.pngbin0 -> 1092 bytes-rw-r--r--mod/habitorio_theme/graphics/elgg_sprites.pngbin0 -> 19372 bytes-rw-r--r--mod/habitorio_theme/graphics/login.pngbin0 -> 537 bytes-rw-r--r--mod/habitorio_theme/graphics/logo.pngbin0 -> 3067 bytes-rw-r--r--mod/habitorio_theme/graphics/menu.gifbin0 -> 3008 bytes-rw-r--r--mod/habitorio_theme/graphics/menu.pngbin0 -> 2682 bytes-rw-r--r--mod/habitorio_theme/graphics/people.pngbin0 -> 143134 bytes-rw-r--r--mod/habitorio_theme/graphics/preset1.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset2.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset3.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset4.pngbin0 -> 125 bytes-rw-r--r--mod/habitorio_theme/graphics/preset5.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset6.pngbin0 -> 131 bytes-rw-r--r--mod/habitorio_theme/graphics/preset7.pngbin0 -> 125 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_01.pngbin0 -> 5204 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_02.pngbin0 -> 550 bytes-rw-r--r--mod/habitorio_theme/graphics/purity_03.pngbin0 -> 2480 bytes-rw-r--r--mod/habitorio_theme/graphics/search.gifbin0 -> 819 bytes-rw-r--r--mod/habitorio_theme/graphics/search.pngbin0 -> 1589 bytes-rw-r--r--mod/habitorio_theme/graphics/sidebar_background.gifbin0 -> 1355 bytes-rw-r--r--mod/habitorio_theme/graphics/spacer.gifbin0 -> 175 bytes-rw-r--r--mod/habitorio_theme/graphics/topbar.gifbin0 -> 2756 bytes-rw-r--r--mod/habitorio_theme/manifest.xml18
-rw-r--r--mod/habitorio_theme/start.php84
-rw-r--r--mod/habitorio_theme/views/default/css/admin.php1443
-rw-r--r--mod/habitorio_theme/views/default/css/elements/OOCSS_LICENSE30
-rw-r--r--mod/habitorio_theme/views/default/css/elements/buttons.php132
-rw-r--r--mod/habitorio_theme/views/default/css/elements/components.php286
-rw-r--r--mod/habitorio_theme/views/default/css/elements/core.php117
-rw-r--r--mod/habitorio_theme/views/default/css/elements/forms.php298
-rw-r--r--mod/habitorio_theme/views/default/css/elements/grid.php54
-rw-r--r--mod/habitorio_theme/views/default/css/elements/helpers.php160
-rw-r--r--mod/habitorio_theme/views/default/css/elements/icons.php348
-rw-r--r--mod/habitorio_theme/views/default/css/elements/layout.php142
-rw-r--r--mod/habitorio_theme/views/default/css/elements/misc.php62
-rw-r--r--mod/habitorio_theme/views/default/css/elements/modules.php194
-rw-r--r--mod/habitorio_theme/views/default/css/elements/navigation.php559
-rw-r--r--mod/habitorio_theme/views/default/css/elements/reset.php79
-rw-r--r--mod/habitorio_theme/views/default/css/elements/typography.php155
-rw-r--r--mod/habitorio_theme/views/default/css/elgg.php68
-rw-r--r--mod/habitorio_theme/views/default/css/ie.php8
-rw-r--r--mod/habitorio_theme/views/default/css/ie6.php12
-rw-r--r--mod/habitorio_theme/views/default/css/ie7.php65
-rw-r--r--mod/habitorio_theme/views/default/css/lightbox.php371
-rw-r--r--mod/habitorio_theme/views/default/css/walled_garden.php81
-rw-r--r--mod/habitorio_theme/views/default/custom_index/css.php17
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/css.php178
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/leftside.php5
-rw-r--r--mod/habitorio_theme/views/default/habitorio_theme/rightside.php5
-rw-r--r--mod/habitorio_theme/views/default/page/default.php58
-rw-r--r--mod/habitorio_theme/views/default/page/elements/footer.php12
-rw-r--r--mod/habitorio_theme/views/default/page/elements/header.php22
-rw-r--r--mod/habitorio_theme/views/default/page/elements/header_logo.php21
-rw-r--r--mod/habitorio_theme/views/default/page/elements/messages.php27
-rw-r--r--mod/habitorio_theme/views/default/page/elements/topbar.php25
-rw-r--r--mod/habitorio_theme/views/default/page/layouts/custom_index.php48
-rw-r--r--mod/habitorio_theme/views/default/plugins/purity_theme/settings.php24
-rw-r--r--mod/html5/.gitignore3
-rw-r--r--mod/html5/README7
-rw-r--r--mod/html5/manifest.xml15
-rw-r--r--mod/html5/start.php11
-rw-r--r--mod/html5/vendors/Modernizr-1.5.min.js28
-rw-r--r--mod/html5/vendors/jquery/jquery.placeholder-1.0.1.js58
-rw-r--r--mod/html5/views/default/html/img.php11
-rw-r--r--mod/html5/views/default/html5/css.php2
-rw-r--r--mod/html5/views/default/html5/theme_preview/forms/inputs.php101
-rw-r--r--mod/html5/views/default/input/color.php12
-rw-r--r--mod/html5/views/default/input/datetime-local.php14
-rw-r--r--mod/html5/views/default/input/datetime.php15
-rw-r--r--mod/html5/views/default/input/image.php11
-rw-r--r--mod/html5/views/default/input/month.php16
-rw-r--r--mod/html5/views/default/input/number.php11
-rw-r--r--mod/html5/views/default/input/option.php13
-rw-r--r--mod/html5/views/default/input/range.php13
-rw-r--r--mod/html5/views/default/input/search.php13
-rw-r--r--mod/html5/views/default/input/tel.php12
-rw-r--r--mod/html5/views/default/input/time.php13
-rw-r--r--mod/html5/views/default/input/week.php13
-rw-r--r--mod/html5/views/default/output/friendlytime.php14
-rw-r--r--mod/html5/views/default/page/admin.php68
-rw-r--r--mod/html5/views/default/page/default.php78
-rw-r--r--mod/html5/views/default/page/elements/footer.php23
-rw-r--r--mod/html5/views/default/page/elements/head.php78
-rw-r--r--mod/html5/views/default/page/layouts/admin.php42
-rw-r--r--mod/html5/views/default/page/layouts/one_sidebar.php50
-rw-r--r--mod/html5/views/default/page/layouts/two_sidebar.php45
-rw-r--r--mod/html5/views/default/page/walled_garden.php42
-rw-r--r--mod/html5/views/default/search/search_box.php43
-rw-r--r--mod/htmlawed/start.php20
-rw-r--r--mod/htmlawed/tests/tags.php47
-rwxr-xr-xmod/htmlawed/vendors/htmLawed/htmLawed.php82
-rwxr-xr-xmod/htmlawed/vendors/htmLawed/htmLawedTest.php89
-rwxr-xr-x[-rw-r--r--]mod/htmlawed/vendors/htmLawed/htmLawed_README.htm4336
-rwxr-xr-xmod/htmlawed/vendors/htmLawed/htmLawed_README.txt3433
-rwxr-xr-xmod/htmlawed/vendors/htmLawed/htmLawed_TESTCASE.txt66
-rw-r--r--mod/identica/graphics/identica.pngbin0 -> 488 bytes-rw-r--r--mod/identica/graphics/thewire_speech_bubble.gif (renamed from mod/twitter/graphics/thewire_speech_bubble.gif)bin560 -> 560 bytes-rw-r--r--mod/identica/languages/ca.php10
-rw-r--r--mod/identica/languages/en.php16
-rw-r--r--mod/identica/languages/es.php12
-rw-r--r--mod/identica/manifest.xml17
-rw-r--r--mod/identica/start.php16
-rw-r--r--mod/identica/views/default/identica/css.php (renamed from mod/twitter/views/default/twitter/css.php)26
-rw-r--r--mod/identica/views/default/identica/js.php40
-rw-r--r--mod/identica/views/default/js/friendly_time.php50
-rw-r--r--mod/identica/views/default/widgets/identica/content.php30
-rw-r--r--mod/identica/views/default/widgets/identica/edit.php16
-rw-r--r--mod/languages/README.txt9
-rw-r--r--mod/languages/languages/ca/ca.blog.php54
-rw-r--r--mod/languages/languages/ca/ca.bookmarks.php51
-rw-r--r--mod/languages/languages/ca/ca.categories.php12
-rw-r--r--mod/languages/languages/ca/ca.core.php994
-rw-r--r--mod/languages/languages/ca/ca.custom_index.php11
-rw-r--r--mod/languages/languages/ca/ca.dashboard.php11
-rw-r--r--mod/languages/languages/ca/ca.developers.php47
-rw-r--r--mod/languages/languages/ca/ca.diagnostics.php30
-rw-r--r--mod/languages/languages/ca/ca.embed.php14
-rw-r--r--mod/languages/languages/ca/ca.externalpages.php15
-rw-r--r--mod/languages/languages/ca/ca.file.php74
-rw-r--r--mod/languages/languages/ca/ca.garbagecollector.php17
-rw-r--r--mod/languages/languages/ca/ca.groups.php219
-rw-r--r--mod/languages/languages/ca/ca.invitefriends.php26
-rw-r--r--mod/languages/languages/ca/ca.likes.php34
-rw-r--r--mod/languages/languages/ca/ca.logbrowser20
-rw-r--r--mod/languages/languages/ca/ca.logrotate.php20
-rw-r--r--mod/languages/languages/ca/ca.members.php13
-rw-r--r--mod/languages/languages/ca/ca.messageboard.php43
-rw-r--r--mod/languages/languages/ca/ca.messages.php64
-rw-r--r--mod/languages/languages/ca/ca.notifications.php16
-rw-r--r--mod/languages/languages/ca/ca.pages.php62
-rw-r--r--mod/languages/languages/ca/ca.profile.php8
-rw-r--r--mod/languages/languages/ca/ca.relatedgroups.php11
-rw-r--r--mod/languages/languages/ca/ca.reportedcontent.php34
-rw-r--r--mod/languages/languages/ca/ca.search.php18
-rw-r--r--mod/languages/languages/ca/ca.subgroups.php22
-rw-r--r--mod/languages/languages/ca/ca.tagcloud.php7
-rw-r--r--mod/languages/languages/ca/ca.thewire.php34
-rw-r--r--mod/languages/languages/ca/ca.tinymce.php8
-rw-r--r--mod/languages/languages/ca/ca.twitter.php10
-rw-r--r--mod/languages/languages/ca/ca.uservalidationbyemail.php48
-rw-r--r--mod/languages/languages/da/da.blog.php70
-rw-r--r--mod/languages/languages/da/da.bookmarks.php82
-rw-r--r--mod/languages/languages/da/da.categories.php15
-rw-r--r--mod/languages/languages/da/da.custom_index.php14
-rw-r--r--mod/languages/languages/da/da.developers.php60
-rw-r--r--mod/languages/languages/da/da.diagnostics.php70
-rw-r--r--mod/languages/languages/da/da.embed.php21
-rw-r--r--mod/languages/languages/da/da.event_manager.php302
-rw-r--r--mod/languages/languages/da/da.externalpages.php30
-rw-r--r--mod/languages/languages/da/da.file.php106
-rw-r--r--mod/languages/languages/da/da.garbagecollector.php26
-rw-r--r--mod/languages/languages/da/da.groups.php265
-rw-r--r--mod/languages/languages/da/da.image_captcha.php31
-rw-r--r--mod/languages/languages/da/da.invitefriends.php42
-rw-r--r--mod/languages/languages/da/da.likes.php25
-rw-r--r--mod/languages/languages/da/da.logbrowser.php27
-rw-r--r--mod/languages/languages/da/da.logrotate.php29
-rw-r--r--mod/languages/languages/da/da.market.php148
-rw-r--r--mod/languages/languages/da/da.members.php16
-rw-r--r--mod/languages/languages/da/da.menu_builder.php49
-rw-r--r--mod/languages/languages/da/da.messageboard.php73
-rw-r--r--mod/languages/languages/da/da.messages.php95
-rw-r--r--mod/languages/languages/da/da.notifications.php31
-rw-r--r--mod/languages/languages/da/da.pages.php104
-rw-r--r--mod/languages/languages/da/da.php1343
-rw-r--r--mod/languages/languages/da/da.profile.php13
-rw-r--r--mod/languages/languages/da/da.reportedcontent.php44
-rw-r--r--mod/languages/languages/da/da.river_activity_3C.php142
-rw-r--r--mod/languages/languages/da/da.roles_group_admins.php20
-rw-r--r--mod/languages/languages/da/da.search.php25
-rw-r--r--mod/languages/languages/da/da.tagcloud.php12
-rw-r--r--mod/languages/languages/da/da.tasks.php144
-rw-r--r--mod/languages/languages/da/da.thewire.php60
-rw-r--r--mod/languages/languages/da/da.tidypics.php190
-rw-r--r--mod/languages/languages/da/da.tinymce.php13
-rw-r--r--mod/languages/languages/da/da.twitter.php17
-rw-r--r--mod/languages/languages/da/da.twitter_api.php35
-rw-r--r--mod/languages/languages/da/da.uservalidationbyemail.php63
-rw-r--r--mod/languages/languages/de/de.blog.php50
-rw-r--r--mod/languages/languages/de/de.bookmarks.php46
-rw-r--r--mod/languages/languages/de/de.categories.php12
-rw-r--r--mod/languages/languages/de/de.core.php969
-rw-r--r--mod/languages/languages/de/de.custom_index.php11
-rw-r--r--mod/languages/languages/de/de.dashboard.php11
-rw-r--r--mod/languages/languages/de/de.developers.php43
-rw-r--r--mod/languages/languages/de/de.diagnostics.php39
-rw-r--r--mod/languages/languages/de/de.embed.php14
-rw-r--r--mod/languages/languages/de/de.externalpages.php15
-rw-r--r--mod/languages/languages/de/de.file.php69
-rw-r--r--mod/languages/languages/de/de.garbagecollector.php18
-rw-r--r--mod/languages/languages/de/de.groups.php204
-rw-r--r--mod/languages/languages/de/de.install.php156
-rw-r--r--mod/languages/languages/de/de.invitefriends.php30
-rw-r--r--mod/languages/languages/de/de.likes.php36
-rw-r--r--mod/languages/languages/de/de.logbrowser.php20
-rw-r--r--mod/languages/languages/de/de.logrotate.php22
-rw-r--r--mod/languages/languages/de/de.members.php13
-rw-r--r--mod/languages/languages/de/de.messageboard.php43
-rw-r--r--mod/languages/languages/de/de.messages.php60
-rw-r--r--mod/languages/languages/de/de.notifications.php18
-rw-r--r--mod/languages/languages/de/de.pages.php54
-rw-r--r--mod/languages/languages/de/de.profile.php8
-rw-r--r--mod/languages/languages/de/de.reportedcontent.php44
-rw-r--r--mod/languages/languages/de/de.search.php18
-rw-r--r--mod/languages/languages/de/de.tagcloud.php9
-rw-r--r--mod/languages/languages/de/de.thewire.php36
-rw-r--r--mod/languages/languages/de/de.tinymce.php9
-rw-r--r--mod/languages/languages/de/de.twitter.php12
-rw-r--r--mod/languages/languages/de/de.twitter_api.php60
-rw-r--r--mod/languages/languages/de/de.uservalidationbyemail.php51
-rw-r--r--mod/languages/languages/en/en.core.php39
-rw-r--r--mod/languages/languages/es/es.blog.php57
-rw-r--r--mod/languages/languages/es/es.bookmarks.php55
-rw-r--r--mod/languages/languages/es/es.categories.php12
-rw-r--r--mod/languages/languages/es/es.core.php1001
-rw-r--r--mod/languages/languages/es/es.custom_index.php11
-rw-r--r--mod/languages/languages/es/es.custom_keys.php5
-rw-r--r--mod/languages/languages/es/es.dashboard.php11
-rw-r--r--mod/languages/languages/es/es.developers.php49
-rw-r--r--mod/languages/languages/es/es.diagnostics.php40
-rw-r--r--mod/languages/languages/es/es.embed.php14
-rw-r--r--mod/languages/languages/es/es.externalpages.php15
-rw-r--r--mod/languages/languages/es/es.file.php76
-rw-r--r--mod/languages/languages/es/es.garbagecollector.php18
-rw-r--r--mod/languages/languages/es/es.groups.php213
-rw-r--r--mod/languages/languages/es/es.install.php156
-rw-r--r--mod/languages/languages/es/es.invitefriends.php29
-rw-r--r--mod/languages/languages/es/es.likes.php36
-rw-r--r--mod/languages/languages/es/es.logbrowser.php21
-rw-r--r--mod/languages/languages/es/es.logrotate.php22
-rw-r--r--mod/languages/languages/es/es.members.php13
-rw-r--r--mod/languages/languages/es/es.messageboard.php43
-rw-r--r--mod/languages/languages/es/es.messages.php66
-rw-r--r--mod/languages/languages/es/es.notifications.php18
-rw-r--r--mod/languages/languages/es/es.pages.php62
-rw-r--r--mod/languages/languages/es/es.profile.php8
-rw-r--r--mod/languages/languages/es/es.reportedcontent.php36
-rw-r--r--mod/languages/languages/es/es.search.php18
-rw-r--r--mod/languages/languages/es/es.tagcloud.php9
-rw-r--r--mod/languages/languages/es/es.thewire.php36
-rw-r--r--mod/languages/languages/es/es.tinymce.php9
-rw-r--r--mod/languages/languages/es/es.twitter.php12
-rw-r--r--mod/languages/languages/es/es.twitter_api.php58
-rw-r--r--mod/languages/languages/es/es.uservalidationbyemail.php64
-rw-r--r--mod/languages/languages/eu/eu.blog.php57
-rw-r--r--mod/languages/languages/eu/eu.bookmarks.php53
-rw-r--r--mod/languages/languages/eu/eu.categories.php11
-rw-r--r--mod/languages/languages/eu/eu.core.php996
-rw-r--r--mod/languages/languages/eu/eu.custom_index.php10
-rw-r--r--mod/languages/languages/eu/eu.dashboard.php10
-rw-r--r--mod/languages/languages/eu/eu.developers.php48
-rw-r--r--mod/languages/languages/eu/eu.diagnostics.php39
-rw-r--r--mod/languages/languages/eu/eu.embed.php13
-rw-r--r--mod/languages/languages/eu/eu.externalpages.php14
-rw-r--r--mod/languages/languages/eu/eu.file.php76
-rw-r--r--mod/languages/languages/eu/eu.garbagecollector.php17
-rw-r--r--mod/languages/languages/eu/eu.groups.php213
-rw-r--r--mod/languages/languages/eu/eu.install.php134
-rw-r--r--mod/languages/languages/eu/eu.invitefriends.php29
-rw-r--r--mod/languages/languages/eu/eu.likes.php35
-rw-r--r--mod/languages/languages/eu/eu.logbrowser.php21
-rw-r--r--mod/languages/languages/eu/eu.logrotate.php21
-rw-r--r--mod/languages/languages/eu/eu.members.php12
-rw-r--r--mod/languages/languages/eu/eu.messageboard.php42
-rw-r--r--mod/languages/languages/eu/eu.messages.php65
-rw-r--r--mod/languages/languages/eu/eu.notifications.php17
-rw-r--r--mod/languages/languages/eu/eu.pages.php62
-rw-r--r--mod/languages/languages/eu/eu.profile.php7
-rw-r--r--mod/languages/languages/eu/eu.reportedcontent.php35
-rw-r--r--mod/languages/languages/eu/eu.search.php17
-rw-r--r--mod/languages/languages/eu/eu.tagcloud.php8
-rw-r--r--mod/languages/languages/eu/eu.thewire.php35
-rw-r--r--mod/languages/languages/eu/eu.tinymce.php8
-rw-r--r--mod/languages/languages/eu/eu.twitter.php11
-rw-r--r--mod/languages/languages/eu/eu.twitter_api.php40
-rw-r--r--mod/languages/languages/eu/eu.uservalidationbyemail.php50
-rw-r--r--mod/languages/languages/fr/fr.blog.php69
-rw-r--r--mod/languages/languages/fr/fr.bookmarks.php82
-rw-r--r--mod/languages/languages/fr/fr.categories.php15
-rw-r--r--mod/languages/languages/fr/fr.custom_index.php14
-rw-r--r--mod/languages/languages/fr/fr.dashboard.php14
-rw-r--r--mod/languages/languages/fr/fr.developers.php61
-rw-r--r--mod/languages/languages/fr/fr.diagnostics.php70
-rw-r--r--mod/languages/languages/fr/fr.embed.php21
-rw-r--r--mod/languages/languages/fr/fr.externalpages.php27
-rw-r--r--mod/languages/languages/fr/fr.file.php110
-rw-r--r--mod/languages/languages/fr/fr.garbagecollector.php25
-rw-r--r--mod/languages/languages/fr/fr.groups.php265
-rw-r--r--mod/languages/languages/fr/fr.install.php156
-rw-r--r--mod/languages/languages/fr/fr.invitefriends.php43
-rw-r--r--mod/languages/languages/fr/fr.likes.php44
-rw-r--r--mod/languages/languages/fr/fr.logbrowser.php27
-rw-r--r--mod/languages/languages/fr/fr.logrotate.php28
-rw-r--r--mod/languages/languages/fr/fr.members.php16
-rw-r--r--mod/languages/languages/fr/fr.messageboard.php72
-rw-r--r--mod/languages/languages/fr/fr.messages.php96
-rw-r--r--mod/languages/languages/fr/fr.notifications.php26
-rw-r--r--mod/languages/languages/fr/fr.pages.php104
-rw-r--r--mod/languages/languages/fr/fr.php1310
-rw-r--r--mod/languages/languages/fr/fr.profile.php12
-rw-r--r--mod/languages/languages/fr/fr.reportedcontent.php44
-rw-r--r--mod/languages/languages/fr/fr.search.php21
-rw-r--r--mod/languages/languages/fr/fr.tagcloud.php12
-rw-r--r--mod/languages/languages/fr/fr.thewire.php61
-rw-r--r--mod/languages/languages/fr/fr.tinymce.php14
-rw-r--r--mod/languages/languages/fr/fr.twitter.php7
-rw-r--r--mod/languages/languages/fr/fr.twitter_api.php59
-rw-r--r--mod/languages/languages/fr/fr.uservalidationbyemail.php64
-rw-r--r--mod/languages/languages/gl/gl.blog.php16
-rw-r--r--mod/languages/languages/gl/gl.bookmarks.php40
-rw-r--r--mod/languages/languages/gl/gl.core.php664
-rw-r--r--mod/languages/languages/gl/gl.custom_index.php11
-rw-r--r--mod/languages/languages/gl/gl.embed.php8
-rw-r--r--mod/languages/languages/gl/gl.externalpages.php14
-rw-r--r--mod/languages/languages/gl/gl.file.php61
-rw-r--r--mod/languages/languages/gl/gl.groups.php143
-rw-r--r--mod/languages/languages/gl/gl.messageboard.php36
-rw-r--r--mod/languages/languages/gl/gl.messages.php52
-rw-r--r--mod/languages/languages/gl/gl.pages.php42
-rw-r--r--mod/languages/languages/gl/gl.profile.php8
-rw-r--r--mod/languages/languages/gl/gl.reportedcontent.php7
-rw-r--r--mod/languages/languages/gl/gl.uservalidationbyemail.php8
-rw-r--r--mod/languages/languages/it/it.blog.php12
-rw-r--r--mod/languages/languages/it/it.bookmarks.php31
-rw-r--r--mod/languages/languages/it/it.categories.php10
-rw-r--r--mod/languages/languages/it/it.core.php707
-rw-r--r--mod/languages/languages/it/it.custom_index.php11
-rw-r--r--mod/languages/languages/it/it.file.php53
-rw-r--r--mod/languages/languages/it/it.groups.php141
-rw-r--r--mod/languages/languages/it/it.messageboard.php39
-rw-r--r--mod/languages/languages/it/it.messages.php56
-rw-r--r--mod/languages/languages/it/it.pages.php41
-rw-r--r--mod/languages/languages/it/it.profile.php8
-rw-r--r--mod/languages/languages/it/it.reportedcontent.php7
-rw-r--r--mod/languages/languages/ja/ja.blog.php12
-rw-r--r--mod/languages/languages/ja/ja.bookmarks.php37
-rw-r--r--mod/languages/languages/ja/ja.categories.php11
-rw-r--r--mod/languages/languages/ja/ja.core.php661
-rw-r--r--mod/languages/languages/ja/ja.custom_index.php11
-rw-r--r--mod/languages/languages/ja/ja.embed.php8
-rw-r--r--mod/languages/languages/ja/ja.externalpages.php14
-rw-r--r--mod/languages/languages/ja/ja.file.php61
-rw-r--r--mod/languages/languages/ja/ja.groups.php155
-rw-r--r--mod/languages/languages/ja/ja.messageboard.php41
-rw-r--r--mod/languages/languages/ja/ja.messages.php55
-rw-r--r--mod/languages/languages/ja/ja.pages.php43
-rw-r--r--mod/languages/languages/ja/ja.reportedcontent.php30
-rw-r--r--mod/languages/languages/nl/nl.blog.php50
-rw-r--r--mod/languages/languages/nl/nl.bookmarks.php46
-rw-r--r--mod/languages/languages/nl/nl.categories.php12
-rw-r--r--mod/languages/languages/nl/nl.core.php947
-rw-r--r--mod/languages/languages/nl/nl.custom_index.php11
-rw-r--r--mod/languages/languages/nl/nl.dashboard.php11
-rw-r--r--mod/languages/languages/nl/nl.developers.php43
-rw-r--r--mod/languages/languages/nl/nl.diagnostics.php32
-rw-r--r--mod/languages/languages/nl/nl.embed.php14
-rw-r--r--mod/languages/languages/nl/nl.externalpages.php15
-rw-r--r--mod/languages/languages/nl/nl.file.php69
-rw-r--r--mod/languages/languages/nl/nl.garbagecollector.php18
-rw-r--r--mod/languages/languages/nl/nl.groups.php205
-rw-r--r--mod/languages/languages/nl/nl.invitefriends.php28
-rw-r--r--mod/languages/languages/nl/nl.likes.php31
-rw-r--r--mod/languages/languages/nl/nl.logbrowser.php20
-rw-r--r--mod/languages/languages/nl/nl.logrotate.php18
-rw-r--r--mod/languages/languages/nl/nl.members.php13
-rw-r--r--mod/languages/languages/nl/nl.messageboard.php41
-rw-r--r--mod/languages/languages/nl/nl.messages.php63
-rw-r--r--mod/languages/languages/nl/nl.notifications.php18
-rw-r--r--mod/languages/languages/nl/nl.pages.php54
-rw-r--r--mod/languages/languages/nl/nl.profile.php8
-rw-r--r--mod/languages/languages/nl/nl.reportedcontent.php36
-rw-r--r--mod/languages/languages/nl/nl.search.php18
-rw-r--r--mod/languages/languages/nl/nl.tagcloud.php9
-rw-r--r--mod/languages/languages/nl/nl.thewire.php36
-rw-r--r--mod/languages/languages/nl/nl.tinymce.php9
-rw-r--r--mod/languages/languages/nl/nl.twitter.php12
-rw-r--r--mod/languages/languages/nl/nl.twitter_api.php41
-rw-r--r--mod/languages/languages/nl/nl.uservalidationbyemail.php49
-rw-r--r--mod/languages/languages/pt/pt.blog.php50
-rw-r--r--mod/languages/languages/pt/pt.bookmarks.php46
-rw-r--r--mod/languages/languages/pt/pt.brainstorm.php63
-rw-r--r--mod/languages/languages/pt/pt.categories.php12
-rw-r--r--mod/languages/languages/pt/pt.core.php966
-rw-r--r--mod/languages/languages/pt/pt.custom_index.php11
-rw-r--r--mod/languages/languages/pt/pt.dashboard.php11
-rw-r--r--mod/languages/languages/pt/pt.developers.php43
-rw-r--r--mod/languages/languages/pt/pt.diagnostics.php34
-rw-r--r--mod/languages/languages/pt/pt.embed.php14
-rw-r--r--mod/languages/languages/pt/pt.externalpages.php15
-rw-r--r--mod/languages/languages/pt/pt.file.php69
-rw-r--r--mod/languages/languages/pt/pt.garbagecollector.php17
-rw-r--r--mod/languages/languages/pt/pt.groups.php204
-rw-r--r--mod/languages/languages/pt/pt.install.php132
-rw-r--r--mod/languages/languages/pt/pt.invitefriends.php36
-rw-r--r--mod/languages/languages/pt/pt.likes.php35
-rw-r--r--mod/languages/languages/pt/pt.logbrowser.php20
-rw-r--r--mod/languages/languages/pt/pt.logrotate.php20
-rw-r--r--mod/languages/languages/pt/pt.members.php13
-rw-r--r--mod/languages/languages/pt/pt.messageboard.php43
-rw-r--r--mod/languages/languages/pt/pt.messages.php66
-rw-r--r--mod/languages/languages/pt/pt.moderated_comments.php48
-rw-r--r--mod/languages/languages/pt/pt.notifications.php20
-rw-r--r--mod/languages/languages/pt/pt.pages.php55
-rw-r--r--mod/languages/languages/pt/pt.profile.php8
-rw-r--r--mod/languages/languages/pt/pt.reportedcontent.php36
-rw-r--r--mod/languages/languages/pt/pt.search.php18
-rw-r--r--mod/languages/languages/pt/pt.spam_login_filter.php80
-rw-r--r--mod/languages/languages/pt/pt.speak_freely.php55
-rw-r--r--mod/languages/languages/pt/pt.tagcloud.php9
-rw-r--r--mod/languages/languages/pt/pt.thewire.php37
-rw-r--r--mod/languages/languages/pt/pt.tinymce.php9
-rw-r--r--mod/languages/languages/pt/pt.twitter.php12
-rw-r--r--mod/languages/languages/pt/pt.twitter_api.php43
-rw-r--r--mod/languages/languages/pt/pt.uservalidationbyemail.php51
-rw-r--r--mod/languages/languages/sr/sr.blog.php12
-rw-r--r--mod/languages/languages/sr/sr.core.php389
-rw-r--r--mod/languages/languages/sr/sr.custom_index.php10
-rw-r--r--mod/languages/languages/sr/sr.externalpages.php10
-rw-r--r--mod/languages/languages/sr/sr.file.php7
-rw-r--r--mod/languages/languages/sr/sr.friendrequest.php20
-rw-r--r--mod/languages/languages/sr/sr.groups.php148
-rw-r--r--mod/languages/languages/sr/sr.messageboard.php38
-rw-r--r--mod/languages/languages/sr/sr.messages.php55
-rw-r--r--mod/languages/languages/sr/sr.pages.php7
-rw-r--r--mod/languages/languages/sr/sr.profile.php8
-rw-r--r--mod/languages/languages/sr/sr.reportedcontent.php30
-rw-r--r--mod/languages/languages/th/th.core.php651
-rw-r--r--mod/languages/languages/zh/zh.blog.php69
-rw-r--r--mod/languages/languages/zh/zh.core.php662
-rw-r--r--mod/languages/languages/zh/zh.profile.php8
-rw-r--r--mod/languages/manifest.xml16
-rw-r--r--mod/languages/start.php55
-rw-r--r--mod/languages/views/default/js/languages/ca.php2
-rw-r--r--mod/languages/views/default/js/languages/da.php2
-rw-r--r--mod/languages/views/default/js/languages/de.php2
-rw-r--r--mod/languages/views/default/js/languages/en.php2
-rw-r--r--mod/languages/views/default/js/languages/es.php2
-rw-r--r--mod/languages/views/default/js/languages/eu.php2
-rw-r--r--mod/languages/views/default/js/languages/fr.php2
-rw-r--r--mod/languages/views/default/js/languages/gl.php2
-rw-r--r--mod/languages/views/default/js/languages/it.php2
-rw-r--r--mod/languages/views/default/js/languages/ja.php2
-rw-r--r--mod/languages/views/default/js/languages/nl.php2
-rw-r--r--mod/languages/views/default/js/languages/pt.php2
-rw-r--r--mod/languages/views/default/js/languages/sr.php2
-rw-r--r--mod/languages/views/default/js/languages/th.php2
-rw-r--r--mod/languages/views/default/js/languages/zh.php2
-rw-r--r--mod/lightpics/CONFIG.txt73
-rw-r--r--mod/lightpics/FAQ.txt31
-rw-r--r--mod/lightpics/actions/photos/admin/create_thumbnails.php70
-rw-r--r--mod/lightpics/actions/photos/admin/imtest.php18
-rw-r--r--mod/lightpics/actions/photos/admin/settings.php29
-rw-r--r--mod/lightpics/actions/photos/admin/upgrade.php52
-rw-r--r--mod/lightpics/actions/photos/album/save.php48
-rw-r--r--mod/lightpics/actions/photos/album/set_cover.php23
-rw-r--r--mod/lightpics/actions/photos/album/sort.php21
-rw-r--r--mod/lightpics/actions/photos/batch/edit.php42
-rw-r--r--mod/lightpics/actions/photos/delete.php48
-rw-r--r--mod/lightpics/actions/photos/image/save.php40
-rw-r--r--mod/lightpics/actions/photos/image/upload.php147
-rw-r--r--mod/lightpics/activate.php51
-rw-r--r--mod/lightpics/classes/TidypicsAlbum.php375
-rw-r--r--mod/lightpics/classes/TidypicsImage.php406
-rw-r--r--mod/lightpics/contributions.txt442
-rw-r--r--mod/lightpics/deactivate.php10
-rw-r--r--mod/lightpics/fonts/LiberationSerif-Regular.ttfbin0 -> 172964 bytes-rw-r--r--mod/lightpics/fonts/License.txt13
-rw-r--r--mod/lightpics/graphics/empty_album.pngbin0 -> 1389 bytes-rw-r--r--mod/lightpics/graphics/icons/album.gifbin0 -> 1411 bytes-rw-r--r--mod/lightpics/graphics/icons/general.jpgbin0 -> 7036 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_album.gifbin0 -> 398 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_image.gifbin0 -> 945 bytes-rw-r--r--mod/lightpics/graphics/icons/river_icon_tag.gifbin0 -> 184 bytes-rw-r--r--mod/lightpics/graphics/image_error_large.pngbin0 -> 2208 bytes-rw-r--r--mod/lightpics/graphics/image_error_small.pngbin0 -> 2351 bytes-rw-r--r--mod/lightpics/graphics/image_error_thumb.pngbin0 -> 759 bytes-rw-r--r--mod/lightpics/graphics/loader.gifbin0 -> 2545 bytes-rw-r--r--mod/lightpics/graphics/spacer.gifbin0 -> 43 bytes-rw-r--r--mod/lightpics/languages/ca.php210
-rw-r--r--mod/lightpics/languages/da.php169
-rw-r--r--mod/lightpics/languages/de.php248
-rw-r--r--mod/lightpics/languages/en.php262
-rw-r--r--mod/lightpics/languages/es.php210
-rw-r--r--mod/lightpics/languages/fr.php140
-rw-r--r--mod/lightpics/languages/he.php135
-rw-r--r--mod/lightpics/languages/it.php113
-rw-r--r--mod/lightpics/languages/pl.php96
-rw-r--r--mod/lightpics/languages/ru.php101
-rw-r--r--mod/lightpics/languages/tr.php86
-rw-r--r--mod/lightpics/lib/exif.php110
-rw-r--r--mod/lightpics/lib/migrate.php301
-rw-r--r--mod/lightpics/lib/resize.php522
-rw-r--r--mod/lightpics/lib/tidypics.php365
-rw-r--r--mod/lightpics/lib/upload.php119
-rw-r--r--mod/lightpics/manifest.xml30
-rw-r--r--mod/lightpics/pages/lists/highestrated.php65
-rw-r--r--mod/lightpics/pages/lists/highestvotecount.php50
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimages.php42
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimagesthismonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostcommentedimagestoday.php50
-rw-r--r--mod/lightpics/pages/lists/mostrecentimages.php56
-rw-r--r--mod/lightpics/pages/lists/mostviewedimages.php79
-rw-r--r--mod/lightpics/pages/lists/mostviewedimageslastmonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagesthismonth.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagesthisyear.php50
-rw-r--r--mod/lightpics/pages/lists/mostviewedimagestoday.php50
-rw-r--r--mod/lightpics/pages/lists/recentlycommented.php61
-rw-r--r--mod/lightpics/pages/lists/recentlyviewed.php60
-rw-r--r--mod/lightpics/pages/lists/recentvotes.php52
-rw-r--r--mod/lightpics/pages/photos/album/add.php34
-rw-r--r--mod/lightpics/pages/photos/album/edit.php48
-rw-r--r--mod/lightpics/pages/photos/album/sort.php56
-rw-r--r--mod/lightpics/pages/photos/album/view.php63
-rw-r--r--mod/lightpics/pages/photos/all.php38
-rw-r--r--mod/lightpics/pages/photos/batch/edit.php44
-rw-r--r--mod/lightpics/pages/photos/friends.php34
-rw-r--r--mod/lightpics/pages/photos/image/download.php41
-rw-r--r--mod/lightpics/pages/photos/image/edit.php54
-rw-r--r--mod/lightpics/pages/photos/image/thumbnail.php38
-rw-r--r--mod/lightpics/pages/photos/image/upload.php64
-rw-r--r--mod/lightpics/pages/photos/image/view.php61
-rw-r--r--mod/lightpics/pages/photos/owner.php56
-rw-r--r--mod/lightpics/start.php421
-rw-r--r--mod/lightpics/upgrades/2009082901.php29
-rw-r--r--mod/lightpics/upgrades/2010073101.php27
-rw-r--r--mod/lightpics/upgrades/2010102801.php26
-rw-r--r--mod/lightpics/upgrades/2012020901.php26
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/README.md73
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/cors/postmessage.html75
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/cors/result.html20
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/css/jquery.fileupload-ui.css107
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/css/style.css92
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/img/loading.gifbin0 -> 3897 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/img/progressbar.gifbin0 -> 3323 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/index.html234
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/cors/jquery.postmessage-transport.js117
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/cors/jquery.xdr-transport.js85
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-fp.js219
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-jui.js141
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload-ui.js736
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.fileupload.js972
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/jquery.iframe-transport.js171
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/locale.js29
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/main.js93
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/canvas-to-blob.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/jquery.ui.widget.js282
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/load-image.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/js/vendor/tmpl.min.js1
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/package.json56
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/app.yaml12
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/app/main.go361
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/resize/resize.go247
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/static/favicon.icobin0 -> 1150 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-go/static/robots.txt2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/app.yaml16
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/main.py149
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/static/favicon.icobin0 -> 1150 bytes-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/gae-python/static/robots.txt2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/.gitignore2
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/package.json41
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/public/files/thumbnail/.gitignore0
-rwxr-xr-xmod/lightpics/vendors/jquery-file-upload/server/node/server.js285
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/node/tmp/.gitignore0
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/files/.htaccess4
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/index.php46
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/thumbnails/.htaccess0
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/server/php/upload.class.php436
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/test/index.html146
-rw-r--r--mod/lightpics/vendors/jquery-file-upload/test/test.js1279
-rw-r--r--mod/lightpics/version.php7
-rw-r--r--mod/lightpics/views/default/admin/settings/photos.php71
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/help.php14
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/image_lib.php38
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/server_config.php14
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/server_info.php120
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/settings.php18
-rw-r--r--mod/lightpics/views/default/admin/settings/photos/thumbnail.php54
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings.php26
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/activity.php31
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/image_lib.php20
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/main.php39
-rw-r--r--mod/lightpics/views/default/forms/photos/admin/settings/thumbnails.php33
-rw-r--r--mod/lightpics/views/default/forms/photos/album/save.php48
-rw-r--r--mod/lightpics/views/default/forms/photos/album/sort.php28
-rw-r--r--mod/lightpics/views/default/forms/photos/basic_upload.php63
-rw-r--r--mod/lightpics/views/default/forms/photos/batch/edit.php33
-rw-r--r--mod/lightpics/views/default/forms/photos/batch/edit/image.php35
-rw-r--r--mod/lightpics/views/default/forms/photos/image/save.php48
-rw-r--r--mod/lightpics/views/default/icon/object/album.php41
-rw-r--r--mod/lightpics/views/default/icon/object/image.php62
-rw-r--r--mod/lightpics/views/default/js/photos/tidypics.php43
-rw-r--r--mod/lightpics/views/default/js/photos/upload.php63
-rw-r--r--mod/lightpics/views/default/object/album.php22
-rw-r--r--mod/lightpics/views/default/object/album/full.php59
-rw-r--r--mod/lightpics/views/default/object/album/gallery.php36
-rw-r--r--mod/lightpics/views/default/object/album/list.php42
-rw-r--r--mod/lightpics/views/default/object/image.php211
-rw-r--r--mod/lightpics/views/default/object/image/full.php62
-rw-r--r--mod/lightpics/views/default/object/image/navigation.php34
-rw-r--r--mod/lightpics/views/default/object/image/summary.php41
-rw-r--r--mod/lightpics/views/default/photos/css.php470
-rw-r--r--mod/lightpics/views/default/photos/group_module.php45
-rw-r--r--mod/lightpics/views/default/photos/sidebar.php18
-rw-r--r--mod/lightpics/views/default/photos/sidebar/exif.php20
-rw-r--r--mod/lightpics/views/default/photos/sidebar/quota.php27
-rw-r--r--mod/lightpics/views/default/river/object/album/create.php40
-rw-r--r--mod/lightpics/views/default/river/object/image/create.php41
-rw-r--r--mod/lightpics/views/default/river/object/tidypics_batch/create.php66
-rw-r--r--mod/lightpics/views/default/widgets/album_view/content.php17
-rw-r--r--mod/lightpics/views/default/widgets/album_view/edit.php25
-rw-r--r--mod/lightpics/views/default/widgets/latest_photos/content.php18
-rw-r--r--mod/lightpics/views/default/widgets/latest_photos/edit.php25
-rw-r--r--mod/lightpics/views/rss/extensions/photos/xmlns.php9
-rw-r--r--mod/lightpics/views/rss/object/album.php17
-rw-r--r--mod/lightpics/views/rss/object/album/full.php19
-rw-r--r--mod/lightpics/views/rss/object/album/summary.php33
-rw-r--r--mod/lightpics/views/rss/object/image.php42
-rw-r--r--mod/likes/actions/likes/delete.php17
-rw-r--r--mod/likes/languages/en.php2
-rw-r--r--mod/likes/views/default/annotation/likes.php10
-rw-r--r--mod/likes/views/default/likes/button.php8
m---------mod/linkup0
m---------mod/livestream0
-rw-r--r--mod/logbrowser/views/default/forms/logbrowser/refine.php4
-rw-r--r--mod/logbrowser/views/default/logbrowser/refine.php2
-rw-r--r--mod/logbrowser/views/default/logbrowser/table.php2
-rw-r--r--mod/logrotate/languages/en.php3
-rw-r--r--mod/logrotate/start.php51
-rw-r--r--mod/logrotate/views/default/plugins/logrotate/settings.php1
-rw-r--r--mod/members/pages/members/search.php8
-rw-r--r--mod/messageboard/pages/messageboard/owner.php1
-rw-r--r--mod/messageboard/views/default/river/object/messageboard/create.php23
-rw-r--r--mod/messages/manifest.xml2
-rw-r--r--mod/messages/pages/messages/inbox.php9
-rw-r--r--mod/messages/pages/messages/read.php9
-rw-r--r--mod/messages/pages/messages/sent.php9
-rw-r--r--mod/messages/start.php117
-rw-r--r--mod/notifications/actions/groupsave.php17
-rw-r--r--mod/notifications/groups.php4
-rw-r--r--mod/notifications/index.php4
-rw-r--r--mod/notifications/views/default/forms/notificationsettings/groupsave.php4
-rw-r--r--mod/notifications/views/default/notifications/subscriptions/forminternals.php4
-rw-r--r--mod/oauth_api/start.php24
-rw-r--r--mod/oauth_api/vendors/oauth/LICENSE21
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/INSTALL53
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/init.php127
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl13
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl21
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl41
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/hello.php65
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/index.php37
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/logon.php55
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/oauth.php77
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/register.php28
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php71
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthDiscovery.php226
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthException.php50
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequest.php801
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestLogger.php274
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestSigner.php209
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequestVerifier.php262
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthRequester.php508
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthServer.php232
-rw-r--r--mod/oauth_api/vendors/oauth/library/OAuthStore.php86
-rw-r--r--mod/oauth_api/vendors/oauth/library/body/OAuthBodyContentDisposition.php129
-rw-r--r--mod/oauth_api/vendors/oauth/library/body/OAuthBodyMultipartFormdata.php143
-rw-r--r--mod/oauth_api/vendors/oauth/library/discovery/xrds_parse.php304
-rw-r--r--mod/oauth_api/vendors/oauth/library/discovery/xrds_parse.txt101
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod.class.php69
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_HMAC_SHA1.php115
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_MD5.php95
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_PLAINTEXT.php80
-rw-r--r--mod/oauth_api/vendors/oauth/library/signature_method/OAuthSignatureMethod_RSA_SHA1.php136
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreAbstract.class.php149
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreAnyMeta.php265
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/OAuthStoreMySQL.php1879
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/mysql/install.php32
-rw-r--r--mod/oauth_api/vendors/oauth/library/store/mysql/mysql.sql219
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-fireeagle.xrds78
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-getsatisfaction.xrds73
-rw-r--r--mod/oauth_api/vendors/oauth/test/discovery/xrds-magnolia.xrds81
-rw-r--r--mod/oauth_api/vendors/oauth/test/oauth_test.php188
-rw-r--r--mod/openid_api/classes/OpenID_ElggStore.php420
-rw-r--r--mod/openid_api/lib/openid_consumer.php15
-rw-r--r--mod/openid_api/lib/openid_server.php13
-rw-r--r--mod/openid_api/manifest.xml (renamed from mod/twitter/manifest.xml)15
-rw-r--r--mod/openid_api/start.php22
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID.php563
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/AX.php1022
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Association.php610
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/BigMath.php451
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Consumer.php2234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/CryptUtil.php122
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DatabaseConnection.php130
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DiffieHellman.php113
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Discover.php606
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/DumbStore.php99
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Extension.php61
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/FileStore.php618
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/HMAC.php105
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Interface.php196
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/KVForm.php111
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MDB2Store.php413
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MemcachedStore.php207
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Message.php920
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/MySQLStore.php77
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Nonce.php108
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PAPE.php300
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Parse.php377
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/PostgreSQLStore.php112
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLStore.php557
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SQLiteStore.php70
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/SReg.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/Server.php1765
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/ServerRequest.php36
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/TrustRoot.php461
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/OpenID/URINorm.php249
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/HTTPFetcher.php174
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Manager.php521
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Misc.php58
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParanoidHTTPFetcher.php245
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/ParseHTML.php258
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/PlainHTTPFetcher.php248
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XML.php352
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRDS.php478
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRI.php234
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/XRIRes.php72
-rw-r--r--mod/openid_api/vendors/php-openid/Auth/Yadis/Yadis.php382
-rw-r--r--mod/openid_api/vendors/php-openid/COPYING202
-rw-r--r--mod/openid_api/vendors/php-openid/README136
-rw-r--r--mod/openid_client/actions/openid_client/login.php32
-rw-r--r--mod/openid_client/actions/openid_client/register.php35
-rw-r--r--mod/openid_client/classes/ElggOpenIDConsumer.php238
-rw-r--r--mod/openid_client/graphics/openid_icon.pngbin0 -> 733 bytes-rw-r--r--mod/openid_client/languages/en.php28
-rw-r--r--mod/openid_client/lib/helpers.php114
-rw-r--r--mod/openid_client/manifest.xml (renamed from mod/oauth_api/manifest.xml)22
-rw-r--r--mod/openid_client/return.php69
-rw-r--r--mod/openid_client/start.php78
-rw-r--r--mod/openid_client/upgrade.php12
-rw-r--r--mod/openid_client/upgrades/2012100501.php53
-rw-r--r--mod/openid_client/views/default/core/account/login_box.php24
-rw-r--r--mod/openid_client/views/default/core/account/login_dropdown.php31
-rw-r--r--mod/openid_client/views/default/forms/openid_client/login.php43
-rw-r--r--mod/openid_client/views/default/forms/openid_client/register.php71
-rw-r--r--mod/openid_client/views/default/openid_client/css.php13
-rw-r--r--mod/openid_client/views/default/openid_client/icon.php8
-rw-r--r--mod/openid_client/views/default/openid_client/js.php26
-rw-r--r--mod/openid_client/views/default/openid_client/register.php11
-rw-r--r--mod/openid_server/Crypt/RSA.php524
-rw-r--r--mod/openid_server/Crypt/RSA/ErrorHandler.php234
-rw-r--r--mod/openid_server/Crypt/RSA/Key.php314
-rw-r--r--mod/openid_server/Crypt/RSA/KeyPair.php804
-rw-r--r--mod/openid_server/Crypt/RSA/Math/BCMath.php482
-rw-r--r--mod/openid_server/Crypt/RSA/Math/BigInt.php313
-rw-r--r--mod/openid_server/Crypt/RSA/Math/GMP.php361
-rw-r--r--mod/openid_server/Crypt/RSA/MathLoader.php135
-rwxr-xr-xmod/openid_server/actions/admin.php90
-rwxr-xr-xmod/openid_server/actions/autologin.php52
-rwxr-xr-xmod/openid_server/actions/autologout.php48
-rwxr-xr-xmod/openid_server/actions/trust.php93
-rw-r--r--mod/openid_server/languages/ca.php40
-rwxr-xr-xmod/openid_server/languages/en.php47
-rwxr-xr-xmod/openid_server/languages/es.php40
-rw-r--r--mod/openid_server/languages/gl.php40
-rw-r--r--mod/openid_server/languages/pt.php27
-rwxr-xr-xmod/openid_server/lib/actions.php173
-rwxr-xr-xmod/openid_server/lib/common.php164
-rwxr-xr-xmod/openid_server/lib/session.php140
-rwxr-xr-xmod/openid_server/manifest.xml20
-rwxr-xr-xmod/openid_server/openid_server_include.php340
-rwxr-xr-xmod/openid_server/server.php32
-rwxr-xr-xmod/openid_server/start.php65
-rwxr-xr-xmod/openid_server/views/default/forms/openid_server/trust.php34
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/admin.php154
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/autologin.php22
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/autologout.php24
-rwxr-xr-xmod/openid_server/views/default/openid_server/forms/trust.php35
-rwxr-xr-xmod/openid_server/views/default/openid_server/metatags.php6
-rw-r--r--mod/openid_server/views/xrds/openid_server/profile.php11
-rw-r--r--mod/openid_server/views/xrds/openid_server/service.php15
-rw-r--r--mod/opensearch/README21
-rw-r--r--mod/opensearch/languages/ca.php26
-rw-r--r--mod/opensearch/languages/en.php28
-rw-r--r--mod/opensearch/languages/es.php23
-rw-r--r--mod/opensearch/languages/eu.php11
-rwxr-xr-xmod/opensearch/languages/pl.php11
-rw-r--r--mod/opensearch/manifest.xml16
-rw-r--r--mod/opensearch/start.php33
-rw-r--r--mod/opensearch/views/default/opensearch/includes.php10
-rw-r--r--mod/opensearch/views/default/plugins/opensearch/settings.php97
-rw-r--r--mod/opensearch/views/opensearch_rss/page/default.php42
-rw-r--r--mod/opensearch/views/opensearch_rss/page/layouts/default.php5
-rw-r--r--mod/opensearch/views/opensearch_rss/search/layout.php5
-rw-r--r--mod/opensearch/views/opensearch_rss/search/list.php27
-rw-r--r--mod/opensearch/views/xml/opensearch/description.php75
-rw-r--r--mod/pages/actions/annotations/page/delete.php20
-rw-r--r--mod/pages/actions/pages/delete.php26
-rw-r--r--mod/pages/actions/pages/edit.php30
-rw-r--r--mod/pages/languages/en.php10
-rw-r--r--mod/pages/lib/pages.php60
-rw-r--r--mod/pages/pages/pages/edit.php13
-rw-r--r--mod/pages/pages/pages/friends.php2
-rw-r--r--mod/pages/pages/pages/history.php4
-rw-r--r--mod/pages/pages/pages/owner.php6
-rw-r--r--mod/pages/pages/pages/world.php4
-rw-r--r--mod/pages/start.php49
-rw-r--r--mod/pages/upgrades/2012061800.php49
-rw-r--r--mod/pages/views/default/annotation/page.php18
-rw-r--r--mod/pages/views/default/forms/pages/edit.php17
-rw-r--r--mod/pages/views/default/object/page_top.php26
-rw-r--r--mod/pages/views/default/pages/icon.php2
-rw-r--r--mod/pages/views/default/pages/input/parent.php37
-rw-r--r--mod/pages/views/default/pages/sidebar/history.php1
-rw-r--r--mod/profile/icondirect.php18
-rw-r--r--mod/profile/start.php2
-rw-r--r--mod/profile/views/default/profile/details.php18
-rw-r--r--mod/profile/views/default/profile/metatags.php4
-rw-r--r--mod/profile_widgets/languages/en.php7
-rw-r--r--mod/profile_widgets/languages/es.php7
-rwxr-xr-xmod/profile_widgets/manifest.xml16
-rw-r--r--mod/profile_widgets/start.php13
-rw-r--r--mod/profile_widgets/views/default/widgets/thewirewrite/view.php11
m---------mod/purity_theme7
-rw-r--r--mod/registrationterms/.gitignore3
-rw-r--r--mod/registrationterms/README.md9
-rw-r--r--mod/registrationterms/languages/ca.php6
-rw-r--r--mod/registrationterms/languages/en.php6
-rw-r--r--mod/registrationterms/manifest.xml25
-rw-r--r--mod/registrationterms/screenshots/register-form.pngbin0 -> 8653 bytes-rw-r--r--mod/registrationterms/start.php18
-rw-r--r--mod/registrationterms/views/default/registrationterms/register.php17
-rw-r--r--mod/reportedcontent/views/default/admin/administer_utilities/reportedcontent.php2
-rw-r--r--mod/reportedcontent/views/default/object/reported_content.php20
-rw-r--r--mod/reportedcontent/views/default/widgets/reportedcontent/content.php4
-rw-r--r--mod/river_privacy/CHANGES.txt7
-rw-r--r--mod/river_privacy/README.md4
-rw-r--r--mod/river_privacy/languages/ca.php7
-rw-r--r--mod/river_privacy/languages/en.php13
-rw-r--r--mod/river_privacy/manifest.xml17
-rw-r--r--mod/river_privacy/start.php30
-rw-r--r--mod/river_privacy/views/default/plugins/river_privacy/settings.php17
-rw-r--r--mod/river_privacy/views_override/default/page/components/list.php89
-rw-r--r--mod/search/README.txt2
-rw-r--r--mod/search/pages/search/index.php12
-rw-r--r--mod/search/search_hooks.php197
-rw-r--r--mod/search/start.php6
-rw-r--r--mod/search/views/default/search/comments/entity.php11
-rw-r--r--mod/search/views/default/search/list.php14
-rw-r--r--mod/search/views/default/search/no_results.php2
-rw-r--r--mod/search/views/default/search/search_box.php3
-rw-r--r--mod/search/views/rss/search/comments/entity.php11
m---------mod/simple_faq0
-rw-r--r--mod/simplepie/README19
-rw-r--r--mod/simplepie/actions/simplepie/save_group_feed.php14
-rw-r--r--mod/simplepie/languages/en.php14
-rw-r--r--mod/simplepie/languages/es.php14
-rw-r--r--mod/simplepie/manifest.xml36
-rw-r--r--mod/simplepie/start.php33
-rw-r--r--mod/simplepie/vendors/simplepie.inc15299
-rw-r--r--mod/simplepie/views/default/forms/simplepie/save_group_feed.php39
-rw-r--r--mod/simplepie/views/default/simplepie/css.php17
-rw-r--r--mod/simplepie/views/default/simplepie/group_module.php109
-rw-r--r--mod/simplepie/views/default/widgets/feed_reader/content.php81
-rw-r--r--mod/simplepie/views/default/widgets/feed_reader/edit.php62
-rw-r--r--mod/thewire/actions/delete.php2
-rw-r--r--mod/thewire/pages/thewire/everyone.php2
-rw-r--r--mod/thewire/pages/thewire/friends.php2
-rw-r--r--mod/thewire/pages/thewire/owner.php4
-rw-r--r--mod/thewire/start.php11
-rw-r--r--mod/thewire/upgrades/2012122701-fix_entity_class.php8
-rw-r--r--mod/thewire/views/default/js/thewire.php16
-rw-r--r--mod/thewire/views/default/thewire/css.php3
-rw-r--r--mod/thewire/views/default/thewire/profile_status.php4
-rw-r--r--mod/thewire/views/rss/object/thewire.php2
-rw-r--r--mod/tinymce/README.txt10
-rw-r--r--mod/tinymce/activate.php2
-rw-r--r--mod/tinymce/languages/en.php2
-rw-r--r--mod/tinymce/vendor/tinymce/changelog.txt1414
-rw-r--r--mod/tinymce/vendor/tinymce/examples/full.html4
-rw-r--r--mod/tinymce/vendor/tinymce/examples/lists/media_list.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/en.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js21
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js36
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js58
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js4
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js17
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js41
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js10
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js166
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js38
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js101
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js556
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js20
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/css/props.css1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js22
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/js/props.js80
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/props.htm7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/style/readme.txt19
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js128
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js4
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js17
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js23
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/table/row.htm30
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css21
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js63
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js20
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm8
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js224
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gifbin11790 -> 11982 bytes-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js25
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js674
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js12
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js32
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css5
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css6
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css5
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css7
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js2
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce_src.js9038
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advhr/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advimage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/advlink/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/emotions/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/fullpage/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/media/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/paste/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/searchreplace/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/style/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/table/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/template/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/plugins/xhtmlxtras/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ar_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/az_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/be_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bg_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/br_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/bs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ca_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ch_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cs_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/cy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/da_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/de_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/dv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/el_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/en_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eo_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/es_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/et_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/eu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fa_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/fr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/gu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/he_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/hy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ia_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/id_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/is_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/it_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ja_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ka_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/km_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ko_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/kz_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/lv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ml_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/mn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ms_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/my_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nb_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/nn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/no_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ps_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/pt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ro_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ru_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sc_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/se_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/si_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sl_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sq_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sv_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/sy_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ta_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/te_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/th_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tr_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tt_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/uk_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/ur_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/vi_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-cn_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh-tw_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zh_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/advanced/langs/zu_dlg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ar.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/az.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/be.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bg.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/br.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/bs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ca.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ch.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cs.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/cy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/da.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/de.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/dv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/el.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/en.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/eo.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/es.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/et.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/eu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fa.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/fr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/gl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/gu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/he.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hu.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/hy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ia.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/id.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/is.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/it.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ja.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ka.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/kl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/km.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ko.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/kz.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/lv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/mk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ml.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/mn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ms.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/my.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nb.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/nn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/no.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/pl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ps.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/pt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ro.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ru.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sc.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/se.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/si.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sl.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sq.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sv.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/sy.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ta.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/te.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/th.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tr.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tt.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/uk.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/ur.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/vi.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh-cn.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh-tw.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zh.js1
-rw-r--r--mod/tinymce/vendor/tinymce/jscripts/tinymce_language_pack/themes/simple/langs/zu.js1
-rw-r--r--mod/tinymce/views/default/js/tinymce.php14
m---------mod/translation_editor0
-rw-r--r--mod/twitter/graphics/twitter16px.pngbin724 -> 0 bytes-rw-r--r--mod/twitter/languages/en.php16
-rw-r--r--mod/twitter/start.php14
-rw-r--r--mod/twitter/views/default/widgets/twitter/content.php31
-rw-r--r--mod/twitter/views/default/widgets/twitter/edit.php16
-rw-r--r--mod/twitter_api/languages/en.php4
-rw-r--r--mod/twitter_api/lib/twitter_api.php87
-rw-r--r--mod/twitter_api/manifest.xml10
-rw-r--r--mod/twitter_api/pages/twitter_api/interstitial.php4
-rw-r--r--mod/twitter_api/start.php42
-rw-r--r--mod/twitter_api/vendors/twitteroauth/OAuth.php391
-rw-r--r--mod/twitter_api/vendors/twitteroauth/README117
-rw-r--r--mod/twitter_api/vendors/twitteroauth/twitterOAuth.php20
-rw-r--r--mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php7
-rw-r--r--mod/twitter_api/views/default/plugins/twitter_api/settings.php15
-rw-r--r--mod/twitter_api/views/default/twitter_api/css.php2
-rw-r--r--mod/twitter_api/views/default/twitter_api/js.php16
-rw-r--r--mod/twitter_api/views/default/twitter_api/login.php2
m---------mod/upgrade-tools0
-rw-r--r--mod/uservalidationbyemail/start.php16
-rw-r--r--mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php2
-rw-r--r--mod/videolist/.gitignore15
-rw-r--r--mod/videolist/CHANGES.txt14
-rw-r--r--mod/videolist/actions/videolist/delete.php39
-rw-r--r--mod/videolist/actions/videolist/edit.php107
-rw-r--r--mod/videolist/graphics/_videolist_icon_medium.pngbin0 -> 4391 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_medium.pngbin0 -> 3840 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_small.pngbin0 -> 1960 bytes-rw-r--r--mod/videolist/graphics/videolist_icon_tiny.pngbin0 -> 1295 bytes-rw-r--r--mod/videolist/languages/ca.php40
-rw-r--r--mod/videolist/languages/en.php78
-rw-r--r--mod/videolist/languages/es.php40
-rw-r--r--mod/videolist/languages/fr.php28
-rw-r--r--mod/videolist/languages/gl.php29
-rw-r--r--mod/videolist/languages/pt.php50
-rw-r--r--mod/videolist/lib/Videolist/Platform/Bliptv.php38
-rw-r--r--mod/videolist/lib/Videolist/Platform/Gisstv.php50
-rw-r--r--mod/videolist/lib/Videolist/Platform/Metacafe.php38
-rw-r--r--mod/videolist/lib/Videolist/Platform/Vimeo.php40
-rw-r--r--mod/videolist/lib/Videolist/Platform/Youtube.php49
-rw-r--r--mod/videolist/lib/Videolist/PlatformInterface.php23
-rw-r--r--mod/videolist/lib/videolist.php46
-rw-r--r--mod/videolist/manifest.xml18
-rw-r--r--mod/videolist/pages/videolist/add.php39
-rw-r--r--mod/videolist/pages/videolist/all.php34
-rw-r--r--mod/videolist/pages/videolist/edit.php49
-rw-r--r--mod/videolist/pages/videolist/friends.php33
-rw-r--r--mod/videolist/pages/videolist/owner.php54
-rw-r--r--mod/videolist/pages/videolist/watch.php42
-rw-r--r--mod/videolist/start.php328
-rw-r--r--mod/videolist/thumbnail.php64
-rw-r--r--mod/videolist/upgrades/2012022501.php82
-rw-r--r--mod/videolist/views/default/forms/videolist/edit.php55
-rw-r--r--mod/videolist/views/default/icon/object/videolist_item.php47
-rw-r--r--mod/videolist/views/default/object/videolist_item.php108
-rw-r--r--mod/videolist/views/default/page/elements/videolist_block.php36
-rw-r--r--mod/videolist/views/default/river/object/videolist_item/create.php15
-rw-r--r--mod/videolist/views/default/videolist/css.php23
-rw-r--r--mod/videolist/views/default/videolist/group_module.php43
-rw-r--r--mod/videolist/views/default/videolist/sidebar.php28
-rw-r--r--mod/videolist/views/default/videolist/watch.php8
-rw-r--r--mod/videolist/views/default/videolist/watch/bliptv.php6
-rw-r--r--mod/videolist/views/default/videolist/watch/gisstv.php7
-rw-r--r--mod/videolist/views/default/videolist/watch/metacafe.php6
-rw-r--r--mod/videolist/views/default/videolist/watch/vimeo.php5
-rw-r--r--mod/videolist/views/default/videolist/watch/youtube.php5
-rw-r--r--mod/videolist/views/default/widgets/videolist/content.php32
-rw-r--r--mod/videolist/views/default/widgets/videolist/edit.php24
-rw-r--r--mod/videolist/views/rss/object/videolist_item.php47
-rw-r--r--pages/account/forgotten_password.php11
-rw-r--r--pages/account/login.php14
-rw-r--r--pages/account/register.php11
-rw-r--r--pages/account/reset_password.php11
-rw-r--r--pages/avatar/edit.php5
-rw-r--r--pages/avatar/view.php2
-rw-r--r--pages/river.php1
-rw-r--r--pages/settings/account.php3
-rw-r--r--pages/settings/statistics.php3
-rw-r--r--pages/settings/tools.php5
-rwxr-xr-xsubtree.sh20
-rw-r--r--upgrade.php15
-rw-r--r--vendors/jquery/i18n/jquery-ui-i18n.js1646
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-af.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ar-DZ.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ar.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-az.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-bg.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-bs.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ca.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-cs.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-cy-GB.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-da.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-de.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-el.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-AU.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-GB.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-en-NZ.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-eo.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-es.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-et.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-eu.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fa.js59
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fo.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fr-CH.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-fr.js25
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-gl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-he.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hu.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-hy.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-id.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-is.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-it.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ja.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ka.js21
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-kk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-km.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ko.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lb.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lt.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-lv.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-mk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ml.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ms.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-nl-BE.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-nl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-no.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pl.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pt-BR.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-pt.js22
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-rm.js21
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ro.js26
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ru.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sk.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sl.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sq.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sr-SR.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-sv.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-ta.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-th.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-tj.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-tr.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-uk.js24
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-vi.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-CN.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-HK.js23
-rw-r--r--vendors/jquery/i18n/jquery.ui.datepicker-zh-TW.js23
-rw-r--r--version.php6
-rw-r--r--views/default/admin/appearance/profile_fields.php12
-rw-r--r--views/default/admin/settings/advanced/site_secret.php11
-rw-r--r--views/default/admin/users/admins.php12
-rw-r--r--views/default/annotation/generic_comment.php4
-rw-r--r--views/default/core/settings/statistics/numentities.php2
-rw-r--r--views/default/core/settings/statistics/online.php11
-rw-r--r--views/default/css/admin.php57
-rw-r--r--views/default/css/elements/forms.php5
-rw-r--r--views/default/css/elements/layout.php2
-rw-r--r--views/default/css/elements/modules.php2
-rw-r--r--views/default/css/elements/navigation.php7
-rw-r--r--views/default/css/elements/typography.php3
-rw-r--r--views/default/css/ie.php8
-rw-r--r--views/default/css/ie7.php12
-rw-r--r--views/default/forms/admin/site/regenerate_secret.php24
-rw-r--r--views/default/forms/admin/site/update_advanced.php31
-rw-r--r--views/default/forms/plugins/settings/save.php6
-rw-r--r--views/default/forms/profile/edit.php16
-rw-r--r--views/default/forms/profile/fields/add.php2
-rw-r--r--views/default/forms/profile/fields/reset.php12
-rw-r--r--views/default/forms/register.php2
-rw-r--r--views/default/forms/user/passwordreset.php2
-rw-r--r--views/default/icon/default.php30
-rw-r--r--views/default/input/longtext.php2
-rw-r--r--views/default/input/plaintext.php2
-rw-r--r--views/default/input/pulldown.php2
-rw-r--r--views/default/input/text.php1
-rw-r--r--views/default/input/userpicker.php8
-rw-r--r--views/default/js/admin.php11
-rw-r--r--views/default/js/elgg.php6
-rw-r--r--views/default/js/initialize_elgg.php1
-rw-r--r--views/default/js/languages.php28
-rw-r--r--views/default/js/lightbox.php4
-rw-r--r--views/default/js/walled_garden.php33
-rw-r--r--views/default/object/default.php1
-rw-r--r--views/default/object/elements/full.php4
-rw-r--r--views/default/object/elements/summary.php2
-rw-r--r--views/default/object/plugin/elements/dependencies.php2
-rw-r--r--views/default/object/plugin/full.php28
-rw-r--r--views/default/output/access.php2
-rw-r--r--views/default/output/email.php4
-rw-r--r--views/default/output/longtext.php2
-rw-r--r--views/default/output/tag.php17
-rw-r--r--views/default/output/tagcloud.php2
-rw-r--r--views/default/output/tags.php19
-rw-r--r--views/default/page/components/list.php15
-rw-r--r--views/default/page/default.php8
-rw-r--r--views/default/page/elements/comments.php3
-rw-r--r--views/default/page/elements/head.php6
-rw-r--r--views/default/page/elements/messages.php2
-rw-r--r--views/default/page/layouts/widgets.php1
-rw-r--r--views/default/page/layouts/widgets/add_panel.php9
-rw-r--r--views/default/page/walled_garden.php15
-rw-r--r--views/default/river/elements/image.php6
-rw-r--r--views/default/river/elements/summary.php3
-rw-r--r--views/default/widgets/control_panel/content.php26
-rw-r--r--views/installation/install/js_rewrite_check.php12
-rw-r--r--views/installation/install/pages/admin.php2
-rw-r--r--views/installation/install/pages/complete.php2
-rw-r--r--views/installation/install/pages/database.php4
-rw-r--r--views/installation/install/pages/requirements.php8
-rw-r--r--views/installation/install/pages/settings.php2
-rw-r--r--views/installation/install/pages/welcome.php2
-rw-r--r--views/installation/page/elements/messages.php2
-rw-r--r--views/opendd/messages/exceptions/exception.php2
-rw-r--r--views/rss/group/default.php4
-rw-r--r--views/rss/object/default.php2
-rw-r--r--views/rss/page/default.php2
-rw-r--r--views/rss/user/default.php2
-rw-r--r--views/xml/messages/exceptions/exception.php2
7972 files changed, 430932 insertions, 19781 deletions
diff --git a/.gitignore b/.gitignore
index c0bba2c6c..2303faa0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# ignore Elgg configuration
/engine/settings.php
+/engine/handlers/views_simplecache/*
/.htaccess
/mod/*
@@ -19,6 +20,7 @@
!/mod/htmlawed/
!/mod/invitefriends/
!/mod/likes/
+!/mod/linkup/
!/mod/logbrowser/
!/mod/logrotate/
!/mod/members/
@@ -38,7 +40,7 @@
!/mod/uservalidationbyemail/
!/mod/zaudio/
-# ignore IDE/hidden/OS cache files
+# ignore IDE/hidden/testing/OS cache files
.*
*~
/nbproject
@@ -49,6 +51,7 @@ Session.vim
tmtags
Thumbs.db
Desktop.ini
+/JsTestDriver-*.jar
# don't ignore travis config
!/.travis.yml
diff --git a/.tx/config b/.tx/config
new file mode 100644
index 000000000..b1600d70c
--- /dev/null
+++ b/.tx/config
@@ -0,0 +1,501 @@
+[main]
+host = https://www.transifex.com
+
+[lorea.engine]
+file_filter = languages/<lang>.php
+source_file = languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.blog]
+file_filter = mod/blog/languages/<lang>.php
+source_file = mod/blog/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.bookmarks]
+file_filter = mod/bookmarks/languages/<lang>.php
+source_file = mod/bookmarks/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.categories]
+file_filter = mod/categories/languages/<lang>.php
+source_file = mod/categories/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.ckeditor]
+file_filter = mod/ckeditor/languages/<lang>.php
+source_file = mod/ckeditor/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.custom_index]
+file_filter = mod/custom_index/languages/<lang>.php
+source_file = mod/custom_index/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.dashboard]
+file_filter = mod/dashboard/languages/<lang>.php
+source_file = mod/dashboard/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.developers]
+file_filter = mod/developers/languages/<lang>.php
+source_file = mod/developers/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.diagnostics]
+file_filter = mod/diagnostics/languages/<lang>.php
+source_file = mod/diagnostics/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.embed]
+file_filter = mod/embed/languages/<lang>.php
+source_file = mod/embed/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.externalpages]
+file_filter = mod/externalpages/languages/<lang>.php
+source_file = mod/externalpages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.file]
+file_filter = mod/file/languages/<lang>.php
+source_file = mod/file/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.garbagecollector]
+file_filter = mod/garbagecollector/languages/<lang>.php
+source_file = mod/garbagecollector/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.groups]
+file_filter = mod/groups/languages/<lang>.php
+source_file = mod/groups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.invitefriends]
+file_filter = mod/invitefriends/languages/<lang>.php
+source_file = mod/invitefriends/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.likes]
+file_filter = mod/likes/languages/<lang>.php
+source_file = mod/likes/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.logbrowser]
+file_filter = mod/logbrowser/languages/<lang>.php
+source_file = mod/logbrowser/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.logrotate]
+file_filter = mod/logrotate/languages/<lang>.php
+source_file = mod/logrotate/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.members]
+file_filter = mod/members/languages/<lang>.php
+source_file = mod/members/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.messageboard]
+file_filter = mod/messageboard/languages/<lang>.php
+source_file = mod/messageboard/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.messages]
+file_filter = mod/messages/languages/<lang>.php
+source_file = mod/messages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.notifications]
+file_filter = mod/notifications/languages/<lang>.php
+source_file = mod/notifications/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.pages]
+file_filter = mod/pages/languages/<lang>.php
+source_file = mod/pages/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.profile]
+file_filter = mod/profile/languages/<lang>.php
+source_file = mod/profile/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.reportedcontent]
+file_filter = mod/reportedcontent/languages/<lang>.php
+source_file = mod/reportedcontent/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.search]
+file_filter = mod/search/languages/<lang>.php
+source_file = mod/search/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tagcloud]
+file_filter = mod/tagcloud/languages/<lang>.php
+source_file = mod/tagcloud/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.thewire]
+file_filter = mod/thewire/languages/<lang>.php
+source_file = mod/thewire/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.twitter]
+file_filter = mod/twitter/languages/<lang>.php
+source_file = mod/twitter/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.twitter_api]
+file_filter = mod/twitter_api/languages/<lang>.php
+source_file = mod/twitter_api/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.uservalidationbyemail]
+file_filter = mod/uservalidationbyemail/languages/<lang>.php
+source_file = mod/uservalidationbyemail/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.install]
+file_filter = install/languages/<lang>.php
+source_file = install/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.admins]
+file_filter = mod/admins/languages/<lang>.php
+source_file = mod/admins/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.assemblies]
+file_filter = mod/assemblies/languages/<lang>.php
+source_file = mod/assemblies/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elggman]
+file_filter = mod/elggman/languages/<lang>.php
+source_file = mod/elggman/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.autosubscribegroup]
+file_filter = mod/autosubscribegroup/languages/<lang>.php
+source_file = mod/autosubscribegroup/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.beechat]
+file_filter = mod/beechat/languages/<lang>.php
+source_file = mod/beechat/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.captcha]
+file_filter = mod/captcha/languages/<lang>.php
+source_file = mod/captcha/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.cic_theme]
+file_filter = mod/cic_theme/languages/<lang>.php
+source_file = mod/cic_theme/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.colorbox]
+file_filter = mod/colorbox/languages/<lang>.php
+source_file = mod/colorbox/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.crud]
+file_filter = mod/crud/languages/<lang>.php
+source_file = mod/crud/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.curatedgroups]
+file_filter = mod/curatedgroups/languages/<lang>.php
+source_file = mod/curatedgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.custom_index_widgets]
+file_filter = mod/custom_index_widgets/languages/<lang>.php
+source_file = mod/custom_index_widgets/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.dokuwiki]
+file_filter = mod/dokuwiki/languages/<lang>.php
+source_file = mod/dokuwiki/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-activitystreams]
+file_filter = mod/elgg-activitystreams/languages/<lang>.php
+source_file = mod/elgg-activitystreams/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-ostatus]
+file_filter = mod/elgg-ostatus/languages/<lang>.php
+source_file = mod/elgg-ostatus/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elggpg]
+file_filter = mod/elggpg/languages/<lang>.php
+source_file = mod/elggpg/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.elgg-push]
+file_filter = mod/elgg-push/languages/<lang>.php
+source_file = mod/elgg-push/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.email_revalidate]
+file_filter = mod/email_revalidate/languages/<lang>.php
+source_file = mod/email_revalidate/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.etherpad]
+file_filter = mod/etherpad/languages/<lang>.php
+source_file = mod/etherpad/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.favorites]
+file_filter = mod/favorites/languages/<lang>.php
+source_file = mod/favorites/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.federated-objects]
+file_filter = mod/federated-objects/languages/<lang>.php
+source_file = mod/federated-objects/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.friendrequest]
+file_filter = mod/friendrequest/languages/<lang>.php
+source_file = mod/friendrequest/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.gifts]
+file_filter = mod/gifts/languages/<lang>.php
+source_file = mod/gifts/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.group_alias]
+file_filter = mod/group_alias/languages/<lang>.php
+source_file = mod/group_alias/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.group_operators]
+file_filter = mod/group_operators/languages/<lang>.php
+source_file = mod/group_operators/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.identica]
+file_filter = mod/identica/languages/<lang>.php
+source_file = mod/identica/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.infinite_scroll]
+file_filter = mod/infinite_scroll/languages/<lang>.php
+source_file = mod/infinite_scroll/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.landing]
+file_filter = mod/landing/languages/<lang>.php
+source_file = mod/landing/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.lightpics]
+file_filter = mod/lightpics/languages/<lang>.php
+source_file = mod/lightpics/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.linkup]
+file_filter = mod/linkup/languages/<lang>.php
+source_file = mod/linkup/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.livestream]
+file_filter = mod/livestream/languages/<lang>.php
+source_file = mod/livestream/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.microthemes]
+file_filter = mod/microthemes/languages/<lang>.php
+source_file = mod/microthemes/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.n1_theme]
+file_filter = mod/n1_theme/languages/<lang>.php
+source_file = mod/n1_theme/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.openid_client]
+file_filter = mod/openid_client/languages/<lang>.php
+source_file = mod/openid_client/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.opensearch]
+file_filter = mod/opensearch/languages/<lang>.php
+source_file = mod/opensearch/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.profile_widgets]
+file_filter = mod/profile_widgets/languages/<lang>.php
+source_file = mod/profile_widgets/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.proposals]
+file_filter = mod/proposals/languages/<lang>.php
+source_file = mod/proposals/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.registrationterms]
+file_filter = mod/registrationterms/languages/<lang>.php
+source_file = mod/registrationterms/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.relatedgroups]
+file_filter = mod/relatedgroups/languages/<lang>.php
+source_file = mod/relatedgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.river_privacy]
+file_filter = mod/river_privacy/languages/<lang>.php
+source_file = mod/river_privacy/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.simple_faq]
+file_filter = mod/simple_faq/languages/<lang>.php
+source_file = mod/simple_faq/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.simplepie]
+file_filter = mod/simplepie/languages/<lang>.php
+source_file = mod/simplepie/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.spotlight]
+file_filter = mod/spotlight/languages/<lang>.php
+source_file = mod/spotlight/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.subgroups]
+file_filter = mod/subgroups/languages/<lang>.php
+source_file = mod/subgroups/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.suicide]
+file_filter = mod/suicide/languages/<lang>.php
+source_file = mod/suicide/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tasks]
+file_filter = mod/tasks/languages/<lang>.php
+source_file = mod/tasks/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.threads]
+file_filter = mod/threads/languages/<lang>.php
+source_file = mod/threads/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.tinymce]
+file_filter = mod/tinymce/languages/<lang>.php
+source_file = mod/tinymce/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.uservalidationbyadmin]
+file_filter = mod/uservalidationbyadmin/languages/<lang>.php
+source_file = mod/uservalidationbyadmin/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.videolist]
+file_filter = mod/videolist/languages/<lang>.php
+source_file = mod/videolist/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.openid_server]
+file_filter = mod/openid_server/languages/<lang>.php
+source_file = mod/openid_server/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
+[lorea.event_calendar]
+file_filter = mod/event_calendar/languages/<lang>.php
+source_file = mod/event_calendar/languages/en.php
+source_lang = en
+type = PHP_ARRAY
+
diff --git a/CHANGES.txt b/CHANGES.txt
index b502b8411..f6974a3ae 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,332 @@
+Version 1.8.18
+(January 11, 2014 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Juho Jaakkola
+ * Steve Clay
+
+ Bugfixes:
+ * Fixes notify_user() broken in 1.8.17
+
+
+Version 1.8.17
+(January 1, 2014 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Ed Lyons
+ * Evan Winslow
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Juho Jaakkola
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Fixes:
+ * Specially-crafted request could return the contents of sensitive files.
+ * Reflected XSS attack was possible against 1.8 systems.
+ * The cryptographic key used for various purposes may have been generated with weak entropy, particularly on Windows.
+
+ Bugfixes:
+ * URLs with non-ASCII usernames again work
+ * Floated images are now properly cleared in content areas
+ * The activity page title now matches the document title
+ * Search again supports multiple comments on the same entity
+ * Blog archive sidebar now reverse chronological
+ * URLs with matching parens can now be auto-linked
+ * Log browser links for users now work
+ * Disabling over 50 objects should no longer result in an infinite loop
+ * Radio/checkbox inputs no longer have border radius (for IE10)
+ * User picker: the Only Friends checkbox again works
+ * Group bookmarklet no longer shown to non-members
+ * Widget reordering fixed when moving across columns
+ * Refuse to deactivate plugins needed as dependencies
+
+ Enhancements:
+ * Group member listings are ordered by name
+ * The system_log table can now store IPv6 addresses
+ * Web services auth_gettoken() now accepts email address
+ * List functions: no need to specify pagination for unlimited queries
+ * Htmlawed was upgraded to 1.1.16
+
+
+Version 1.8.16
+(June 25, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Jeff Tilson
+ * Jerome Bakker
+ * Paweł Sroka
+ * Steve Clay
+
+ Security Fixes:
+ * Fixed avatar removal bug (thanks to Jerome Bakker for the first report of this)
+
+ Bugfixes:
+ * Fixed infinite loop when deleting/disabling an entity with > 50 annotations
+ * Fixed deleting log tables in log rotate plugin
+ * Added full text index for groups if missing
+ * Added workaround for IE8 and jumping user avatar
+ * Fixed pagination for members pages
+ * Fixed several internal cache issues
+ * Plus many more bug fixes
+
+
+Version 1.8.15
+(April 23, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Cash Costello
+ * Ismayil Khayredinov
+ * Jeff Tilson
+ * Juho Jaakkola
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+ * Tom Voorneveld
+
+ Bugfixes:
+ * Not displaying http:// on profiles when website isn't set
+ * Fixed pagination display issue for small screens
+ * Not hiding subpages of top level pages that have been deleted
+ * Stop corrupting JavaScript views with elgg deprecation messages
+ * Fixed out of memory error due to query cache
+ * Fixed bug preventing users authorizing Twitter account access
+ * Fixed friends access level for editing pages
+ * Fixed uploading files within the embed dialog
+
+ Enhancements:
+ * Added browser caching of language JS files
+ * Adding nofollow on user posted URLs for spam deterrence (thanks to Hellekin)
+ * Auto-registering views for simplecache when their URL is requested
+ * Display helpful message for those who have site URL configuration issues
+ * Can revert to a previous revision with pages plugin
+ * Site owners can turn off posting wire messages to Twitter
+ * Search results are sorted by relevance
+
+ Dropped Plugins:
+ * Twitter widget due to changes in Twitter API and terms of service
+ * OAuth API plugin due to conflicts with the Twitter API plugin
+
+
+Version 1.8.14
+(March 12, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Aday Talavera
+ * Brett Profitt
+ * Cash Costello
+ * Ed Lyons
+ * German Bortoli
+ * Hellekin Wolf
+ * iionly
+ * Jerome Bakker
+ * Luciano Lima
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Fixes:
+ * Fixed a XSS vulnerability when accepting URLs on user profiles
+ * Fixed bug that exposed subject lines of messages in inbox
+ * Added requirement for CSRF token for login
+
+ Bugfixes:
+ * Strip html tags from tag input
+ * Fixed several display issues for IE7
+ * Fixed several issues with blog drafts
+ * Fixed repeated token timeout errors
+ * Fixed JavaScript localization for non-English languages
+
+ Enhancements:
+ * Web services fall back to json if the viewtype is invalid
+
+
+Version 1.8.13
+(January 29, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Cash Costello
+ * Juho Jaakkola
+ * Kevin Jardine
+ * Krzysztof Różalski
+ * Steve Clay
+
+ Security Fixes:
+ * Added validation of Twitter usernames in Twitter widget
+
+ Bugfixes:
+ * CLI usages with walled garden fixed
+ * Upgrading from < 1.8 to 1.8 fixed
+ * Default widgets fixed
+ * Quotes in object titles no longer result in "qout" in URLs
+ * List of my groups is ordered now
+ * Language string river:comment:object:default is defined now
+ * Added language string for comments: generic_comment:on
+
+ Enhancements:
+ * Added confirm dialog for resetting profile fields (adds language string profile:resetdefault:confirm)
+
+
+Version 1.8.12
+(January 4th, 2013 from https://github.com/Elgg/Elgg/tree/1.8)
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Jerome Bakker
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Bugfixes:
+ * Added an AJAX workaround for the rewrite test.
+ * Code cleanup to prevent some notices and warnings.
+ * Removed "original_order" in menu item anchor tags.
+ * Site menu's selected item correctly persists through content pages.
+ * Static caches rewritten and improved to prevent stale data being returned.
+ * Installation: Invalid characters in admin username are handled correctly.
+ * Messages: Fixed inbox link in email notifications.
+ * The Wire: Fixed objects not displaying correctly when upgrading from 1.7.
+
+ Enhancements:
+ * Performance improvements and improved caching in entity loading.
+ * Added upgrade locking to prevent concurrent upgrade attempts.
+ * Replaced xml_to_object() and autop() with GPL / MIT-compatible code.
+ * Error messages (register_error()) only fade after being clicked.
+ * Groups: Added a sidebar entry to display membership status and a link to
+ group notification settings.
+ * Groups: Added pending membership and invitation requests to the sidebar.
+ * Groups: Better redirection for invisible and closed groups.
+ * Search: User profile fields are searched.
+ * Pages: Subpages can be reassigned to new parent pages.
+ * Twitter: Login with twitter supports persistent login and correctly forwards
+ after login.
+
+
+Version 1.8.11
+(December 5th, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Bugfix:
+ * Fixed fatal error in group creation form
+
+
+Version 1.8.10
+(December 4th, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Krzysztof Różalski
+ * Lars Hærvig
+ * Paweł Sroka
+ * RiverVanRain
+ * Sem
+ * Steve Clay
+
+ Security Enhancements:
+ * Cached metadata respects access restrictions to fix problems with profile
+ field display.
+ * Group RSS feeds are restricted to valid entities
+
+ Enhancements:
+ * UX: Added a list of Administrators in the admin area
+ * UX: Limiting message board activity stream entries to excerpts
+ * Performance: Prefetching river entries
+ * Performance: Plugin entities are cached
+
+ Bugfixes:
+ * Removed superfluous commas in JS files to fix IE compatibility.
+ * API: Fixed Twitter API.
+ * Performance: Outputting valid ETags and expires headers.
+
+
+Version 1.8.9
+(November 11, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Brett Profitt
+ * Cash Costello
+ * Evan Winslow
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Matt Beckett
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Security Enhancements:
+ * Sample CLI installer cannot break site
+ * Removed XSS vulnerabilities in titles and user profiles
+
+ Enhancements:
+ * UX: A group's owner can transfer ownership to another member
+ * UX: Search queries persist in the search box
+ * Several (X)HTML validation improvements
+ * Improved performance via more aggressive entity and metadata caching
+ * BC: 1.7 group profile URLs forward correctly
+
+ Bugfixes:
+ * UX: Titles containing HTML tokens are never mangled
+ * UX: Empty user profile values saved properly
+ * UX: Blog creator always mentioned in activity stream (not user who published it)
+ * UI: Fixed ordering of registered menu items in some cases
+ * UI: Embed dialog does not break file inputs
+ * UI: Datepicker now respects language
+ * UI: More reliable display of access input in widgets
+ * UI: Group edit form is sticky
+ * UI: Site categories are sticky in forms
+ * API: Language fallback works in Javascript
+ * API: Fallback to default viewtype if invalid one given
+ * API: Notices reported for missing language keys
+ * Memcache now safe to use; never bypasses access control
+ * BC: upgrade shows comments consistently in activity stream
+
+
+Version 1.8.8
+(July 11, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Cash Costello
+ * Miguel Rodriguez
+ * Sem
+
+ Enhancements:
+ * Added a delete button on river items for admins
+
+ Bugfixes:
+ * Fixed the significant bug with htmlawed plugin that caused duplicate tags
+
+
+Version 1.8.7
+(July 10, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
+
+ Contributing Developers:
+ * Cash Costello
+ * Evan Winslow
+ * Ismayil Khayredinov
+ * Jeroen Dalsem
+ * Jerome Bakker
+ * Matt Beckett
+ * Miguel Rodriguez
+ * Paweł Sroka
+ * Sem
+ * Steve Clay
+
+ Enhancements:
+ * Better support for search engine friendly URLs
+ * Upgraded htmlawed (XSS filtering)
+ * Internationalization support for TinyMCE
+ * Public access not available for walled gardens
+ * Better forwarding and messages when they cannot view content because logged out
+
+ Bugfixes:
+ * Fatal errors due to type hints downgraded to warnings
+ * Group discussion reply notifications work again
+ * Sending user to inbox when deleting a message
+ * Fixed location profile information when it is an array
+ * Over 30 other bug fixes.
+
+
Version 1.8.6
(June 18, 2012 from https://github.com/Elgg/Elgg/tree/1.8)
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 0163757e7..a8e74d3a4 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -1,6 +1,7 @@
The following have made notable contributions to the Elgg Project.
(List in alphabetical order.)
+Steve Clay - http://www.mrclay.org/, https://twitter.com/mrclay_org
Cash Costello - cash@elgg.org, http://cashcostello.com/
@@ -20,10 +21,10 @@ Tom Read - MITRE http://mitre.org/
Justin Richer - MITRE http://mitre.org/
-Dave Tosh - davidgtosh@gmail.com, http://twitter.com/davetosh
+Dave Tosh - davidgtosh@gmail.com, http://twitter.com/davetosh
Ben Werdmuller - http://benwerd.com/
-Nicholas Whitt - nick.whitt@gmail.com, http://twitter.com/nogoodnick
+Nicholas Whitt - nick.whitt@gmail.com, http://twitter.com/nogoodnick
Evan Winslow - evan@elgg.org, http://evanwinslow.com/
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 76781f25a..262515386 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -6,6 +6,7 @@ The MITRE Corportation (jricher@mitre.org)
Curverider Ltd (info@elgg.com)
Individuals:
+Steve Clay (steve@mrclay.org)
Cash Costello (cash.costello@gmail.com)
Brett Profitt (brett.profitt@gmail.com)
Dave Tosh (davidgtosh@gmail.com)
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 000000000..6fae5746c
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,39510 @@
+2012-04-24 Brett Profitt <brett.profitt@gmail.com>
+
+ * CHANGES.txt, version.php: Version bump. Updated changes.
+
+ * mod/groups/views/default/group/default.php: Fixed group entity display in
+ full_view.
+
+ * views/default/river/elements/summary.php: Fixes #4339. Checking for
+ river:$action:$type in addition to river:$action:$type:$subtype.
+
+ * engine/lib/sessions.php, engine/lib/web_services.php: Fixed problem in web
+ services where users with incorrect passwords could gain an access token.
+
+ * actions/admin/site/update_advanced.php, languages/en.php: Fixes #4324. Not
+ allowing relative paths for dataroot in advance settings.
+
+ * engine/lib/relationships.php: Fixes #4409. Selecting distinct across
+ entities.* and entity_relationships.id instead of r.* so entities loaded via
+ elgg_get_entities_from_relationship() have the correct time_created.
+
+2012-04-22 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/thewire/pages/thewire/owner.php: Fixes #4452. Passing the correct
+ filter context in the wire's owner page.
+
+ * views/default/object/plugin.php: Fixes #4439. Redirecting if trying to
+ view a plugin object outside of admin.
+
+2012-04-18 Brett Profitt <brett.profitt@gmail.com>
+
+ * ...1.8.3-multiple_user_tokens-852225f7fd89f6c5.php, version.php: Fixes
+ #4291. Removing the unique index on user and site guids in the
+ users_apisessions table.
+
+ * actions/login.php, actions/register.php, actions/useradd.php,
+ ....8.3-dont_filter_passwords-c0ca4a18b38ae2bc.php,
+ engine/lib/user_settings.php,
+ .../actions/twitter_api/interstitial_settings.php, version.php: Fixes #1301.
+ Not filtering passwords.
+
+2012-04-16 Steve Clay <steve@mrclay.org>
+
+ * engine/lib/users.php: Fixes #4414: Corrected name of river friend create
+ view
+
+ * mod/thewire/start.php: Fixes #4413: Removes deprecated call to
+ get_loggedin_user
+
+2012-04-15 Evan Winslow <evan@elgg.org>
+
+ * mod/likes/views/default/likes/button.php: Removes superfluous array
+ declaration
+
+2012-03-25 Evan Winslow <evan@elgg.org>
+
+ * mod/pages/start.php: Fixes #4419: Pages icons now work with all sizes
+
+ * views/default/icon/default.php: Refs #1279: Specifying image dimensions in
+ icon/default view.
+
+2012-03-15 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/classes/ElggSite.php: Fixes #4394. Added cron and services URLs to
+ the default public pages list for walled garden.
+
+2012-03-02 Evan Winslow <evan@elgg.org>
+
+ * views/default/css/admin.php: Adds fixed-width font for pre + code in admin
+ area
+
+2012-02-22 Evan Winslow <evan@elgg.org>
+
+ * .travis.yml: The travis-ci build should only run against master now.
+
+2012-02-13 Evan Winslow <evan@elgg.org>
+
+ * .travis.yml: Adds trivial .travis.yml config so we can get started
+ building.
+
+2012-02-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/output.php, engine/tests/regression/trac_bugs.php: Fixes #3210.
+ Keeping -s in URL friendly titles.
+
+ * engine/classes/ElggPluginManifest.php, views/default/admin/plugins.php,
+ views/default/css/admin.php, views/default/object/plugin/full.php: Fixes
+ #3312, #3632. Added class elgg-plugin-category-<category> to the plugin div.
+ Exposed plugin categories under more. Changed border color and size for
+ bundled categories.
+
+ * mod/search/pages/search/index.php, mod/search/search_hooks.php,
+ mod/search/start.php: Fixes #3550. Merged slightly modified pull request 166
+ from sembrestels.
+
+2012-02-21 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/groups/languages/en.php, mod/groups/start.php: Refs #4335. Updated
+ discussion notifications.
+
+ * mod/blog/languages/en.php, mod/blog/start.php,
+ mod/bookmarks/languages/en.php, mod/bookmarks/start.php,
+ mod/file/languages/en.php, mod/file/start.php, mod/pages/languages/en.php,
+ mod/pages/start.php: Fixes #4335. Cleaned up the notifications for new
+ content.
+
+2012-02-11 Cash Costello <cash.costello@gmail.com>
+
+ * mod/externalpages/start.php, .../views/default/expages/wrapper.php,
+ views/default/css/walled_garden.php: external pages plugin uses walled garden
+ layout when appropriate
+
+2012-02-10 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * views/default/forms/login.php, views/default/forms/register.php: passing
+ to extending views
+
+2012-02-10 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/elgglib.php, views/default/js/walled_garden.php,
+ views/default/page/layouts/walled_garden.php: updated the walled garden js to
+ use new js lib
+
+ * engine/classes/ElggSite.php, engine/lib/elgglib.php,
+ views/default/core/walled_garden/body.php,
+ views/default/core/walled_garden/login.php,
+ views/default/core/walled_garden/lost_password.php,
+ views/default/core/walled_garden/register.php,
+ views/default/js/walled_garden.php,
+ views/default/page/layouts/walled_garden.php: new layout and ajax loading for
+ walled garden
+
+2012-02-09 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggWidget.php: Fixes #4283 moving widgets from inactive
+ plugins to the bottom of columns
+
+ * engine/lib/views.php: Fixes #2625 removed old hack from
+ elgg_view_annotation()
+
+ * engine/lib/group.php: Fixes #4361 corrects forwarding logic for closed
+ groups
+
+ * mod/groups/lib/groups.php: Fixes #4362 extra context was breaking group
+ sidebar menu logic
+
+ * languages/en.php, pages/friends/index.php, pages/friends/of.php,
+ pages/river.php: Fixes #2942 all list pages should have messages when no
+ content now
+
+2012-02-08 Cash Costello <cash.costello@gmail.com>
+
+ * mod/pages/manifest.xml: Fixes #3678 adds better description of pages
+ plugin
+
+ * actions/friends/add.php, languages/en.php: Fixes #4348 adds check for
+ missing user when friending
+
+ * .../views/default/theme_preview/components.php,
+ .../default/theme_preview/components/table.php,
+ views/default/css/elements/components.php: Fixes #4357, #4358 updates
+ .elgg-table-alt
+
+2012-02-03 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * actions/avatar/crop.php, pages/avatar/edit.php: Fixes #4350 (Edit Avatar -
+ Crop button is misleading, should be hidden if avatar hasn't been created
+ yet)
+
+2012-02-07 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/plugins.php, languages/en.php: Fixes #3613 added system message
+ for admins when plugins are disabled
+
+ * engine/lib/metadata.php: Fixes #1043 tags retain their case
+
+2012-02-04 cash <cash.costello@gmail.com>
+
+ * mod/messageboard/actions/delete.php,
+ mod/messageboard/views/default/messageboard/js.php: Fixes #4354 fixes
+ messageboard delete
+
+ * mod/thewire/start.php: removed some old code from thewire
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggObject.php, engine/classes/ElggSite.php,
+ engine/classes/ElggUser.php: Fixes #2112 not loading data from entities table
+ twice
+
+ * mod/thewire/start.php, mod/thewire/tests/regex.php: Fixes #1853 matching
+ UTF8 characters in usernames
+
+ * mod/blog/languages/en.php, mod/blog/start.php: Fixes #4310 adds missing
+ blog notification function
+
+2012-01-27 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * engine/lib/cache.php: lazy boolean expression evaluation leaves function
+ expressions unevaluated (!)
+
+ * engine/lib/configuration.php: response from insert_data needs to be
+ checked for !== FALSE
+
+2012-01-27 Team Webgalli <webgalli@gmail.com>
+
+ * views/default/widgets/friends/content.php: Removed pagination from friends
+ widget
+
+2012-02-03 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/users.php: improved documentation for get_user_by_email()
+
+2012-02-01 cash <cash.costello@gmail.com>
+
+ * engine/lib/languages.php, engine/lib/plugins.php: fixed logic that caused
+ plugin language files to not be loaded
+
+2012-01-30 cash <cash.costello@gmail.com>
+
+ * install/ElggInstaller.php, install/languages/en.php: Refs #4324 installer
+ checks for absolute path
+
+ * install/ElggInstaller.php: Fixes #4342 updated the installer based on boot
+ reorg - no longer need caching code in installer
+
+ * engine/lib/plugins.php: fixed typo in plugin code
+
+ * install/languages/en.php, views/installation/install/nav.php: added
+ language strings to installer for refresh and next
+
+2012-01-28 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/cache.php: Refs #4180 was caching extensions which was causing
+ double extensions
+
+ * mod/thewire/actions/add.php: replaced deprecated function call in the wire
+ plugin
+
+ * engine/lib/views.php: fixed typo in docs
+
+ * engine/lib/entities.php: Fixes #4329 removed old recursive delete
+ permissions override
+
+ * engine/lib/entities.php: Fixes #2646 mention ELGG_ENTITIES_NO_VALUE in
+ elgg_get_entities() documentation
+
+2012-01-27 Cash Costello <cash.costello@gmail.com>
+
+ * mod/pages/languages/en.php: Fixes #4309 added language string
+
+ * engine/settings.example.php: Fixes #3651 fixed documentation of disable db
+ cache setting and updated wiki
+
+ * engine/lib/navigation.php: Fixes #3509 added documentation to menu system
+ about confirm links
+
+ * actions/avatar/crop.php, actions/profile/fields/add.php,
+ actions/profile/fields/delete.php, actions/profile/fields/reorder.php: Fixes
+ #1808 using correct message function in profile actions
+
+2012-01-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/entities.php: Refs #4081. Correctly calling
+ setIncrementOffset(false) for deleting entities using ElggBatch.
+
+ * engine/lib/entities.php, engine/tests/api/helpers.php,
+ engine/tests/objects/objects.php: Fixes #4081. Using ElggBatch to delete
+ recursive.
+
+2012-01-25 cash <cash.costello@gmail.com>
+
+ * engine/lib/languages.php: not loading language files a second time when
+ session initialized
+
+ * engine/lib/cache.php, engine/lib/plugins.php: plugins use language cache
+ and cache is cleared properly
+
+ * engine/classes/ElggFileCache.php: implemented the clear method of the file
+ cache
+
+ * engine/lib/cache.php, engine/lib/configuration.php,
+ engine/lib/elgglib.php, engine/lib/languages.php: caching language data
+
+2012-01-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/metastrings.php: Refs #4269. Using ElggBatch to delete
+ annotations / metadata again.
+
+ * engine/classes/ElggBatch.php, engine/tests/api/helpers.php: Fixes #4288.
+ Added setIncrementOffset() to ElggBatch.
+
+2012-01-24 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/configuration.php, engine/lib/entities.php,
+ engine/lib/views.php: Fixes #4272 where an array of entity types can be used,
+ use array in config object
+
+2012-01-24 Brett Profitt <brett.profitt@gmail.com>
+
+ * upgrade.php: Fixes #4326. Disabling system log for upgrades.
+
+2012-01-23 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/configuration.php, install/ElggInstaller.php: Refs #4147.
+ Changed default site name to "My New Community."
+
+ * languages/en.php: Fixed typo in language string.
+
+ * engine/lib/entities.php, engine/tests/objects/objects.php: Fixes #1196.
+ Added elgg_set_ignore_access() calls to disable_entity() when called with
+ recursive = true.
+
+2012-01-22 Brett Profitt <brett.profitt@gmail.com>
+
+ * views/default/object/plugin/full.php,
+ views/default/object/plugin/invalid.php: Fixes #4311. Rewriting all invalid
+ CSS characters to - for plugin id in plugin admin area.
+
+ * engine/schema/mysql.sql: Refs #2222. Added schema update for system log ip
+ address column.
+
+2012-01-22 cash <cash.costello@gmail.com>
+
+ * engine/lib/access.php: Fixes #4295 using on duplicate key to not fail when
+ adding the same user more than once to an access collection
+
+2012-01-22 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/lib/metadata.php, engine/tests/api/metastrings.php: Fixes #4321. Limit
+ alone is no longer valid for batch delete operations for metadata or
+ annotations.
+
+ * engine/lib/metadata.php: Refs #4325. Restored the null vs bool return in
+ elgg_delete_metadata().
+
+2012-01-22 Cash Costello <cash.costello@gmail.com>
+
+ * mod/search/views/default/search/list.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ views/default/navigation/pagination.php,
+ views/default/page/components/list.php: Fixes #4320 updated documentation for
+ base_url in pagination and added backward compatible code
+
+ * engine/lib/metadata.php: Fixes #4318 added guid to the list of parameters
+ for elgg_delete_metadata()
+
+2012-01-22 Team Webgalli <webgalli@gmail.com>
+
+ * mod/bookmarks/actions/bookmarks/save.php: Removed unnecessary gatekeeper
+ from bookmark actions.
+
+2012-01-21 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * engine/classes/ElggUser.php: fix for deprecated use of elgg_get_objects
+
+2012-01-21 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/cache.php, engine/lib/elgglib.php, engine/lib/plugins.php:
+ moved cache loading out of plugin code
+
+ * engine/lib/cache.php, engine/lib/plugins.php: better location for system
+ cache in data directory
+
+ * documentation/info/config.php, engine/lib/cache.php,
+ engine/lib/configuration.php,
+ ...2012100-1.8.3-system_cache-93100e7d55a24a11.php,
+ install/ElggInstaller.php, .../views/default/admin/developers/settings.php,
+ version.php, views/default/forms/admin/site/update_advanced.php: Fixes #4180
+ finished conversion to system cache by converting datalist/CONFIG var name
+
+ * actions/admin/site/update_advanced.php, languages/en.php,
+ mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php,
+ .../views/default/admin/developers/settings.php,
+ views/default/forms/admin/site/update_advanced.php: updated the display to
+ show system cache language
+
+ * actions/admin/plugins/activate.php,
+ actions/admin/plugins/activate_all.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/deactivate_all.php,
+ actions/admin/plugins/set_priority.php, actions/admin/site/flush_cache.php,
+ actions/admin/site/update_advanced.php, engine/lib/cache.php,
+ engine/lib/deprecated-1.8.php, engine/lib/plugins.php,
+ engine/lib/upgrades/2011010101.php,
+ mod/developers/actions/developers/settings.php, upgrade.php: switched the
+ function names to system cache
+
+ * engine/lib/cache.php, engine/lib/configuration.php,
+ engine/lib/database.php, engine/lib/elgglib.php, engine/lib/languages.php,
+ engine/lib/sessions.php, engine/lib/sites.php, engine/lib/views.php,
+ engine/start.php: cleans up the boot process
+
+ * engine/lib/languages.php, engine/start.php: single for loop for loading
+ libraries
+
+ * engine/lib/configuration.php: updated documentation of configuration lib
+
+ * engine/start.php: improved documentation in bootstrap script
+
+2012-01-20 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/system_log.php,
+ ...2012000-1.8.3-ip_in_syslog-87fe0f068cf62428.php,
+ mod/logbrowser/languages/en.php,
+ .../admin/administer_utilities/logbrowser.php,
+ .../views/default/forms/logbrowser/refine.php,
+ mod/logbrowser/views/default/logbrowser/table.php, version.php: Fixes #2222.
+ Added IP address to system log table and log browser. Fixed problem in log
+ browser that would only show entries without an owner_guid.
+
+2012-01-20 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggUser.php, engine/lib/statistics.php,
+ mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/owner.php,
+ views/default/core/settings/tools.php: Refs #4293 removed unnecessary
+ get_input('offset') calls since elgg_list_entities() calls that
+
+ * engine/lib/entities.php, engine/lib/users.php,
+ mod/members/pages/members/search.php: Fixes #4303 passing arguments to
+ elgg_view_entity_list in options array
+
+2012-01-16 Sem <sembrestels@riseup.net>
+
+ * views/default/forms/admin/site/update_advanced.php: Fixed #3155. Limited
+ site default access to core access levels.
+
+2012-01-13 Sem <sembrestels@riseup.net>
+
+ * mod/file/graphics/icons/application.gif,
+ mod/file/graphics/icons/application_lrg.gif,
+ mod/file/graphics/icons/archive.gif, mod/file/graphics/icons/archive_lrg.gif,
+ mod/file/graphics/icons/excel.gif, mod/file/graphics/icons/excel_lrg.gif,
+ mod/file/graphics/icons/general.gif, mod/file/graphics/icons/general_lrg.gif,
+ mod/file/graphics/icons/music.gif, mod/file/graphics/icons/music_lrg.gif,
+ mod/file/graphics/icons/openoffice.gif,
+ mod/file/graphics/icons/openoffice_lrg.gif,
+ mod/file/graphics/icons/pages.gif, mod/file/graphics/icons/pages_lrg.gif,
+ mod/file/graphics/icons/pdf.gif, mod/file/graphics/icons/pdf_lrg.gif,
+ mod/file/graphics/icons/ppt.gif, mod/file/graphics/icons/ppt_lrg.gif,
+ mod/file/graphics/icons/text.gif, mod/file/graphics/icons/text_lrg.gif,
+ mod/file/graphics/icons/vcard.gif, mod/file/graphics/icons/vcard_lrg.gif,
+ mod/file/graphics/icons/video.gif, mod/file/graphics/icons/video_lrg.gif,
+ mod/file/graphics/icons/word.gif, mod/file/graphics/icons/word_lrg.gif,
+ mod/pages/images/pages.gif, mod/pages/images/pages_lrg.gif: Fixes #3911. File
+ and page icons with transparent backgrounds since now.
+
+2012-01-18 Jerome Bakker <jeabakker@coldtrick.com>
+
+ * actions/admin/site/update_advanced.php: solves part of #4307
+
+ * actions/admin/site/update_basic.php: solves part of #4307
+
+2012-01-17 adayth <aday.talavera@gmail.com>
+
+ * mod/file/start.php: Fixes #4305 added backward compatibility for file read
+ url
+
+2012-01-16 Brett Profitt <brett.profitt@gmail.com>
+
+ * .../messages/exceptions/admin_exception.php: Refs #4036. Forgot to add a
+ new view.
+
+2012-01-15 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/elgglib.php, languages/en.php,
+ views/failsafe/messages/exceptions/exception.php: Fixes #4036. Hiding
+ exceptions except for admin users.
+
+2012-01-12 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/object/widget.php: added clearfix to increase the size of
+ the area for the drag handle
+
+2012-01-11 cash <cash.costello@gmail.com>
+
+ * CHANGES.txt, version.php: updated version and changes.txt
+
+ * engine/lib/elgglib.php, engine/lib/views.php, mod/thewire/start.php: Fixes
+ #4292 added a white list for ajax views
+
+2012-01-11 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * views/default/css/elements/components.php, views/default/output/tags.php:
+ class namespacing
+
+2012-01-10 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, engine/tests/api/annotations.php,
+ engine/tests/api/metadata.php: Fixes #4269. Not using ElggBatch to delete
+ metadata / annotations. Added unit tests for deleting annotations/md. Fixed
+ an annoying inconsistency with "metastring/s" option in private functions.
+
+2012-01-09 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php: Fixes #4243. Added docs for metadata_calculation
+ option to elgg_get_metadata().
+
+2012-01-09 Jeroen Dalsem <jdalsem@coldtrick.com>
+
+ * engine/classes/ElggWidget.php: Fixes #4285 move only fetches 10 items
+
+2012-01-09 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggBatch.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggMemcache.php, engine/classes/ElggWidget.php,
+ engine/classes/XMLRPCCall.php, engine/handlers/export_handler.php,
+ engine/lib/actions.php, engine/lib/configuration.php,
+ engine/lib/filestore.php, engine/lib/metadata.php, engine/lib/navigation.php,
+ engine/lib/output.php, engine/lib/private_settings.php, engine/lib/users.php,
+ engine/lib/views.php: coding standard fixes to engine
+
+2012-01-09 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * views/default/css/elements/components.php: tags css
+
+ * views/default/output/tags.php: fixes tags html markup issues
+
+2012-01-08 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggExtender.php, engine/classes/ElggMenuBuilder.php,
+ engine/classes/ElggMenuItem.php, engine/classes/ElggMetadata.php,
+ engine/classes/ElggUser.php, engine/classes/SuccessResult.php,
+ engine/lib/annotations.php, engine/lib/cache.php, engine/lib/metadata.php,
+ engine/lib/output.php, engine/lib/pagehandler.php, engine/lib/pageowner.php,
+ engine/lib/plugins.php, engine/lib/users.php: most of the comments in the
+ engine now past the sniffer
+
+ * engine/classes/ElggCache.php, engine/classes/ElggMenuBuilder.php,
+ engine/classes/ElggMenuItem.php, engine/classes/ElggPlugin.php,
+ engine/classes/ElggPluginPackage.php, engine/classes/ElggSite.php,
+ engine/lib/access.php, engine/lib/admin.php, engine/lib/database.php,
+ engine/lib/extender.php, engine/lib/input.php, engine/lib/relationships.php,
+ engine/lib/river.php: coding standards fixes - comments
+
+ * mod/groups/actions/discussion/reply/save.php,
+ mod/groups/actions/discussion/save.php, mod/groups/lib/discussion.php: Fixes
+ #3216 passing type/subtype for group discussions
+
+ * mod/search/pages/search/index.php: Fixes #2199 can now pass entity
+ type/subtype to tag search
+
+ * mod/file/actions/file/upload.php, mod/file/start.php,
+ .../default/file/specialcontent/image/default.php: Fixes #2421 added icontime
+ to files with thumbnails
+
+ * mod/search/pages/search/index.php: Fixes #2404 not using full set of query
+ parameters for custom search types
+
+ * engine/lib/entities.php: Fixes #4234 forcing limit to be nonnegative
+
+ * mod/messages/views/default/messages/js.php: updated the messages plugin to
+ use 1.8's JS hook system
+
+ * mod/groups/views/default/groups/js.php: updated groups js to use new JS
+ hook system
+
+ * js/lib/ui.widgets.js, mod/profile/views/default/profile/js.php: Fixes
+ #4192 making the bottom of widget columns equal rather than height
+
+ * actions/login.php: Fixes #4171 login success message is now i18n friendly
+
+ * engine/handlers/cache_handler.php: Fixes #2002 adds ETag support to simple
+ cache handler
+
+ * engine/classes/ODDDocument.php: Refs #4271 integrates fix to 1.8 branch
+ for ODDDocument
+
+ * engine/lib/elgglib.php: Fixes #4278 deprecation notices ignore debug level
+ but do respect whether the admin is logged in
+
+ * engine/lib/elgglib.php: fixed some formatting
+
+2012-01-07 Cash Costello <cash.costello@gmail.com>
+
+ * mod/groups/icon.php, mod/profile/icondirect.php: added check for existance
+ of IF-NONE-MATCH header in request
+
+2012-01-03 Sem <sembrestels@riseup.net>
+
+ * mod/groups/icon.php: Refs #4142. Also added ETag in group icon.
+
+ * mod/profile/icondirect.php: Refs #4142. Added ETag header support for user
+ avatars.
+
+2012-01-07 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggRiverItem.php, mod/thewire/classes/ElggWire.php: Refs
+ #3209 fixed spacing and added options for wire method
+
+ * engine/classes/ODDEntity.php, engine/classes/ODDMetaData.php,
+ engine/classes/ODDRelationship.php: pulled ODD classes out of ODDEntity
+
+2012-01-05 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php: Fixes #4243. Added docs to explain the
+ difference between annotation_calculation and calculation.
+
+2012-01-04 cash <cash.costello@gmail.com>
+
+ * engine/lib/web_services.php: Fixes #4270 removed use of deprecated method
+
+ * mod/pages/lib/pages.php, mod/pages/pages/pages/owner.php: Fixes #4266
+ fixed limit bugs with pages plugin
+
+ * mod/embed/views/default/navigation/menu/embed.php,
+ views/default/navigation/tabs.php: updated options on navigation/tabs
+
+ * engine/lib/entities.php: fixed enabling bug, added flag for recursion,
+ removed unnecessary code in disable function
+
+ * engine/tests/objects/entities.php: added a unit test for recursive
+ enabling/disabling
+
+2012-01-03 Sem <sembrestels@riseup.net>
+
+ * engine/lib/entities.php: Refs #2051. Fixed: ElggEntity's enable does not
+ recurse.
+
+2012-01-04 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/objects.php: Fixes #3710. Returning false from update, <type>
+ event no longer deletes entity. Returning false from create, <type> still
+ deletes the entity because of the "return false to halt events" approach.
+ This will be reviewed for #3784.
+
+2012-01-02 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/admin.php, languages/en.php,
+ views/default/admin/statistics/basic.php,
+ views/default/admin/statistics/numentities.php,
+ views/default/admin/statistics/overview.php,
+ views/default/admin/statistics/overview/basic.php,
+ .../admin/statistics/overview/numentities.php,
+ views/default/admin/statistics/server.php,
+ views/default/admin/statistics/server/php.php,
+ .../default/admin/statistics/server/web_server.php: Fixes #4164 adds a server
+ statistics page to admin area
+
+2012-01-01 cash <cash.costello@gmail.com>
+
+ * mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ .../admin/administer_utilities/diagnostics.php,
+ .../admin/develop_utilities/diagnostics.php: moved diagnostics to administer
+ utilities menu area rather than developers
+
+ * mod/groups/languages/en.php, mod/groups/start.php: Fixes #2230 group acl
+ names are not i18n friendly
+
+ * engine/lib/access.php, languages/en.php, views/default/output/access.php:
+ Fixes #3939 if user does not have permissions to see the name of the access
+ collection, it is shown as "Limited"
+
+2012-01-01 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggExtender.php, engine/classes/ElggObject.php,
+ engine/classes/ElggRelationship.php, engine/classes/ElggRiverItem.php,
+ mod/blog/classes/ElggBlog.php, mod/thewire/classes/ElggWire.php: Fixes #3209
+ finished adding class properties documentation
+
+ * engine/classes/ElggCache.php: fixed copy and paste error in documentation
+ of ElggCache
+
+ * engine/classes/ElggDiskFilestore.php: Refs #2290 removes check for
+ username
+
+ * documentation/examples/plugins/start.php: Fixes #3225 added what was
+ missing from the basic init function example
+
+ * engine/lib/users.php: Fixes #690 admin editing a user no longer makes them
+ appear active
+
+ * engine/lib/admin.php: Fixes #4168 ignoring access when saving an admin
+ notice
+
+ * views/default/css/admin.php: Fixes #3981 adds a better pre and code style
+ to admin theme
+
+ * engine/lib/plugins.php: Fixes #3992 fixed notice when loading plugins for
+ first time
+
+ * mod/developers/languages/en.php, mod/developers/start.php,
+ .../default/admin/develop_tools/unit_tests.php,
+ mod/diagnostics/languages/en.php,
+ .../admin/develop_utilities/diagnostics.php: Fixes #4137 moves test UI to
+ developers plugin
+
+2011-12-31 cash <cash.costello@gmail.com>
+
+ * engine/lib/users.php: Fixes #4260 get_user_sites() now works
+
+ * engine/lib/notification.php: Fixes #4208 notifications do not use site
+ guid
+
+ * engine/classes/ElggSite.php: Fixes #4204 using only the relationship for
+ getting members of a site
+
+ * engine/classes/ElggWidget.php: Fixes #4255 new widget ordering code
+
+2011-12-31 Evan Winslow <evan@elgg.org>
+
+ * engine/classes/ElggGroup.php, engine/classes/ElggObject.php,
+ engine/classes/ElggSite.php, engine/classes/ElggUser.php: Refs #3209: Adds
+ property docs for the four main entity classes
+
+2011-12-31 cash <cash.costello@gmail.com>
+
+ * engine/classes/ElggWidget.php: Fixes #4259 using container guid for
+ widgets when moving
+
+2011-12-29 Jeroen Dalsem <jdalsem@coldtrick.com>
+
+ * engine/classes/ElggWidget.php: Small typo. Seems to work, but i prefer it
+ nice and tidy :)
+
+2011-12-31 cash <cash.costello@gmail.com>
+
+ * engine/lib/widgets.php: Fixes #4254 not registering the default widgets
+ callback more than once per event
+
+ * mod/groups/actions/groups/edit.php: Fixes #4152 setting access on group
+ creation river item
+
+ * engine/lib/river.php: Fixes #4258 fixes add_to_river escaping
+
+ * .../views/default/groups/group_sort_menu.php: Fixes #4228 group sort menu
+ view accepts selected menu item from page handler
+
+ * views/default/css/admin.php: Fixes #4257 updates admin theme for widget
+ menu changes
+
+ * mod/groups/upgrades/2011030101.php: Fixes #4256 reruns the forum topic
+ upgrade by checking the 5 oldest topics
+
+ * ...3101-1.8.2-fix_blog_status-b14c2a0e7b9e7d55.php, version.php: Fixes
+ #4239 rerun corrected blog status upgrade
+
+2011-12-31 Cash Costello <cash.costello@gmail.com>
+
+ * ...100-1.8.2-fix_friend_river-b17e7ff8345c2269.php, version.php: Fixes
+ #4248 fixed friend river text
+
+ * mod/blog/start.php: Fixes #4253 added backward compatibility for blog read
+ url
+
+2011-12-24 Cash Costello <cash.costello@gmail.com>
+
+ * actions/avatar/revert.php, engine/lib/users.php, languages/en.php,
+ views/default/core/avatar/upload.php: Fixes #3272 added button to revert
+ avatar
+
+ * engine/lib/elgglib.php: Refs #4009 registering the walled garden css and
+ js on every request
+
+2011-12-23 Cash Costello <cash.costello@gmail.com>
+
+ * mod/blog/lib/blog.php, mod/blog/start.php,
+ mod/blog/views/default/blog/sidebar.php,
+ mod/blog/views/default/blog/sidebar/archives.php: Fixes #3751 adds a group
+ blog archive page
+
+ * js/lib/ui.widgets.js, views/default/css/admin.php,
+ views/default/css/elements/modules.php, views/default/object/widget.php:
+ Fixes #4186 restricting the drag handle for widgets
+
+ * mod/groups/languages/en.php, mod/groups/lib/groups.php,
+ mod/groups/views/default/forms/groups/find.php,
+ mod/groups/views/default/forms/groups/search.php,
+ mod/groups/views/default/groups/sidebar/find.php,
+ mod/groups/views/default/groups/sidebar/search.php: Fixes #2074 adds group
+ search
+
+ * .../actions/groups/membership/delete_invite.php: Fixes #1922 can now
+ delete invites to invisible groups
+
+ * mod/externalpages/actions/edit.php,
+ mod/externalpages/views/default/expages/menu.php,
+ .../views/default/forms/expages/edit.php: Fixes #4069 reusing the previous
+ ElggObject for external pages
+
+ * engine/lib/annotations.php: Fixes #683 not deleting annotation when event
+ handlers return false on an update
+
+ * engine/lib/metadata.php: Fixes #682 not deleting metadata when update,
+ metadata event handlers return false
+
+ * engine/lib/users.php: Fixes #3716 setting the language when registering
+ new users
+
+2011-12-23 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * views/default/navigation/tabs.php: fixes spacing. add a note on text/title
+
+2011-12-23 cash <cash.costello@gmail.com>
+
+ * mod/groups/upgrades/2011030101.php: added access override to the forum
+ upgrade
+
+ * mod/blog/actions/blog/save.php, mod/blog/start.php,
+ mod/blog/views/default/object/blog.php: Fixes #4179 not setting excerpt if
+ none set
+
+ * ...8_svn-blog_status_metadata-4645225d7b440876.php,
+ ...8b1-sites_need_a_site_guid-6d9dcbf46c0826cc.php, mod/blog/start.php,
+ mod/groups/upgrades/2011030101.php: Refs #4239 fixed upgrade scripts with bad
+ limits
+
+ * engine/classes/ElggBatch.php: Refs #4239 improved the documentation on
+ ElggBatch for the limit option
+
+ * mod/blog/views/default/blog/group_module.php: Fixes #4240 not showing
+ draft blog posts in group module
+
+2011-12-23 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * views/default/navigation/tabs.php: fixes for tab rendering
+
+2011-12-19 Steve Clay <steve@mrclay.org>
+
+ * mod/tinymce/views/default/js/tinymce.php: Solves issue 4222: incorrectly
+ nested lists in Firefox
+
+2011-12-21 Cash Costello <cash.costello@gmail.com>
+
+ * CHANGES.txt, version.php: Set version to 1.8.2 and updated the changes
+ list
+
+2011-12-19 cash <cash.costello@gmail.com>
+
+ * engine/lib/widgets.php: Fixes #4184 dashboard default widgets should work
+ and widgets should be created regardless of access
+
+ * mod/oauth_api/manifest.xml: Refs #4221 added a conflict statement to
+ manifest for PECL extension
+
+ * engine/lib/pagehandler.php, views/default/css/elements/layout.php,
+ views/default/page/layouts/error.php: added more spacing to error layout
+
+2011-12-18 cash <cash.costello@gmail.com>
+
+ * js/lib/ui.widgets.js: Refs #4192 adds proper 'px' to minHeight but does
+ not solve the issue
+
+2011-12-15 Ismayil Khayredinov <ismayil.khayredinov@hypejunction.com>
+
+ * engine/lib/navigation.php, js/lib/ui.widgets.js,
+ views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php,
+ views/default/object/widget/elements/controls.php: Fix #4200: Converting
+ widgets controls into an elgg menu
+
+ * engine/lib/views.php, mod/developers/start.php, mod/embed/start.php: Fixes
+ 4209: jquery.form.js library loading
+
+2011-12-17 cash <cash.costello@gmail.com>
+
+ * engine/lib/user_settings.php, engine/lib/users.php: moved user settings
+ extensions to user_settings library
+
+2011-12-17 Cash Costello <cash.costello@gmail.com>
+
+ * mod/embed/start.php, mod/embed/views/default/embed/layout.php,
+ mod/embed/views/default/js/embed/embed.php,
+ .../views/default/embed/file_upload/content.php: Fixes #4086 handling
+ containers for embed uploading
+
+ * engine/lib/output.php: Fixes #4190 accepting full urls with non-ascii
+ characters
+
+ * mod/embed/views/default/js/embed/embed.php: Refs #3971 inserting medium
+ size thumbnails rather than small
+
+ * mod/embed/manifest.xml: embed can now be activated without the file plugin
+ as other plugins can provide content
+
+ * mod/uservalidationbyemail/start.php: Fixes #4217 user validation by email
+ now respects decisions by other plugins
+
+2011-12-15 Cash Costello <cash.costello@gmail.com>
+
+ * js/lib/ui.userpicker.js, views/default/input/userpicker.php: Fixes #4214
+ added missing dependency for userpicker
+
+2011-12-12 zcho <zcho05@gmail.com>
+
+ * engine/lib/users.php: fixes elgg_get_user_validation_status() always
+ returning null
+
+2011-12-15 Cash Costello <cash.costello@gmail.com>
+
+ * mod/uservalidationbyemail/lib/functions.php: Refs #4196 integrates fix
+ into 1.8 branch
+
+2011-12-12 hypeJunction <ismayil.khayredinov@hypejunction.com>
+
+ * mod/uservalidationbyemail/start.php: Fixed #4198 uservalidationbyemail
+ respects the return value of the register,user hook
+
+2011-12-08 cash <cash.costello@gmail.com>
+
+ * engine/lib/languages.php, js/lib/languages.js: Fixes #3181 caching
+ language js on server side with proper headers
+
+ * views/default/navigation/pagination.php: Fixes #4189 correctly getting the
+ base url in pagination view
+
+ * engine/lib/annotations.php: Fixes #4025 added a url handler for comments
+
+ * actions/admin/site/flush_cache.php, engine/lib/admin.php,
+ languages/en.php, views/default/widgets/control_panel/content.php: Fixes
+ #4185, #2111 adds control panel widget
+
+ * views/default/navigation/menu/default.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/navigation/menu/elements/section.php: added the ability to pass
+ a class to be applied to all menu item <li> elements
+
+ * engine/classes/ElggSite.php: Fixes #4182 if simplecache is empty, the
+ cache requests go through the engine and need to be white listed for the
+ walled garden
+
+2011-12-07 Cash Costello <cash.costello@gmail.com>
+
+ * mod/profile/start.php: fixed profile editing routing for profile plugin
+
+2011-12-06 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * engine/lib/entities.php: #4187 (get_entity optimization)
+
+2011-12-07 Cash Costello <cash.costello@gmail.com>
+
+ * js/lib/ui.widgets.js: simplified the JavaScript for deleteing a widget
+
+2011-12-06 Jeroen Dalsem <jdalsem@coldtrick.com>
+
+ * views/default/object/widget/elements/controls.php: delete action expects
+ widget_guid instead of guid
+
+2011-12-06 cash <cash.costello@gmail.com>
+
+ * engine/lib/output.php: Fixes #4173 removed use of \w since it is locale
+ sensitive
+
+2011-12-05 cash <cash.costello@gmail.com>
+
+ * engine/lib/pagehandler.php, languages/en.php,
+ views/default/errors/404.php, views/default/errors/default.php,
+ views/default/page/error.php, views/default/page/layouts/error.php: first
+ version of a 404 page
+
+2011-12-04 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/page/admin.php, views/default/page/default.php: Fixes #4032
+ rendering page elements before head/foot
+
+ * engine/tests/regression/trac_bugs.php,
+ mod/blog/actions/blog/auto_save_revision.php, mod/blog/actions/blog/save.php:
+ removed some usage of deprecated methods
+
+2011-12-03 cash <cash.costello@gmail.com>
+
+ * mod/search/start.php: Fixes #4046 checking offset compared to string
+ length
+
+ * engine/lib/entities.php: Refs #4176 added elgg_list_registered_entities()
+ fix to 1.8 branch
+
+2011-12-01 Ash Ward <ash@netality.com>
+
+ * mod/messages/languages/en.php, mod/messages/start.php: Fixes #4170:
+ Messages icon on top bar doesn't have a title attribute (tooltip)
+
+2011-12-01 cash <cash.costello@gmail.com>
+
+ * views/default/graphics/ajax_loader.php: added support for passing classes
+ to ajax loader
+
+2011-11-22 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * engine/classes/ElggMemcache.php: Fixes #1995 (memcache: incorrect check
+ for get() return value)
+
+2011-11-25 Jeff Tilson <jrtilson@gmail.com>
+
+ * engine/lib/views.php: Need to call
+ elgg_register_simplecache_view('css/lightbox') to register the lightbox CSS
+ with simplecache
+
+2011-11-28 cash <cash.costello@gmail.com>
+
+ * engine/lib/river.php, engine/tests/api/river.php: Fixes #3496 finished up
+ this ticket by updating unit test and using more parantheses to make it clear
+ how the OR/AND gets applied
+
+2011-11-28 Cash Costello <cash.costello@gmail.com>
+
+ * mod/search/pages/search/index.php,
+ mod/search/views/default/search/search_box.php: Fixes #4139 if no mbstring
+ extension we strip characters for display with search
+
+ * mod/likes/start.php: Fixes #4116 not liking users now since people think
+ they are liking the activity entry
+
+ * .../views/default/forms/messages/process.php: Fixes #3986 not showing
+ message buttons if no messages
+
+ * views/default/css/elements/forms.php: Fixes #4052 removed the :focus
+ styling on every input element
+
+2011-11-27 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/js/lightbox.php: Fixes #3773 added documentation hint for
+ using advanced features of fancybox
+
+ * actions/profile/edit.php, views/default/core/settings/account/name.php:
+ Fixes #3953 adds back the ability to change display name from settings page
+
+ * views/default/css/admin.php, views/default/css/elements/components.php,
+ views/default/css/elements/core.php: Fixes #3982 fixing scrolling issue with
+ elgg-body
+
+ * views/default/admin/plugins.php, views/default/js/admin.php,
+ views/default/object/plugin/full.php: Fixes #3954 using lightbox for plugin
+ screenshots
+
+ * engine/lib/entities.php: fixed some documentation related to subtypes
+
+ * views/rss/page/components/gallery.php: rss view type needed a gallery view
+
+2011-11-24 András Szepesházi <szepeshazi@gmail.com>
+
+ * actions/useradd.php: Fixed typo that prevented creating an admin user via
+ the Admin panel (user was created, but not elevated to admin).
+
+2011-11-25 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/elgglib.php, languages/en.php: added a better message for php
+ libraries that don't exist on disk
+
+ * views/default/page/components/gallery.php: returning from gallery view if
+ no items in the gallery
+
+ * .../views/default/groups/membershiprequests.php: Fixes #4151 removed
+ unnecessary $user definition
+
+2011-11-17 Danny Navarro <j@dannynavarro.net>
+
+ * engine/lib/river.php: Refs #3496 improving type/subtype handling for the
+ river
+
+2011-11-23 cash <cash.costello@gmail.com>
+
+ * engine/lib/river.php, pages/river.php: Refs #4143 adds a unit test for
+ type/subtype where sql generation
+
+ * views/default/css/elements/navigation.php: Fixes #4145 using margin rather
+ than padding for topbar menu items
+
+2011-11-22 cash <cash.costello@gmail.com>
+
+ * mod/logbrowser/start.php, .../admin/administer_utilities/logbrowser.php,
+ mod/logbrowser/views/default/logbrowser/refine.php: Fixes #3775 updates the
+ log browser link and keeps the refine area open if the page is loaded with a
+ user selected
+
+2011-11-20 Cash Costello <cash.costello@gmail.com>
+
+ * mod/groups/start.php: added check in case something goes wrong with the
+ container entity of a discussion
+
+2011-11-20 cash <cash.costello@gmail.com>
+
+ * install/languages/en.php: Fixes #4140 fixed spelling mistake
+
+ * views/default/css/elements/typography.php: fixed error in css for
+ .elgg-output ordered lists
+
+2011-11-19 cash <cash.costello@gmail.com>
+
+ * views/default/object/elements/summary.php: don't display <h3> if no title
+
+2011-11-19 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/navigation/menu/site.php: Fixes #4102 handling no menu items
+ for site menu
+
+ * actions/login.php, actions/user/requestnewpassword.php, languages/en.php,
+ views/default/forms/user/requestnewpassword.php: Fixes #641 users can submit
+ email address to reset password
+
+2011-11-18 cash <cash.costello@gmail.com>
+
+ * engine/lib/user_settings.php, engine/lib/users.php, languages/en.php:
+ Fixes #3792 admin can edit settings again
+
+ * languages/en.php: made status message a little more grammatical
+
+ * js/lib/pageowner.js: Fixes #4093 making sure elgg.page_owner is defined
+
+ * mod/profile/views/default/profile/owner_block.php: don't want hover menu
+ or link on owner block icon in profile
+
+ * views/default/forms/admin/site/update_advanced.php,
+ views/default/forms/admin/site/update_basic.php: line between settings and
+ save button not needed
+
+ * actions/admin/site/update_basic.php: Fixes #3996 displaying message when
+ basic site settings are saved
+
+ * views/default/css/elements/navigation.php: Fixes #3929 used a combination
+ of min-width/max-width and overflow hidden to provide better support for long
+ names
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggObject.php, engine/classes/ElggSite.php,
+ engine/classes/ElggUser.php: Fixes #4111 guid is now an int
+
+ * mod/thewire/start.php: Fixes #4085 accepting . in usernames for the wire
+
+ * engine/tests/api/helpers.php: Fixes #4128 better test of null passed to
+ registering external files
+
+ * engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_18/manifest.xml: Fixes #4134 improved plugin
+ manifest tests by using assertIdentical more
+
+ * engine/classes/ElggPluginManifest.php, engine/tests/api/plugins.php: Fixes
+ #4133 updated type in plugin manifest test
+
+ * engine/tests/api/metastrings.php: Fixes #4132 fixed metastring delete by
+ id test
+
+ * engine/lib/metastrings.php, engine/tests/api/metastrings.php: Fixes #4131
+ elgg_delete_metastring_based_object_by_id() should return a bool
+
+ * engine/tests/api/helpers.php: Fixes #4129 fixed priority list tests
+
+ * engine/tests/api/entity_getter_functions.php: Fixes #4126 fixed test for
+ checking relationship existence
+
+ * engine/classes/ElggGroup.php, engine/lib/relationships.php: Fixes #4118
+ returning bool from leave group functions
+
+ * engine/lib/access.php, engine/tests/api/access_collections.php: Fixes
+ #4115 returning bool from remove_user_from_access_collection()
+
+ * engine/lib/access.php: Fixes #4113 returning a bool from
+ delete_access_collection()
+
+ * engine/tests/api/entity_getter_functions.php: Fixes #4125 checking count
+ correctly
+
+ * engine/tests/api/entity_getter_functions.php: Fixes #4122, #4123, #4124
+ testing for empty arrays and added some documentation for the sanity of
+ future developers
+
+ * engine/lib/users.php: Fixes #4112 get_user_by_username() returns false if
+ no user
+
+2011-11-18 Cash Costello <cash.costello@gmail.com>
+
+ * engine/tests/api/metastrings.php, engine/tests/objects/sites.php,
+ engine/tests/objects/users.php, engine/tests/test_skeleton.php: Fixes #4109
+ remove inaccurate comment due to copy & paste
+
+ * engine/lib/entities.php, engine/tests/objects/entities.php,
+ engine/tests/objects/sites.php, engine/tests/objects/users.php: Fixes #4108
+ delete() returns bool now and updated unit tests
+
+ * engine/tests/objects/entities.php: Fixes #4104, #4105 fixed casting in
+ testElggEntityMetadata()
+
+ * engine/tests/api/access_collections.php: Fixes #4114 checking type for acl
+ test
+
+2011-11-17 Cash Costello <cash.costello@gmail.com>
+
+ * engine/tests/api/metadata.php: Fixes #4120 metadata tests now check for
+ the correct types
+
+ * engine/tests/objects/entities.php: Fixes #4094, #4095 fixes casting issues
+ in unit tests - thanks to andres.fortier
+
+ * mod/externalpages/start.php: Fixes #4101 added footer links back
+
+ * mod/thewire/pages/thewire/everyone.php: Fixes #4100 adds the wire post
+ form back to all page
+
+2011-11-16 cash <cash.costello@gmail.com>
+
+ * mod/thewire/pages/thewire/friends.php,
+ mod/thewire/pages/thewire/owner.php: removed two deprecated function calls
+ from thewire
+
+2011-11-15 Cash Costello <cash.costello@gmail.com>
+
+ * CHANGES.txt: updated release date
+
+ * documentation/examples/plugins/README.txt,
+ documentation/examples/plugins/start.php: updated the plugin skeleton with
+ some instructions
+
+ * actions/avatar/crop.php, actions/avatar/upload.php: fixed bugs in avatar
+ cropping with remembering old crop coordinates and resizing the master
+
+ * engine/lib/elgglib.php, js/lib/autocomplete.js, js/lib/avatar_cropper.js,
+ js/lib/friends_picker.js, js/lib/ui.autocomplete.js,
+ js/lib/ui.avatar_cropper.js, js/lib/ui.friends_picker.js,
+ js/lib/ui.userpicker.js, js/lib/userpicker.js: atleast renaming the ui js
+ libs
+
+ * engine/classes/ElggRelationship.php: Fixes #4089 corrects documentation of
+ ElggRelationship constructor
+
+ * engine/lib/relationships.php: Fixes #4090 removes double assignment -
+ thanks to andres.fortier
+
+2011-11-14 Cash Costello <cash.costello@gmail.com>
+
+ * mod/messages/pages/messages/send.php,
+ mod/messages/views/default/forms/messages/send.php: Refs #4083 increased
+ number of friends to 50
+
+2011-11-13 cash <cash.costello@gmail.com>
+
+ * engine/classes/ElggMenuItem.php: added the missing set/get priority
+ methods to ElggMenuItem
+
+2011-11-13 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/users.php, .../views/default/bookmarks/bookmarklet.php,
+ views/default/core/avatar/upload.php, views/default/forms/avatar/crop.php,
+ views/default/icon/default.php, views/default/icon/user/default.php,
+ views/default/output/img.php: Fixes #4082 adds output/img
+
+ * .../views/default/groups/profile/widgets.php: should be a ul rather than a
+ div
+
+ * views/default/output/confirmlink.php: need to unset the trusted link key
+
+2011-11-12 cash <cash.costello@gmail.com>
+
+ * documentation/examples/hooks/advanced.php,
+ documentation/examples/hooks/all.php, documentation/examples/hooks/basic.php,
+ documentation/examples/hooks/register/advanced.php,
+ documentation/examples/hooks/register/all.php,
+ documentation/examples/hooks/register/basic.php,
+ documentation/examples/hooks/register/emit.php,
+ documentation/examples/hooks/trigger.php,
+ documentation/examples/hooks/trigger/advanced.php,
+ documentation/examples/hooks/trigger/basic.php: cleaned up the plugin hooks
+ documentation
+
+ * documentation/examples/actions/basic.php,
+ documentation/examples/actions/manual_tokens.php,
+ documentation/examples/events/advanced.php,
+ documentation/examples/events/all.php,
+ documentation/examples/events/basic.php,
+ documentation/examples/events/emit.php,
+ documentation/examples/events/trigger.php,
+ documentation/examples/plugins/README.txt,
+ documentation/examples/plugins/languages/en.php,
+ documentation/examples/plugins/manifest.xml,
+ .../examples/plugins/manifest_options/manifest.xml,
+ .../examples/plugins/skeleton/manifest.xml, documentation/info/config.php,
+ documentation/info/manifest.xml, documentation/stubs/config.php: added better
+ plugin skeleton and added documentation to some of the examples
+
+2011-11-12 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/admin.php: added bottom margin to info modules for
+ plugin settings
+
+ * engine/lib/users.php, mod/groups/actions/groups/edit.php,
+ mod/groups/actions/groups/membership/leave.php, mod/invitefriends/start.php,
+ pages/entities/index.php, pages/settings/account.php,
+ pages/settings/statistics.php: removed uses of deprecated function for
+ setting page owner guid
+
+ * mod/invitefriends/actions/invite.php: fixed exception being thrown when no
+ site email address has been set
+
+ * views/default/css/admin.php: added a input class for text boxes so that
+ they aren't super long
+
+ * mod/messages/pages/messages/send.php: removed deprecated function from
+ messages plugin
+
+2011-11-10 cash <cash.costello@gmail.com>
+
+ * languages/en.php, mod/pages/pages/pages/edit.php: fixed WSOD when trying
+ to edit a private page
+
+ * engine/lib/database.php: Fixes #4071 hellekin was right - it was a bad
+ idea to format queries
+
+ * js/lib/ajax.js, js/lib/elgglib.js, js/lib/security.js,
+ js/tests/ElggLibTest.js, js/tests/ElggSecurityTest.js: Fixes #4010 not
+ sending naked query strings into add ajax tokens and also fixed a few related
+ bugs in JavaScript
+
+2011-11-08 Cash Costello <cash.costello@gmail.com>
+
+ * mod/likes/languages/en.php: exclamation marks are annoying in
+ notifications
+
+ * CONTRIBUTORS.txt, COPYRIGHT.txt: we rewrote default widgets from scratch
+ so updated copyright/contributors to reflect that
+
+ * .../examples/plugins/manifest_options/manifest.xml,
+ .../examples/plugins/skeleton/manifest.xml, engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_17/manifest.xml,
+ engine/tests/test_files/plugin_18/manifest.xml, mod/blog/manifest.xml,
+ mod/bookmarks/manifest.xml, mod/categories/manifest.xml,
+ mod/custom_index/manifest.xml, mod/dashboard/manifest.xml,
+ mod/developers/manifest.xml, mod/diagnostics/manifest.xml,
+ mod/embed/manifest.xml, mod/externalpages/manifest.xml,
+ mod/file/manifest.xml, mod/garbagecollector/manifest.xml,
+ mod/groups/manifest.xml, mod/htmlawed/manifest.xml,
+ mod/invitefriends/manifest.xml, mod/likes/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/members/manifest.xml, mod/messageboard/manifest.xml,
+ mod/messages/manifest.xml, mod/notifications/manifest.xml,
+ mod/oauth_api/manifest.xml, mod/pages/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/twitter_api/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: it is GPL General Public License not GPL Public
+ License
+
+ * views/rss/page/default.php: Refs #3150 can pass description to RSS page
+ shell
+
+2011-11-07 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggUser.php, views/default/js/initialize_elgg.php: Refs
+ #4007 previous solution to admin population in ElggUser was throwing warnings
+
+ * README.txt: fixed date on copyright and name of GPL
+
+ * mod/custom_index/start.php: removing deprecated functions from
+ custom_index plugin
+
+ * CHANGES.txt: Updated change log
+
+ * version.php: incremented version number
+
+ * INSTALL.txt: updated install instructions
+
+ * UPGRADE.txt: fixed wording in upgrade instructions
+
+2011-11-07 Evan Winslow <evan.b.winslow@gmail.com>
+
+ * documentation/coding_standards/best_practices.txt: Fixes #3397: Adds
+ 'positive' variable name standard to best practices file.
+
+2011-11-06 Cash Costello <cash.costello@gmail.com>
+
+ * mod/tinymce/views/default/js/tinymce.php,
+ .../default/tinymce/embed_custom_insert_js.php: Fixes #3853 caching a
+ bookmark for insert carot when embedding content into TinyMCE editor
+
+ * mod/tinymce/vendor/tinymce/changelog.txt,
+ .../tiny_mce/plugins/emotions/emotions.htm,
+ .../tiny_mce/plugins/emotions/js/emotions.js,
+ .../tiny_mce/plugins/emotions/langs/en_dlg.js,
+ .../tiny_mce/plugins/lists/editor_plugin.js,
+ .../tiny_mce/plugins/lists/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../tiny_mce/plugins/media/moxieplayer.swf,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/table.js,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../jscripts/tiny_mce/themes/advanced/charmap.htm,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../tiny_mce/themes/advanced/js/charmap.js,
+ .../tiny_mce/themes/advanced/js/color_picker.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../vendor/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_src.js: upgraded TinyMCE to 3.4.7
+
+ * mod/embed/views/default/js/embed/embed.php,
+ mod/likes/views/default/annotation/likes.php,
+ mod/messages/views/default/object/messages.php,
+ .../views/default/thewire/profile_status.php,
+ .../forms/twitter_api/interstitial_settings.php: removed uses of CSS class
+ .right from plugins
+
+ * views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php,
+ views/default/page/elements/footer.php: remove uses of the CSS class right
+ from core
+
+ * engine/lib/entities.php, mod/blog/activate.php, mod/thewire/activate.php:
+ Fixes #4068 not forcing update on adds when the subtype exists Refs #4058
+
+ * engine/lib/cron.php: $CONFIG->input is never initialized by page handling
+ so this code never did anything
+
+ * mod/blog/activate.php, mod/blog/deactivate.php, mod/search/README.txt,
+ mod/thewire/activate.php, mod/thewire/deactivate.php, mod/thewire/start.php:
+ Fixes #4067 adds activate/deactivate scripts
+
+ * views/default/icon/user/default.php: added a href override to the user
+ icon view
+
+2011-11-05 cash <cash.costello@gmail.com>
+
+ * engine/classes/ElggMenuItem.php, engine/lib/elgglib.php,
+ engine/lib/navigation.php, engine/lib/views.php, mod/blog/start.php,
+ mod/file/start.php, mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ .../views/default/object/groupforumtopic.php, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/profile/start.php,
+ mod/thewire/pages/thewire/everyone.php, pages/settings/account.php,
+ views/default/forms/login.php, views/default/input/button.php,
+ views/default/output/access.php, views/default/page/components/gallery.php,
+ views/default/page/components/list.php,
+ views/default/page/components/module.php,
+ views/default/page/layouts/one_column.php,
+ views/default/page/layouts/widgets.php: Fixes #4024 fixed a lot of notices -
+ enough for this release - found a few bugs
+
+ * .../views/default/admin/users/unvalidated.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ .../views/default/uservalidationbyemail/css.php,
+ .../views/default/uservalidationbyemail/js.php,
+ .../uservalidationbyemail/unvalidated_user.php: Fixes #3867 finished up
+ uservalidationbyemail styling after a great start by Sem
+
+ * views/default/css/admin.php, views/default/css/elements/core.php,
+ views/default/css/elements/helpers.php,
+ views/default/forms/admin/menu/save.php: cleaned up some CSS in admin theme
+
+ * mod/file/languages/en.php, mod/file/start.php,
+ views/default/navigation/listtype.php, views/default/navigation/viewtype.php,
+ views/default/page/elements/sidebar.php: Fixes #1253 added toggle for list
+ types to file plugin. It's not pretty so we may want to style/rethink in
+ future version
+
+ * engine/lib/input.php, engine/lib/views.php,
+ .../views/default/theme_preview/icons/avatars.php,
+ mod/file/views/default/icon/object/file.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../notifications/subscriptions/forminternals.php,
+ mod/profile/views/default/profile/owner_block.php,
+ views/default/icon/default.php, views/default/icon/user/default.php,
+ views/default/input/friendspicker.php, views/default/input/userpicker.php,
+ views/default/profile/icon.php, .../river/user/default/profileiconupdate.php:
+ Fixes #3567 standardized classes for icons
+
+ * mod/file/views/default/icon/object/file.php,
+ views/default/icon/default.php, views/default/icon/user/default.php: Fixes
+ #4023 escaping alt and title attributes in icon views
+
+ * mod/groups/start.php: Refs #4059 group icon handler needs to return true
+
+ * views/default/input/date.php, views/default/output/date.php: Fixes #4050
+ using ISO 8601 standard for dates
+
+ * engine/lib/entities.php: Fixes #4018 Refs #3722 merged up to 1.7.14 into
+ master
+
+ * engine/lib/entities.php: fixed spacing on two uses of unset()
+
+ * engine/lib/views.php, js/tests/jsTestDriver.conf,
+ vendors/jquery/jquery-1.6.1.min.js, vendors/jquery/jquery-1.6.2.min.js,
+ vendors/jquery/jquery-1.6.4.min.js, vendors/jquery/jquery-ui-1.8.14.min.js,
+ views/installation/page/default.php: Fixes #4057 updates jQuery version to
+ 1.6.4
+
+ * mod/file/download.php, mod/file/pages/file/download.php,
+ mod/file/pages/file/view.php, mod/file/start.php,
+ mod/file/views/rss/file/enclosure.php: Fixes #4048 using page handler for
+ file downloads
+
+ * engine/lib/database.php: Fixes #4049 casting bool to int so it doesn't
+ disappear in the cache key
+
+ * js/lib/elgglib.js, js/tests/ElggLibTest.js: Fixes #3976 fixed unit tests
+ for normalizing urls and standardized the code from the previous merge
+
+ * js/tests/README, js/tests/jsTestDriver.conf: Changed default port to a
+ common one found in tutorials. Let me know if this is an issue. Also added
+ intructions for running the unit tests.
+
+2011-11-05 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/pagehandler.php: Refs #4053 improved documentation of
+ page_handler()
+
+ * actions/avatar/upload.php: Refs #4011 forgot upload action
+
+ * mod/twitter_api/lib/twitter_api.php: Fixes #4061 getting icon sizes from
+ config for twitter plugin
+
+ * engine/lib/users.php, pages/account/login.php: Fixes #4060 combined some
+ page handlers for users lib
+
+2011-11-04 cash <cash.costello@gmail.com>
+
+ * engine/lib/admin.php, engine/lib/cron.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/pagehandler.php, engine/lib/river.php,
+ engine/lib/tags.php, engine/lib/user_settings.php, engine/lib/users.php,
+ mod/blog/start.php, mod/bookmarks/start.php, mod/categories/start.php,
+ mod/dashboard/start.php, mod/developers/start.php,
+ mod/externalpages/start.php, mod/file/start.php, mod/groups/start.php,
+ mod/invitefriends/start.php, mod/members/start.php,
+ mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/search/start.php, mod/thewire/start.php,
+ mod/twitter_api/start.php, mod/uservalidationbyemail/start.php: Fixes #4059
+ returning true when handling a page
+
+ * engine/lib/admin.php, engine/lib/deprecated-1.8.php,
+ engine/lib/elgglib.php, engine/lib/pagehandler.php, engine/lib/river.php,
+ engine/lib/tags.php, engine/lib/user_settings.php, engine/lib/users.php,
+ mod/blog/start.php, mod/bookmarks/start.php, mod/categories/start.php,
+ mod/dashboard/start.php, mod/developers/start.php, mod/diagnostics/start.php,
+ mod/externalpages/start.php, mod/file/start.php, mod/groups/start.php,
+ mod/invitefriends/start.php, mod/members/start.php,
+ mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/search/start.php, mod/thewire/start.php,
+ mod/twitter_api/start.php, mod/uservalidationbyemail/start.php: Fixes #4059
+ page handlers all return nothing
+
+ * mod/blog/start.php: fixed typo in comment for blog page handler
+
+2011-11-04 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/entities.php: Fixes #4058 updating a subtype if it already
+ exists
+
+ * mod/groups/languages/en.php,
+ .../views/rss/annotation/group_topic_post.php,
+ mod/groups/views/rss/discussion/replies.php,
+ mod/groups/views/rss/forum/topicposts.php,
+ mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/contentwrapper.php,
+ mod/groups/views/rss/groups/profile/layout.php,
+ mod/groups/views/rss/groups/profileitems.php,
+ mod/groups/views/rss/object/groupforumtopic.php: Fixes #4027 updated groups
+ RSS feeds for 1.8
+
+ * .../views/default/custom_index/css.php,
+ .../views/default/page/layouts/custom_index.php: Refs #2937 featured is
+ primary module class and highlight is extension
+
+ * views/default/core/walled_garden/login.php,
+ views/default/core/walled_garden/lost_password.php,
+ views/default/core/walled_garden/register.php,
+ views/default/page/components/module.php: Fixes #4047 header and footer
+ optional for the module view
+
+2011-11-03 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/ie7.php: updated CSS for walled garden and IE7
+
+ * views/default/forms/login.php: Fixes #3882 Remember me needed to be
+ floated before the button was added
+
+ * js/tests/jsTestDriver.conf: updated jsTest configuration for new jQuery
+ and hooks library
+
+ * js/tests/ElggLanguagesTest.js, js/tests/ElggSecurityTest.js: Fixes #4051 -
+ fixes security token unit test and language unit tests
+
+ * js/lib/elgglib.js: Fixes #4034 now using approach that exists in IE to
+ find elements in an Array
+
+ * js/lib/hooks.js: Refs #4051 hooks trigger function was returning undefined
+ when it should have been returning true
+
+ * js/classes/ElggPriorityList.js: Refs #4051 insert also needed to check for
+ undefined priorities
+
+ * js/classes/ElggPriorityList.js: Refs #4051 fixed insert for case when
+ priority is set to 0
+
+ * js/tests/ElggPriorityListTest.js: Refs #4051 fixed bad unit test for
+ ElggPriorityList.insert
+
+2011-11-03 Sem <sembrestels@riseup.net>
+
+ * .../forms/uservalidationbyemail/bulk_action.php,
+ .../views/default/uservalidationbyemail/css.php,
+ .../views/default/uservalidationbyemail/js.php,
+ .../uservalidationbyemail/unvalidated_user.php, views/default/css/admin.php:
+ Refs #3867. Unvalidated users is an unordered list now. Added right class and
+ other css helpers to admin css. Standarized css namespaces and dashes in
+ classes. Acomplishing code standards.
+
+2011-11-03 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * engine/lib/entities.php: Fixes 4041 (Deleted entities remain in memcache)
+
+2011-11-03 Cash Costello <cash.costello@gmail.com>
+
+ * mod/bookmarks/languages/en.php,
+ mod/bookmarks/views/rss/object/bookmarks.php, mod/file/start.php,
+ mod/file/views/rss/file/enclosure.php, mod/file/views/rss/object/file.php,
+ mod/search/views/rss/search/list.php,
+ mod/search/views/rss/search/listing.php, mod/thewire/languages/en.php,
+ mod/thewire/views/rss/object/thewire.php,
+ views/rss/annotation/generic_comment.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/user/default.php: Refs #4027 updated
+ all rss views except for groups
+
+ * mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/friends.php, mod/file/languages/en.php,
+ mod/file/pages/file/world.php, mod/groups/languages/en.php,
+ mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ .../views/default/discussion/group_module.php: Fixes #4042 made sure empty
+ content pages had a message about no content
+
+2011-11-03 Sem <sembrestels@riseup.net>
+
+ * js/lib/elgglib.js, js/tests/ElggLibTest.js: Fixes #3976.
+ elgg.normalize_url() js function has the fix in #3747.
+
+2011-11-02 Cash Costello <cash.costello@gmail.com>
+
+ * engine/start.php, install/ElggInstaller.php: input lib depends on
+ pageowner lib now
+
+ * .../views/default/theme_preview/forms.php: Refs #4039 updated the theming
+ sandbox for radio button classes
+
+2011-11-02 Sem <sembrestels@riseup.net>
+
+ * .../forms/uservalidationbyemail/bulk_action.php,
+ .../views/default/uservalidationbyemail/css.php,
+ .../uservalidationbyemail/unvalidated_user.php: Refs #3867.
+ elgg_view_image_block used for list users. Bulk operations as a list.
+
+ * mod/uservalidationbyemail/start.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ .../views/default/uservalidationbyemail/css.php,
+ .../views/default/uservalidationbyemail/js.php,
+ .../uservalidationbyemail/unvalidated_user.php: Fixes #3867. Rewrite and
+ style unvalidated users administration area.
+
+2011-11-02 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * views/default/css/elements/forms.php: #4039 (Incorrect CSS class set in
+ input/radio)
+
+2011-11-01 cash <cash.costello@gmail.com>
+
+ * .../views/default/admin/developers/settings.php,
+ .../admin/develop_utilities/diagnostics.php,
+ .../views/default/admin/appearance/expages.php,
+ mod/externalpages/views/default/expages/menu.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/appearance/profile_fields.php,
+ views/default/admin/plugin_settings.php,
+ views/default/admin/settings/advanced.php,
+ views/default/admin/settings/basic.php, views/default/css/admin.php: Fixes
+ #3672 added class for settings forms in admin area
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/entities.php, engine/lib/location.php, engine/lib/metadata.php,
+ engine/lib/plugins.php, engine/lib/private_settings.php,
+ engine/lib/relationships.php: standardized the elgg_get_entities* function
+ @return documentation
+
+ * mod/blog/lib/blog.php, mod/blog/views/default/object/blog.php,
+ mod/bookmarks/pages/bookmarks/view.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ views/default/object/elements/full.php: Fixes #4035 made the entity view
+ pages consistent for blog, bookmarks, file, pages, and forum posts
+
+ * js/lib/ui.js: Fixes #4022 made JS lib a little more consistent
+
+ * .../javascript_coding_standards.txt, js/lib/avatar_cropper.js,
+ js/lib/configuration.js, js/lib/elgglib.js, js/lib/hooks.js, js/lib/ui.js,
+ js/lib/ui.widgets.js, js/lib/userpicker.js,
+ mod/blog/views/default/js/blog/save_draft.php,
+ mod/bookmarks/views/default/bookmarks/js.php,
+ .../views/default/js/developers/developers.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ mod/thewire/views/default/js/thewire.php,
+ mod/tinymce/views/default/js/tinymce.php,
+ .../views/default/uservalidationbyemail/js.php: added semi-colons after
+ function expressions
+
+ * engine/classes/ElggUser.php, js/classes/ElggUser.js: Fixes #4007 merged in
+ sembrestels fix for ElggUser.isAdmin but used prototype instead of extending
+ object in constructor
+
+ * views/default/output/text.php: Fixes #4038 corrects comment for view
+ output/text
+
+2011-10-30 cash <cash.costello@gmail.com>
+
+ * engine/lib/elgglib.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/walled_garden/body.php,
+ views/default/core/walled_garden/login.php,
+ views/default/core/walled_garden/lost_password.php,
+ views/default/core/walled_garden/register.php,
+ views/default/css/walled_garden.php, views/default/forms/login.php,
+ views/default/js/walled_garden.php, views/default/page/walled_garden.php:
+ added back support for registration and forgotten passwords to walled garden
+ index
+
+ * _graphics/walled_garden/one_column_bottom.png,
+ _graphics/walled_garden/one_column_middle.png,
+ _graphics/walled_garden/one_column_top.png,
+ _graphics/walled_garden/two_column_bottom.png,
+ _graphics/walled_garden/two_column_middle.png,
+ _graphics/walled_garden/two_column_top.png,
+ _graphics/walled_garden_background_bottom.gif,
+ _graphics/walled_garden_background_extend.gif,
+ _graphics/walled_garden_background_top.gif,
+ _graphics/walled_garden_backgroundfull_bottom.gif,
+ _graphics/walled_garden_backgroundfull_top.gif, engine/lib/elgglib.php,
+ views/default/core/walled_garden/body.php,
+ views/default/css/walled_garden.php, views/default/page/walled_garden.php:
+ basic walled garden implementation for logging in
+
+ * views/default/core/account/login_box.php: added support for specifying the
+ module type to login box
+
+2011-10-30 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/plugins.php, languages/en.php, views/default/admin/plugins.php:
+ Fixes #2821. Plugins that are active and cannot be started emit an admin
+ notice.
+
+2011-10-30 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/input.php, mod/htmlawed/start.php,
+ views/default/output/longtext.php: Fixes #3370 running the anti-spam option
+ of htmlawed when filtering for output
+
+ * engine/lib/output.php: removed non-overridable insertion of inline style
+ to links
+
+ * engine/lib/configuration.php, engine/lib/pageowner.php: setting
+ $CONFIG->context earlier to avoid using the context functions before it is
+ initialized
+
+2011-10-29 Brett Profitt <brett.profitt@gmail.com>
+
+ * actions/widgets/save.php, views/default/widgets/river_widget/content.php,
+ views/default/widgets/river_widget/edit.php: Fixes #4001. Activity widget
+ passes a context so correct output is displayed upon save.
+
+ * js/lib/elgglib.js, js/lib/security.js: Fixes #4010, refs #3927. Fixed
+ elgg.security.addToken() to work with query strings, relative URLs, and full
+ URLs.
+
+ * mod/blog/lib/blog.php, mod/blog/start.php, mod/notifications/index.php,
+ mod/thewire/start.php, mod/tinymce/start.php: Refs #3859. Added
+ elgg_register_simplecache_view() to core plugins' js.
+
+ * engine/lib/cache.php: Fixes #4029, refs #3859.
+ elgg_invalidate_simplecache() resets the lastcached and lastupdate datasets.
+ Added documentation about how to use simple cache views.
+
+2011-10-29 cash <cash.costello@gmail.com>
+
+ * .../examples/plugins/full_manifest/manifest.xml,
+ .../examples/plugins/manifest_options/manifest.xml,
+ .../examples/plugins/simple_manifest/manifest.xml,
+ .../examples/plugins/skeleton/manifest.xml: better organization for the
+ manifests and plugin skeleton
+
+ * .../examples/plugins/full_manifest/manifest.xml,
+ documentation/examples/plugins/manifest.xml,
+ .../examples/plugins/simple_manifest/manifest.xml: creates a simple manifest
+ for people to copy and use
+
+ * .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ .../vendors/oauth/library/OAuthRequester.php,
+ .../vendors/oauth/library/OAuthServer.php: Refs #4028 reset the oAuth lib to
+ version r64 of oauth-php
+
+ * engine/classes/ElggEntity.php, engine/classes/Locatable.php,
+ languages/en.php, views/default/annotation/generic_comment.php,
+ views/rss/annotation/default.php, views/rss/annotation/generic_comment.php,
+ views/rss/group/default.php, views/rss/object/creator.php,
+ views/rss/object/default.php, views/rss/object/georss.php,
+ views/rss/output/url.php, views/rss/page/components/creator.php,
+ views/rss/page/components/georss.php, views/rss/page/default.php,
+ views/rss/page/elements/comments.php, views/rss/river/item.php,
+ views/rss/search/entity_list.php, views/rss/user/default.php: Fixes #3201
+ updates rss view type for core Elgg
+
+ * views/php/api/output.php, views/php/group/default.php,
+ views/php/object/default.php, views/php/page/default.php,
+ views/php/site/default.php, views/php/user/default.php: Refs #3201 updates
+ the php view type
+
+ * views/json/api/output.php, views/json/entities/entity_list.php,
+ views/json/group/default.php, views/json/object/default.php,
+ views/json/site/default.php, views/json/user/default.php,
+ views/php/search/entity_list.php: Refs #3201 this finishes the updates on the
+ JSON view
+
+ * engine/classes/ElggRiverItem.php, views/json/page/components/list.php,
+ views/json/page/default.php, views/json/river/item.php,
+ views/json/river/item/list.php, views/json/search/entity_list.php: Refs #3201
+ updates json river views and removed old search view
+
+ * engine/lib/views.php, .../views/default/river/object/blog/create.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/river/object/file/create.php,
+ .../river/annotation/group_topic_post/reply.php,
+ mod/groups/views/default/river/group/create.php,
+ .../river/object/groupforumtopic/create.php,
+ .../default/river/relationship/member/create.php,
+ .../default/river/object/messageboard/create.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/thewire/create.php,
+ .../river/annotation/generic_comment/create.php,
+ views/default/river/elements/layout.php, views/default/river/item.php,
+ views/default/river/relationship/friend/create.php,
+ .../river/user/default/profileiconupdate.php,
+ views/default/river/user/default/profileupdate.php: adds a river layout view
+ that all river views should use
+
+ * mod/search/search_hooks.php: Refs #3983 merged fix into master
+
+ * pages/avatar/view.php: Refs #3396 fixed the integration of this 1.7 fix
+ into 1.8 and also added better expires header
+
+2011-10-29 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggEntity.php, mod/profile/icon.php,
+ mod/profile/icondirect.php, mod/profile/start.php: Fixes #3920 profile plugin
+ adds a fast loading of user avatars
+
+ * mod/messages/pages/messages/read.php, mod/messages/start.php,
+ mod/messages/views/default/object/messages.php: Fixes #4015 decrementing the
+ count before adding to the topbar
+
+2011-10-28 Cash Costello <cash.costello@gmail.com>
+
+ * js/lib/ui.js, views/default/input/date.php: Fixes #4012 when using a
+ timestamp with input/date, return UTC time rather than local time
+
+ * .../views/default/theme_preview/forms.php: using correct date string now
+ in developers form sandbox
+
+2011-10-27 cash <cash.costello@gmail.com>
+
+ * actions/avatar/crop.php, engine/lib/views.php,
+ mod/groups/actions/groups/edit.php: Fixes #4011 icon sizes are configurable
+ now
+
+ * mod/externalpages/start.php, views/default/css/elements/navigation.php,
+ views/default/css/ie7.php, views/default/forms/login.php,
+ views/default/page/walled_garden.php: Fixes #3863 introduced
+ elgg-menu-general so that elgg-menu-footer can be specific to site footer
+
+ * views/default/object/plugin.php, views/default/object/plugin/advanced.php,
+ views/default/object/plugin/full.php, views/default/object/plugin/simple.php:
+ Refs #3917 removed more code from simple plugin interface
+
+ * mod/search/start.php, mod/search/views/default/search/css.php,
+ mod/search/views/default/search/header.php,
+ mod/search/views/default/search/search_box.php: Fixes #3687 added
+ .elgg-search-header for css specific to header search box
+
+ * js/lib/avatar_cropper.js: Fixes #3832 initialize avatar crop area
+
+ * mod/groups/lib/groups.php,
+ .../views/default/groups/membershiprequests.php: Refs #3296 displaying all
+ group membership requests on one page
+
+ * views/rss/page/default.php: Fixes #3150 added a blank description field so
+ RSS is valid - any better ideas?
+
+ * engine/lib/views.php, .../views/default/custom_index/css.php,
+ .../views/default/page/layouts/custom_index.php: Fixes #2937 added
+ .elgg-module-front
+
+2011-10-27 Cash Costello <cash.costello@gmail.com>
+
+ * pages/account/register.php, views/default/css/admin.php,
+ views/default/css/elements/forms.php: Refs #3672 updated account forms for
+ max width
+
+ * engine/lib/users.php: login page should not be displayed to logged in
+ users
+
+2011-10-26 Brett Profitt <brett.profitt@gmail.com>
+
+ * UPGRADE.txt: Made instructions for removing mod/profile clearer.
+
+2011-10-26 Cash Costello <cash.costello@gmail.com>
+
+ * mod/likes/start.php: Fixes #3958 added special catch for liking groups
+
+ * languages/en.php, .../admin/appearance/profile_fields/list.php,
+ views/default/forms/profile/fields/add.php: Fixes #3926 updated spacing for
+ edit profile field forms
+
+2011-10-26 Sem <sembrestels@riseup.net>
+
+ * mod/externalpages/start.php, views/default/css/walled_garden.php,
+ views/default/page/walled_garden.php: Closes #3947. External pages are now
+ viewable by visitors in walled-garden sites. Footer menu is also added into
+ walled-garden logging page.
+
+2011-10-25 cash <cash.costello@gmail.com>
+
+ * views/default/object/elements/summary.php: Fixes #2292 added
+ object/summary/extend view
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/pages/views/default/object/page_top.php,
+ views/default/object/elements/full.php: added new view for the full display
+ of objects
+
+2011-10-25 Cash Costello <cash.costello@gmail.com>
+
+ * views/ical/export/entity.php, views/ical/object/default.php,
+ views/ical/page/default.php, views/ical/search/entity_list.php: Refs #3201 a
+ working ical view type
+
+2011-10-24 cash <cash.costello@gmail.com>
+
+ * mod/profile/views/default/profile/metatags.php,
+ views/foaf/page/default.php, views/foaf/search/entity_list.php,
+ views/foaf/user/default.php: Refs #3201 updated foaf link to only be added to
+ user's pages
+
+ * views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/page/default.php: Refs #3201 updating failsafe viewtype to
+ Elgg standards for CSS
+
+ * .../admin/develop_utilities/diagnostics.php,
+ .../views/default/forms/diagnostics/download.php: Fixes #3868 removed
+ unnecessary form for downloading the diagnostics report
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ mod/pages/views/default/object/page_top.php: Fixes #3974 blog, bookmarks,
+ file, and pages plugins consistent in integration with categories plugin
+
+2011-10-23 germanazo <germanazo@phpdev>
+
+ * engine/lib/users.php: Cleanned the login failures on passwords resets,
+ this have more sense
+
+2011-10-23 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/page/components/module.php: Fixes #4003 footer in modules is
+ included by default
+
+ * views/default/input/reset.php, views/default/input/submit.php: Refs #3810
+ standardizes the button views
+
+2011-10-23 Brett Profitt <brett.profitt@gmail.com>
+
+ * .../admin/appearance/profile_fields/list.php, views/default/js/admin.php:
+ Fixes #3864. Removed old code from profile fields sorting. Name spaced IDs
+ and classes.
+
+ * engine/lib/elgglib.php, js/lib/avatar_cropper.js, js/lib/ui.js,
+ views/default/forms/avatar/crop.php: Fixes #3914. Pulled avatar code out into
+ its own library.
+
+ * js/lib/ui.js, views/default/css/elements/misc.php,
+ views/default/forms/avatar/crop.php: Fixes #3914. Moved avatar cropping to
+ ui.js.
+
+ * engine/lib/plugins.php: Fixes #3991. Populating provided_by in
+ elgg_get_plugins_provides().
+
+ * UPGRADE.txt: Fixes #3975. Added mod/profile to the list of dirs to remove
+ for an upgrade.
+
+ * mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/categories/manifest.xml, mod/custom_index/manifest.xml,
+ mod/dashboard/manifest.xml, mod/developers/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/embed/manifest.xml,
+ mod/externalpages/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/likes/manifest.xml, mod/logbrowser/manifest.xml,
+ mod/logrotate/manifest.xml, mod/members/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/oauth_api/manifest.xml,
+ mod/pages/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/twitter_api/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: Fixes #3959. Using elgg_release in core plugins.
+
+2011-10-21 Cash Costello <cash.costello@gmail.com>
+
+ * install/ElggInstaller.php, install/cli/sample_installer.php: Fixes #3995
+ the batch installer now skips the settings file creation step if settings.php
+ already exists
+
+ * install/ElggInstaller.php: Fixes #3994 cleaned up session handling for the
+ installer
+
+ * engine/lib/filestore.php: don't set default filestore if we don't have a
+ dataroot
+
+ * engine/classes/ElggSite.php: updated ElggSite::disable() to conform to
+ ElggEntity::disable()
+
+ * engine/classes/ElggMetadata.php, engine/lib/entities.php: Fixes #3988
+ correctly passing user_guid through canEdit for metadata
+
+ * engine/lib/entities.php: fixed access of non-object property in entities
+ lib
+
+ * engine/lib/access.php: Fixes #3989 fixed access of non-object property in
+ access lib
+
+ * views/installation/input/access.php, views/installation/input/button.php,
+ views/installation/input/checkbox.php, views/installation/input/dropdown.php,
+ views/installation/input/form.php, views/installation/input/password.php,
+ views/installation/input/text.php: cleaned up input views for installation so
+ that no notices are thrown
+
+2011-10-21 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * views/default/input/reset.php: #3810 (No class in input/reset view)
+
+2011-10-20 Brett Profitt <brett.profitt@gmail.com>
+
+ * views/default/admin/plugins.php: Fixes #3990 Using
+ ElggPlugin->getFriendlyName() for sorting alphabetically to avoid WSODs with
+ invalid plugins.
+
+ * engine/start.php: Fixes #3680. Explicitly connecting to db in start.php.
+
+ * languages/en.php: Fixes #3968. Added 'on' and 'off' to core language.
+
+ * views/default/forms/widgets/save.php: Fixes #3951. Added label for access
+ dropdown in widget edit view.
+
+2011-10-19 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/filestore.php, engine/lib/plugins.php: fixed minor errors in
+ the documentation in plugins and filestore lib
+
+2011-10-18 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/users.php: fixed typo in setting the default profile fields
+
+2011-10-17 cash <cash.costello@gmail.com>
+
+ * actions/useradd.php: added another check to useradd action
+
+2011-10-17 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggPluginPackage.php: added additional readme names for
+ display on plugin page
+
+2011-10-15 Brett Profitt <brett.profitt@gmail.com>
+
+ * js/lib/elgglib.js, js/lib/hooks.js: Fixes #3540. Added "instant hooks" to
+ JS hooks engine. elgg.register_instant_hook(name, type) will cause any
+ handler registering to that hook to be immediately executed if the hook has
+ been previously triggered. Open for better suggestions about the name.
+
+2011-10-14 Brett Profitt <brett.profitt@gmail.com>
+
+ * js/lib/security.js: Fixes #3927. elgg.security.addToken() works for URLs
+ without query strings.
+
+ * js/lib/elgglib.js: Refs #3927, #3976. Added elgg.parse_url() and
+ elgg.parse_str().
+
+2011-10-14 Janek Lasocki-Biczysko <j.lasocki-biczysko@intrallect.com>
+
+ * engine/classes/ElggMemcache.php: Ticket #3928 updated
+ ElggMemecache->save() to take 3rd optional parameter
+
+2011-10-14 Cash Costello <cash.costello@gmail.com>
+
+ * .../river/user/default/profileiconupdate.php: Fixes #3977 not showing
+ hover menu on avatar update in river
+
+2011-10-13 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php: Fixes #3901. Corrected typo for maxtime
+ sorting.
+
+ * actions/admin/plugins/simple_update_states.php,
+ documentation/examples/plugins/manifest.xml,
+ engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser18.php, engine/lib/admin.php,
+ engine/tests/api/plugins.php, engine/tests/test_files/plugin_18/manifest.xml,
+ languages/en.php, mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/categories/manifest.xml, mod/custom_index/manifest.xml,
+ mod/dashboard/manifest.xml, mod/developers/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/embed/manifest.xml,
+ mod/externalpages/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/likes/manifest.xml, mod/logbrowser/manifest.xml,
+ mod/logrotate/manifest.xml, mod/members/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/pages/manifest.xml,
+ mod/profile/manifest.xml, mod/reportedcontent/manifest.xml,
+ mod/search/manifest.xml, mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/uservalidationbyemail/manifest.xml, mod/zaudio/manifest.xml: Fixes #3917.
+ Removed uses of admin interface in manifests. Removed related code.
+
+2011-10-13 cash <cash.costello@gmail.com>
+
+ * js/lib/userpicker.js, views/default/input/userpicker.php: added
+ documentation for the userpicker
+
+2011-10-13 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/categories/listing.php, mod/categories/pages/categories/listing.php,
+ mod/categories/start.php: Fixes #3746. Moved the categories page handler
+ script. Updated the layout call.
+
+ * views/default/css/admin.php: Fixes #3880. Removed the too greedy CSS rule
+ for elgg-admin-notice a so only the close icon is float right.
+
+2011-10-13 cash <cash.costello@gmail.com>
+
+ * js/lib/userpicker.js: fixed bug where a removed user could not be added
+ again in userpicker
+
+2011-10-13 Brett Profitt <brett.profitt@gmail.com>
+
+ * languages/en.php: Fixes #3734. Changed "Tested value" to "Expected value"
+ in the plugin deps matrix.
+
+2011-10-13 cash <cash.costello@gmail.com>
+
+ * engine/lib/input.php, js/lib/userpicker.js,
+ views/default/css/elements/forms.php, views/default/input/userpicker.php:
+ displaying users that have been selected and added remove capability
+
+2011-10-13 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/twitter_api/languages/en.php,
+ .../default/plugins/twitter_api/usersettings.php: Fixes #3177. Don't show the
+ authorize twitter plugin setting if the admin hasn't set up the plugin.
+
+2011-10-13 cash <cash.costello@gmail.com>
+
+ * js/lib/userpicker.js, views/default/input/userpicker.php: got the friends
+ option working for user picker
+
+2011-10-12 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/output.php, engine/tests/api/helpers.php: Fixes #3747. Using
+ filter_var to check for any valid URI.
+
+2011-10-12 cash <cash.costello@gmail.com>
+
+ * engine/lib/input.php, mod/groups/views/default/group/default.php,
+ views/default/css/elements/forms.php, views/default/object/default.php,
+ views/default/user/default.php: Simple theme for autocomplete
+
+2011-10-11 Brett Profitt <brett.profitt@gmail.com>
+
+ * version.php: Setting version to 1.8.1b1 instead of 1.8.1b.
+
+ * CHANGES.txt: Fixed extra space in changes.
+
+2011-10-10 Brett Profitt <brett.profitt@gmail.com>
+
+ * CHANGES.txt: Ordered the bugfixes in a for relevance.
+
+ * CHANGES.txt: Fixed stray * in changes.
+
+ * CHANGES.txt, version.php: Version bump. Updated changes.
+
+2011-10-10 cash <cash.costello@gmail.com>
+
+ * engine/lib/user_settings.php, languages/en.php: Fixes #3952 handling
+ exceptions when password checks fail when changing password
+
+ * mod/blog/lib/blog.php, mod/bookmarks/pages/bookmarks/friends.php,
+ mod/bookmarks/pages/bookmarks/owner.php, mod/file/pages/file/friends.php,
+ mod/file/pages/file/owner.php, mod/pages/pages/pages/friends.php,
+ mod/pages/pages/pages/owner.php, mod/thewire/pages/thewire/friends.php,
+ mod/thewire/pages/thewire/owner.php: Refs #3916 added checks to all content
+ plugins in master for page owner in mine and friends pages
+
+ * mod/file/actions/file/upload.php, mod/file/languages/en.php: Refs #3919
+ merged file upload failure check to master
+
+2011-10-10 Cash Costello <cash.costello@gmail.com>
+
+ * actions/widgets/save.php: Fixes #3950 falling back to deprecated view when
+ saving a widget
+
+ * .../views/default/widgets/bookmarks/edit.php: Fixes #3949 bookmarks widget
+ fix
+
+2011-10-09 Cash Costello <cash.costello@gmail.com>
+
+ * languages/en.php, mod/messages/languages/en.php,
+ mod/notifications/languages/en.php,
+ .../core/settings/account/notifications.php: Fixes #595 separating email
+ address from email notification in language strings
+
+ * js/lib/ui.js, views/default/core/account/login_box.php,
+ views/default/forms/login.php, views/default/forms/register.php,
+ views/default/forms/user/requestnewpassword.php: Fixes #3673 added autofocus
+ class
+
+ * engine/lib/sites.php: Fixes #3796 get_site_by_url() now respects class
+ inheritance
+
+ * engine/classes/ElggSite.php: Fixes #3729 handling forwarding to page when
+ logging into a walled garden
+
+ * engine/tests/api/access_collections.php,
+ engine/tests/api/entity_getter_functions.php, engine/tests/api/helpers.php,
+ engine/tests/api/metadata.php, engine/tests/objects/entities.php: Fixes #3948
+ cleaning up stuff left behind by unit tests
+
+ * engine/classes/ElggSite.php: Fixes #3878 registering the security token
+ action as an external page
+
+2011-10-08 Cash Costello <cash.costello@gmail.com>
+
+ * engine/tests/objects/entities.php: Fixes #3946 deleting the temporary
+ entities created in entity unit tests
+
+ * engine/lib/entities.php, engine/tests/objects/sites.php: Fixes #3897 fixed
+ source of infinite regression loop in delete_entity()
+
+ * engine/classes/ElggAnnotation.php, engine/lib/access.php,
+ engine/lib/annotations.php, engine/tests/api/access_collections.php,
+ engine/tests/api/helpers.php, engine/tests/api/metadata.php,
+ engine/tests/objects/entities.php, engine/tests/objects/users.php,
+ engine/tests/regression/trac_bugs.php, mod/groups/start.php: Fixes #3942
+ fixed all the warnings and notices in the unit tests
+
+ * engine/classes/ElggPriorityList.php: Fixes #3945 using reset on the array
+
+ * engine/lib/widgets.php: Fixes #3944 fixing the default widgets
+ implementation
+
+ * engine/lib/entities.php: Fixes #3943 returning false in
+ can_write_to_container() if container does not exist
+
+ * engine/lib/elgglib.php: need to check if something exists before checking
+ its type
+
+ * engine/tests/ui/submenu.php: removed unused unit tests for old submenu
+ code
+
+ * engine/classes/ElggPlugin.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php: Fixes #3743 returning bool instead of int
+ when setting a private setting
+
+ * .../views/default/plugins/logrotate/settings.php: fixed bug with variable
+ name in log rotation
+
+ * engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/cache.php, engine/lib/calendar.php,
+ engine/lib/configuration.php, engine/lib/cron.php, engine/lib/database.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/filestore.php, engine/lib/group.php,
+ engine/lib/input.php, engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/navigation.php, engine/lib/notification.php,
+ engine/lib/objects.php, engine/lib/opendd.php, engine/lib/output.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/plugins.php, engine/lib/private_settings.php,
+ engine/lib/relationships.php, engine/lib/river.php, engine/lib/sessions.php,
+ engine/lib/sites.php, engine/lib/statistics.php, engine/lib/system_log.php,
+ engine/lib/tags.php, engine/lib/upgrade.php, engine/lib/user_settings.php,
+ engine/lib/users.php, engine/lib/views.php, engine/lib/web_services.php,
+ engine/lib/widgets.php, engine/lib/xml-rpc.php: Fixes #3936 added @access
+ private to internal functions
+
+ * engine/lib/actions.php: Fixes #3941 Refs #3936 added @access private in
+ action lib and added elgg_unregister_action()
+
+ * engine/lib/access.php, engine/lib/views.php: Fixes #3937 updated the
+ documentation for the access lib and a few minor code clean-ups
+
+ * engine/classes/ElggMenuItem.php,
+ mod/blog/views/default/blog/group_module.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/object/blog.php,
+ mod/blog/views/default/widgets/blog/content.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/widgets/bookmarks/content.php,
+ .../views/default/theme_preview/general.php,
+ .../admin/develop_utilities/diagnostics.php,
+ mod/file/views/default/file/group_module.php,
+ mod/file/views/default/icon/object/file.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/widgets/filerepo/content.php,
+ .../views/default/discussion/group_module.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/profile/summary.php,
+ .../views/default/groups/sidebar/members.php,
+ .../views/default/object/groupforumtopic.php,
+ .../default/widgets/a_users_groups/content.php,
+ mod/likes/views/default/annotation/likes.php,
+ mod/likes/views/default/likes/button.php,
+ mod/logbrowser/views/default/logbrowser/table.php,
+ .../views/default/widgets/messageboard/content.php,
+ mod/messages/views/default/object/messages.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/group_module.php,
+ mod/pages/views/default/widgets/pages/content.php,
+ .../views/default/object/reported_content.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/widgets/thewire/content.php,
+ .../forms/twitter_api/interstitial_settings.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ views/default/admin/appearance/default_widgets.php,
+ .../admin/appearance/profile_fields/list.php, views/default/admin/header.php,
+ views/default/icon/default.php, views/default/icon/user/default.php,
+ views/default/navigation/breadcrumbs.php,
+ views/default/navigation/menu/user_hover.php,
+ views/default/navigation/pagination.php, views/default/navigation/tabs.php,
+ views/default/object/admin_notice.php, views/default/object/default.php,
+ views/default/object/elements/summary.php,
+ views/default/object/plugin/advanced.php,
+ views/default/object/plugin/simple.php,
+ views/default/object/widget/elements/controls.php,
+ views/default/output/tag.php, views/default/output/url.php,
+ views/default/page/elements/footer.php,
+ views/default/page/elements/tagcloud_block.php,
+ views/default/page/layouts/widgets/add_button.php,
+ views/default/river/elements/body.php,
+ views/default/river/elements/responses.php,
+ views/default/river/elements/summary.php,
+ .../river/user/default/profileiconupdate.php,
+ views/default/river/user/default/profileupdate.php,
+ views/default/widgets/content_stats/content.php: Fixes #3411 output/url now
+ has a is_trusted parameter - defaults to false
+
+2011-10-07 Cash Costello <cash.costello@gmail.com>
+
+ * languages/en.php, .../admin/appearance/profile_fields/list.php,
+ views/default/forms/profile/fields/add.php: Fixes #3644 localized profile
+ field names
+
+2011-10-06 cash <cash.costello@gmail.com>
+
+ * engine/lib/elgglib.php, engine/lib/input.php, js/lib/autocomplete.js,
+ vendors/jquery/jquery.ui.autocomplete.html.js,
+ views/default/input/autocomplete.php, views/default/user/default.php: using
+ html extension to jquery.ui autocomplete
+
+ * engine/lib/input.php: Fixes #3932 Refs #3931 improved the livesearch
+ endpoint
+
+2011-10-05 cash <cash.costello@gmail.com>
+
+ * actions/useradd.php, engine/lib/users.php, languages/en.php: Fixes #3704
+ displaying error messages when adding users through admin interface
+
+2011-10-04 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/tinymce/vendor/tinymce/changelog.txt,
+ mod/tinymce/vendor/tinymce/examples/full.html,
+ .../vendor/tinymce/jscripts/tiny_mce/langs/en.js,
+ .../tiny_mce/plugins/advhr/langs/en_dlg.js,
+ .../tiny_mce/plugins/advimage/editor_plugin.js,
+ .../tiny_mce/plugins/advimage/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advimage/js/image.js,
+ .../tiny_mce/plugins/advimage/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlink/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlist/editor_plugin.js,
+ .../tiny_mce/plugins/advlist/editor_plugin_src.js,
+ .../tiny_mce/plugins/autolink/editor_plugin.js,
+ .../tiny_mce/plugins/autolink/editor_plugin_src.js,
+ .../tiny_mce/plugins/autoresize/editor_plugin.js,
+ .../plugins/autoresize/editor_plugin_src.js,
+ .../tiny_mce/plugins/autosave/editor_plugin.js,
+ .../tiny_mce/plugins/autosave/editor_plugin_src.js,
+ .../tiny_mce/plugins/contextmenu/editor_plugin.js,
+ .../plugins/contextmenu/editor_plugin_src.js,
+ .../plugins/emotions/img/smiley-foot-in-mouth.gif,
+ .../plugins/emotions/img/smiley-laughing.gif,
+ .../plugins/emotions/img/smiley-sealed.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-smile.gif,
+ .../plugins/emotions/img/smiley-surprised.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-wink.gif,
+ .../tiny_mce/plugins/emotions/langs/en_dlg.js,
+ .../plugins/example_dependency/editor_plugin.js,
+ .../example_dependency/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullscreen/editor_plugin.js,
+ .../plugins/fullscreen/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullscreen/fullscreen.htm,
+ .../tiny_mce/plugins/inlinepopups/editor_plugin.js,
+ .../plugins/inlinepopups/editor_plugin_src.js,
+ .../inlinepopups/skins/clearlooks2/img/alert.gif,
+ .../inlinepopups/skins/clearlooks2/img/button.gif,
+ .../inlinepopups/skins/clearlooks2/img/confirm.gif,
+ .../inlinepopups/skins/clearlooks2/img/corners.gif,
+ .../skins/clearlooks2/img/vertical.gif,
+ .../tiny_mce/plugins/layer/editor_plugin.js,
+ .../tiny_mce/plugins/layer/editor_plugin_src.js,
+ .../tiny_mce/plugins/lists/editor_plugin.js,
+ .../tiny_mce/plugins/lists/editor_plugin_src.js,
+ .../tiny_mce/plugins/media/editor_plugin.js,
+ .../tiny_mce/plugins/media/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/media/media.htm,
+ .../tiny_mce/plugins/nonbreaking/editor_plugin.js,
+ .../plugins/nonbreaking/editor_plugin_src.js,
+ .../tiny_mce/plugins/noneditable/editor_plugin.js,
+ .../plugins/noneditable/editor_plugin_src.js,
+ .../tiny_mce/plugins/paste/editor_plugin.js,
+ .../tiny_mce/plugins/paste/editor_plugin_src.js,
+ .../tiny_mce/plugins/paste/langs/en_dlg.js,
+ .../tiny_mce/plugins/searchreplace/langs/en_dlg.js,
+ .../tiny_mce/plugins/spellchecker/editor_plugin.js,
+ .../plugins/spellchecker/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/style/js/props.js,
+ .../tiny_mce/plugins/style/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/style/props.htm,
+ .../tiny_mce/plugins/tabfocus/editor_plugin.js,
+ .../tiny_mce/plugins/tabfocus/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/cell.htm,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/cell.js,
+ .../jscripts/tiny_mce/plugins/table/js/row.js,
+ .../tiny_mce/plugins/table/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/table/row.htm,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../tiny_mce/plugins/template/langs/en_dlg.js,
+ .../tiny_mce/plugins/wordcount/editor_plugin.js,
+ .../plugins/wordcount/editor_plugin_src.js,
+ .../tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../tiny_mce/themes/advanced/img/colorpicker.jpg,
+ .../tiny_mce/themes/advanced/img/flash.gif,
+ .../tiny_mce/themes/advanced/img/icons.gif,
+ .../tiny_mce/themes/advanced/img/quicktime.gif,
+ .../tiny_mce/themes/advanced/img/shockwave.gif,
+ .../jscripts/tiny_mce/themes/advanced/js/anchor.js,
+ .../jscripts/tiny_mce/themes/advanced/js/image.js,
+ .../jscripts/tiny_mce/themes/advanced/langs/en.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../themes/advanced/skins/default/content.css,
+ .../themes/advanced/skins/default/img/buttons.png,
+ .../themes/advanced/skins/default/img/items.gif,
+ .../themes/advanced/skins/default/img/tabs.gif,
+ .../tiny_mce/themes/advanced/skins/default/ui.css,
+ .../themes/advanced/skins/highcontrast/content.css,
+ .../themes/advanced/skins/highcontrast/ui.css,
+ .../themes/advanced/skins/o2k7/content.css,
+ .../themes/advanced/skins/o2k7/img/button_bg.png,
+ .../advanced/skins/o2k7/img/button_bg_black.png,
+ .../advanced/skins/o2k7/img/button_bg_silver.png,
+ .../tiny_mce/themes/advanced/skins/o2k7/ui.css,
+ .../jscripts/tiny_mce/themes/simple/img/icons.gif,
+ .../jscripts/tiny_mce/themes/simple/langs/en.js,
+ .../vendor/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_src.js,
+ .../jscripts/tiny_mce/utils/editable_selects.js: Refs #3853. Upgraded TinyMCE
+ to 3.4.6. Embed still inserts the content in the wrong place for IE 8.
+
+ * pages/avatar/view.php: Refs #3396. Added try / catch for avatar icon.
+
+2011-10-04 cash <cash.costello@gmail.com>
+
+ * mod/blog/lib/blog.php: Fixes #3793 blogs respect closed groups for main
+ index page
+
+ * .../views/default/object/reported_content.php,
+ views/default/css/admin.php: Refs #3809 implemented Evan's suggestion for
+ button spacing
+
+ * engine/lib/users.php: Fixes #3700 using different names for add friend and
+ remove friend user hover menu items
+
+ * mod/groups/lib/groups.php: Fixes #3841 not displaying leave group button
+ to group owners
+
+ * mod/groups/lib/groups.php: Fixes #3898 checking whether the viewer is
+ logged in before adding join/requet buttons
+
+ * engine/lib/entities.php: Fixes #3753 removed deprecated functions from
+ delete_entity()
+
+2011-10-03 cash <cash.costello@gmail.com>
+
+ * views/default/css/admin.php: Fixes #3866 added CSS for entity menu in
+ admin theme
+
+ * mod/embed/README.txt, mod/embed/views/default/embed/item.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/file/views/default/icon/object/file.php, views/default/icon/default.php:
+ using better insert class
+
+ * mod/embed/README.txt, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/layout.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/embed/views/default/navigation/menu/embed.php, mod/file/start.php,
+ .../views/default/embed/file_upload/content.php: removed the sections from
+ the menu to provide more flexibility in tab ordering
+
+2011-10-02 Brett Profitt <brett.profitt@gmail.com>
+
+ * pages/avatar/view.php: Fixed avatar handling for default icons if the
+ uploaded file is missing.
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/entities.php, engine/lib/metadata.php,
+ engine/lib/relationships.php: Merged docs update for getters from 1.7.
+
+ * engine/classes/ElggFile.php, mod/file/actions/file/upload.php: Merged file
+ mime type detection from 1.7.
+
+ * engine/lib/database.php: Merged fixes for delayed queries from 1.7.
+
+ * engine/tests/regression/trac_bugs.php: Merged test for
+ can_write_to_container().
+
+2011-09-10 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/tests/suite.php: Fixes #3675. Added admin gate keeper to unit
+ tests.
+
+2011-10-02 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/categories/deactivate.php: Removing admin notice for unpopulated
+ categories when disabling categories plugin.
+
+ * actions/admin/plugins/activate.php,
+ actions/admin/plugins/activate_all.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/deactivate_all.php,
+ actions/admin/plugins/set_priority.php, engine/classes/ElggPlugin.php,
+ engine/classes/ElggPluginPackage.php, languages/en.php: Fixes #3915. Added
+ ElggPlugin->getFriendlyName() to check for manifest->getName() first, then
+ for plugin ID. Added better descriptions for plugin activation errors.
+
+2011-10-01 cash <cash.costello@gmail.com>
+
+ * engine/lib/navigation.php, engine/lib/views.php: Fixes #3860 changed
+ context-sensitive to dynamic to describe menus
+
+ * mod/bookmarks/actions/bookmarks/save.php, mod/bookmarks/languages/en.php:
+ Fixes #3686 added work around for PHP bug when validating URLs with dashes
+
+2011-10-01 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/forms/avatar/crop.php: Fixes #3888 correcting initialization
+ of avatar cropping library
+
+ * engine/lib/elgglib.php, views/default/forms/avatar/crop.php: Fixes #3913
+ registering jquery.imgareaselect
+
+ * actions/avatar/upload.php: Fixes #3912 checking that the upload succeeded
+ before resizing
+
+ * languages/en.php: more was defined twice in the core language file
+
+2011-10-01 cash <cash.costello@gmail.com>
+
+ * mod/embed/README.txt, mod/embed/views/default/js/embed/embed.php: Updated
+ the instructions
+
+ * mod/embed/views/default/js/embed/embed.php,
+ mod/file/views/default/embed/file/content.php,
+ .../views/default/embed/file_upload/content.php: fixed the forwarding of an
+ embed upload form
+
+ * mod/embed/start.php, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/item.php,
+ mod/embed/views/default/js/embed/embed.php: cleaned up the embed item view
+ and removed the inline js
+
+ * mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item.php,
+ mod/embed/views/default/embed/list.php,
+ mod/embed/views/default/embed/tabs.php,
+ mod/embed/views/default/group/default/embed.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/embed/views/default/object/default/embed.php,
+ mod/embed/views/default/object/file/embed.php,
+ mod/embed/views/default/object/file/embedlist.php,
+ mod/embed/views/default/site/default/embed.php,
+ mod/embed/views/default/user/default/embed.php: removed unnecessary code
+
+ * mod/embed/languages/en.php, mod/embed/start.php,
+ mod/embed/views/default/embed/item.php,
+ mod/embed/views/default/embed/layout.php,
+ mod/embed/views/default/embed/list.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/embed/views/default/navigation/menu/embed.php, mod/file/start.php: using
+ the menu system for the embed tabs and adding a reusable select list view
+
+ * engine/lib/configuration.php: Fixes #3826 using wwwroot in 1.8.x releases
+
+2011-09-30 cash <cash.costello@gmail.com>
+
+ * views/default/forms/useradd.php: Fixes #3890 removed admin check in
+ useradd form since it is only used by admins
+
+ * engine/lib/navigation.php, mod/groups/start.php,
+ mod/likes/views/default/annotation/likes.php, mod/messageboard/start.php,
+ mod/messages/views/default/object/messages.php,
+ views/default/core/friends/collection.php,
+ views/default/output/confirmlink.php: Fixes #3904 action word should come
+ first for encode_text parameter
+
+2011-09-29 cash <cash.costello@gmail.com>
+
+ * views/default/css/elements/forms.php: Fixes #3894 ui-datepicker should
+ start out hidden
+
+ * views/default/css/elements/forms.php: Fixes #3666, #3748 distinct CSS for
+ inline vs popup date picker and fixed position bug for prev/next links in
+ header
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/metadata.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php, engine/lib/relationships.php: Fixes #3827
+ updated documentation on @return for elgg_get_entities* functions
+
+2011-09-28 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/elgglib.php, engine/lib/views.php,
+ engine/tests/api/helpers.php: Fixes #3891. elgg_register_external_file()
+ defaults priority to 500. Elgg's default CSS now at 500 instead of 1.
+
+ * .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/profile/views/default/profile/owner_block.php,
+ views/default/core/avatar/upload.php, views/default/forms/avatar/crop.php,
+ views/default/icon/user/default.php: Fixes #3879. Removed some instances of
+ deprecated views / functions.
+
+ * mod/file/pages/file/search.php: Fixes #3823. More carefully casting to int
+ for file's search.
+
+ * engine/tests/api/plugins.php: Refs #3808. Removed failing tests for
+ manifest translations.
+
+ * engine/lib/entities.php, engine/lib/metastrings.php, engine/lib/river.php,
+ engine/lib/tags.php, engine/tests/api/entity_getter_functions.php: Fixes
+ #3713. elgg_get_entities() and friends return false if passed invalid
+ options.
+
+2011-09-26 cash <cash.costello@gmail.com>
+
+ * engine/lib/output.php, views/default/input/checkboxes.php,
+ views/default/input/date.php, views/default/input/dropdown.php,
+ views/default/input/radio.php, views/default/input/userpicker.php: Fixes
+ #2921 clearing new ignore internal variables
+
+2011-09-25 cash <cash.costello@gmail.com>
+
+ * engine/lib/navigation.php, views/default/navigation/menu/site.php: Fixes
+ #3876 fixed dangling more site menu when items are manually selected - thanks
+ to JEBailey
+
+ * ...0.1-forum_reply_river_view-5758ce8d86ac56ce.php, version.php: Fixes
+ #3877 updates river db table for replying to forum topics
+
+ * languages/en.php, views/default/river/user/default/profileupdate.php: Refs
+ #3842 adding river view back so that those upgrading from earlier Elgg views
+ don't have empty river messages
+
+2011-09-24 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/admin.php, views/default/css/elements/icons.php,
+ views/default/css/ie.php, views/default/css/ie7.php: Fixes #3653 shrink
+ wrapping .elgg-avatar so that hover menu arrow is constrained to the avatar
+ image
+
+ * engine/lib/views.php, mod/embed/views/default/embed/css.php,
+ views/default/css/elements/core.php,
+ views/default/css/elements/navigation.php, views/default/css/ie.php,
+ views/default/css/ie6.php, views/default/css/ie7.php,
+ views/default/page/elements/head.php: Fixes #3845 added ie7 css view and
+ tested all current hacks for ie7
+
+2011-09-24 cash <cash.costello@gmail.com>
+
+ * mod/file/languages/en.php: Fixes #3858 added file notification string
+ translation - thanks to slyhne
+
+ * .../views/default/forms/logbrowser/refine.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/reportedcontent/admin_css.php, views/default/css/admin.php,
+ views/default/forms/admin/plugins/change_state.php,
+ views/default/forms/admin/plugins/filter.php,
+ views/default/forms/admin/plugins/sort.php: Fixes #3809 updated admin buttons
+ css
+
+ * engine/lib/deprecated-1.8.php, engine/lib/river.php, engine/lib/views.php,
+ mod/likes/views/default/likes/count.php,
+ mod/likes/views/default/likes/css.php, mod/likes/views/default/likes/js.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ views/default/css/elements/components.php: Fixes #3828 correct list classes
+
+ * .../admin/administer_utilities/logbrowser.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/logbrowser/refine.php: Fixes #3865 updated
+ logbrowser refine form
+
+ * views/default/css/admin.php: Fixes #3788 pagination highlighting updated
+ for admin theme
+
+ * views/default/admin/appearance/profile_fields.php,
+ views/default/forms/profile/fields/add.php,
+ views/default/forms/profile/fields/reset.php: Refs #3864 updated the two form
+ bodies for edit profile fields
+
+ * views/default/forms/account/settings.php, views/default/forms/login.php,
+ views/default/forms/plugins/settings/save.php,
+ views/default/forms/plugins/usersettings/save.php,
+ views/default/forms/register.php, views/default/forms/usersettings/save.php:
+ Fixes #3856 adds elgg-foot to forms missing it in /views/default/forms and
+ updated documentation
+
+2011-09-23 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/handlers/cache_handler.php: Refs #3859. Using PHP internal
+ functions to expire cache in +6 months instead of doing math manually to
+ avoid int overflow.
+
+2011-09-22 cash <cash.costello@gmail.com>
+
+ * mod/embed/views/default/embed/css.php,
+ mod/file/views/default/embed/file/content.php: Fixes #3795 not inserting the
+ file title when embeding a file and tweaked css - thanks to slyhne
+
+ * engine/classes/ElggPluginManifest.php, languages/en.php,
+ views/default/admin/plugins.php: Fixes #3808 not translating manifest fields
+ through elgg_echo()
+
+2011-09-22 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/upgrade.php: Fixes #3834 not loading version.php hundreds of
+ times - thanks to srokap
+
+2011-09-21 cash <cash.costello@gmail.com>
+
+ * js/lib/ui.js, views/default/css/elements/navigation.php,
+ views/default/css/ie.php, views/default/navigation/menu/site.php: Fixes #3770
+ CSS only site menu that works in IE7
+
+2011-09-19 Steve Clay <steve@mrclay.org>
+
+ * engine/lib/elgglib.php, engine/lib/group.php, engine/lib/sessions.php,
+ languages/en.php: forward throws Exception if headers sent. fix for
+ http://trac.elgg.org/ticket/3765
+
+ * engine/lib/views.php: don't generate false internalid deprecation notices:
+ http://trac.elgg.org/ticket/2921#comment:3
+
+2011-09-18 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggMenuItem.php: Fixes #3786 menu code was corrupting link
+ class if an additional class was passed through getContent()
+
+ * mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/admin/develop_tools/inspect.php,
+ .../views/default/admin/develop_tools/preview.php,
+ .../views/default/admin/developers/inspect.php,
+ .../views/default/admin/developers/preview.php: Fixes #3721 reorganized the
+ developer tools menu items in the admin area
+
+ * .../views/default/js/developers/developers.php: Fixes #3825 need to
+ specify the data type as json
+
+2011-09-17 cash <cash.costello@gmail.com>
+
+ * languages/en.php: Fixes #3819 added the request action words to the
+ language file
+
+ * mod/logrotate/languages/en.php, mod/logrotate/start.php,
+ .../views/default/plugins/logrotate/settings.php,
+ .../default/plugins/twitter_api/usersettings.php: Fixes #3824 fixed
+ deprecation warnings for plugin settings and usersettings
+
+ * views/default/object/plugin/advanced.php: Refs #3236 using .float-alt for
+ plugin activate button
+
+ * .../default/plugins/garbagecollector/settings.php,
+ .../default/settings/garbagecollector/edit.php,
+ .../views/default/plugins/groups/settings.php,
+ mod/groups/views/default/settings/groups/edit.php,
+ .../views/default/plugins/logrotate/settings.php,
+ .../views/default/settings/logrotate/edit.php,
+ .../views/default/plugins/twitter_api/settings.php,
+ .../default/plugins/twitter_api/usersettings.php,
+ .../views/default/settings/twitter_api/edit.php,
+ .../default/usersettings/twitter_api/edit.php: Fixes #2990 updated the
+ bundled plugins to use the new plugin/user settings structure
+
+2011-09-17 Cash Costello <cash.costello@gmail.com>
+
+ * .../views/default/settings/twitter_api/edit.php,
+ views/default/css/admin.php, views/default/object/plugin/advanced.php,
+ .../object/plugin/elements/dependencies.php,
+ views/default/object/plugin/invalid.php,
+ views/default/object/plugin/simple.php, views/default/page/admin.php: Fixes
+ #3236 finishes admin theme - open new tickets for new issues
+
+2011-09-15 cash <cash.costello@gmail.com>
+
+ * engine/lib/views.php: Fixes #3178 updated elgg_view_icon() to take an
+ optional class
+
+ * _graphics/elgg_sprites.png, mod/search/views/default/search/css.php,
+ views/default/css/elements/icons.php: Fixes #3400, #3820 added additional
+ icons to Elgg's sprite
+
+2011-09-15 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/lightbox.php: Fixes #3818 fixed short tag and extra
+ slash in URL for lightbox
+
+2011-09-14 Cash Costello <cash.costello@gmail.com>
+
+ * .../notifications/subscriptions/forminternals.php,
+ views/default/icon/user/default.php, views/default/input/friendspicker.php:
+ Fixes #3742 not including the hover menu on the personal notifications page
+
+ * engine/lib/navigation.php, languages/en.php,
+ mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ .../admin/develop_utilities/diagnostics.php,
+ .../views/default/admin/utilities/diagnostics.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ .../admin/administer_utilities/logbrowser.php,
+ .../views/default/admin/utilities/logbrowser.php,
+ mod/reportedcontent/languages/en.php, mod/reportedcontent/start.php,
+ .../admin/administer_utilities/reportedcontent.php,
+ .../default/admin/utilities/reportedcontent.php: Fixes #3681 fixed Utilities
+ menu collisions in admin section and added documentation about registering
+ more than one menu item with the same name to a menu
+
+ * views/default/forms/admin/site/update_advanced.php: Fixes #3783 using an
+ associative array for advanced settings checkboxes
+
+2011-09-13 Cash Costello <cash.costello@gmail.com>
+
+ * js/lib/elgglib.js, js/lib/languages.js, views/default/js/elgg.php: Fixes
+ #3539 two conditions for triggering init,system now - dom is ready and
+ languages loaded
+
+ * views/default/output/confirmlink.php: Fixes #3811 defaulting title to
+ confirm text if passed to output/confirmlink
+
+ * languages/en.php, views/default/admin/plugins.php: Fixes #3623 added
+ non-bundled filter option for plugins
+
+ * .../default/widgets/a_users_groups/content.php: Fixes #3803 fixed groups
+ more link in widget
+
+2011-09-12 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/admin.php, views/default/js/admin.php: Refs #3800 including
+ jeditable on more admin pages
+
+ * engine/lib/deprecated-1.8.php: Fixes #3801 fixed documentation for
+ page_owner_entity()
+
+ * mod/externalpages/manifest.xml: Fixes #3804 using Site Pages for the
+ plugin name
+
+2011-09-12 Brett Profitt <brett.profitt@gmail.com>
+
+ * .gitignore: Refs #3573. Using more specific rules in .gitignore.
+
+ * mod/embed/manifest.xml: Refs #3771. Fixed incorrect requires plugin name.
+
+2011-09-11 Brett Profitt <brett.profitt@gmail.com>
+
+ * .gitignore: Fixse #3573. Ignoring all files in /mod/ that aren't part of
+ core.
+
+ * mod/embed/manifest.xml, mod/file/views/default/embed/file/content.php,
+ .../views/default/embed/file_upload/content.php: Fixes #3771. Added missing
+ files for embed support. Added requirement for file in embed's manifest.
+
+2011-09-11 Cash Costello <cash.costello@gmail.com>
+
+ * mod/dashboard/languages/en.php, mod/dashboard/start.php,
+ .../default/widgets/group_activity/content.php,
+ .../views/default/widgets/group_activity/edit.php: Fixes #3340 adds group
+ activity widget for the user dashboard
+
+2011-09-11 Ravindra Nath Kakarla <ravindhranath@gmail.com>
+
+ * engine/lib/input.php: Livesearch handler returns proper JSON string now
+
+2011-09-11 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/users.php: Fixes #3794 fixes menu links so that admins can edit
+ avatars
+
+2011-09-10 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggMenuItem.php: Fixes #3741 fixed menu code so that all
+ links do not get empty title and confirm attributes
+
+ * engine/lib/views.php: Fixes #3665, #3660 added plugin hooks for page and
+ layouts so that rss icon for page meta menu can be registered consistently
+
+ * engine/lib/views.php: Fixes #3688 setting the page setup variable in
+ $CONFIG before trigger the event to prevent a stack overflow
+
+ * actions/admin/plugins/activate.php: Fixes #3714 also forwarding to the top
+ of the page when a plugin activation fails
+
+ * mod/groups/actions/groups/membership/join.php: Fixes #3752 corrected URL
+ for group membership requests
+
+ * engine/lib/plugins.php: made the documentation of the plugin settings code
+ a little clearer
+
+ * engine/classes/ElggEntity.php: Fixes #3782 only deleting metadata if the
+ entity has been saved
+
+ * mod/logbrowser/start.php,
+ mod/logbrowser/views/default/logbrowser/form.php: Fixes #3775 updated admin
+ area for logbrowser to utilities
+
+2011-09-05 Brett Profitt <brett.profitt@gmail.com>
+
+ * CHANGES.txt, engine/lib/access.php, version.php: Fixed a stupid problem I
+ introduced in the installation and only just caught >:O
+
+ * version.php: Version bump to 1.8.0. *whew*
+
+ * README.txt: Updated README to mention the Elgg Foundation.
+
+ * js/lib/ui.js, views/default/css/ie.php: Refs #3449, #3770. Using JS to fix
+ submenu dropdown in IE7.
+
+ * engine/lib/deprecated-1.8.php: Improved documentation for deprecated
+ functions.
+
+ * UPGRADE.txt: Added instructions to delete deprecated plugins during
+ upgrade.
+
+ * CHANGES.txt: Updated changes for 1.8.0.
+
+ * CONTRIBUTORS.txt: Updated contributors file with @elgg.org email
+ addresses.
+
+ * UPGRADE.txt: Added more explicit upgrade instructions for 1.7 -> 1.8.
+
+ * views/default/css/ie.php: Refs #3449. Some IE7 CSS fixes. I need to shower
+ now.
+
+2011-09-04 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/entities.php: Fixes #3661. Pulled in recursive delete fixes to
+ master.
+
+ * engine/classes/ElggEntity.php: Refs #3661. Merged lat/long metadata fixes
+ to master.
+
+ * engine/lib/entities.php, mod/search/search_hooks.php: Refs #3661. Merged
+ XSS fixes in search to master.
+
+ * mod/pages/pages/pages/edit.php: Refs #3661. Better filtering for
+ container_guid in pages.
+
+ * mod/file/pages/file/search.php: Refs #3661. Pulled in XSS fixes for file
+ search.
+
+ * mod/groups/lib/groups.php: Fixes #3720. Using correctly filters for tabs
+ on group landing page.
+
+ * engine/start.php: Refs #3661. Merged $CONFIG->lastcache fix to master.
+ Fixes #3530. $CONFIG->lastcache has correct value on page load when cache is
+ regenerated. Conflicts: engine/start.php
+
+2011-09-03 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/access.php: Fixed typo in call to function.
+
+2011-08-30 Brett Profitt <brett.profitt@gmail.com>
+
+ * actions/friends/collections/add.php,
+ actions/friends/collections/delete.php, actions/friends/collections/edit.php,
+ engine/lib/access.php, engine/tests/api/access_collections.php,
+ languages/en.php: Fixes #3543. Ported access collections fix to master.
+
+2011-08-29 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/views.php, views/default/css/lightbox.php: Fixes #3461: Using
+ absolute URLs for lightbox CSS.
+
+ * mod/embed/views/default/js/embed/embed.php: Removing debug string.
+
+2011-08-27 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/profile/views/default/profile/js.php: Fixes #3561. Only adding the
+ static profile block height to the widget canvas if on the profile page.
+
+ * mod/embed/languages/en.php, mod/embed/start.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/gallery.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/embed/views/default/js/embed/inline.php, mod/file/start.php: Fixes #2911.
+ Embed plugins works again. Added menu for embed sections. This plugin is
+ painfully messy.
+
+ * engine/classes/ElggPluginPackage.php, engine/lib/plugins.php,
+ languages/en.php, views/default/admin/plugins.php: Fixes #3434. Manifests are
+ checked more carefully on anything that checks deps. Disabling plugins with
+ invalid manifests from admin page.
+
+2011-08-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/views.php: Fixes #3535. elgg_view_form() automatically adds
+ elgg-form-action-name.
+
+ * mod/likes/start.php: Removed unused code for likes notification.
+
+ * mod/likes/actions/likes/add.php, mod/likes/languages/en.php,
+ mod/likes/start.php: Fixes #3131. Added generic liking notification text.
+
+ * mod/blog/start.php: Fixes #3558. Added upgrade for excerpt in blogs.
+
+ * mod/blog/start.php: Removed silly check for elgg version.
+
+ * mod/blog/start.php: Fixing blog upgrades for excerpt.
+
+ * CODING.txt: Fixes #3657. There's not a good way to ensure redirects for
+ CODING.txt because most of the code is off our servers now, so just putting a
+ placeholder.
+
+ * views/default/page/elements/head.php,
+ views/default/page/elements/shortcut_icon.php: Fixes #3662. Pulled out
+ shortcut_icon to its own view for easier overriding.
+
+2011-08-24 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/classes/ElggPriorityList.php: Checking for === false when moving
+ elements in ElggPriorityList instead of just !$priority. Fixes problems when
+ moving elements to / from 0.
+
+ * .../forms/uservalidationbyemail/bulk_action.php: Fixes #3621. Corrected
+ the URL for the unvalidated users pagination.
+
+ * mod/groups/actions/discussion/reply/save.php, mod/groups/start.php,
+ .../views/default/annotation/group_topic_post.php,
+ .../views/default/forms/discussion/reply/save.php,
+ .../views/default/annotation/messageboard.php: Fixes #3612, #3750. Added edit
+ replies back to group plugin with the annotation menu.
+
+ * mod/messageboard/start.php: Refs #3750. Messageboard using annotations
+ menu.
+
+ * engine/lib/navigation.php, views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php,
+ views/default/css/elements/navigation.php: Refs #3750. Added annotation menu
+ for generic comments (delete) and default annotations (empty).
+
+ * js/lib/hooks.js: Fixes #3589. JS "all" hook handlers called only once.
+
+ * actions/avatar/upload.php: Refs #3557: Upscaling small icons to 200x200.
+ This doesn't fix the problem if someone uploads a 100x200 image.
+
+ * mod/categories/actions/save.php, mod/categories/activate.php,
+ mod/categories/languages/en.php, mod/categories/start.php,
+ mod/categories/views/default/input/categories.php,
+ .../views/default/plugins/categories/settings.php,
+ .../views/default/settings/categories/edit.php: Refs #3746. Updated
+ categories for 1.8. Still some deprecation notices, but functional.
+
+2011-08-23 Brett Profitt <brett.profitt@gmail.com>
+
+ * .../actions/twitter_api/interstitial_settings.php,
+ mod/twitter_api/languages/en.php, mod/twitter_api/lib/twitter_api.php,
+ mod/twitter_api/pages/twitter_api/interstitial.php,
+ mod/twitter_api/start.php, .../forms/twitter_api/interstitial_settings.php,
+ .../default/usersettings/twitter_api/edit.php: Fixes #3117. Added an
+ interstitial page for twitter new users.
+
+ * views/default/navigation/menu/default.php: Rewriting more chars to - in
+ the default menu view.
+
+ * engine/classes/ElggPriorityList.php, engine/lib/elgglib.php,
+ engine/lib/views.php, engine/tests/api/helpers.php: Fixes #3355. Added
+ ElggPriorityList. Adapted the externals system to use it.
+
+2011-08-22 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/views.php, vendors/jquery/jquery-1.6.2.min.js,
+ vendors/jquery/jquery-ui-1.8.16.min.js, views/installation/page/default.php:
+ Closes #3015. jQuery updated to 1.6.2. jQuery-UI updated to 1.8.16.
+
+2011-08-21 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/groups/lib/groups.php: Fixes #3701. Removed early call to elgg_echo()
+ for group action button menu.
+
+ * engine/classes/ElggSite.php: Fixes #3606. Reset password page added to
+ public pages for walled garden mode.
+
+ * engine/lib/river.php: Fixes #3496. Using OR to concatenate unpaired type
+ and subtype clauses in elgg_get_river_type_subtype_where_sql().
+
+2011-08-18 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/views.php: Fixing priorities for jquery.
+
+2011-08-17 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/classes/ElggPriorityList.php, engine/lib/elgglib.php,
+ engine/tests/api/helpers.php: Finished ElggPriorityList. Migrated external
+ files to use it.
+
+2011-08-17 tvld <tom@lorinthe.com>
+
+ * htaccess_dist: My very first attempt to contribute...
+ http://trac.elgg.org/ticket/3601 For optimal speed, Firebug's Yslow
+ complained that the js and ico files did not have an Etag.
+
+2011-08-15 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/classes/ElggPriorityList.php, engine/tests/api/helpers.php: Refs
+ #3355. Added ElggPriorityList.
+
+ * pages/friends/collections/add.php,
+ pages/friends/collections/pickercallback.php,
+ pages/friends/collections/view.php, pages/friends/index.php,
+ pages/friends/of.php: Fixes #3715. Added the new collection button back.
+
+ * mod/search/views/default/search/list.php: Fixed pagination for search.
+
+ * mod/search/views/default/search/list.php: Fixes #3254. Removing limit for
+ "+X more Y" in search results.
+
+2011-07-27 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/classes/ElggBatch.php: Fixed some documentation.
+
+2011-07-27 Richard Loxley <richard.loxley@surevine.com>
+
+ * engine/lib/actions.php: Fixes Ticket #3709 "Embed plugin: uploading a file
+ in Firefox tries to save a JSON file in the user's browser"
+
+2011-07-10 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/views.php: Fixes #3336 functions that used elgg_view_exists()
+ were not falling back to the default views
+
+2011-07-09 cash <cash.costello@gmail.com>
+
+ * mod/file/pages/file/search.php: Refs #3685 need null for no container
+
+ * engine/lib/users.php, pages/avatar/view.php: fixed redirect for user
+ avatars if we cannot get the user
+
+2011-07-07 Brett Profitt <brett.profitt@gmail.com>
+
+ * mod/dashboard/start.php,
+ views/default/admin/appearance/default_widgets.php: Fixes #3669. Dashboard
+ now registers for default widgets.
+
+ * version.php: Version bump to 1.8.0b2
+
+2011-07-07 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/elements/components.php,
+ views/default/river/elements/body.php,
+ views/default/river/relationship/friend/create.php: fixed the float issue
+ with the friends river view
+
+ * views/default/icon/user/default.php: Refs #3567 added class extending to
+ icon/user/default
+
+2011-07-06 cash <cash.costello@gmail.com>
+
+ * views/default/input/radio.php: Refs #3624 fixed radio button value
+ detection
+
+2011-07-06 Cash Costello <cash.costello@gmail.com>
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ engine/classes/ElggPlugin.php: Fixes #2204 standardized the hooks/overrides
+ for plugin settings and usersettings
+
+ * engine/lib/river.php: $joins was not declared in elgg_get_river()
+
+ * vendors/jquery/jquery.imgareaselect-0.8.min.js,
+ .../jquery.imgareaselect-0.9.8/GPL-LICENSE.txt,
+ .../jquery.imgareaselect-0.9.8/MIT-LICENSE.txt, .../css/border-anim-h.gif,
+ .../css/border-anim-v.gif, .../jquery.imgareaselect-0.9.8/css/border-h.gif,
+ .../jquery.imgareaselect-0.9.8/css/border-v.gif,
+ .../css/imgareaselect-animated.css, .../css/imgareaselect-default.css,
+ .../css/imgareaselect-deprecated.css, .../scripts/jquery.imgareaselect.js,
+ .../scripts/jquery.imgareaselect.min.js,
+ .../scripts/jquery.imgareaselect.pack.js, .../scripts/jquery.min.js,
+ views/default/forms/avatar/crop.php: Fixes #3663 upgrades imgareaselect
+ library
+
+ * mod/likes/actions/likes/add.php,
+ .../default/river/annotation/likes/create.php: Fixes #3642 removing likes
+ river code
+
+ * engine/lib/navigation.php, mod/blog/lib/blog.php,
+ mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/friends.php,
+ mod/bookmarks/pages/bookmarks/owner.php, mod/file/pages/file/friends.php,
+ mod/file/pages/file/owner.php, mod/file/pages/file/world.php,
+ mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ mod/messages/pages/messages/inbox.php, mod/messages/pages/messages/sent.php,
+ mod/pages/pages/pages/friends.php, mod/pages/pages/pages/owner.php,
+ mod/pages/pages/pages/world.php: changed new convenience function from
+ elgg_register_add_button() to elgg_register_title_button()
+
+ * mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/js/embed/embed.php: updated the embed plugin for new
+ css class elgg-item rather than elgg-list-item
+
+2011-07-04 cash <cash.costello@gmail.com>
+
+ * views/default/css/elements/forms.php: styled the date picker for the main
+ theme
+
+ * views/default/css/admin.php: theming the date picker for the admin theme
+
+ * js/lib/ui.js, views/default/input/date.php, views/default/output/date.php:
+ Fixes #3560 input/date and output/date support ISO 8601 (YYYY-MM-DD) and Unix
+ timestamps. Need to think about how to handle alternate text formats.
+
+2011-07-03 Brett Profitt <brett.profitt@gmail.com>
+
+ * actions/friends/collections/add.php,
+ actions/friends/collections/delete.php, actions/friends/collections/edit.php,
+ engine/lib/access.php, engine/tests/api/access_collections.php,
+ languages/en.php: Merged ACL fixes from 1.7 branch.
+
+ * engine/lib/access.php, engine/tests/api/access_collections.php: Merged
+ d423aee393458d6827db from 1.7 to master. Fixes #3552. Addess ACL unit tests.
+ These currently fail because of #3522. Conflicts: engine/lib/access.php
+
+2011-07-03 cash <cash.costello@gmail.com>
+
+ * .../views/default/page/layouts/custom_index.php: removed deprecated
+ function from custom_index plugin
+
+ * views/default/page/elements/header_logo.php: reformatted the code in
+ page/elements/header_logo view due to line length
+
+ * .../views/default/page/layouts/custom_index.php: removed deprecated
+ function from custom_index plugin
+
+ * views/default/page/elements/header_logo.php: reformatted the code in
+ page/elements/header_logo view due to line length
+
+ * mod/blog/languages/en.php: Fixes #3593 defining the blog post notification
+ string
+
+ * languages/en.php: Fixes #3640 added 'none' as a language string
+
+ * engine/classes/ElggUser.php: Fixes #3650 deprecated
+ ElggUser::getCollections()
+
+ * documentation/coding_standards/best_practices.txt,
+ documentation/coding_standards/deprecation.txt: pulled deprecation guidelines
+ out of general best practices
+
+ * CODING.txt, documentation/coding_standards/best_practices.txt,
+ .../coding_standards/css_coding_standards.txt,
+ .../coding_standards/html_best_practices.txt,
+ .../coding_standards/javascript_best_practices.txt,
+ .../javascript_coding_standards.txt,
+ .../coding_standards/php_best_practices.txt,
+ .../coding_standards/php_coding_standards.txt: separate out coding standards
+
+2011-07-03 Cash Costello <cash.costello@gmail.com>
+
+ * engine/classes/ElggCache.php: Fixes #3656 updates the AccessArray
+ interface methods for ElggCache
+
+ * mod/notifications/start.php, mod/tinymce/start.php: these plugins should
+ not need special loading order
+
+ * views/default/css/admin.php: updated the admin theme for the new css
+ classes on input elements
+
+2011-07-02 cash <cash.costello@gmail.com>
+
+ * mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/admin/developers/settings.php: added logging of events and
+ plugin hooks
+
+ * mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/admin/developers/settings.php: Fixes #3152 adds wrapping of
+ views with comments
+
+ * mod/developers/classes/ElggLogCache.php: returning false to stop
+ elgg_dump() from also displaying the debugging information to the screen
+
+ * mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/admin/developers/settings.php: Fixes #3500 added setting
+ for raw string display
+
+ * mod/developers/views/default/developers/log.php: removed warning if no
+ messages in the cache
+
+ * engine/classes/ElggPlugin.php,
+ mod/developers/actions/developers/settings.php,
+ mod/developers/classes/ElggLogCache.php, mod/developers/languages/en.php,
+ mod/developers/start.php, .../views/default/admin/developers/settings.php,
+ mod/developers/views/default/developers/css.php,
+ mod/developers/views/default/developers/log.php: added logging to the web
+ page footer
+
+ * mod/developers/actions/developers/inspect.php,
+ mod/developers/classes/ElggInspector.php, mod/developers/languages/en.php,
+ mod/developers/start.php, mod/developers/vendors/jsTree/jquery.jstree.js,
+ mod/developers/vendors/jsTree/themes/apple/bg.jpg,
+ mod/developers/vendors/jsTree/themes/apple/d.png,
+ .../vendors/jsTree/themes/apple/dot_for_ie.gif,
+ .../vendors/jsTree/themes/apple/style.css,
+ .../vendors/jsTree/themes/apple/throbber.gif,
+ mod/developers/vendors/jsTree/themes/classic/d.gif,
+ mod/developers/vendors/jsTree/themes/classic/d.png,
+ .../vendors/jsTree/themes/classic/dot_for_ie.gif,
+ .../vendors/jsTree/themes/classic/style.css,
+ .../vendors/jsTree/themes/classic/throbber.gif,
+ .../vendors/jsTree/themes/default-rtl/d.gif,
+ .../vendors/jsTree/themes/default-rtl/d.png,
+ .../vendors/jsTree/themes/default-rtl/dots.gif,
+ .../vendors/jsTree/themes/default-rtl/style.css,
+ .../vendors/jsTree/themes/default-rtl/throbber.gif,
+ mod/developers/vendors/jsTree/themes/default/d.gif,
+ mod/developers/vendors/jsTree/themes/default/d.png,
+ .../vendors/jsTree/themes/default/style.css,
+ .../vendors/jsTree/themes/default/throbber.gif,
+ .../views/default/admin/developers/inspect.php,
+ mod/developers/views/default/developers/css.php,
+ mod/developers/views/default/developers/tree.php,
+ .../views/default/forms/developers/inspect.php,
+ .../views/default/js/developers/developers.php: added the inspect tool to
+ developers tool plugin
+
+ * engine/lib/river.php, pages/river.php: fixed river for #3544
+
+ * mod/embed/start.php, mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/upload/content.php: fixed embed plugin for
+ #3544
+
+ * mod/file/pages/file/search.php, mod/messages/pages/messages/send.php:
+ fixed messages and file plugins for #3544
+
+ * engine/lib/input.php: added note about preventing reflected XSS
+ vulnerabilities.
+
+2011-07-02 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/input/access.php, views/default/input/autocomplete.php,
+ views/default/input/button.php, views/default/input/calendar.php,
+ views/default/input/captcha.php, views/default/input/checkbox.php,
+ views/default/input/checkboxes.php, views/default/input/date.php,
+ views/default/input/dropdown.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/location.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/plaintext.php, views/default/input/radio.php,
+ views/default/input/tag.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Fixes #3624 input
+ views use class extending rather than overriding
+
+ * mod/blog/views/default/forms/blog/save.php: fixed the blog categories code
+ as the entity was not being passed
+
+2011-07-01 Cash Costello <cash.costello@gmail.com>
+
+ * mod/bookmarks/pages/bookmarks/bookmarklet.php: removed the add bookmark
+ button from get bookmarklet page
+
+2011-06-30 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/elgglib.php: Adds exception handling to shutdown hook from pull
+ request 50
+
+ * engine/lib/views.php, vendors/jquery/jquery-1.5.min.js,
+ vendors/jquery/jquery-1.6.1.min.js, vendors/jquery/jquery-ui-1.8.14.min.js,
+ vendors/jquery/jquery-ui-1.8.9.min.js: Refs #3015 updated jquery and
+ jquery-ui to their latest releases
+
+ * languages/en.php, views/default/object/plugin/advanced.php: Fixes #3635
+ added strings for activate and deactivate
+
+ * languages/en.php: Fixes #3636 added general language strings for sort and
+ filter
+
+2011-06-29 cash <cash.costello@gmail.com>
+
+ * .../views/default/groups/profile/widgets.php: made group widget columns
+ backward compatible so that content at least does not disappear
+
+ * engine/classes/ElggMenuItem.php: handling spaces and uppercase characters
+ when creating menu item classes
+
+ * engine/lib/views.php, views/default/page/elements/wrapper.php: added
+ backward compatibility for the view page_elements/content_wrapper
+
+ * engine/lib/group.php: added @since dates on two functions in group library
+
+2011-06-29 Cash Costello <cash.costello@gmail.com>
+
+ * mod/tinymce/views/default/js/tinymce.php,
+ mod/tinymce/views/default/tinymce/css.php: Fixes #3537 using elgg.echo() for
+ i18n of word count
+
+ * mod/tinymce/css/elgg_tinymce.css, mod/tinymce/tinymce_content.css,
+ mod/tinymce/views/default/js/tinymce.php: moved tinymce content css into its
+ own directory
+
+ * views/default/css/admin.php, views/default/css/elements/modules.php: Fixes
+ #3629 added overflow hidden to .elgg-module for both default and admin themes
+
+ * mod/thewire/pages/thewire/everyone.php,
+ mod/thewire/pages/thewire/friends.php, mod/thewire/pages/thewire/owner.php,
+ mod/thewire/pages/thewire/reply.php: Fixes #3578 added a css class to thewire
+ add form
+
+ * actions/admin/plugins/activate.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/set_priority.php,
+ views/default/object/plugin/advanced.php: Fixes #3630 using the plugin id for
+ the css id
+
+2011-06-28 Cash Costello <cash.costello@gmail.com>
+
+ * mod/thewire/views/default/forms/thewire/add.php: Fixes #3579 using
+ input/plaintext in the wire form
+
+ * views/default/css/admin.php, views/default/page/layouts/admin.php: Fixes
+ #3519 admin area now has title buttons
+
+ * engine/lib/views.php, views/default/page/layouts/content/header.php: using
+ elgg_view_title() in content layout header
+
+ * languages/en.php, views/default/widgets/content_stats/content.php: Fixes
+ #3597 defined a language string for 'more'
+
+ * languages/en.php: Fixes #3505 define language string for
+ menu:page:header:default
+
+ * .../views/default/forms/bookmarks/save.php,
+ .../views/default/forms/developers/settings.php,
+ .../views/default/forms/expages/edit.php,
+ mod/file/views/default/forms/file/upload.php,
+ .../views/default/forms/discussion/reply/save.php,
+ mod/groups/views/default/forms/discussion/save.php,
+ .../views/default/forms/invitefriends/invite.php,
+ .../views/default/forms/messages/process.php,
+ .../views/default/forms/messages/reply.php,
+ mod/messages/views/default/forms/messages/send.php,
+ .../forms/notificationsettings/groupsave.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/reportedcontent/add.php,
+ mod/thewire/views/default/forms/thewire/add.php: Fixes #3407 added elgg-foot
+ to plugin forms
+
+ * views/default/navigation/menu/elements/item.php: updated the menu item
+ view to work with the new setLinkClass/addLinkClass methods
+
+2011-06-27 Cash Costello <cash.costello@gmail.com>
+
+ * mod/blog/lib/blog.php, mod/blog/views/default/forms/blog/save.php,
+ mod/groups/lib/groups.php, mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/edit.php,
+ .../default/forms/notificationsettings/save.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ views/default/core/settings/account.php,
+ views/default/css/elements/forms.php, views/default/forms/avatar/crop.php,
+ views/default/forms/avatar/upload.php, views/default/forms/comments/add.php,
+ views/default/forms/friends/collections/add.php,
+ views/default/forms/plugins/settings/save.php,
+ views/default/forms/profile/edit.php,
+ views/default/forms/user/requestnewpassword.php,
+ views/default/forms/useradd.php, views/default/forms/usersettings/save.php,
+ views/default/forms/widgets/save.php, views/default/input/form.php: Refs
+ #3407 using elgg-form and elgg-foot in core forms. Plugins next
+
+2011-06-26 cash <cash.costello@gmail.com>
+
+ * mod/bookmarks/pages/bookmarks/add.php,
+ mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/bookmarklet.php,
+ mod/bookmarks/pages/bookmarks/edit.php,
+ mod/bookmarks/pages/bookmarks/friends.php,
+ mod/bookmarks/pages/bookmarks/owner.php, mod/file/pages/file/edit.php,
+ mod/file/pages/file/friends.php, mod/file/pages/file/owner.php,
+ mod/file/pages/file/search.php, mod/file/pages/file/upload.php,
+ mod/file/pages/file/view.php, mod/file/pages/file/world.php,
+ mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ .../views/default/groups/profile/buttons.php,
+ mod/members/pages/members/index.php,
+ mod/messageboard/pages/messageboard/owner.php,
+ mod/messages/pages/messages/inbox.php, mod/messages/pages/messages/read.php,
+ mod/messages/pages/messages/send.php, mod/messages/pages/messages/sent.php,
+ mod/messages/views/default/messages/js.php, mod/pages/pages/pages/edit.php,
+ mod/pages/pages/pages/friends.php, mod/pages/pages/pages/history.php,
+ mod/pages/pages/pages/new.php, mod/pages/pages/pages/owner.php,
+ mod/pages/pages/pages/revision.php, mod/pages/pages/pages/view.php,
+ mod/pages/pages/pages/world.php, mod/thewire/pages/thewire/everyone.php,
+ mod/thewire/pages/thewire/friends.php, mod/thewire/pages/thewire/owner.php,
+ mod/thewire/pages/thewire/previous.php, mod/thewire/pages/thewire/reply.php,
+ mod/thewire/pages/thewire/tag.php, mod/thewire/pages/thewire/thread.php,
+ pages/river.php: this should update all the core pages and plugins using
+ 'buttons'
+
+ * engine/lib/navigation.php, mod/blog/lib/blog.php,
+ views/default/page/layouts/content.php,
+ views/default/page/layouts/content/header.php: removed buttons logic from
+ content header view, created convenience function rather than copying and
+ pasting, and updated the blog plugin
+
+ * engine/classes/ElggMenuItem.php, engine/lib/navigation.php,
+ mod/groups/start.php: added a data array to ElggMenuItem. Now by default
+ options end up being passed to output/url.
+
+ * mod/embed/images/close_button.gif, mod/embed/js/embed.js,
+ mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/js/embed/embed.php: updated based on Brett's comments
+ and removed old stuff related to facebox lightbox
+
+2011-06-26 Cash Costello <cash.costello@gmail.com>
+
+ * engine/lib/relationships.php: Fixes #3585 do not need to check parameters
+ because was registered for only one event
+
+ * engine/classes/ElggMenuItem.php, engine/lib/navigation.php, js/lib/ui.js,
+ mod/groups/start.php, mod/logbrowser/views/default/logbrowser/form.php,
+ mod/profile/views/default/profile/owner_block.php,
+ .../views/default/object/reported_content.php,
+ views/default/object/plugin/advanced.php,
+ views/default/object/plugin/invalid.php,
+ views/default/object/widget/elements/controls.php,
+ views/default/page/layouts/widgets/add_button.php: Fixes #3470 using
+ rel=toggle now
+
+ * mod/thewire/languages/en.php,
+ .../views/default/river/object/thewire/create.php: provided a way to get to
+ the wire from activity page
+
+ * mod/blog/languages/en.php, mod/blog/lib/blog.php,
+ mod/bookmarks/pages/bookmarks/all.php, mod/bookmarks/start.php,
+ mod/file/languages/en.php, mod/file/pages/file/friends.php,
+ mod/file/pages/file/owner.php: made breadcrumbs consistent in content plugins
+
+ * mod/groups/start.php: not displaying the reply button for discussion
+ topics in widgets
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/object/default.php, views/default/object/elements/summary.php:
+ Fixes #3368 combining $vars with parameters for object/elements/summary view
+
+ * .../views/default/settings/logrotate/edit.php: removed use of deprecated
+ internalname key in log rotation
+
+ * engine/classes/ElggEntity.php, mod/blog/lib/blog.php,
+ mod/bookmarks/pages/bookmarks/view.php, mod/file/pages/file/view.php,
+ mod/groups/lib/discussion.php, .../views/default/groups/sidebar/featured.php,
+ mod/messages/pages/messages/read.php, mod/pages/pages/pages/view.php,
+ mod/search/views/default/search/entity.php, pages/entities/index.php,
+ views/default/page/elements/owner_block.php,
+ views/json/entities/entity_list.php: Fixes #3614 updated use of
+ elgg_view_entity() throughout core
+
+ * mod/messageboard/pages/messageboard/owner.php: better way of sorting
+ messageboard annotations
+
+2011-06-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/deprecated-1.8.php: Don't say the db was upgradeded when it
+ wasn't.
+
+ * engine/lib/upgrade.php, engine/lib/upgrades/2011010101.php: Fixes #3554.
+ Pulled 1.7->1.8 upgrade bootstrapping into a separate function. Made the
+ plugin upgrade that forwards (2011010101) set itself in the processed
+ upgrades.
+
+2011-06-25 cash <cash.costello@gmail.com>
+
+ * views/default/css/elements/layout.php,
+ views/default/page/layouts/one_column.php: one_column layout was not showing
+ title and nav
+
+ * mod/messageboard/pages/messageboard/owner.php: fixed ordering of
+ messageboard posts
+
+2011-06-25 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/configuration.php: datalist_get() was incorrectly setting
+ escaped values in the cache.
+
+2011-06-25 cash <cash.costello@gmail.com>
+
+ * engine/lib/admin.php: fixed spacing in
+ elgg_admin_add_plugin_settings_menu()
+
+ * languages/en.php, .../river/user/default/profileiconupdate.php: actually
+ read Evan's comment on pull request #48 and fixed previous
+
+ * languages/en.php, .../river/user/default/profileiconupdate.php: updates
+ the avatar update river view and closes pull request #48
+
+ * views/default/river/elements/body.php,
+ views/default/river/elements/responses.php,
+ views/default/river/elements/summary.php: added documentation to new river
+ views and improved handling of responses
+
+ * engine/classes/ElggEntity.php: Fixes #3609 removed use of deprecated
+ trigger_plugin_hook()
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/js.php,
+ mod/groups/views/default/groups/profile/module.php,
+ .../views/default/groups/profile/widgets.php: Fixes #3395 using a fluid
+ gallery for the groups profile page
+
+ * js/lib/ui.js, mod/likes/start.php,
+ mod/likes/views/default/likes/count.php,
+ mod/likes/views/default/likes/js.php: Fixes #3610 $guid was not defined
+
+2011-06-25 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/css/elements/navigation.php: Fixes #3388 put vertical-align:
+ middle back on topbar icons
+
+ * mod/likes/start.php, mod/likes/views/default/likes/button.php,
+ mod/likes/views/default/likes/count.php,
+ mod/likes/views/default/likes/css.php, views/default/river/elements/body.php:
+ Fixes #3566 separate out likes button from likes count
+
+ * mod/likes/views/default/likes/button.php,
+ mod/likes/views/default/likes/display.php,
+ views/default/css/elements/core.php,
+ views/default/css/elements/navigation.php: Refs #3388 entity menu has better
+ vertical alignment
+
+2011-06-24 cash <cash.costello@gmail.com>
+
+ * mod/groups/lib/groups.php: fixed breadcrumb on groups members page
+
+ * .../views/default/forms/messageboard/add.php: added spacing between
+ messageboard textarea and submit button
+
+ * mod/messages/pages/messages/read.php: adding some spacing between the
+ messages and the reply form
+
+ * mod/blog/views/default/blog/group_module.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ .../default/groups/profile/activity_module.php,
+ mod/groups/views/default/groups/profile/module.php,
+ mod/pages/views/default/pages/group_module.php: Fixes #3139 DRYs up group
+ modules
+
+ * mod/custom_index/index.php, .../views/default/groups/sidebar/members.php,
+ views/default/css/elements/components.php: Fixes #3559 adds
+ .elgg-gallery-users
+
+ * engine/lib/entities.php, engine/lib/views.php, mod/custom_index/index.php,
+ mod/file/views/default/file/typecloud.php,
+ .../views/default/groups/sidebar/members.php,
+ views/default/widgets/friends/content.php: Refs #1253 using 'list_type'
+ string instead of boolean 'gallery' for entity listing
+
+ * engine/lib/views.php, mod/search/views/default/search/list.php,
+ views/default/css/admin.php, views/default/css/elements/components.php,
+ views/default/object/elements/summary.php,
+ views/default/page/components/gallery.php,
+ views/default/page/components/list.php: cleaned up the list/gallery css
+ classes to use standard class naming - minor modifications only
+
+ * .../graphics/sign-in-with-twitter-d.png,
+ .../graphics/sign-in-with-twitter-l.png, mod/twitter_api/lib/twitter_api.php,
+ .../views/default/twitter_api/login.php: Fixes #2958 cleaned up user login
+ for twitter
+
+ * mod/thewire/start.php: Fixes #3204 adds hook trigger so that wire sends
+ out status updates
+
+ * mod/twitter_api/lib/twitter_api.php, mod/twitter_api/start.php: fixed the
+ post to twitter capability - was not loading the twitter oauth class
+
+ * mod/twitter_api/lib/twitter_api.php,
+ .../default/usersettings/twitter_api/edit.php: fixes the authorization to
+ post so that it does not include login
+
+ * mod/twitter_api/start.php: twitter @anywhere was causing problems - pages
+ were not loading and js errors
+
+2011-06-20 benbro <ben.browitt@gmail.com>
+
+ * engine/lib/statistics.php, engine/lib/users.php: added find_active_users
+ hook
+
+2011-06-24 Cash Costello <cash.costello@gmail.com>
+
+ * .../river/object/groupforumtopic/create.php,
+ views/default/river/elements/body.php: fixed group forum discussion inline
+ replies for activity page
+
+2011-06-23 cash <cash.costello@gmail.com>
+
+ * mod/twitter_api/languages/en.php, mod/twitter_api/start.php,
+ .../views/default/settings/twitter_api/edit.php,
+ mod/twitter_api/views/default/twitter_api/css.php: cleaned up the twitter api
+ plugin settings so instructions are correct. Need to verify that login works.
+
+ * .../views/default/settings/twitter_api/edit.php: added instructions back
+ to twitter api plugin settings
+
+ * views/default/css/admin.php: added a css class so that we can limit the
+ width of text instruction areas in admin area
+
+2011-06-23 Cash Costello <cash.costello@gmail.com>
+
+ * mod/groups/actions/groups/membership/remove.php,
+ mod/groups/languages/en.php: Refs #1867 let group owner know what user they
+ just removed
+
+ * mod/dashboard/start.php, mod/dashboard/views/default/dashboard/blurb.php,
+ mod/dashboard/views/default/dashboard/css.php: Fixes #3599 spacing of
+ dashboard blurb fixed
+
+ * views/default/css/elgg.php: Fixes #3471 moved helpers to end of css/elgg
+
+ * mod/twitter/views/default/twitter/css.php: Fixes #3603 fixes display of
+ @username in twitter widget - thanks to ManUtopiK
+
+2011-06-22 cash <cash.costello@gmail.com>
+
+ * views/default/page/default.php: backward compatibility of the admin page
+ shell was broken when we reorganized the page view directory
+
+ * mod/thewire/languages/en.php, mod/thewire/views/default/thewire/reply.php:
+ added @username in the reply text for a wire post
+
+2011-06-22 Cash Costello <cash.costello@gmail.com>
+
+ * mod/members/pages/members/search.php: Fixes #3598 sanitizing the $name
+ variable
+
+2011-06-21 Franz Liedke <franz@develophp.org>
+
+ * engine/classes/ElggMenuItem.php: Add param description to PHPDoc comments
+ of setText() function.
+
+2011-06-20 cash <cash.costello@gmail.com>
+
+ * engine/lib/actions.php: removed debug code
+
+2011-06-20 Franz Liedke <franz@develophp.org>
+
+ * engine/classes/ElggMenuItem.php: Add setText() method to ElggMenuItem
+ class. Fixes #3546.
+
+ * engine/classes/ElggMenuItem.php: Add setHref() method to ElggMenuItem
+ class. Fixes #3486.
+
+2011-06-19 cash <cash.costello@gmail.com>
+
+ * mod/thewire/start.php: fixed the wire's previous ajax - the link class for
+ the menu was lost in the conversion from plain class to link_class
+
+ * languages/en.php: fixed typo in edit profile fields instructions
+
+ * mod/file/views/default/forms/file/upload.php: we "upload" new files and
+ "save" old ones
+
+ * mod/file/pages/file/view.php, mod/file/views/default/object/file.php:
+ moved the download button for files to the action menu (which probably needs
+ to be a menu)
+
+ * mod/embed/views/default/embed/upload/content.php,
+ mod/embed/views/default/js/embed/embed.php: File uploads working now. It is
+ hard coded to only work with file plugin.
+
+ * engine/lib/actions.php: added another way for an action to be detected as
+ an Ajax action: set the request variable X-Requested-With = XMLHttpRequest.
+ This is because files cannot be uploaded with XMLHttpRequest
+
+ * mod/file/actions/file/upload.php,
+ mod/file/views/default/file/embed_upload.php,
+ mod/file/views/default/forms/file/upload.php: removed the special ajax/embed
+ code from the file plugin
+
+ * views/default/css/elements/layout.php: need the system messages to be
+ above the lightbox overlay at 1000 z-index
+
+ * mod/file/views/default/forms/file/upload.php: need a default container for
+ files if form included from outside file plugin (like the embed plugin)
+
+2011-06-19 Cash Costello <cash.costello@gmail.com>
+
+ * views/default/widgets/friends/content.php: Fixes #3581 checks that the
+ owner of a friends widget is a user
+
+2011-06-18 cash <cash.costello@gmail.com>
+
+ * mod/embed/start.php: fixed issue with embedding a file in an embedded file
+
+ * mod/embed/start.php, mod/embed/views/default/embed/tabs.php,
+ mod/embed/views/default/js/embed/embed.php: added back tab switching
+
+ * mod/embed/views/default/embed/addcontentjs.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/js/embed/embed.php: rewrote pagination for embed file
+ listing
+
+ * mod/embed/start.php, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/js/embed/embed.php,
+ mod/embed/views/default/js/embed/inline.php: rewrote the insert javascript as
+ an intermediate step. I'm sure I completely broke ECML integration and
+ uploading files.
+
+ * mod/embed/start.php, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/tabs.php,
+ views/default/css/elements/navigation.php: using the new lightbox and hacking
+ away at the complicated embed/embed view
+
+ * mod/blog/actions/blog/save.php,
+ mod/blog/views/default/forms/blog/save.php: Fixes #3580 adding blog preview
+ button that uses save action
+
+ * languages/en.php: added "Preview" as a general term defined in language
+ file
+
+ * mod/blog/actions/blog/save.php: using elgg_delete_river() rather than
+ custom SQL in blog save action
+
+ * mod/blog/views/default/forms/blog/save.php: moving the delete button in
+ blog form to right side
+
+ * mod/twitter_api/languages/en.php: Calling normal user registration
+ "manual" was confusing admin manual registration with user initiated
+ registration
+
+2011-06-18 Cash Costello <cash.costello@gmail.com>
+
+ * LICENCE.txt, LICENSE.txt: moved LICENCE.txt to LICENSE.txt to be
+ consistent with readme
+
+2011-06-13 Evan Winslow <evan@elgg.org>
+
+ * views/default/css/elements/components.php: Using tabs, not spaces for
+ indentation
+
+ * mod/groups/start.php, .../river/object/groupforumtopic/create.php,
+ views/default/river/elements/body.php,
+ views/default/river/elements/footer.php,
+ views/default/river/elements/responses.php: Renamed river footer to a more
+ semantic "responses". Fixed discussion to work inline again with this new
+ layout.
+
+ * views/default/css/elements/components.php: elgg-river-message and
+ elgg-river-attachments now get the old elgg-river-content styling
+
+2011-06-13 Jeff Tilson <jrtilson@gmail.com>
+
+ * mod/groups/actions/groups/membership/remove.php,
+ mod/groups/languages/en.php, mod/groups/start.php: Added 'remove from group'
+ link to the user hover menu (only appears when the page owner is a group)
+
+2011-06-13 Ravindra Nath Kakarla <ravindhranath@gmail.com>
+
+ * mod/thewire/views/default/js/thewire.php: textarea has to be jQuery object
+
+2011-06-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggMenuItem.php,
+ views/default/navigation/menu/elements/item.php: Fixes #3282 always using a
+ menu item's name in its class
+
+ * mod/tinymce/views/default/js/tinymce.php: Fixes #3175 toggled tinymce
+ takes full width now - thanks tomv
+
+ * languages/en.php: made some language clearer on default widgets
+ instructions
+
+ * .../views/default/forms/expages/edit.php: fixed formatting of site pages
+ creation form - longtext menu was overlapping tinymce
+
+ * views/default/css/admin.php: added the css for longtext control menu to
+ admin theme
+
+2011-06-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/reportedcontent/admin_css.php: fixing some display issues
+ with reported content - code use a little cleanup
+
+ * mod/thewire/languages/en.php: pulling in blacktooth's wire language typo
+ fix : pull request #32
+
+ * mod/likes/start.php: Fixes #3521 removed unecessary anchor tags - thanks
+ to blacktooth
+
+ * engine/classes/ElggSite.php,
+ ...8b1-sites_need_a_site_guid-6d9dcbf46c0826cc.php, version.php: Fixes #2910
+ set the site_guid of site entities
+
+ * engine/lib/elgglib.php: Fixes #3480 not requiring a timestamp when using
+ the js/css page handler
+
+ * views/default/css/elements/layout.php: Fixes #3409 fixed small viewport
+ issue with default theme
+
+ * views/default/core/settings/tools.php: adjusted the spacing between the
+ settings tools text and the surrounding elements
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/profile/fields.php: using divs for group
+ profile fields to work around html validation issues with the out/tags view
+ using a div
+
+2011-06-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/details.php: convert profile details to
+ use divs so that we don't have invalid html due to output/tags
+
+ * views/default/page/layouts/widgets/add_panel.php: need to maintain key
+ associations with widget types
+
+ * views/default/page/layouts/widgets/add_panel.php: sort widgets for add
+ widgets panel
+
+ * views/default/css/elements/navigation.php: moved the elgg logo to the left
+ by 10 pixels
+
+ * engine/lib/elgglib.php, engine/lib/users.php,
+ views/default/css/elements/navigation.php: topbar icons were pushing the site
+ title. Forced the elgg logo and avatar to behave. Adding overflow hidden to
+ the topbar div would prevent future problems but cause issues for those
+ adding drop down menus
+
+ * actions/avatar/crop.php, actions/avatar/upload.php, languages/en.php:
+ added user avatar river messages back
+
+ * engine/lib/deprecated-1.8.php, engine/lib/river.php: Fixes #3039 added
+ elgg_delete_river()
+
+ * views/default/css/elements/modules.php: made the widget edit area slightly
+ darker to provide contrast with content area
+
+ * mod/profile/views/default/profile/owner_block.php: added some spacing
+ around the profile action menu
+
+ * pages/account/forgotten_password.php, pages/account/register.php,
+ pages/account/reset_password.php, views/default/css/elements/forms.php,
+ views/default/forms/user/requestnewpassword.php: Fixes #3556 limiting width
+ of account text boxes
+
+ * index.php, mod/custom_index/index.php: Fixes #3376 added RSS feed to
+ default index page and suppressing on custom index front page
+
+ * engine/classes/ElggSite.php, engine/lib/users.php,
+ pages/account/forgotten_password.php, pages/account/reset_password.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/forms/login.php: Fixes #3515 created a unified page handler for
+ account pages
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/group/elements/summary.php, views/default/object/default.php,
+ views/default/user/default.php, views/default/user/elements/summary.php:
+ Fixes #3096 added user and group summery views an updated plugins to use the
+ new view locations
+
+ * views/default/object/elements/summary.php,
+ views/default/page/components/summary.php: Refs #3096 Moved
+ page/components/summary to object/elements/summary. Left
+ page/components/summary for backwards compatibility. Plugins will eventually
+ need to be updated to use $type/elements/summary
+
+ * mod/pages/views/default/object/page_top.php: Fixes #3523 setting public
+ write access to logged in for pages
+
+ * mod/pages/start.php, mod/pages/views/default/input/write_access.php: Refs
+ #3523 added a view for write access in pages plugin
+
+ * mod/pages/pages/pages/view.php, mod/pages/start.php: Fixes #2672 limiting
+ deleting pages and creating sub pages
+
+ * engine/classes/ElggMenuItem.php, engine/lib/admin.php: sorting plugin
+ settings menu items by text
+
+ * .../views/default/settings/categories/edit.php,
+ .../default/settings/garbagecollector/edit.php,
+ .../views/default/settings/logrotate/edit.php: Refs #2032 changed <p> to
+ <div> for plugin settings
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/groups/actions/groups/delete.php,
+ mod/groups/views/default/forms/groups/delete.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/edit.php,
+ .../views/default/forms/invitefriends/invite.php,
+ .../notifications/subscriptions/forminternals.php,
+ views/default/css/elements/forms.php, views/default/forms/avatar/crop.php,
+ views/default/forms/avatar/upload.php, views/default/forms/comments/add.php,
+ views/default/forms/usersettings/save.php: Refs #3407 adds a footer for forms
+
+
+ * install/css/install.css, views/installation/install/nav.php,
+ views/installation/install/pages/complete.php: fixed disabled button in
+ installer - css class had changed
+
+2011-06-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/languages/en.php,
+ .../views/default/theme_preview/general.php: Fixes #3394 added a landing page
+ to theme preview and break out of iframe link
+
+ * engine/lib/users.php, views/default/input/location.php,
+ views/default/input/tag.php, views/default/output/location.php,
+ views/default/output/tag.php, views/default/output/tags.php: Fixes #3489
+ added input/output views for tag and location
+
+ * mod/invitefriends/manifest.xml: added invite friends to default activated
+ plugins
+
+ * actions/admin/plugins/activate.php, actions/admin/plugins/deactivate.php:
+ Refs #2871 Forgot to update the forwarding for activate/deactivate actions
+
+ * languages/en.php, mod/diagnostics/languages/en.php,
+ mod/externalpages/languages/en.php: Refs #3410 all admin menu items have
+ consistent capitalization
+
+ * engine/lib/admin.php: Fixes #3548 the check for an admin menu's parent
+ wasn't working
+
+ * actions/admin/plugins/activate_all.php,
+ actions/admin/plugins/deactivate_all.php, views/default/admin/plugins.php,
+ views/default/css/admin.php,
+ views/default/forms/admin/plugins/change_state.php: Fixes #2871 activate
+ all/deactivate all now sensitive to filtering
+
+ * views/default/admin/plugins/simple.php,
+ .../forms/admin/plugins/simple_update_states.php: Refs #2871 removed the
+ simple plugins page
+
+ * engine/lib/admin.php, views/default/admin/plugins.php,
+ views/default/admin/plugins/advanced.php: Refs #2871 promoted advanced
+ plugins up to be a primary menu
+
+ * views/default/object/plugin/advanced.php: Refs #2871 also turning off
+ dragging when not in priority order
+
+ * views/default/admin/plugins/advanced.php,
+ views/default/object/plugin/advanced.php,
+ .../object/plugin/elements/dependencies.php: Refs #2871 only showing links
+ for changing priority when all plugins are shown in priority order
+
+ * languages/en.php, views/default/admin/plugins/advanced.php,
+ views/default/forms/admin/plugins/filter.php,
+ views/default/forms/admin/plugins/sort.php: Refs #2871 adding sorting to
+ advanced plugin page
+
+ * languages/en.php, views/default/admin/plugins/advanced.php: Refs #2871
+ filter plugins by active/inactive state
+
+ * mod/diagnostics/manifest.xml: setting correct category for diagnostics
+ plugin
+
+2011-06-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Closes #3510. Merged CHANGES.txt for 1.7.9 to trunk.
+
+ * engine/lib/deprecated-1.8.php: Refs #3510, #3366. Added warning about
+ count vs sum in egef_annotation_count() to trunk.
+
+ * mod/profile/start.php: Refs #3510, #3316. Merged
+ register_metadata_as_independent() fix in profile.
+
+2011-06-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2011052801.php, version.php: Refs #3510, #3416. Merged
+ update for making sure users have relationship member_of on site object.
+
+ * mod/messages/languages/en.php,
+ mod/messages/views/default/object/messages.php: Refs #3510, #3264. Ported fix
+ for icons of messages from deleted users to trunk.
+
+2011-06-08 Evan Winslow <evan@elgg.org>
+
+ * engine/lib/views.php, languages/en.php, mod/blog/languages/en.php,
+ .../views/default/river/object/blog/create.php,
+ mod/bookmarks/languages/en.php,
+ .../default/river/object/bookmarks/create.php, mod/file/languages/en.php,
+ .../views/default/river/object/file/create.php, mod/groups/languages/en.php,
+ .../river/annotation/group_topic_post/reply.php,
+ mod/groups/views/default/river/group/create.php,
+ .../river/object/groupforumtopic/create.php,
+ .../default/river/relationship/member/create.php,
+ .../default/river/annotation/likes/create.php,
+ mod/messageboard/languages/en.php,
+ .../default/river/object/messageboard/create.php, mod/pages/languages/en.php,
+ .../views/default/river/object/page/create.php, mod/thewire/languages/en.php,
+ .../views/default/river/object/thewire/create.php,
+ .../river/annotation/generic_comment/create.php,
+ views/default/river/elements/body.php,
+ views/default/river/elements/summary.php, views/default/river/item.php,
+ views/default/river/relationship/friend/create.php: River revamp for 1.8
+
+2011-06-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php: Refs #3510, #3414, #3536.
+ Ported https login fixes to trunk. Will need to backport changes to 1.7 for
+ #3536.
+
+ * engine/lib/group.php, engine/lib/sessions.php, languages/en.php: Refs
+ #3510, #3418. Merged fix for forwarding after output to trunk.
+
+ * mod/tinymce/vendor/tinymce/changelog.txt,
+ .../vendor/tinymce/examples/accessibility.html,
+ .../vendor/tinymce/examples/css/content.css,
+ mod/tinymce/vendor/tinymce/examples/css/word.css,
+ .../vendor/tinymce/examples/custom_formats.html,
+ mod/tinymce/vendor/tinymce/examples/full.html,
+ mod/tinymce/vendor/tinymce/examples/index.html,
+ .../vendor/tinymce/examples/lists/image_list.js,
+ .../vendor/tinymce/examples/lists/link_list.js,
+ .../vendor/tinymce/examples/lists/media_list.js,
+ .../vendor/tinymce/examples/lists/template_list.js,
+ mod/tinymce/vendor/tinymce/examples/media/logo.jpg,
+ .../vendor/tinymce/examples/media/logo_over.jpg,
+ .../vendor/tinymce/examples/media/sample.avi,
+ .../vendor/tinymce/examples/media/sample.dcr,
+ .../vendor/tinymce/examples/media/sample.flv,
+ .../vendor/tinymce/examples/media/sample.mov,
+ .../vendor/tinymce/examples/media/sample.ram,
+ .../vendor/tinymce/examples/media/sample.rm,
+ .../vendor/tinymce/examples/media/sample.swf,
+ mod/tinymce/vendor/tinymce/examples/menu.html,
+ mod/tinymce/vendor/tinymce/examples/simple.html,
+ mod/tinymce/vendor/tinymce/examples/skins.html,
+ .../vendor/tinymce/examples/templates/layout1.htm,
+ .../vendor/tinymce/examples/templates/snippet1.htm,
+ mod/tinymce/vendor/tinymce/examples/word.html,
+ .../vendor/tinymce/jscripts/tiny_mce/langs/en.js,
+ .../tiny_mce/plugins/advhr/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advhr/rule.htm,
+ .../jscripts/tiny_mce/plugins/advimage/image.htm,
+ .../jscripts/tiny_mce/plugins/advimage/js/image.js,
+ .../tiny_mce/plugins/advimage/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlink/js/advlink.js,
+ .../tiny_mce/plugins/advlink/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advlink/link.htm,
+ .../tiny_mce/plugins/advlist/editor_plugin.js,
+ .../tiny_mce/plugins/advlist/editor_plugin_src.js,
+ .../tiny_mce/plugins/autolink/editor_plugin.js,
+ .../tiny_mce/plugins/autolink/editor_plugin_src.js,
+ .../tiny_mce/plugins/autoresize/editor_plugin.js,
+ .../plugins/autoresize/editor_plugin_src.js,
+ .../tiny_mce/plugins/autosave/editor_plugin.js,
+ .../tiny_mce/plugins/autosave/editor_plugin_src.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin_src.js,
+ .../tiny_mce/plugins/contextmenu/editor_plugin.js,
+ .../plugins/contextmenu/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/emotions.htm,
+ .../tiny_mce/plugins/fullpage/css/fullpage.css,
+ .../tiny_mce/plugins/fullpage/editor_plugin.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/fullpage.htm,
+ .../tiny_mce/plugins/fullpage/js/fullpage.js,
+ .../tiny_mce/plugins/fullscreen/editor_plugin.js,
+ .../plugins/fullscreen/editor_plugin_src.js,
+ .../tiny_mce/plugins/inlinepopups/editor_plugin.js,
+ .../plugins/inlinepopups/editor_plugin_src.js,
+ .../inlinepopups/skins/clearlooks2/window.css,
+ .../tiny_mce/plugins/layer/editor_plugin.js,
+ .../tiny_mce/plugins/layer/editor_plugin_src.js,
+ .../tiny_mce/plugins/legacyoutput/editor_plugin.js,
+ .../plugins/legacyoutput/editor_plugin_src.js,
+ .../tiny_mce/plugins/lists/editor_plugin.js,
+ .../tiny_mce/plugins/lists/editor_plugin_src.js,
+ .../tiny_mce/plugins/media/css/content.css,
+ .../jscripts/tiny_mce/plugins/media/css/media.css,
+ .../tiny_mce/plugins/media/editor_plugin.js,
+ .../tiny_mce/plugins/media/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/img/flash.gif,
+ .../tiny_mce/plugins/media/img/flv_player.swf,
+ .../tiny_mce/plugins/media/img/quicktime.gif,
+ .../tiny_mce/plugins/media/img/realmedia.gif,
+ .../tiny_mce/plugins/media/img/shockwave.gif,
+ .../jscripts/tiny_mce/plugins/media/img/trans.gif,
+ .../tiny_mce/plugins/media/img/windowsmedia.gif,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/media/media.htm,
+ .../tiny_mce/plugins/media/moxieplayer.swf,
+ .../tiny_mce/plugins/nonbreaking/editor_plugin.js,
+ .../plugins/nonbreaking/editor_plugin_src.js,
+ .../tiny_mce/plugins/noneditable/editor_plugin.js,
+ .../plugins/noneditable/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/css/content.css,
+ .../tiny_mce/plugins/pagebreak/editor_plugin.js,
+ .../plugins/pagebreak/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/img/pagebreak.gif,
+ .../tiny_mce/plugins/pagebreak/img/trans.gif,
+ .../tiny_mce/plugins/paste/editor_plugin.js,
+ .../tiny_mce/plugins/paste/editor_plugin_src.js,
+ .../plugins/searchreplace/editor_plugin.js,
+ .../plugins/searchreplace/editor_plugin_src.js,
+ .../plugins/searchreplace/js/searchreplace.js,
+ .../plugins/searchreplace/searchreplace.htm,
+ .../tiny_mce/plugins/spellchecker/editor_plugin.js,
+ .../plugins/spellchecker/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/style/js/props.js,
+ .../tiny_mce/plugins/style/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/style/props.htm,
+ .../tiny_mce/plugins/tabfocus/editor_plugin.js,
+ .../tiny_mce/plugins/tabfocus/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/cell.htm,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/cell.js,
+ .../jscripts/tiny_mce/plugins/table/js/row.js,
+ .../jscripts/tiny_mce/plugins/table/js/table.js,
+ .../tiny_mce/plugins/table/langs/en_dlg.js,
+ .../tiny_mce/plugins/table/merge_cells.htm,
+ .../jscripts/tiny_mce/plugins/table/row.htm,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../tiny_mce/plugins/template/js/template.js,
+ .../tiny_mce/plugins/visualchars/editor_plugin.js,
+ .../plugins/visualchars/editor_plugin_src.js,
+ .../tiny_mce/plugins/wordcount/editor_plugin.js,
+ .../plugins/wordcount/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm,
+ .../tiny_mce/plugins/xhtmlxtras/acronym.htm,
+ .../tiny_mce/plugins/xhtmlxtras/attributes.htm,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/del.htm,
+ .../tiny_mce/plugins/xhtmlxtras/editor_plugin.js,
+ .../plugins/xhtmlxtras/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm,
+ .../tiny_mce/plugins/xhtmlxtras/js/attributes.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js,
+ .../plugins/xhtmlxtras/js/element_common.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js,
+ .../jscripts/tiny_mce/themes/advanced/about.htm,
+ .../jscripts/tiny_mce/themes/advanced/anchor.htm,
+ .../jscripts/tiny_mce/themes/advanced/charmap.htm,
+ .../tiny_mce/themes/advanced/color_picker.htm,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/advanced/image.htm,
+ .../tiny_mce/themes/advanced/img/flash.gif,
+ .../tiny_mce/themes/advanced/img/iframe.gif,
+ .../tiny_mce/themes/advanced/img/pagebreak.gif,
+ .../tiny_mce/themes/advanced/img/quicktime.gif,
+ .../tiny_mce/themes/advanced/img/realmedia.gif,
+ .../tiny_mce/themes/advanced/img/shockwave.gif,
+ .../tiny_mce/themes/advanced/img/trans.gif,
+ .../tiny_mce/themes/advanced/img/video.gif,
+ .../tiny_mce/themes/advanced/img/windowsmedia.gif,
+ .../jscripts/tiny_mce/themes/advanced/js/about.js,
+ .../jscripts/tiny_mce/themes/advanced/js/anchor.js,
+ .../tiny_mce/themes/advanced/js/charmap.js,
+ .../tiny_mce/themes/advanced/js/color_picker.js,
+ .../jscripts/tiny_mce/themes/advanced/js/image.js,
+ .../jscripts/tiny_mce/themes/advanced/js/link.js,
+ .../tiny_mce/themes/advanced/js/source_editor.js,
+ .../jscripts/tiny_mce/themes/advanced/langs/en.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/link.htm,
+ .../tiny_mce/themes/advanced/shortcuts.htm,
+ .../themes/advanced/skins/default/content.css,
+ .../tiny_mce/themes/advanced/skins/default/ui.css,
+ .../themes/advanced/skins/highcontrast/content.css,
+ .../themes/advanced/skins/highcontrast/dialog.css,
+ .../themes/advanced/skins/highcontrast/ui.css,
+ .../themes/advanced/skins/o2k7/content.css,
+ .../tiny_mce/themes/advanced/skins/o2k7/dialog.css,
+ .../tiny_mce/themes/advanced/skins/o2k7/ui.css,
+ .../themes/advanced/skins/o2k7/ui_black.css,
+ .../themes/advanced/skins/o2k7/ui_silver.css,
+ .../tiny_mce/themes/advanced/source_editor.htm,
+ .../tiny_mce/themes/simple/editor_template.js,
+ .../tiny_mce/themes/simple/editor_template_src.js,
+ .../vendor/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_popup.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_src.js,
+ .../tinymce/jscripts/tiny_mce/utils/form_utils.js,
+ .../tinymce/jscripts/tiny_mce/utils/mctabs.js,
+ .../tinymce/jscripts/tiny_mce/utils/validate.js: Refs #3510, #9113. Updated
+ tinyMCE version in trunk.
+
+ * engine/classes/ElggEntity.php: Refs #3510, #3433. Ported r9062 to trunk.
+ Fix for comment hook returning 0 comments.
+
+ * CHANGES.txt: Refs #3510: Merged r8938 to trunk. Removed exec props.
+
+ * README.txt: Merged README.txt version removal to trunk.
+
+2011-06-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php: Fixes #3520 fix check for subdirectory in
+ installer
+
+ * mod/embed/README.txt, mod/embed/start.php,
+ mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/js.php,
+ .../default/tinymce/embed_custom_insert_js.php: Refs #3360 #2911 applying
+ ashleyward's patch for embed plugin - thanks!
+
+ * vendors/jquery/jquery.form.js: Refs #3360 updating the jquery form plugin
+
+ * mod/blog/actions/blog/delete.php, mod/blog/lib/blog.php,
+ mod/blog/start.php, mod/blog/views/default/blog/group_module.php,
+ mod/bookmarks/actions/bookmarks/delete.php,
+ mod/bookmarks/pages/bookmarks/view.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/file/actions/file/delete.php, mod/file/actions/file/upload.php,
+ mod/file/pages/file/search.php, mod/file/pages/file/upload.php,
+ mod/file/pages/file/view.php, mod/file/start.php,
+ mod/file/views/default/file/group_module.php,
+ mod/messageboard/pages/messageboard/owner.php, mod/messageboard/start.php,
+ .../views/default/widgets/messageboard/content.php,
+ mod/pages/actions/pages/delete.php, mod/pages/pages/pages/history.php,
+ mod/pages/pages/pages/revision.php, mod/pages/pages/pages/view.php,
+ mod/pages/start.php, mod/pages/views/default/pages/group_module.php: Fixes
+ #3138 using 'all' for group listing urls
+
+ * mod/likes/actions/likes/add.php, mod/likes/actions/likes/delete.php,
+ mod/likes/views/default/likes/display.php: Fixes #3497 users can unlike other
+ users content
+
+2011-06-02 Russell McLoughlin <mcloughlin3@llnl.gov>
+
+ * mod/file/actions/file/upload.php: fixed embarrassing spelling mistake.
+
+2011-06-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/likes/start.php: Fixes #3499 using consistent menu name for likes
+ plugin
+
+2011-06-01 Russell McLoughlin <mcloughlin3@llnl.gov>
+
+ * mod/file/actions/file/upload.php, mod/file/download.php: Modified upload
+ script to guarentee that the directory under elgg data is created or exists.
+ Removed strange chunking code with builtin php function
+
+ * mod/file/actions/file/upload.php: Modified upload code so that it uses
+ php's built in file copy function rather than reading the entire uploaded
+ file into memory from the temporary upload directory and then saving it to
+ elgg's data dir.
+
+2011-06-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Fixes #3455 added documentation back to
+ deprecated functions
+
+2011-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginPackage.php, languages/en.php,
+ views/default/css/admin.php, views/default/object/plugin/advanced.php: Fixes
+ #3467. Fixed bugs in priority deps. Can now disable active plugins with unmet
+ dependencies.
+
+2011-05-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: Refs #3236 added some margin to the bottom of
+ the admin footer
+
+ * engine/lib/users.php, mod/dashboard/manifest.xml, mod/dashboard/start.php,
+ mod/dashboard/views/default/dashboard/blurb.php, pages/dashboard.php,
+ views/default/core/dashboard/blurb.php, views/default/css/elements/misc.php:
+ Refs #3340 pulls dashboard out as plugin
+
+ * views/default/annotation/generic_comment.php,
+ views/default/page/elements/comments_block.php: Fixes #3457 showing a snippet
+ of a comment in sidebar instead of entire comment
+
+ * views/default/input/access.php, views/default/input/tags.php,
+ views/default/output/tags.php: Fixes #3189 adds entity support to tags and
+ access views
+
+ * languages/en.php, mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/categories/manifest.xml, mod/diagnostics/manifest.xml,
+ mod/embed/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/logrotate/manifest.xml, mod/messageboard/manifest.xml,
+ mod/pages/manifest.xml, mod/tagcloud/manifest.xml, mod/tinymce/manifest.xml,
+ mod/twitter/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: Refs #2104 changed extension to enhancement and
+ added security, widget, and theme categories
+
+ * engine/lib/river.php: Fixes #3300 adds a created,river event
+
+2011-05-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: 'creating', 'river' is the plugin hook for
+ preventing or catching a river addition before it happens
+
+ * engine/lib/output.php: Fixes #3454 not stripping empty attributes
+
+ * engine/lib/admin.php, views/default/object/plugin/advanced.php: Fixes
+ #3163 plugin/<plugin id>/settings.php is now the preferred way to add
+ settings plugins
+
+ * engine/classes/ElggPlugin.php, engine/lib/elgglib.php, languages/en.php:
+ Fixes #3462 empty classes directory is no longer treated as an error
+
+2011-05-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js, views/default/output/confirmlink.php,
+ views/default/page/elements/header.php: Fixes #3385 rel now used for the
+ confirm text so that title can be used separately
+
+ * engine/lib/pagehandler.php: Fixes #3132 added 'route', $handler plugin
+ hook
+
+ * views/default/forms/register.php: Fixes #3419 removed code about admin
+ option from registration form
+
+ * mod/groups/start.php: Fixes #3464 group discussion replies work on
+ activity page
+
+2011-05-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/languages/en.php: Fixes #3453 added link to wiki about the data
+ directory
+
+ * install/css/install.css,
+ views/installation/install/pages/requirements.php: fixed display issue in
+ installation where navigation was overlapping requirements
+
+ * install/ElggInstaller.php: fixed issue introduced with the session changes
+ in the installer
+
+ * install/ElggInstaller.php: do not need to initialize globals in installer
+ because they are now declared that way in Elgg core libs
+
+ * install/ElggInstaller.php: fixed regenerating cache when installing Elgg -
+ wasn't picking up the plugins before
+
+ * views/installation/page/elements/footer.php: helpful links in installer
+ open up in new page now
+
+ * install/ElggInstaller.php: Refs #3453 added $CONFIG->data_dir_override so
+ that people can put the data directory in Elgg's root if they want to. Will
+ add instructions to the wiki on using this and protecting the directory
+
+ * install/ElggInstaller.php, install/ElggRewriteTester.php,
+ install/css/install.css, install/js/install.js, install/languages/en.php,
+ views/installation/forms/install/template.php,
+ views/installation/input/checkbox.php,
+ views/installation/input/checkboxes.php, views/installation/input/combo.php,
+ views/installation/input/form.php, views/installation/input/hidden.php,
+ views/installation/input/text.php: Refs #3453 an implementation of creating
+ the data directory. This capability is turned off due to security concerns.
+
+2011-05-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/installation/input/access.php, views/installation/input/button.php,
+ views/installation/input/checkboxes.php,
+ views/installation/input/dropdown.php, views/installation/input/form.php,
+ views/installation/input/hidden.php, views/installation/input/longtext.php,
+ views/installation/input/password.php, views/installation/input/reset.php,
+ views/installation/input/securitytoken.php,
+ views/installation/input/submit.php, views/installation/input/text.php: clean
+ up installation input views
+
+ * install/css/install.css: fixed the width of text boxes for the installer
+
+ * actions/logout.php: on logout send the user to the main page
+
+ * install/ElggInstaller.php: Fixes #3446 password is not required anymore
+ for installer
+
+ * install/js/install.js, views/installation/forms/install/template.php,
+ views/installation/page/default.php: fixed the double form submission code
+ for the installer
+
+ * engine/lib/users.php, views/default/user/default.php: Fixes #3456
+ user/default now works much like the object/<subtype> views regarding the
+ menu
+
+ * engine/lib/extender.php: not using deprecated get_annotation/get_metadata
+ functions in can_edit_extender()
+
+ * views/default/navigation/topbar_tools.php,
+ views/default/page/elements/topbar.php: only display deprecation message if
+ someone extends/overrides the deprecated tools view
+
+ * mod/developers/languages/en.php: defined
+ elgg_dev_tools:settings:explanation
+
+ * views/default/input/dropdown.php: fixes a php warning if no options are
+ passed to input/dropdown view
+
+ * engine/lib/users.php: removed a deprecated function use in users lib
+
+ * .../views/default/theme_preview/forms.php,
+ views/default/input/userpicker.php: fixed passing wrong parameters to
+ input/userpicker (which is not currently functional)
+
+ * mod/externalpages/start.php, mod/thewire/start.php, mod/twitter/start.php:
+ removed deprecated functions from these 3 plugins
+
+ * engine/lib/actions.php: improved documentation of elgg_register_action()
+
+ * mod/pages/start.php: fixed page revisions url override
+
+ * engine/lib/extender.php: improved documentation of
+ elgg_register_extender_url_handler()
+
+ * views/default/forms/admin/menu/save.php: fixed php warning when no custom
+ menu items
+
+ * languages/en.php: fixed typo in the admin welcome widget
+
+ * views/default/admin/plugins/advanced.php: sorting plugin categories before
+ display
+
+ * languages/en.php, mod/groups/manifest.xml, mod/likes/manifest.xml,
+ mod/oauth_api/manifest.xml, mod/twitter_api/manifest.xml,
+ mod/zaudio/manifest.xml: Refs #2104 more category work for bundled plugins
+
+ * engine/lib/database.php: made database query logging explicitly set to
+ NOTICE level
+
+2011-05-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/lib/blog.php: Fixes #3439 forcing months to have leading zero
+
+2011-05-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+2011-05-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/userpicker.js: Pulled in Jeff's patch to fix the user picker.
+
+ * engine/classes/ElggPluginPackage.php: Fixes 3426. Not using a horrible
+ variable name and fixing the bug created by it.
+
+2011-05-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Fixed wrapper for annotation calculations.
+
+2011-04-29 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/css/admin.php,
+ views/default/widgets/admin_welcome/content.php: Made admin welcome widget a
+ bit more semantic
+
+ * upgrade.php: comment typo
+
+ * engine/.htaccess: Bah, can't do that
+
+ * engine/.htaccess: Deny all HTTP access to the engine directory
+
+2011-04-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitter/views/default/twitter/css.php: hacking the 1.7 css for current
+ twitter widget so it looks decent for screenshots
+
+ * mod/embed/start.php: Refs #3358 fixed another instance where link_class
+ should be used now due to changes in menu code
+
+2011-04-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/security.js, js/lib/ui.js: Fixes #3408. During token refresh, only
+ touching hrefs that contain __elgg_ts and __elgg_token to avoid changing
+ selector-only hrefs since fragment-only hrefs are normalized by the browser.
+ Not sure how this didn't show up until now.
+
+2011-04-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/widgets/admin_welcome/content.php: Trying
+ to increase probability that people will read the welcome widget by making
+ the text shorter
+
+ * languages/en.php, views/default/css/admin.php,
+ views/default/forms/profile/fields/reset.php: Refs #3236 updated the button
+ css so that disable plugin button looks like a button
+
+ * mod/messages/manifest.xml: activate messages plugin on install
+
+ * views/default/css/admin.php, .../object/plugin/elements/dependencies.php:
+ Refs #3236 removed elgg-states-* from admin css since it was overaggressive
+
+ * views/default/css/admin.php: Refs #3236 cleaned up the widget css in admin
+ area
+
+2011-04-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/start.php: Refs #3358. Missed Tinymce's use of class for its
+ menu.
+
+ * views/default/css/admin.php: Fixes #3326. Added CSS for inputs in admin
+ area. No more tiny text fields!
+
+ * mod/messageboard/views/default/messageboard/js.php: Fixed a problem with
+ the ajax for deleting message board posts.
+
+ * engine/lib/actions.php: Removed unneeded else.
+
+ * engine/lib/actions.php: Fixes #3127. Normalizing the json returned by the
+ ajax action handler. Doing this in PHP.
+
+2011-04-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: Added very basic CSS for elgg-markdown in
+ admin area.
+
+ * engine/lib/admin.php: Fixed possible WSOD for plugin text file page
+ handler.
+
+ * mod/search/README.txt: Fixed typo in search's readme.
+
+ * vendors/markdown/UPSTREAM_WARNING, vendors/markdown/markdown.php: Updated
+ markdown to add support for === instead of just ### for headers. Added
+ upstream warning.
+
+ * mod/search/README.txt: Updated search's readme to markdown.
+
+ * mod/logrotate/languages/en.php, mod/logrotate/start.php,
+ .../views/default/settings/logrotate/edit.php: Fixes #3253. Merged in
+ Shashank's patch.
+
+ * engine/lib/plugins.php: Removed stray test code.
+
+ * engine/lib/plugins.php, views/default/admin/plugins/advanced.php: Refs
+ #3362. Removed use of $show_bad in elgg_get_plugins().
+
+ * actions/admin/plugins/activate.php,
+ actions/admin/plugins/activate_all.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/deactivate_all.php,
+ actions/admin/plugins/set_priority.php,
+ actions/admin/plugins/simple_update_states.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggPluginPackage.php,
+ engine/lib/admin.php, engine/lib/deprecated-1.8.php, engine/lib/plugins.php,
+ install/ElggInstaller.php, views/default/admin/plugin_settings.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/core/settings/tools.php,
+ .../forms/admin/plugins/simple_update_states.php,
+ views/default/object/plugin/advanced.php,
+ .../object/plugin/elements/dependencies.php,
+ views/default/object/plugin/simple.php: Refs #3362. Plugins don't check deps
+ upon boot. Made package and manifest private properties of ElggPlugin and
+ added ->getPackage() and ->getManifest().
+
+2011-04-26 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/icons.php: Fixes #3380: .elgg-icon-user states
+ are now consistent with other elgg-icons
+
+ * views/default/css/elements/core.php,
+ views/default/css/elements/navigation.php: Fixes #3388: .elgg-icon is now
+ middle-aligned by default
+
+ * views/default/page/components/gallery.php: Fixes #3290: Fluid gallery w/o
+ tables -- working great for fixed-width content
+
+ * views/default/css/elements/typography.php: Fixes #3389: Sandbox base
+ styles for dl, dt, dd
+
+ * engine/lib/input.php, views/default/input/autocomplete.php: Fixes #2922:
+ pg/livesearch now works with "term" parameter
+
+ * engine/lib/elgglib.php: Fixes some coding standard issues in elgglib.php
+
+2011-04-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/readme.txt: Removed inaccurate readme.txt file.
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginPackage.php,
+ engine/lib/admin.php, engine/lib/plugins.php, languages/en.php,
+ vendors/markdown/License.text, vendors/markdown/PHP Markdown Extra
+ Readme.text, vendors/markdown/markdown.php,
+ views/default/object/plugin/advanced.php,
+ views/default/object/plugin/simple.php: Fixes #2899, #2870. Added README.txt,
+ CHANGES.txt, COPYRIGHT.txt, LICENSE.txt, and INSTALL.txt as markdown files
+ for plugins. Added page handler to parse and serve them. Added links in
+ plugin admin. Refs #3236. Problems with displaying parsed markdown because of
+ missing parts of the admin theme's CSS.
+
+ * engine/classes/ElggPlugin.php: Renamed ElggPlugin->canIncludeFile() to
+ ->canReadFile() and am using is_readable() instead of file_exists().
+
+2011-04-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/forms.php: Fixes #2196. Pulled in Francisco's
+ patch for datepicker CSS.
+
+2011-04-23 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/page/theme_preview.php,
+ .../views/default/theme_preview/buttons.php,
+ .../views/default/theme_preview/components.php,
+ .../theme_preview/components/image_block.php,
+ .../default/theme_preview/components/list.php,
+ .../default/theme_preview/components/messages.php,
+ .../default/theme_preview/components/table.php,
+ .../views/default/theme_preview/forms.php,
+ .../views/default/theme_preview/general.php,
+ .../views/default/theme_preview/grid.php,
+ .../views/default/theme_preview/icons.php,
+ .../views/default/theme_preview/icons/avatars.php,
+ .../views/default/theme_preview/icons/loader.php,
+ .../views/default/theme_preview/icons/sprites.php,
+ .../views/default/theme_preview/modules.php,
+ .../default/theme_preview/modules/modules.php,
+ .../default/theme_preview/modules/widgets.php,
+ .../views/default/theme_preview/navigation.php,
+ .../theme_preview/navigation/breadcrumbs.php,
+ .../default/theme_preview/navigation/default.php,
+ .../default/theme_preview/navigation/extras.php,
+ .../default/theme_preview/navigation/filter.php,
+ .../theme_preview/navigation/horizontal.php,
+ .../theme_preview/navigation/owner_block.php,
+ .../default/theme_preview/navigation/page.php,
+ .../theme_preview/navigation/pagination.php,
+ .../default/theme_preview/navigation/site.php,
+ .../default/theme_preview/navigation/tabs.php,
+ .../views/default/theme_preview/objects.php,
+ .../views/default/theme_preview/typography.php,
+ .../default/theme_preview/typography/headings.php,
+ .../default/theme_preview/typography/misc.php,
+ .../default/theme_preview/typography/paragraph.php,
+ .../views/default/theme_preview/widgets.php: Fixes #3042: Theme preview navs
+ now match css/elements/*. Also did a major cleanup of the presentation.
+
+2011-04-22 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/forms/developers/settings.php: Fixes #3374: echo
+ developers settings explanation
+
+ * views/default/navigation/menu/elements/item.php: Fixes #3282: Added a
+ class to menu items which includes menu item name (just like ul contains a
+ class with the menu name)
+
+2011-04-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Fixed rewriting for internalid and internalname to
+ not cause false deprecation notices if passed among views.
+
+ * views/default/forms/profile/fields/add.php: Fixed deprecated call to
+ input/pulldown.
+
+ * engine/lib/elgglib.php: Added 3rd param to elgg_deprecated_notice() to
+ control how much of the stack to show.
+
+ * engine/lib/statistics.php: Fixes some deprecated notices in admin online
+ user widget.
+
+ * engine/lib/views.php: Fixed erroneous notices about full_view when passing
+ $vars directly to another view within a view.
+
+2011-04-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metastrings.php: Refs #3195.
+ Selectively joining certain tables for performance with annotation
+ calculations.
+
+ * engine/lib/annotations.php, engine/lib/metastrings.php: Reverting the
+ annotation changes because they're not ready yet.
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/lib/metastrings.php, engine/tests/api/metastrings.php: Fixed a problem
+ with the annotation batch operation test.
+
+ * engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_18/manifest.xml: Fixes #3310. Removed old
+ on_activate unit tests.
+
+2011-04-20 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/views/default/object/bookmarks.php: Fixes #3369: Bookmarks
+ now have rel=nofollow
+
+2011-04-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/groups/featured.php, mod/groups/languages/en.php,
+ mod/groups/start.php: Fixes #3364: Added action tokens and fixed guids for
+ featuring/unfeaturing groups. Cleaned up language for result messages.
+
+2011-04-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggMenuItem.php, engine/lib/navigation.php,
+ views/default/page/layouts/content/header.php: Fixes #3358. Renamed menu's
+ class to link_class and documented possible problems with passing <a> tags in
+ the text option.
+
+ * engine/lib/database.php, engine/lib/entities.php,
+ engine/lib/metastrings.php, engine/lib/river.php: Fixes #2046. Applied Franz'
+ patch for sanitize_int().
+
+ * engine/lib/cache.php: Fixes #3365. Pulled in blacktooth's patch.
+
+2011-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser18.php, languages/en.php,
+ mod/blog/manifest.xml, mod/blog/start.php, mod/categories/manifest.xml,
+ mod/categories/start.php: Fixes #3310. Applied lie2815's patch to use
+ activate.php and deactivate.php instead of manifest on_de/activate fields in
+ plugins.
+
+2011-04-16 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/metastrings.php, engine/tests/api/entity_getter_functions.php:
+ Removed debug calls.
+
+ * .gitignore, engine/classes/ElggFile.php, engine/lib/annotations.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/tests/api/entity_getter_functions.php, engine/tests/suite.php:
+ Denormalizing annotation names for calculation functions.
+
+2011-04-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Fixed problem with
+ list_entities_from_metadata() wrapper.
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php,
+ engine/lib/metastrings.php: Refs #3195. Changed the way annotation
+ calculations are performed. Seems to be working better, but will want to test
+ more before closing.
+
+ * engine/classes/ElggMenuItem.php: Refs #3023. Exposed item_class option in
+ the menu item factory. Should we change 'class' to 'link_class' to avoid
+ confusion?
+
+2011-04-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/tests/api/helpers.php: fixed filtering of
+ external files array and suppressed warning in external files unit test
+
+2011-04-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/core.php: Fixes #2972: Following elements have
+ default clearfix: elgg-inner elgg-page-header elgg-page-footer elgg-foot
+ elgg-head elgg-col elgg-image-block
+
+ * views/default/page/admin.php, views/default/page/default.php,
+ views/default/page/elements/foot.php, views/default/page/walled_garden.php:
+ Fixes #3329: Added page/elements/foot and refactored page shells to use it
+
+2011-04-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Fixes #3268 forwarding to referrer (fixed by
+ ashwanthkumar)
+
+ * engine/lib/metastrings.php: handles empty array in get_metastring_id()
+ (hellekin)
+
+ * engine/lib/sessions.php: preventing warnings with the user password
+ authorization pam (hellekin)
+
+ * engine/classes/ElggEntity.php: fixes warnings in ElggEntity::getMetadata()
+ (hellekin)
+
+ * engine/classes/ElggEntity.php: making sure ElggEntity::getAnnotations()
+ returns an array, check if temporary annotation exists before returning, and
+ added a warning about annotating unsaved entities
+
+ * engine/tests/services/api.php: suppressing warnings in web services unit
+ tests (hellekin)
+
+ * engine/classes/ElggPAM.php: checking that PAM handlers have been
+ registered for the policy being tested (hellekin)
+
+ * engine/classes/ElggUser.php: Checking that get_user_by_username() returned
+ something in ElggUser constructor to prevent notice (hellekin)
+
+2011-04-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/cache_handler.php, engine/lib/cache.php,
+ engine/lib/elgglib.php: Fixes #3331. Changed cache schema to allow for JS/CSS
+ views with slashes and dots.
+
+ * engine/lib/elgglib.php: Consolidated the css and js pagehandlers with
+ elgg_cachable_view_pagehandler() and fixed for URLs with multiple dots after
+ the last / (like /js/calendars/fullcalendar.min.123456789.js)
+
+2011-04-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixes #3347 fixes comment typo for ege
+
+2011-04-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/initialize_elgg.php: Fixing JS problems when simple cache
+ is disabled.
+
+2011-04-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/output.php: Fixes #3327 fixed typo
+
+ * views/default/css/elgg.php: Fixes #3333 removed include of chrome css
+
+ * views/default/css/admin.php: Fixes #3325 added cursor: pointer to system
+ messages in admin area
+
+ * mod/file/start.php: Fixes #3322 file link removed from owner_block if
+ disabled for a group
+
+2011-04-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php, views/default/page/elements/head.php: Fixed #3313:
+ Removed the superfluous html_head/extend view from core. Anyone following
+ trunk should extend page/elements/head instead
+
+ * js/lib/languages.js: Fixes #3182: No attempt to go through simplecache at
+ all, but any language can be exported to js now without any extra effort on
+ the part of language pack authors
+
+ * js/lib/elgglib.js, js/lib/languages.js, views/default/js/elgg.php,
+ views/default/js/initialize_elgg.php: Refs #3182: Feeding language loading
+ through /ajax/view to keep thing simpler for now. Reorganized boot process
+ so that we can ajax load the languages asap
+
+ * views/default/css/elements/buttons.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/core.php, views/default/css/elements/grid.php,
+ views/default/css/elements/helpers.php, views/default/css/elements/icons.php,
+ views/default/css/elements/layout.php,
+ views/default/css/elements/navigation.php, views/default/css/elgg.php: Refs
+ #3281: css/elements/core.php for the cross-browser/hacky/non-trivial things
+ that themes should rarely, if ever, override.
+
+2011-04-09 Brett Profitt <brett.profitt@gmail.com>
+
+ * engine/lib/annotations.php, engine/lib/metastrings.php: Running
+ egef_annotation_calculation() through elgg_get_annotations() instead of
+ elgg_get_entities().
+
+2011-04-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * ....8_svn-admins_like_widgets-7f19d2783c1680d3.php: Reopens #3224 not as
+ clever as I thought - user experiences error before seeing reminder
+
+ * mod/bookmarks/languages/en.php, mod/bookmarks/start.php: registered
+ bookmarks widget
+
+ * views/default/css/admin.php: fixed delete icon in admin css
+
+ * actions/widgets/upgrade.php,
+ ...svn-update_default_widgets-7daf5a459720d06d.php, engine/lib/widgets.php,
+ languages/en.php, views/default/admin/appearance/default_widgets.php: Fixes
+ #3193 moves default widgets upgrade to an action
+
+ * engine/lib/upgrades/2011010101.php,
+ ....8_svn-admins_like_widgets-7f19d2783c1680d3.php: Fixes #3224 Fixes #3241
+ stopping upgrade after plugin upgrade and restarting
+
+2011-04-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/entity_getter_functions.php: Fixes #2600. Applied
+ Hellekin's patch. Props to him for understanding what was going on because
+ whoa.
+
+ * mod/twitter_api/lib/twitter_api.php: Removing odd ? after docblock in
+ twitter_api.
+
+2011-04-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrade.php: Refs #3241 sorting upgrades so that upgrades from
+ old upgrade system are ordered in datalist array
+
+ * ..._svn-goodbye_walled_garden-083121a656d06894.php: Refs #3241 deleting
+ old config value in registration upgrade
+
+ * engine/lib/upgrade.php, engine/lib/upgrades/2010050701.php,
+ ..._svn-goodbye_walled_garden-083121a656d06894.php: Refs #3241 cleaned up
+ upgrade sequence so that we don't need special catch for that one upgrade
+ created during 1.7 development. It doesn't hurt running it twice so sites
+ currently using svn trunk will not be negatively affected.
+
+ * engine/lib/upgrades/2010123101.php, engine/lib/upgrades/2011010401.php:
+ Refs #3241 moved the default site access check upgrade script to before the
+ plugin upgrade so plugin upgrade is last upgrade in old upgrade system. The
+ site access script can be run multiple times without causing problems.
+
+ * engine/lib/deprecated-1.8.php, engine/lib/upgrade.php,
+ engine/lib/version.php, engine/start.php, install/ElggInstaller.php: Refs
+ #3241 upgrade.php is a much better name for the upgrade library
+
+ * engine/lib/upgrades/2008100701.php, engine/lib/upgrades/2009022701.php,
+ engine/lib/upgrades/2009041701.php, engine/lib/upgrades/2009070101.php,
+ engine/lib/upgrades/2009102801.php, engine/lib/upgrades/2010033101.php,
+ engine/lib/upgrades/2010040201.php, engine/lib/upgrades/2010061501.php: Refs
+ #3241 cleaned up comments on upgrades and removed the turning off of time
+ limit in individual upgrades since this is now handled by the upgrade
+ function
+
+ * ...11031400-1.8_svn-oauth_api-8f33ee79c3e66222.php: Refs #3241 we never
+ distributed an oauth_lib plugin so we don't need an upgrade (those following
+ svn trunk have already upgraded or can manually update this)
+
+ * engine/lib/upgrades/2010100500.php: Refs #3241 we never distributed a
+ plugin called oauth and Justin Richer has so let's not disable his plugin
+
+ * ....8_svn-admins_like_widgets-7f19d2783c1680d3.php: added a comment to
+ explain why the call to elgg_add_admin_widgets() in the upgrade script has
+ parameters like it does
+
+2011-04-09 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/chrome.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/helpers.php,
+ views/default/css/elements/typography.php, views/default/css/elgg.php: Refs
+ #3286: Removed css/elements/chrome.php, putting all the style rules into
+ sensible locations
+
+2011-04-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/sidebar_alt.php,
+ views/default/page/layouts/two_sidebar.php: Fixes #3319 alternate sidebar
+ should work now
+
+ * _graphics/admin_sprites.png, views/default/css/admin.php: Refs #3108
+ forgot the user hover menu for the admin area
+
+ * engine/lib/upgrades/2010121401.php: Fixes #3320 no longer require the
+ upgrade to disable the members plugin
+
+2011-04-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php: Fixes #3232 removed unnecessary distinct plus
+ variable in select for metastrings calculation
+
+2011-04-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Refs #3278. No more likes in login popup handler.
+
+2011-04-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/admin_sprites.png, .../admin/appearance/profile_fields/list.php,
+ views/default/css/admin.php: Fixes #3108 added admin sprites (enough for beta
+ release)
+
+2011-04-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Fixes #3278 Login popup aligned to right side of button.
+
+2011-04-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/SPRITES_LICENSE.TXT, _graphics/elgg_sprites.png,
+ mod/messages/views/default/messages/css.php,
+ mod/search/views/default/search/css.php,
+ views/default/css/elements/icons.php: Refs #3108 added more sprites and a
+ license file - no visible changes
+
+2011-04-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_sprites.png, engine/lib/views.php, mod/bookmarks/start.php,
+ mod/bookmarks/views/default/object/bookmarks.php, mod/messages/start.php,
+ views/default/css/elements/helpers.php, views/default/css/elements/icons.php,
+ views/default/river/relationship/friend/create.php: Refs #3108 frontend
+ should be done and ready for review - admin area is next
+
+ * engine/lib/deprecated-1.7.php, engine/lib/objects.php,
+ engine/lib/users.php: moved two more deprecated functions out of the main
+ libs
+
+2011-04-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/buttons.php: Fixes
+ #3289 added inline-block to buttons
+
+ * mod/groups/languages/en.php, mod/groups/start.php,
+ .../river/object/groupforumtopic/create.php,
+ views/default/css/elements/components.php,
+ views/default/river/elements/footer.php: Fixes #3275 forms in a river item
+ are not forced to be hidden
+
+2011-04-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/favicon.ico, mod/reportedcontent/graphics/icon_reportthis.gif:
+ Refs #3307 removed executable prop from core files
+
+ * engine/lib/navigation.php, languages/en.php, mod/likes/start.php,
+ views/default/css/elements/navigation.php,
+ views/default/river/elements/body.php,
+ views/default/river/elements/controls.php, views/default/river/item.php: Refs
+ #3073 first version of horizontal river menu. css still needs work for likes
+ and the comment text bubble needs to be darkened
+
+ * mod/externalpages/start.php, mod/reportedcontent/start.php,
+ views/default/css/elements/navigation.php: Fixes #3305 switched default and
+ alt sections for footer menu
+
+ * _graphics/elgg_sprites.png, engine/lib/users.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/css/elements/chrome.php, views/default/css/elements/icons.php,
+ views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php,
+ views/default/object/widget/elements/controls.php: Refs #3108 fixed widgets
+ for main site (not admin) and tweaked topbar
+
+2011-04-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/pages/file/world.php: removed unnecessary context setting
+
+ * .../views/default/groups/group_sort_menu.php: Fixes #3105 group sort menu
+ uses filter menu
+
+ * engine/lib/navigation.php, languages/en.php: better title attributes for
+ entity menu edit/delete links
+
+ * views/default/output/confirmlink.php: output/confirmlink now supports
+ title attribute
+
+ * views/default/output/access.php: cleaned up css for output/access
+
+ * mod/blog/start.php: Refs #3184 added span so that blog post status would
+ be vertically aligned
+
+ * _graphics/elgg_sprites.png, engine/lib/users.php,
+ views/default/css/elements/icons.php,
+ views/default/css/elements/navigation.php: Refs #3108 partial implementation
+ of new sprites (widgets, hover menu, search are all broken)
+
+ * mod/likes/languages/en.php, mod/likes/views/default/likes/display.php:
+ cleans up likes display which was causing issues in entity menu - less markup
+
+
+ * views/default/css/elements/navigation.php: Refs #3184 needed to set height
+ for the icons
+
+ * views/default/css/elements/navigation.php: Fixes #3184 fixed alignment
+ issues for entity menu
+
+ * views/default/css/elements/navigation.php: added spaces to standardize the
+ css statements
+
+2011-04-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/pages/search/index.php,
+ mod/search/views/default/search/search_box.php: Refs #3179 pulled fix for
+ search query encoding into trunk from 1.7 branch
+
+ * engine/lib/elgglib.php: Refs #3149 reimplemented fix for calling a handler
+ more than once in trunk
+
+ * .../views/default/uservalidationbyemail/js.php: Refs #3001 made comment
+ change in trunk from 1.7 fix
+
+ * mod/search/search_hooks.php: Refs #2994 added group search fix from 1.7
+ branch to trunk
+
+ * engine/classes/ElggRelationship.php: Refs #2988 corrected typo in trunk
+
+ * mod/invitefriends/start.php: Refs #2968 invite friends link should not be
+ available for non-logged in users
+
+ * engine/lib/extender.php: Refs #2878 fixes detect_extender_valuetype() in
+ trunk
+
+ * documentation/examples/crontab.example: updated crontab example
+ documentation
+
+ * engine/lib/entities.php: Refs #3277 merged fix for recursive delete and
+ disabled entities into trunk
+
+ * mod/groups/start.php, mod/groups/views/default/groups/side_menu.php: Fixes
+ #3104 updated groups plugin to use new menu system for sidebar
+
+ * mod/groups/lib/groups.php,
+ mod/groups/views/default/groups/profile/layout.php: moved group profile
+ layout out of page handler so that plugins can override it
+
+ * engine/classes/ElggEntity.php, engine/lib/entities.php,
+ mod/blog/actions/blog/save.php: Fixes #3208 setting time_created on update
+
+ * actions/admin/plugins/activate.php: Refs #3229 at least we can forward so
+ that user sees error message immediately
+
+ * actions/register.php, views/default/forms/register.php: Refs #3233
+ registration form should be sticky too
+
+ * actions/useradd.php, views/default/forms/useradd.php: Fixes #3233 useradd
+ form is now sticky
+
+ * engine/classes/ElggPluginManifest.php: Fixes #3244 fixed variable name in
+ ElggPluginManifest
+
+ * .../views/default/theme_preview/widgets.php: fixed typo in theme preview -
+ widgets
+
+2011-04-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/hooks.js: Returning false in JS hooks is now sent through to the
+ calling trigger. Null still returns the original value.
+
+ * js/lib/elgglib.js, js/lib/ui.js: Refs #3098. Changed elgg.getUrlFragment
+ to elgg.getSelectorFromUrlFragment to allow for better selectors.
+
+2011-04-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, languages/en.php, mod/members/languages/en.php,
+ mod/members/manifest.xml, mod/members/pages/members/index.php,
+ mod/members/pages/members/search.php, mod/members/start.php,
+ mod/members/views/default/members/nav.php,
+ mod/members/views/default/members/sidebar.php, pages/members/index.php,
+ pages/members/search.php, views/default/core/members/nav.php,
+ views/default/core/members/sidebar.php: Fixes #3231 welcome back, members
+ plugin
+
+ * engine/classes/ElggMenuItem.php: Refs #3287 setting null for menu href
+ means you want an empty <a></a> tag with no href
+
+ * engine/classes/ElggMenuItem.php, engine/lib/navigation.php: Fixes #3287
+ added documentation on non-link menu items
+
+ * engine/lib/metastrings.php: Refs #3245 pulling in
+ https://github.com/Elgg/Elgg/pull/11 and thanks also to gprasanth
+
+ * views/default/user/default.php: fixed hardcoded string in user/default
+ view
+
+ * mod/thewire/views/default/object/thewire.php: Refs #3200 any time a wire
+ post is displayed, we may need the 'previous' javascript
+
+ * mod/thewire/languages/en.php: added notification messages to the wire
+
+ * mod/bookmarks/start.php: Fixes #3044 removed bookmark link from user hover
+ menu
+
+ * engine/lib/users.php, views/default/forms/user/passwordreset.php: Fixes
+ #3207 passing code variable to form for password reset
+
+2011-03-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Refs #2940 added php settings comments into trunk
+
+2011-03-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Fixed ajax status for elgg.action().
+
+2011-03-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/js/thewire.js, mod/thewire/languages/en.php,
+ mod/thewire/start.php, mod/thewire/views/default/js/thewire.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/previous.php: Fixes #3200 ajax-based view
+ previous link works for the wire
+
+ * mod/thewire/pages/thewire/previous.php: Refs #3200 pulling in
+ e1d75071737b2ed35cf9 from anirupdutta's pull request
+
+2011-03-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, js/lib/ajax.js: Fixed auto-display of system
+ errors in ajax actions. Fixed docs for system_messages(). Blech...that needs
+ cleaned up.
+
+2011-03-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/user_settings.php, mod/notifications/groups.php,
+ mod/notifications/index.php, .../forms/notificationsettings/groupsave.php,
+ .../notifications/subscriptions/forminternals.php: Fixes #3266 let the
+ settings pages have breadcrumbs
+
+ * views/default/page/layouts/content.php,
+ views/default/page/layouts/one_sidebar.php: one_sidebar layout wants
+ breadcrumbs, too!
+
+ * views/default/css/elements/chrome.php: fixed some typos in css chrome
+
+2011-03-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Fixes #3234: Adding explicit collision param for popups.
+
+2011-03-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/lib/groups.php,
+ mod/groups/start.php, mod/groups/views/default/groups/sidebar/find.php: Fixes
+ #3243 pulled in anirupdutta's patch with some modifications (moved tag search
+ to its own page handler function)
+
+2011-03-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/css.php: made search box span sidebar in
+ default theme
+
+2011-03-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php: Fixing css/elgg instead of css/screen.
+
+2011-03-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, languages/en.php: Fixes #2591 removing newlines
+ in queries - thanks to Tachyon
+
+ * engine/lib/views.php: Refs #3085 updated elgg_view_annotation() to use
+ $vars array
+
+ * engine/lib/views.php: Refs #3085 added $vars array to
+ elgg_view_river_item()
+
+ * engine/lib/users.php, engine/lib/views.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/object/file.php, mod/groups/lib/groups.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ .../views/default/annotation/messageboard.php,
+ mod/messages/views/default/object/messages.php,
+ mod/pages/pages/pages/revision.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/annotation/generic_comment.php,
+ views/default/object/plugin.php, views/default/page/components/gallery.php,
+ views/default/page/components/list.php, views/json/entities/entity_list.php:
+ Fixes #3086 using full_view instead of full
+
+ * engine/lib/views.php: Refs #3086 adds backward compatibility code in
+ elgg_view() for full_view vs full
+
+ * mod/blog/views/default/blog/sidebar.php: Fixes #2969 turned off group blog
+ archives
+
+2011-03-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/configuration.php,
+ mod/diagnostics/start.php, mod/profile/start.php: Fixes #3250
+ elgg_get_root_path() to be consistent
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ engine/lib/actions.php: Fixes #3249 fixed name of actions exists function
+
+ * mod/messages/languages/en.php,
+ .../views/default/forms/messages/process.php,
+ mod/messages/views/default/messages/css.php: forcing a min-height on inbox
+ list in messages plugin
+
+ * views/default/css/admin.php, views/default/css/elements/layout.php: Fixes
+ #3084 added clearfix to elgg-layout
+
+ * views/default/css/elements/chrome.php: Fixes #3183 limiting size of user
+ inserted images in content
+
+ * mod/externalpages/languages/en.php, mod/externalpages/start.php,
+ .../views/default/admin/appearance/expages.php,
+ .../views/default/admin/site/expages.php,
+ mod/externalpages/views/default/expages/menu.php: Fixes #3106 putting
+ external pages under appearance - no better place
+
+ * engine/classes/ElggMenuBuilder.php, engine/lib/navigation.php,
+ engine/lib/views.php: Fixes #3026 documentation for menu system
+
+ * engine/lib/admin.php: Fixes #2233 added documentation on admin menus and
+ pages
+
+ * engine/lib/deprecated-1.8.php: Refs #3248 deprecates remove_submenu_item()
+
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggMetadata.php,
+ engine/lib/annotations.php: Refs #3238 #3246 anootations needed the same
+ fixes as metadata
+
+ * engine/lib/metadata.php: Refs #3238 fix for updating name of metadata for
+ trunk
+
+ * engine/classes/ElggMetadata.php: Fixes #3246 fixed ElggMetadata()
+ constructor
+
+ * engine/lib/pageowner.php: fixed notice in get_context() when no context is
+ set
+
+ * engine/lib/output.php, engine/lib/users.php, engine/lib/views.php,
+ engine/lib/widgets.php: some light standardization of the core libraries
+
+2011-03-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Fixes #3234, refs #3094. Added the inTarget code back to the
+ popup closing function.
+
+2011-03-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php, mod/thewire/actions/delete.php,
+ mod/thewire/classes/ElggWire.php, mod/thewire/languages/en.php,
+ mod/thewire/pages/thewire/everyone.php,
+ mod/thewire/pages/thewire/friends.php, mod/thewire/pages/thewire/owner.php,
+ mod/thewire/pages/thewire/reply.php, mod/thewire/pages/thewire/thread.php,
+ mod/thewire/start.php, mod/thewire/tests/regex.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/thewire/profile_status.php,
+ mod/thewire/views/rss/object/thewire.php: standardized thewire plugin
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/tests/api/annotations.php, engine/tests/api/metadata.php,
+ engine/tests/objects/metadata.php: Closes #3202 'count' already supported,
+ added unit tests
+
+ * mod/bookmarks/lib/bookmarks.php,
+ .../views/default/forms/bookmarks/save.php, mod/file/lib/file.php,
+ mod/groups/lib/discussion.php, mod/pages/lib/pages.php: Fixes #3239 entities
+ aren't blown away in form prepare functions any more
+
+ * mod/pages/languages/en.php: fixed language strings in pages plugin
+
+ * mod/file/actions/file/upload.php: don't allow a user to remove a title on
+ a file, must replace with another title
+
+ * engine/lib/input.php, mod/blog/lib/blog.php: Refs #3239 added a new sticky
+ forms function to grab all variables and integrated into blog plugin
+
+2011-03-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/reset.php: Refs
+ #2979 forces vertical scrollbar without breaking widget dragging
+
+ * engine/lib/navigation.php: Refs #3119 if only one item left, move it off
+ more menu (but only when nothing selected)
+
+ * actions/admin/menu/save.php, views/default/forms/admin/menu/save.php:
+ Fixes #3206 using space so that echo('none') is not passed as value
+
+ * views/default/css/admin.php: Refs #3236 removed some unused css from admin
+ theme and did some reorganizing
+
+2011-03-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/languages/en.php: added missing language string for comments on
+ file in river
+
+ * engine/lib/views.php: Fixes #3166 registering css/elgg for simplecache
+
+2011-03-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Refs #3193 rollback version number
+
+ * upgrade.php: display_errors is on for upgrades
+
+ * ...svn-update_default_widgets-7daf5a459720d06d.php, version.php: Fixes
+ #3193 converts the default widgets for 1.8 - leaves behind the default
+ widgets object
+
+ * engine/lib/admin.php, views/default/css/admin.php: Refs #3165 floating
+ admin widgets in same direction as profile widgets
+
+ * ....8_svn-admins_like_widgets-7f19d2783c1680d3.php, version.php: Fixes
+ #3165 admins get widgets on upgrade - new upgrade creation process super
+ smooth #thanksBrett
+
+ * engine/lib/admin.php, engine/lib/users.php, install/ElggInstaller.php:
+ Refs #3165 new admin users all get admin widgets
+
+ * engine/classes/ElggFile.php: Fixes #3160 just needed a small variation off
+ of [8762] to handle getting filestore before metadata is set but after the
+ guid is set
+
+ * engine/classes/ElggFile.php: Fixes #3205 reverting [8762]
+
+ * engine/lib/elgglib.php: Fixes #3180 adds ajax page handler
+
+ * mod/bookmarks/start.php, mod/thewire/start.php: added an owner block link
+ for the wire plugin
+
+ * languages/en.php, mod/blog/languages/en.php, mod/blog/lib/blog.php,
+ mod/bookmarks/pages/bookmarks/all.php, mod/bookmarks/start.php,
+ mod/file/pages/file/owner.php, mod/groups/languages/en.php,
+ mod/pages/languages/en.php, views/default/page/layouts/content/header.php:
+ Fixes #3218 group content pages now use container method to determine who can
+ add content
+
+2011-03-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/pages/views/default/forms/pages/edit.php: fixed position of longtext
+ menu when editing pages
+
+ * mod/bookmarks/languages/en.php: better names for a bookmark - got rid of
+ 'bookmark item'
+
+ * mod/bookmarks/views/default/bookmarks/sidebar.php,
+ mod/file/views/default/file/sidebar.php,
+ mod/pages/views/default/pages/sidebar.php,
+ mod/thewire/pages/thewire/everyone.php, mod/thewire/pages/thewire/owner.php,
+ mod/thewire/views/default/thewire/sidebar.php: Fixes #2091 completes sidebar
+ tagcloud for major content plugins
+
+ * engine/lib/tags.php, mod/blog/views/default/blog/sidebar.php,
+ mod/blog/views/default/blog/sidebar/tagcloud.php,
+ views/default/output/tagcloud.php,
+ views/default/page/elements/tagcloud_block.php: Refs #2091 added a tagcloud
+ block that accepts subtype
+
+ * views/default/page/elements/comments_block.php: Fixes #2090 context
+ sensitive sidebar box is added - groups off
+
+ * mod/bookmarks/views/default/bookmarks/js.php,
+ mod/groups/views/default/groups/js.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ mod/messages/views/default/messages/js.php,
+ .../views/default/uservalidationbyemail/js.php: Refs #3016 making the final
+ elgg.js more readable
+
+ * .../views/default/uservalidationbyemail/js.php: another example of an
+ extra ; in js due to lazy copy/paste jobs
+
+ * mod/file/pages/file/owner.php, mod/file/pages/file/world.php,
+ mod/file/views/default/file/sidebar.php, mod/pages/pages/pages/owner.php,
+ mod/pages/pages/pages/world.php, mod/pages/views/default/pages/sidebar.php,
+ views/default/page/elements/comments_block.php: Refs #2090 added sidebar
+ comment block to file and pages plugins
+
+ * mod/file/start.php, mod/pages/start.php: Refs #3176 missed group owner
+ page in script renaming
+
+2011-03-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, vendors/jquery/fancybox/blank.gif,
+ vendors/jquery/fancybox/fancy_close.png,
+ vendors/jquery/fancybox/fancy_loading.png,
+ vendors/jquery/fancybox/fancy_nav_left.png,
+ vendors/jquery/fancybox/fancy_nav_right.png,
+ vendors/jquery/fancybox/fancy_shadow_e.png,
+ vendors/jquery/fancybox/fancy_shadow_n.png,
+ vendors/jquery/fancybox/fancy_shadow_ne.png,
+ vendors/jquery/fancybox/fancy_shadow_nw.png,
+ vendors/jquery/fancybox/fancy_shadow_s.png,
+ vendors/jquery/fancybox/fancy_shadow_se.png,
+ vendors/jquery/fancybox/fancy_shadow_sw.png,
+ vendors/jquery/fancybox/fancy_shadow_w.png,
+ vendors/jquery/fancybox/fancy_title_left.png,
+ vendors/jquery/fancybox/fancy_title_main.png,
+ vendors/jquery/fancybox/fancy_title_over.png,
+ vendors/jquery/fancybox/fancy_title_right.png,
+ vendors/jquery/fancybox/fancybox-x.png,
+ vendors/jquery/fancybox/fancybox-y.png, vendors/jquery/fancybox/fancybox.png,
+ vendors/jquery/fancybox/jquery.easing-1.3.pack.js,
+ vendors/jquery/fancybox/jquery.fancybox-1.3.4.css,
+ vendors/jquery/fancybox/jquery.fancybox-1.3.4.js,
+ .../jquery/fancybox/jquery.fancybox-1.3.4.pack.js,
+ .../fancybox/jquery.mousewheel-3.0.4.pack.js, views/default/js/lightbox.php:
+ Refs #2882 basic lightbox
+
+2011-03-21 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: No need to document NULL as possible return value
+ here
+
+ * engine/classes/ElggEntity.php: oof -- how did that happen?
+
+ * engine/classes/ElggEntity.php: Added documentation of magic properties to
+ ElggEntity
+
+2011-03-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/views/default/logbrowser/table.php: using - in log browser
+ css class names
+
+ * mod/bookmarks/languages/en.php: added missing language string
+
+ * mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/owner.php,
+ mod/bookmarks/views/default/bookmarks/sidebar.php: Refs #2090 added latest
+ comments to bookmarks sidebar
+
+ * engine/lib/views.php, languages/en.php,
+ mod/blog/views/default/blog/sidebar.php,
+ views/default/page/elements/comments.php,
+ views/default/page/elements/comments_block.php: Refs #2090 removed
+ elgg_view_latest_comments() and replaced it with a page elements view
+
+ * mod/groups/lib/groups.php,
+ mod/groups/views/default/groups/profile/fields.php,
+ .../views/default/groups/profile/profile_block.php,
+ .../views/default/groups/profile/summary.php: Fixes #3113 pulled group
+ profile fields out of top profile area
+
+ * views/default/admin/appearance/profile_fields.php: Fixes #3099 corrected
+ view name
+
+ * mod/logbrowser/views/default/logbrowser/form.php: Fixes #3082 fixed
+ toggler in log browser
+
+ * views/default/navigation/menu/user_hover.php: Fixes #3203 not calling the
+ view menu section code once per item
+
+ * views/default/page/layouts/widgets.php: Fixes #3168 not displaying a
+ widget when handler is not available
+
+2011-03-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggObject.php, mod/blog/lib/blog.php,
+ mod/groups/actions/discussion/reply/save.php,
+ mod/groups/actions/discussion/save.php, mod/groups/languages/en.php,
+ mod/groups/lib/discussion.php, mod/groups/start.php,
+ .../river/object/groupforumtopic/create.php: Fixes #2974 using
+ canWriteToContainer() to control access to creating group content
+
+ * install/ElggInstaller.php: Fixes #3101 removed language setting from
+ installer until we provide language files besides English
+
+ * .../forms/admin/plugins/simple_update_states.php: Fixes #3102 removed
+ plugin reset button
+
+ * views/default/forms/admin/site/update_advanced.php: Fixes #3100 removed
+ viewtype from advanced settings
+
+ * install/ElggInstaller.php, install/languages/en.php: Fixes #3062 checks if
+ data directory exists
+
+2011-03-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Fixes #3094. Removed event blocking code for popups.
+
+ * ..._svn-widgets_arent_plugins-61836261fa280a5c.php, version.php: Fixes
+ #3161. Added upgrade to update object, widget to ElggWidget.
+
+2011-03-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, mod/twitter/start.php: Refs #3171 Using correct
+ widget registration method
+
+2011-03-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/version.php: Fixes #3188. We no longer store the version as the
+ key, so a standard sort will do.
+
+2011-03-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, pages/river.php, views/rss/core/river/body.php,
+ views/rss/river/item.php, views/rss/river/item/list.php: Fixes #3197 fixed
+ the RSS feed for activity (river)
+
+ * views/rss/layout/objects/image_block.php,
+ views/rss/layout/objects/list.php, views/rss/layout/shells/default.php,
+ views/rss/page/components/image_block.php,
+ views/rss/page/components/list.php, views/rss/page/layouts/default.php: Refs
+ #3197 fixed layout views for RSS viewtype
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/sites.php,
+ engine/lib/users.php, engine/lib/views.php,
+ views/default/page/elements/sidebar.php: Fixes #3114 added the rss link back
+ to pages
+
+ * engine/lib/admin.php: Refs #2892 added elgg_get_admins() function - this
+ could eventually be a wrapper around elgg_get_users()
+
+ * mod/thewire/start.php: Fixes #3025 added back thewire's entity menu items
+
+ * engine/lib/elgglib.php: Fixes #3198 handling exceptions thrown in
+ exception handler by pointing to the error log
+
+2011-03-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php: Fixes #3192, refs #650.
+ ElggEntity->getMetaData() sets the limit to 0 for array-based metadata.
+
+ * engine/lib/deprecated-1.8.php: Fixes #3190. Added elgg_count_comments() to
+ deprecated-1.8.php.
+
+ * upgrade.php: Fixes #3064. Can't use the pretty new views to display the
+ can't upgrade messages. Using the failsafe view type.
+
+2011-03-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * ...031300-1.8_svn-twitter_api-12b832a5a7a3e1bd.php: Refs #3188 removed
+ empty call for guid
+
+ * languages/en.php: Fixes #3162
+
+2011-03-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/widgets/friends/content.php,
+ views/default/widgets/new_users/content.php,
+ views/default/widgets/online_users/content.php: added documentation headers
+ to the core widgets
+
+ * engine/lib/river.php, languages/en.php,
+ views/default/widgets/river_widget/content.php,
+ views/default/widgets/river_widget/edit.php: Fixes #3171 added river widget
+ using same name as 1.7 riverdashboard plugin
+
+ * actions/friends/add.php: Fixes #3167 friending now shows up in river
+
+ * mod/twitter/manifest.xml: added "widget" to this plugin's name to
+ descrease confusion with the api plugin
+
+ * languages/en.php, mod/profile/views/default/profile/owner_block.php: Fixes
+ #3173 quote was missing from conversion to new toggler pattern
+
+ * mod/file/pages/file/index.php, mod/file/pages/file/owner.php,
+ mod/file/start.php, mod/pages/pages/pages/index.php,
+ mod/pages/pages/pages/owner.php, mod/pages/start.php,
+ mod/thewire/pages/thewire/owner.php, mod/thewire/pages/thewire/user.php,
+ mod/thewire/start.php: Fixes #3176 replaced usage of index.php where
+ appropriate
+
+ * mod/pages/edit.php, mod/pages/friends.php, mod/pages/history.php,
+ mod/pages/index.php, mod/pages/new.php, mod/pages/pages/pages/edit.php,
+ mod/pages/pages/pages/friends.php, mod/pages/pages/pages/history.php,
+ mod/pages/pages/pages/index.php, mod/pages/pages/pages/new.php,
+ mod/pages/pages/pages/revision.php, mod/pages/pages/pages/view.php,
+ mod/pages/pages/pages/world.php, mod/pages/revision.php, mod/pages/start.php,
+ mod/pages/view.php, mod/pages/world.php, mod/search/index.php,
+ mod/search/pages/search/index.php, mod/search/start.php: Fixes #3158 updated
+ search and pages plugins for page handler scripts
+
+ * mod/messages/inbox.php, mod/messages/pages/messages/inbox.php,
+ mod/messages/pages/messages/read.php, mod/messages/pages/messages/send.php,
+ mod/messages/pages/messages/sent.php, mod/messages/read.php,
+ mod/messages/send.php, mod/messages/sent.php, mod/messages/start.php: Refs
+ #3158 update messages plugin
+
+ * mod/messageboard/pages/messageboard/owner.php,
+ mod/messageboard/pages/owner.php, mod/messageboard/start.php: Refs #3158
+ Fixes #3170 namespaces messageboard plugin page scripts
+
+ * mod/file/edit.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/pages/file/edit.php, mod/file/pages/file/friends.php,
+ mod/file/pages/file/index.php, mod/file/pages/file/search.php,
+ mod/file/pages/file/upload.php, mod/file/pages/file/view.php,
+ mod/file/pages/file/world.php, mod/file/search.php, mod/file/start.php,
+ mod/file/upload.php, mod/file/view.php,
+ mod/file/views/default/file/typecloud.php, mod/file/world.php: Refs #3158
+ namespace file plugin's page scripts
+
+2011-03-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/forms/register.php: using shorthand for document ready
+ callback
+
+2011-03-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/start.php: Fixes #3164. Denormalized unread message counting
+ query because it was making things so slow I couldn't test.
+
+ * engine/classes/ElggFile.php: Fixes #3160. ElggFile->getFilehandler() is
+ less horrible.
+
+ * engine/lib/metastrings.php: Fixing pluralization of singular options for
+ elgg_get_metadata() and elgg_get_annotations().
+
+2011-03-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/pages/add.php, mod/bookmarks/pages/all.php,
+ mod/bookmarks/pages/bookmarklet.php, mod/bookmarks/pages/bookmarks/add.php,
+ mod/bookmarks/pages/bookmarks/all.php,
+ mod/bookmarks/pages/bookmarks/bookmarklet.php,
+ mod/bookmarks/pages/bookmarks/edit.php,
+ mod/bookmarks/pages/bookmarks/friends.php,
+ mod/bookmarks/pages/bookmarks/owner.php,
+ mod/bookmarks/pages/bookmarks/view.php, mod/bookmarks/pages/edit.php,
+ mod/bookmarks/pages/friends.php, mod/bookmarks/pages/owner.php,
+ mod/bookmarks/pages/view.php, mod/bookmarks/start.php,
+ mod/thewire/pages/everyone.php, mod/thewire/pages/friends.php,
+ mod/thewire/pages/previous.php, mod/thewire/pages/reply.php,
+ mod/thewire/pages/tag.php, mod/thewire/pages/thewire/everyone.php,
+ mod/thewire/pages/thewire/friends.php,
+ mod/thewire/pages/thewire/previous.php, mod/thewire/pages/thewire/reply.php,
+ mod/thewire/pages/thewire/tag.php, mod/thewire/pages/thewire/thread.php,
+ mod/thewire/pages/thewire/user.php, mod/thewire/pages/thread.php,
+ mod/thewire/pages/user.php, mod/thewire/start.php: Refs #3158 namespaced
+ pages for bookmarks and thewire
+
+2011-03-17 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/forminternals.php: Using shorthand
+ document ready initialization
+
+ * mod/embed/views/default/embed/embed.php: Switching click handler to "live"
+
+2011-03-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: fixed typo in welcome widget text
+
+ * engine/lib/system_log.php: Refs #3154 adding system log cache bug fix to
+ trunk
+
+ * engine/lib/system_log.php: Fixes #3098 catching exceptions when loading an
+ object in system log
+
+2011-03-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Fixes #3094, Refs #3111. Clicking outside a popup closes the
+ visible popups.
+
+ * views/default/css/admin.php: elgg-head is no longer the direct child of
+ elgg-state-draggable. Restoring dragger icon for plugins.
+
+ * mod/blog/languages/en.php: Added missing language string.
+
+ * install/ElggInstaller.php: Changed order of the default admin widgets.
+
+ * engine/lib/cache.php, engine/lib/configuration.php,
+ ...-1.8_svn-datalist_grows_up-0b8aec5a55cc1e1c.php, engine/schema/mysql.sql,
+ version.php: Fixes #3123. Datalists and config names can now be up to 255
+ chars long. Debug mode is disabled when caching views to avoid saving bad
+ stuff.
+
+ * mod/likes/start.php: Fixes #3153. Fixed incorrect options.
+
+ * views/default/forms/comments/add.php,
+ views/default/river/elements/body.php: Fixes #3130. Fixed river/item/footer
+ -> river/elements/footer for comments.
+
+ * mod/twitter_api/lib/twitter_api.php: Fixes #2416. Twitter API pulls in
+ avatars from twitter for new users.
+
+ * ...031300-1.8_svn-twitter_api-12b832a5a7a3e1bd.php,
+ ...11031400-1.8_svn-oauth_api-8f33ee79c3e66222.php, languages/en.php,
+ mod/oauth_api/manifest.xml, mod/twitter_api/manifest.xml: Fixes #3141.
+ Disabling twitter_api and oauth_api upon upgrade because we can't check
+ previous states. Adding an admin notice. twitter_api conflicts with
+ twitterservice and oauth_api conflicts with oauth_lib.
+
+ * views/default/object/admin_notice.php: Refs #2242: Better placement for
+ the delete button for admin notices.
+
+ * engine/lib/plugins.php: Fixed a typo that broke ignore access. That was
+ fun to track down >:O
+
+ * views/default/object/admin_notice.php: Refs #2242. Removed incorrect
+ option passed to url view.
+
+ * actions/admin/delete_admin_notice.php, engine/lib/admin.php,
+ languages/en.php, views/default/css/admin.php, views/default/js/admin.php,
+ views/default/object/admin_notice.php, views/default/page/admin.php: Fixes
+ #2242. Can now delete admin notices manually.
+
+2011-03-16 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Fixes #3066 moves setting of lastcache value up in boot
+ sequence
+
+ * engine/classes/ElggMenuBuilder.php: Fixes #3145 adds a default for menu
+ sort_by
+
+ * index.php: Fixes #3144 not using undefined $options variable
+
+2011-03-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * ...031300-1.8_svn-twitter_api-12b832a5a7a3e1bd.php,
+ ...11031400-1.8_svn-oauth_api-8f33ee79c3e66222.php: Fixes #3141. Fixed
+ twitter_api and oauth_api upgrades. Only worked on localhost because of code
+ gnomes.
+
+2011-03-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * ...11031400-1.8_svn-oauth_api-8f33ee79c3e66222.php: Fixes #3129. Fixed
+ faulty logic that broke upgrades.
+
+2011-03-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #2814 can now check if an entity exists
+ indepedent of access permissions
+
+2011-03-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ajax.js, js/lib/configuration.js, js/lib/security.js,
+ languages/en.php, views/default/js/elgg.php: Refs #2538. Loading
+ js/configuration.js again. Only updating tokens on success and showing a
+ basic warning if refresh fails.
+
+ * js/lib/languages.js: JS elgg.echo() returns the key if the string isn't
+ found. This is consistent with the PHP version.
+
+ * js/classes/ElggPriorityList.js, js/lib/elgglib.js, js/lib/hooks.js,
+ js/lib/languages.js, js/lib/prototypes.js, js/lib/security.js,
+ js/lib/session.js, js/lib/ui.js, js/lib/userpicker.js: Refs #2538: Added
+ documentation to most of the JS methods missing it.
+
+ * mod/oauth_api/manifest.xml, mod/oauth_api/start.php,
+ mod/oauth_api/vendors/oauth/LICENSE,
+ mod/oauth_api/vendors/oauth/example/server/INSTALL,
+ .../vendors/oauth/example/server/core/init.php,
+ .../example/server/core/templates/inc/footer.tpl,
+ .../example/server/core/templates/inc/header.tpl,
+ .../oauth/example/server/core/templates/index.tpl,
+ .../oauth/example/server/core/templates/logon.tpl,
+ .../example/server/core/templates/register.tpl,
+ .../vendors/oauth/example/server/www/hello.php,
+ .../vendors/oauth/example/server/www/index.php,
+ .../vendors/oauth/example/server/www/logon.php,
+ .../vendors/oauth/example/server/www/oauth.php,
+ .../vendors/oauth/example/server/www/register.php,
+ .../oauth/example/server/www/services.xrds.php,
+ .../vendors/oauth/library/OAuthDiscovery.php,
+ .../vendors/oauth/library/OAuthException.php,
+ .../vendors/oauth/library/OAuthRequest.php,
+ .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ .../vendors/oauth/library/OAuthRequester.php,
+ .../vendors/oauth/library/OAuthServer.php,
+ mod/oauth_api/vendors/oauth/library/OAuthStore.php,
+ .../library/body/OAuthBodyContentDisposition.php,
+ .../library/body/OAuthBodyMultipartFormdata.php,
+ .../vendors/oauth/library/discovery/xrds_parse.php,
+ .../vendors/oauth/library/discovery/xrds_parse.txt,
+ .../OAuthSignatureMethod.class.php, .../OAuthSignatureMethod_HMAC_SHA1.php,
+ .../signature_method/OAuthSignatureMethod_MD5.php,
+ .../OAuthSignatureMethod_PLAINTEXT.php,
+ .../OAuthSignatureMethod_RSA_SHA1.php,
+ .../library/store/OAuthStoreAbstract.class.php,
+ .../oauth/library/store/OAuthStoreAnyMeta.php,
+ .../oauth/library/store/OAuthStoreMySQL.php,
+ .../vendors/oauth/library/store/mysql/install.php,
+ .../vendors/oauth/library/store/mysql/mysql.sql,
+ .../oauth/test/discovery/xrds-fireeagle.xrds,
+ .../oauth/test/discovery/xrds-getsatisfaction.xrds,
+ .../oauth/test/discovery/xrds-magnolia.xrds,
+ mod/oauth_api/vendors/oauth/test/oauth_test.php, mod/oauth_lib/manifest.xml,
+ mod/oauth_lib/start.php, mod/oauth_lib/vendors/oauth/LICENSE,
+ mod/oauth_lib/vendors/oauth/example/server/INSTALL,
+ .../vendors/oauth/example/server/core/init.php,
+ .../example/server/core/templates/inc/footer.tpl,
+ .../example/server/core/templates/inc/header.tpl,
+ .../oauth/example/server/core/templates/index.tpl,
+ .../oauth/example/server/core/templates/logon.tpl,
+ .../example/server/core/templates/register.tpl,
+ .../vendors/oauth/example/server/www/hello.php,
+ .../vendors/oauth/example/server/www/index.php,
+ .../vendors/oauth/example/server/www/logon.php,
+ .../vendors/oauth/example/server/www/oauth.php,
+ .../vendors/oauth/example/server/www/register.php,
+ .../oauth/example/server/www/services.xrds.php,
+ .../vendors/oauth/library/OAuthDiscovery.php,
+ .../vendors/oauth/library/OAuthException.php,
+ .../vendors/oauth/library/OAuthRequest.php,
+ .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ .../vendors/oauth/library/OAuthRequester.php,
+ .../vendors/oauth/library/OAuthServer.php,
+ mod/oauth_lib/vendors/oauth/library/OAuthStore.php,
+ .../library/body/OAuthBodyContentDisposition.php,
+ .../library/body/OAuthBodyMultipartFormdata.php,
+ .../vendors/oauth/library/discovery/xrds_parse.php,
+ .../vendors/oauth/library/discovery/xrds_parse.txt,
+ .../OAuthSignatureMethod.class.php, .../OAuthSignatureMethod_HMAC_SHA1.php,
+ .../signature_method/OAuthSignatureMethod_MD5.php,
+ .../OAuthSignatureMethod_PLAINTEXT.php,
+ .../OAuthSignatureMethod_RSA_SHA1.php,
+ .../library/store/OAuthStoreAbstract.class.php,
+ .../oauth/library/store/OAuthStoreAnyMeta.php,
+ .../oauth/library/store/OAuthStoreMySQL.php,
+ .../vendors/oauth/library/store/mysql/install.php,
+ .../vendors/oauth/library/store/mysql/mysql.sql,
+ .../oauth/test/discovery/xrds-fireeagle.xrds,
+ .../oauth/test/discovery/xrds-getsatisfaction.xrds,
+ .../oauth/test/discovery/xrds-magnolia.xrds,
+ mod/oauth_lib/vendors/oauth/test/oauth_test.php,
+ mod/twitter_api/manifest.xml: Refs #3115. Moved oauth_lib to oauth_api.
+
+ * engine/lib/version.php: Refs #1433. Restored db_upgrade() call during
+ upgrades to fix issues for people upgrading from earlier versions of 1.7 than
+ 2010062401. This is why we should follow deprecation policies, Brett........
+
+2011-03-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php, mod/developers/manifest.xml,
+ mod/developers/start.php, .../views/default/admin/developers/settings.php,
+ .../views/default/forms/developers/settings.php: Fixes #3009 a bare bones
+ developer tools settings
+
+2011-03-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/js/embed.js, mod/embed/start.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/embed/lightbox_init.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/file/views/default/file/embed_upload.php, mod/groups/start.php,
+ mod/groups/views/default/groups/js.php,
+ .../views/default/groups/profile/widgets.php, mod/messages/start.php,
+ .../views/default/forms/messages/process.php,
+ .../views/default/forms/messages/reply.php,
+ mod/messages/views/default/messages/js.php, mod/profile/start.php,
+ mod/profile/views/default/profile/js.php,
+ mod/profile/views/default/profile/wrapper.php, mod/thewire/start.php,
+ mod/thewire/views/default/forms/thewire/add.php,
+ views/default/css/elements/buttons.php: Refs #3016: Removes inline javascript
+ from embed, file, groups, messages, profile, thewire
+
+ * views/default/css/admin.php, views/default/css/elements/icons.php,
+ views/default/css/elements/modules.php,
+ views/default/object/widget/elements/controls.php: Refs #3112: Pulled out
+ widget gear icon into elgg-icon-gear, which widgets now use
+
+2011-03-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginPackage.php,
+ languages/en.php, views/default/admin/plugins/advanced.php,
+ views/default/object/plugin/invalid.php: Fixes #2928: Invalid plugins are
+ shown on the advance page with details about the problem and a link to the
+ docs.
+
+2011-03-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/layout.php: Refs
+ #3109: Fixes 3 more instances of background-color being used when background
+ should be
+
+ * .../views/default/theme_preview/navigation.php,
+ mod/embed/views/default/embed/css.php,
+ mod/search/views/default/search/css.php,
+ mod/thewire/views/default/thewire/css.php, views/default/css/admin.php,
+ views/default/css/elements/buttons.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/forms.php, views/default/css/elements/icons.php,
+ views/default/css/elements/layout.php, views/default/css/elements/misc.php,
+ views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php: Refs #3109: More CSS cleanup.
+ Fixes bugs introduced by last cleanup where background-color: was being used
+ instead of background:
+
+2011-03-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, engine/lib/plugins.php: Refs #3079: Making
+ sure elgg_get_max_plugin_priority() returns 1 instead. Fixed problems when
+ bootstrapping elgg plugins. Will perform tests against MySQL 5.5 when I have
+ a real internet connection.
+
+2011-03-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CODING.txt: Using tabs instead of spaces to indent lines in CODING.txt
+
+ * install/css/install.css, .../views/default/custom_index/css.php,
+ mod/embed/views/default/embed/css.php,
+ mod/groups/views/default/groups/css.php,
+ mod/messages/views/default/messages/css.php,
+ mod/profile/views/default/profile/css.php,
+ .../views/default/reportedcontent/admin_css.php,
+ mod/search/views/default/search/css.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ mod/twitter/views/default/twitter/css.php, views/default/css/admin.php,
+ views/default/css/elements/buttons.php,
+ views/default/css/elements/chrome.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/forms.php, views/default/css/elements/icons.php,
+ views/default/css/elements/misc.php, views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php: Fixes #3109: added
+ non-vendor-prefixed css property declarations where applicable. Cleaned up
+ various other aspects of the css
+
+ * engine/handlers/page_handler.php: Fixes #3080: Move redirect code to
+ before engine inclusion
+
+2011-03-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixes #3121 array_filter() passes array elements
+ to callback
+
+2011-03-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/menu/page.php: Fixes #3103. Re-added code
+ accidentally removed in r8611 that broke page menu selected items.
+
+ * ...031300-1.8_svn-twitter_api-12b832a5a7a3e1bd.php,
+ mod/twitter_api/graphics/sign_in_with_twitter.gif,
+ mod/twitter_api/languages/en.php, mod/twitter_api/lib/twitter_api.php,
+ mod/twitter_api/manifest.xml, mod/twitter_api/start.php,
+ mod/twitter_api/vendors/twitteroauth/LICENSE,
+ mod/twitter_api/vendors/twitteroauth/OAuth.php,
+ mod/twitter_api/vendors/twitteroauth/README,
+ .../vendors/twitteroauth/twitterOAuth.php,
+ .../views/default/settings/twitter_api/edit.php,
+ mod/twitter_api/views/default/twitter_api/css.php,
+ .../views/default/twitter_api/login.php,
+ .../views/default/twitter_api/metatags.php,
+ .../default/usersettings/twitter_api/edit.php,
+ .../graphics/sign_in_with_twitter.gif, mod/twitterservice/languages/en.php,
+ mod/twitterservice/manifest.xml, mod/twitterservice/start.php,
+ mod/twitterservice/twitterservice_lib.php,
+ mod/twitterservice/vendors/twitteroauth/LICENSE,
+ mod/twitterservice/vendors/twitteroauth/OAuth.php,
+ mod/twitterservice/vendors/twitteroauth/README,
+ .../vendors/twitteroauth/twitterOAuth.php,
+ .../views/default/settings/twitterservice/edit.php,
+ .../views/default/twitterservice/css.php,
+ .../views/default/twitterservice/login.php,
+ .../views/default/twitterservice/metatags.php,
+ .../default/usersettings/twitterservice/edit.php, version.php: Refs #3115.
+ Migrated twitterservice to twitter_api. Added upgrade to migrate plugin and
+ user settings.
+
+2011-03-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/start.php: fixed WSOD because of function name change when
+ using some 1.7 themes
+
+ * engine/lib/views.php: Refs #3059 should only fallback to 1.7 pageshell
+ when asking for default page shell - otherwise breaks admin area
+
+ * engine/lib/deprecated-1.8.php: Fixes #3116 old method of getting site menu
+ works again
+
+ * engine/handlers/page_handler.php: Refs #2228 reverting [8654] so
+ forwarding works
+
+ * languages/en.php: Reverted changes made for elgg.com on Tools menu
+
+2011-03-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php: Refs #3079: Better checks in
+ ElggPlugin::setPriority() to avoid priorities of 0. Still requires testing
+ for MySQL 5.5.
+
+ * languages/en.php: Refs #3009. Fixed a few typos and inaccuracies in the
+ welcome widget.
+
+2011-03-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/likes/views/default/likes/display.php: tweaked an id so that the likes
+ html would be valid
+
+ * views/default/page/elements/footer.php: how did that get there - removing
+ some test code
+
+ * js/lib/ui.js: Fixes #3110 - checking selector before running date picker
+ js
+
+ * .../views/default/admin/utilities/diagnostics.php,
+ .../views/default/diagnostics/forms/download.php: wrapped the submit button
+ in diagnostics plugin with a <p> so the bottom doesn't get cut off
+
+ * languages/en.php: Refs #2991 restored plugin settings language string
+ needed for page title
+
+ * languages/en.php: fixed typo in site settings
+
+ * .../views/default/groups/sidebar/members.php: Fixes #3072 using
+ elgg_list_entities*() in group members sidebar view
+
+ * mod/groups/languages/en.php, mod/groups/lib/groups.php: displaying a no
+ activity message on the activity page for new groups
+
+ * mod/pages/world.php: added text to pages plugin for case where no pages
+ have been created on site
+
+ * mod/file/index.php: fixed typo in file index.php
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/object/default.php,
+ views/default/page/components/list/body.php,
+ views/default/page/components/summary.php, views/default/user/default.php:
+ Refs #3096 using 'summary' instead of list/body
+
+2011-03-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/elements/body.php,
+ views/default/river/elements/controls.php,
+ views/default/river/elements/footer.php,
+ views/default/river/elements/image.php, views/default/river/item.php,
+ views/default/river/item/body.php, views/default/river/item/controls.php,
+ views/default/river/item/footer.php, views/default/river/item/image.php:
+ somehow we forgot to use 'elements' in river views
+
+2011-03-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, upgrade.php, views/default/page/upgrade.php: Fixes
+ #3064. Checking for views/default/welcome.php and aborting upgrade if found.
+ Need to add documention for how to replace views directory to wiki. Also
+ fixed ajax loader during upgrade.
+
+2011-03-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggUser.php, mod/custom_index/index.php,
+ views/default/widgets/friends/content.php: Fixes #3045 custom index and the
+ friends widget now use the gallery view for user icons
+
+ * engine/lib/views.php, views/default/page/components/gallery.php,
+ views/default/page/components/list.php, views/default/user/default.php: Refs
+ #3045 adds a gallery context based view for users
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/views.php,
+ engine/tests/api/helpers.php, mod/blog/lib/blog.php, mod/blog/start.php,
+ .../views/default/page/theme_preview.php, mod/notifications/index.php,
+ .../notifications/subscriptions/forminternals.php, mod/pages/start.php,
+ mod/tinymce/start.php, mod/tinymce/views/default/tinymce/init.php,
+ mod/zaudio/start.php, mod/zaudio/views/default/zaudio/audioplayer.php,
+ views/default/input/autocomplete.php, views/default/input/friendspicker.php,
+ views/default/input/userpicker.php, views/default/page/elements/head.php:
+ Fixes #3091 adds load functions for js and css
+
+2011-03-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php: Fixed #3093: Admin link shows only for admin users.
+
+ * languages/en.php: Fixes #3004: Updated admin widget text to reflect menu
+ changes.
+
+ * mod/blog/views/default/blog/sidebar/revisions.php: Fixed blog revision
+ links.
+
+ * js/lib/autocomplete.js, js/lib/elgglib.js, js/lib/events.js,
+ js/lib/hooks.js, js/lib/languages.js, js/lib/security.js, js/lib/ui.js,
+ js/lib/ui.widgets.js, js/lib/userpicker.js, js/tests/ElggEventsTest.js,
+ js/tests/ElggHooksTest.js, mod/blog/views/default/js/blog/save_draft.php,
+ mod/bookmarks/views/default/bookmarks/js.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ mod/tinymce/views/default/js/tinymce.php,
+ .../views/default/uservalidationbyemail/js.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/river/filter.php, views/default/js/admin.php,
+ views/default/js/elgg.php: Fixes #3065, #3089. Merged JS events and hooks to
+ a single system. Updated plugins and core to use it. Added
+ elgg.getURLFragment() and using it elgg.ui.popsUp().
+
+2011-03-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/admin.php, views/default/page/default.php: forgot to
+ include js registered for the footer in page shells
+
+ * engine/lib/elgglib.php, engine/tests/api/helpers.php: Refs #3091
+ registering js and css support priority though does not maintain registration
+ order if items have equal priority
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/views.php,
+ engine/tests/api/helpers.php, mod/blog/lib/blog.php,
+ mod/notifications/index.php,
+ .../notifications/subscriptions/forminternals.php, mod/pages/start.php,
+ mod/tinymce/views/default/tinymce/init.php,
+ mod/zaudio/views/default/zaudio/audioplayer.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/input/autocomplete.php, views/default/input/friendspicker.php,
+ views/default/input/userpicker.php, views/default/page/components/list.php:
+ Refs #3091 rewrote the js and css register functions to require a name
+
+ * mod/blog/views/default/blog/group_module.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ mod/pages/views/default/pages/group_module.php: Fixes #3071 group "widgets"
+ check permissions now
+
+2011-03-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/widgets.php,
+ views/default/admin/appearance/default_widgets.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/appearance/profile_fields.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/admin/settings/default_widgets.php,
+ views/default/admin/settings/menu_items.php,
+ views/default/admin/settings/profile_fields.php,
+ .../default/admin/settings/profile_fields/list.php,
+ views/default/css/admin.php, views/default/js/admin.php: Refs #2991: Readded
+ the appearance menu under configure. Moved plugin settings under
+ configure/settings.
+
+ * engine/lib/admin.php, languages/en.php, views/default/admin/sidebar.php,
+ views/default/css/admin.php: Refs #2991. Using section for admin menu.
+
+ * views/default/navigation/menu/elements/section.php: Refs #3088. Wrapping
+ section headers in <h2>s.
+
+ * engine/lib/views.php: Refs #3088. Added docs for section headers to
+ elgg_view_menu().
+
+ * views/default/navigation/menu/default.php,
+ views/default/navigation/menu/elements/section.php,
+ views/default/navigation/menu/page.php: Fixes #3088: Added section header
+ support to page and default menus.
+
+2011-03-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Refs #3085 finished support for passing $vars to
+ elgg_view_entity()
+
+ * engine/lib/views.php, views/default/page/components/gallery.php,
+ views/default/page/components/list.php, views/rss/layout/objects/list.php:
+ Refs #3085 moved full_view out of elgg_view_list_item() into $vars to be
+ consistent with other elgg_view* functions
+
+ * engine/lib/views.php, views/default/page/elements/comments.php: Refs #3085
+ added $vars to elgg_view_comments()
+
+ * engine/lib/views.php: Refs #3085 improved documentation of
+ elgg_view_entity_list() which already supported $vars array
+
+ * engine/classes/ElggEntity.php, engine/lib/entities.php: improved
+ documentation of can write to container method/function
+
+2011-03-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/elgg.php: Fixes #3081: Adding a new line between
+ javascript includes.
+
+ * engine/handlers/page_handler.php, engine/lib/admin.php,
+ engine/lib/widgets.php, languages/en.php, mod/developers/languages/en.php,
+ mod/developers/start.php, mod/diagnostics/start.php,
+ mod/externalpages/start.php, mod/logbrowser/start.php,
+ mod/reportedcontent/start.php, mod/uservalidationbyemail/start.php,
+ views/default/admin/appearance/default_widgets.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/appearance/profile_fields.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/admin/settings/advanced.php,
+ views/default/admin/settings/basic.php,
+ views/default/admin/settings/default_widgets.php,
+ views/default/admin/settings/menu_items.php,
+ views/default/admin/settings/profile_fields.php,
+ .../default/admin/settings/profile_fields/list.php,
+ views/default/admin/sidebar.php, views/default/admin/site/advanced.php,
+ views/default/admin/site/basic.php, views/default/css/admin.php,
+ views/default/js/admin.php: Refs #2991. First round at rearranging and
+ grouping admin menu based upon tasks.
+
+2011-03-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/activate.php, actions/admin/plugins/deactivate.php,
+ actions/admin/user/delete.php, actions/friends/collections/add.php,
+ actions/friends/collections/delete.php, engine/classes/ElggSite.php,
+ engine/lib/admin.php, engine/lib/cache.php, engine/lib/cron.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/input.php,
+ engine/lib/navigation.php, engine/lib/output.php, engine/lib/pagehandler.php,
+ engine/lib/pageowner.php, engine/lib/plugins.php, engine/lib/river.php,
+ engine/lib/user_settings.php, engine/lib/users.php,
+ engine/tests/api/helpers.php, index.php, install/ElggInstaller.php,
+ js/lib/elgglib.js, js/lib/languages.js, js/lib/userpicker.js,
+ js/tests/ElggLibTest.js, mod/blog/actions/blog/delete.php,
+ mod/blog/actions/blog/save.php, mod/blog/lib/blog.php, mod/blog/start.php,
+ mod/blog/views/default/blog/group_module.php,
+ mod/blog/views/default/blog/sidebar/archives.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/object/blog.php,
+ mod/blog/views/default/widgets/blog/content.php,
+ mod/bookmarks/actions/bookmarks/delete.php,
+ mod/bookmarks/actions/bookmarks/save.php, mod/bookmarks/pages/friends.php,
+ mod/bookmarks/pages/view.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/widgets/bookmarks/content.php, mod/categories/start.php,
+ mod/categories/views/default/output/categories.php, mod/developers/start.php,
+ .../views/default/admin/developers/preview.php, mod/embed/start.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/externalpages/start.php,
+ mod/externalpages/views/default/expages/menu.php,
+ mod/file/actions/file/delete.php, mod/file/actions/file/upload.php,
+ mod/file/edit.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/search.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/view.php, mod/file/views/default/file/embed_upload.php,
+ mod/file/views/default/file/group_module.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/widgets/filerepo/content.php,
+ mod/groups/actions/discussion/delete.php,
+ mod/groups/actions/groups/delete.php,
+ mod/groups/actions/groups/membership/invite.php,
+ mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ mod/groups/start.php, .../views/default/discussion/group_module.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/profile/buttons.php,
+ mod/groups/views/default/groups/side_menu.php,
+ mod/groups/views/default/groups/sidebar/find.php,
+ .../views/default/groups/sidebar/members.php,
+ .../default/widgets/a_users_groups/content.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/start.php,
+ mod/logbrowser/start.php, mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/logbrowser/table.php,
+ mod/messageboard/pages/owner.php, mod/messageboard/start.php,
+ .../views/default/widgets/messageboard/content.php,
+ mod/messages/actions/messages/send.php, mod/messages/read.php,
+ mod/messages/start.php, mod/messages/views/default/object/messages.php,
+ mod/notifications/start.php, mod/pages/actions/pages/delete.php,
+ mod/pages/friends.php, mod/pages/history.php, mod/pages/revision.php,
+ mod/pages/start.php, mod/pages/view.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/group_module.php,
+ mod/pages/views/default/widgets/pages/content.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/search/index.php,
+ mod/search/views/default/search/list.php,
+ mod/search/views/default/search/search_box.php, mod/thewire/actions/add.php,
+ mod/thewire/actions/delete.php, mod/thewire/pages/friends.php,
+ mod/thewire/pages/reply.php, mod/thewire/pages/tag.php,
+ mod/thewire/pages/thread.php, mod/thewire/pages/user.php,
+ mod/thewire/start.php, mod/thewire/tests/regex.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/widgets/thewire/content.php, mod/twitterservice/start.php,
+ mod/twitterservice/twitterservice_lib.php,
+ .../views/default/twitterservice/login.php,
+ .../default/usersettings/twitterservice/edit.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ views/default/admin/appearance/default_widgets.php,
+ views/default/admin/header.php, views/default/admin/plugins/advanced.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/members/nav.php, views/default/core/members/sidebar.php,
+ views/default/forms/login.php, views/default/group/search/finishblurb.php,
+ views/default/input/autocomplete.php,
+ views/default/object/plugin/advanced.php,
+ views/default/object/plugin/simple.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/page/default.php,
+ views/default/page/layouts/content/filter.php,
+ views/default/page/layouts/content/header.php,
+ .../page/layouts/two_column_left_sidebar.php,
+ views/default/user/search/finishblurb.php,
+ views/default/widgets/content_stats/content.php, views/foaf/page/default.php,
+ views/installation/page/elements/footer.php, views/rss/core/river/body.php:
+ Fixes #2228: Major cleanup of urls -- remove leading pg/ and trailing / from
+ most urls in core and plugins
+
+ * .gitignore: Ignoring some standard eclipse files
+
+ * engine/handlers/page_handler.php, htaccess_dist: Refs #2228: Deprecated
+ use of pg/ in page handlers. Now we get to have nice clean urls like
+ "example.com/bookmarks"
+
+2011-03-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/manifest.xml: Added curl requirement to twitterservice.
+
+
+ * .../views/default/groups/sidebar/members.php: Fixes #3072: Fixed group
+ member list in sidebar. Thoughts about using the elgg-menu-hz class for this?
+ It's not exactly a menu, but that CSS does exactly what's needed.
+
+ * mod/groups/lib/groups.php: Fixes #3069. Added group activity content.
+
+ * languages/en.php, views/default/widgets/admin_welcome/content.php: Refs
+ #3004. First draft of welcome widget text.
+
+ * views/default/css/admin.php: Fixes #2948: Put specific rules in for
+ .elgg-plugin.elgg-state-active to get white backgrounds in plugins, but not
+ break the action button. The admin CSS still needs a bit of work.
+
+2011-03-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php: fixed page owner setting for sites in a
+ subdirectory
+
+ * views/default/css/admin.php, views/default/page/admin.php: Fixes #3057
+ page wrapper now sets the margin so messages don't end up in far left
+
+2011-03-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js, mod/likes/views/default/likes/display.php: Refs #3027: Using
+ the event popup, ui for advanced placement in elgg.ui.popsUp()
+
+ * engine/lib/views.php: Fixes #3059. elgg_view_layout() checks for
+ deprecated layouts in canvas/layouts/ and elgg_view_page() checks for
+ deprecated pageshells in pageshells/pageshell.
+
+ * engine/classes/ElggBatch.php: Fixed some typos in documentation of
+ ElggBatch.
+
+2011-03-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/upgrades/2011030101.php: Fixes #2679 added a script to upgrade
+ forum topics from 1.7 and earlier
+
+ * actions/likes/add.php, actions/likes/delete.php,
+ engine/classes/ElggEntity.php, engine/lib/elgglib.php,
+ engine/lib/navigation.php, engine/lib/upgrades/2010121702.php,
+ engine/lib/views.php, languages/en.php,
+ .../views/default/theme_preview/icons.php, mod/likes/actions/likes/add.php,
+ mod/likes/actions/likes/delete.php, mod/likes/languages/en.php,
+ mod/likes/manifest.xml, mod/likes/start.php,
+ mod/likes/views/default/annotation/likes.php,
+ mod/likes/views/default/likes/css.php,
+ mod/likes/views/default/likes/display.php,
+ .../default/river/annotation/likes/create.php,
+ views/default/annotation/likes.php, views/default/core/likes/display.php,
+ views/default/css/admin.php, views/default/css/elements/components.php,
+ views/default/css/elements/icons.php, views/default/css/ie.php,
+ views/default/river/annotation/likes/create.php: Fixes #3058 pulls likes out
+ as a plugin
+
+ * views/default/navigation/menu/metadata.php: removed metadata menu which
+ has been replaced by the entity menu
+
+2011-03-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/categories/manifest.xml, mod/custom_index/manifest.xml,
+ mod/developers/manifest.xml, mod/diagnostics/manifest.xml,
+ mod/embed/manifest.xml, mod/externalpages/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/oauth_lib/manifest.xml,
+ mod/twitter/manifest.xml: Refs #2104 added bundled category to all core
+ plugins
+
+ * .../views/default/theme_preview/forms.php: added padding to the display of
+ buttons in developer preview
+
+ * languages/en.php, views/default/admin/plugins/advanced.php: Refs #2871
+ advanced plugin filtering works - sorting still does odd things
+
+2011-03-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, languages/en.php, views/default/admin/footer.php,
+ views/default/css/admin.php: Fixes #3005. Added links to admin faq, admin
+ manual, blog, and community forums in the admin footer.
+
+ * mod/thewire/start.php, mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/metadata.php: Fixes #3025: The wire uses
+ core's metadata view.
+
+ * engine/lib/views.php: Added a bit more docs to elgg_view_menu().
+
+ * engine/lib/upgrades/2010050701.php: Fixes #2310. Only conditionally
+ setting the allow_registration field for users who used
+ $CONFIG->disable_registration.
+
+ * js/lib/ui.js, views/default/core/likes/display.php: Fixes #3027. Likes
+ popup uses rel='popup' and elgg.ui.popsUp() to position absolute.
+
+ * mod/blog/views/default/blog/sidebar/revisions.php: Fixes #3054: Fixed URL
+ for editing a blog revision.
+
+2011-03-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/start.php, mod/tinymce/views/default/js/tinymce.php,
+ mod/tinymce/views/default/tinymce/init.php, views/default/input/longtext.php:
+ fixed tinymce toggle
+
+2011-03-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/js/blog/save_draft.php: Fixes #3053: Fixed JS for
+ blog draft autosave.
+
+ * ...8_svn-blog_status_metadata-4645225d7b440876.php,
+ mod/blog/actions/blog/auto_save_revision.php, mod/blog/actions/blog/save.php,
+ mod/blog/classes/ElggBlog.php, mod/blog/languages/en.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/input/datetime.php,
+ mod/blog/views/default/js/blog/save_draft.php,
+ mod/blog/views/default/object/blog.php, version.php: Fixes #2229. Removed
+ published data metadata in blog. Added upgrade to set all status metadata for
+ old blog posts.
+
+ * engine/classes/ElggBatch.php: Added a bit more docs to ElggBatch.
+
+ * mod/blog/lib/blog.php, mod/blog/views/default/blog/sidebar/archives.php:
+ Refs #2229: Using time_created instead of publish_date metadata to sort.
+
+2011-03-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/longtext.php: fixed longtext menu display
+
+2011-03-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/navigation.php, engine/lib/river.php, mod/blog/start.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php, mod/groups/start.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php, mod/pages/start.php,
+ mod/pages/views/default/object/page_top.php,
+ views/default/css/elements/navigation.php: Refs #2895 entity menu uses new
+ menu system
+
+ * engine/classes/ElggMenuItem.php: added support for confirm text to
+ ElggMenuItem
+
+ * views/default/output/confirmlink.php: made encoding text default to false
+ in confirm link
+
+ * mod/blog/views/default/blog/group_module.php,
+ .../views/default/bookmarks/group_module.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ mod/groups/views/default/forms/groups/delete.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/profile/profile_block.php,
+ .../views/default/groups/profile/widgets.php,
+ mod/pages/views/default/pages/group_module.php: cleaned up the groups plugin
+ css
+
+ * views/default/css/elements/navigation.php: owner block menu items appear
+ like normal page menu items in default theme
+
+ * engine/lib/river.php: not showing river buttons when displaying in widgets
+
+
+2011-03-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Elgg's web services API is not RESTful
+
+ * mod/custom_index/start.php: custom index plugin checks return value on
+ hook now
+
+ * _graphics/walled_garden_background_top.gif, engine/lib/elgglib.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/css/walled_garden.php, views/default/page/elements/footer.php,
+ views/default/page/walled_garden.php: Refs #2693 walled garden code is
+ functional. Push back a thorough clean up until Elgg 1.9
+
+ * engine/lib/elgglib.php, languages/en.php,
+ views/default/css/walled_garden.php, views/default/page/walled_garden.php:
+ Refs #2693 pulled walled garden css out as separate view
+
+ * documentation/examples/plugins/manifest.xml, mod/blog/manifest.xml,
+ mod/bookmarks/manifest.xml, mod/developers/manifest.xml,
+ mod/file/manifest.xml, mod/pages/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitterservice/manifest.xml,
+ mod/uservalidationbyemail/manifest.xml, mod/zaudio/manifest.xml,
+ views/default/admin/plugins/advanced.php: Refs #2104 added some categories to
+ core (bundled) plugins
+
+ * mod/thewire/languages/en.php,
+ .../views/default/thewire/profile_status.php: Fixes #3024 thewire view for
+ the profile page is finished
+
+ * engine/lib/river.php, mod/groups/start.php,
+ .../views/default/forms/discussion/reply/save.php,
+ .../river/object/groupforumtopic/create.php,
+ views/default/river/item/controls.php: Refs #2679 can comment on discussion
+ forums in river now
+
+ * mod/groups/start.php: Refs #2413 registered the subtype for discussion
+ topics so search works
+
+ * mod/groups/start.php: Refs #2679 added a function for processing groups
+ plugin upgrades
+
+ * engine/lib/river.php, views/default/river/item/controls.php: Fixes #2895
+ river menu reimplemented using plugin hook
+
+ * upgrade.php: Fixes #3029 added an upgrade, system event that always fires
+
+2011-03-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggMenuBuilder.php: added a catch to menu builder for bad
+ menu items
+
+ * views/default/css/elements/navigation.php: added background to li hover
+ for filter menu to work around sliver of white showing through - probably a
+ better way to do this
+
+ * mod/messages/start.php, mod/messages/views/default/messages/css.php: fixed
+ new message indicator
+
+ * views/default/navigation/menu/default.php: forcing dashes in elgg menu
+ classes
+
+ * mod/messages/read.php, mod/pages/view.php: changed rest of title buttons
+ to an elgg-menu
+
+ * mod/groups/languages/en.php, mod/groups/lib/groups.php: fixed some group
+ page titles
+
+ * mod/thewire/languages/en.php: thewire was missing object:<subtype> string
+
+ * views/default/css/elements/navigation.php: tweaked spacing of sidebar
+ menus
+
+ * languages/en.php: adjust language on like link title
+
+ * views/default/css/elements/layout.php,
+ views/default/css/elements/navigation.php: added a amrgin to elgg-menu-title
+ so that buttons have some space
+
+ * .../views/default/groups/profile/buttons.php: groups profile buttons now
+ elgg-menu-title - still need to be registered
+
+ * .../views/default/forms/messages/process.php,
+ mod/messages/views/default/object/messages.php,
+ views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/css/elements/buttons.php,
+ views/default/input/submit.php: cleared up confusion over elgg-icon-delete
+ and elgg-button-delete
+
+ * .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php: cleaned up the group
+ invitations and membership request pages
+
+ * mod/groups/actions/groups/edit.php,
+ mod/groups/views/default/forms/groups/edit.php: fixed a bug with invisible
+ groups - saving and display both had a problem
+
+ * mod/groups/views/default/forms/groups/search.php,
+ mod/groups/views/default/groups/edit.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../default/groups/profile/activity_module.php,
+ mod/groups/views/default/groups/side_menu.php,
+ .../views/default/groups/sidebar/members.php,
+ .../river/annotation/group_topic_post/reply.php,
+ .../default/river/relationship/member/create.php,
+ mod/groups/views/default/settings/groups/edit.php: reviewed groups plugin and
+ added todo's
+
+ * mod/bookmarks/views/default/object/bookmarks.php: added owner icons to
+ bookmarks
+
+ * views/default/css/elements/misc.php: drop down button did not need to have
+ such a large z-index
+
+ * views/default/css/elements/buttons.php: removed shadow from
+ elgg-button-dropdown inherited from elgg-button
+
+ * views/default/page/elements/footer.php: make sure powered by icon does not
+ sneak up in the menu area
+
+ * .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/icon/object/file.php: fixed two validation issues with
+ ampersands in file plugin
+
+ * views/default/page/elements/footer.php: forgot to close div tag
+
+ * .../views/default/custom_index/css.php,
+ .../views/default/page/layouts/custom_index.php: updated custom index spacing
+ so it spans the width of the central area
+
+ * engine/lib/elgglib.php, mod/externalpages/start.php,
+ mod/reportedcontent/start.php, views/default/css/elements/navigation.php,
+ views/default/page/elements/footer.php: pulled power by icon out of menu in
+ footer as it serves a different purpose than other menu items
+
+2011-03-05 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js, views/default/input/date.php,
+ views/default/input/datepicker.php, views/default/output/calendar.php,
+ views/default/output/date.php: Fixes #2321: Deprecated input/datepicker and
+ output/calendar in favor of input/date and output/date
+
+2011-03-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/groups/membership/join.php, mod/groups/start.php: Fixes
+ #1926 flushing access list when adding a user to a group
+
+ * mod/groups/lib/groups.php, .../default/groups/profile/activity_module.php:
+ preventing crashes when user does not have access to the group on group
+ profile page
+
+ * engine/lib/access.php: Refs #1926 should not be ignoring the flush
+ variable
+
+ * engine/lib/access.php: updated comment on why we may want to keep access
+ cache
+
+ * mod/groups/start.php: Refs #1926 user is now being added to access
+ collection of invisible group
+
+ * engine/lib/access.php: Refs #1926 made 'access:collections:add_user',
+ 'collection' plugin hook more useful
+
+ * mod/groups/actions/groups/edit.php, mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/edit.php: trying to make support for
+ invisible groups a little saner
+
+ * mod/groups/actions/groups/membership/join.php: fixed bug in accepting
+ invitations to closed groups
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/delete.php,
+ mod/groups/actions/edit.php, mod/groups/actions/featured.php,
+ mod/groups/actions/groups/delete.php, mod/groups/actions/groups/edit.php,
+ mod/groups/actions/groups/featured.php,
+ mod/groups/actions/groups/membership/add.php,
+ .../actions/groups/membership/delete_invite.php,
+ .../actions/groups/membership/delete_request.php,
+ mod/groups/actions/groups/membership/invite.php,
+ mod/groups/actions/groups/membership/join.php,
+ mod/groups/actions/groups/membership/leave.php,
+ mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/start.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/profile/buttons.php: updated the group actions -
+ edit group needs more work
+
+ * engine/lib/entities.php: added a hint about 0 meaning no limit for ege
+
+2011-03-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Refs #2679 preventing people from commenting on a
+ discussion topic in the river
+
+ * mod/groups/actions/discussion/reply/delete.php,
+ mod/groups/actions/discussion/reply/save.php, mod/groups/languages/en.php,
+ mod/groups/lib/discussion.php, mod/groups/lib/groups.php,
+ mod/groups/start.php, .../views/default/annotation/group_topic_post.php,
+ mod/groups/views/default/discussion/replies.php,
+ .../views/default/forms/discussion/reply/save.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/object/groupforumtopic.php,
+ .../river/annotation/group_topic_post/reply.php: Refs #2679 - returning to a
+ separate annotation for discussion forum replies. For those using the latest
+ out of svn you can update with this script: https://gist.github.com/852092
+
+2011-03-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, mod/blog/views/default/forms/blog/save.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ .../notifications/subscriptions/forminternals.php,
+ views/default/css/elements/chrome.php,
+ views/default/forms/admin/site/update_advanced.php,
+ views/default/forms/admin/site/update_basic.php,
+ views/default/forms/usersettings/save.php: Fixes #3006 restores previous
+ dividers
+
+ * mod/categories/views/default/output/categories.php: not showing categories
+ label if not categories chosen
+
+ * actions/login.php: Fixes #3036 moved setting of forward url to before
+ login in case session variables are being lost
+
+ * views/default/river/item/controls.php: Refs #2895 reverting [8532] as code
+ is not working as intended. Can comment and like everything because menu
+ items are being registered. Perhaps questionable benefit of using the menu
+ system here.
+
+ * mod/groups/actions/discussion/save.php: fixed the view name for discussion
+ topic river
+
+ * .../views/default/object/groupforumtopic.php: showing the text of a forum
+ topic post
+
+2011-03-02 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/views/default/tinymce/css.php,
+ views/default/core/friends/collection.php,
+ views/default/core/friends/collections.php,
+ views/default/core/friends/collectiontabs.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php,
+ views/default/page/elements/owner_block.php,
+ views/default/page/elements/topbar.php: Addressed several miscellaneous
+ todo's
+
+ * views/default/object/widget.php,
+ views/default/object/widget/elements/controls.php: Widget collapse button
+ uses elgg-toggler pattern
+
+ * views/default/page/layouts/widgets/add_button.php: Fixed widgets add
+ button
+
+ * views/default/object/plugin/advanced.php,
+ .../object/plugin/elements/dependencies.php: Plugin admin displays
+ dependencies again
+
+ * mod/twitterservice/start.php: Removed redundant requirements checking code
+
+ * views/default/admin/statistics/basic.php,
+ views/default/admin/statistics/numentities.php,
+ views/default/admin/statistics/overview.php: Refactored admin statistics
+ views -- no longer manually building elgg-module
+
+ * engine/lib/output.php: Added comment explaining purpose of regex
+
+ * engine/lib/output.php: elgg_normalize_url leaves #target and ?query urls
+ alone
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/messages.php: Fixes #3012 added hidden li
+
+ * js/lib/elgglib.js: cleaned up appending system messages since <ul> will
+ always be there
+
+ * install/ElggInstaller.php: Fixes #2929 Installer handles private default
+ access now
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/layouts/content/filter.php: Filter tabs ordered
+ correctly
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php: fixed bug where dataroot wasn't being set when
+ regenerating cache during the install
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/modules.php,
+ views/default/css/elements/navigation.php,
+ views/default/navigation/menu/site.php: Some fixes for site menu
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/save.php: because river entry is deleted we do not
+ need to do an update
+
+ * views/default/forms/comments/add.php: put margin back between longtext and
+ submit button for comment form
+
+ * mod/blog/actions/blog/save.php: fixes saving a new blog post - was trying
+ to do an update to without a guid
+
+ * engine/lib/views.php: Fixes #3033 removed use of set_view_location() from
+ core
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/users.php,
+ mod/embed/start.php, mod/messages/start.php, mod/reportedcontent/start.php,
+ views/default/admin/footer.php, views/default/admin/sidebar.php,
+ views/default/css/admin.php, views/default/css/elements/navigation.php,
+ views/default/input/longtext.php, views/default/page/elements/footer.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/layouts/content/filter.php,
+ views/default/page/layouts/content/header.php,
+ views/default/river/item/controls.php: Fixes #3031 using 'priority' now
+
+ * engine/lib/users.php: Fixes #3010 moved topbar menu registration to page
+ setup so that the url override is registered
+
+ * mod/tinymce/views/default/js/tinymce.php: fixed tinymce js code so that at
+ least it doesn't have syntax errors and runtime exceptions
+
+ * mod/tinymce/start.php: tinymce longtext menu item also needed the longtext
+ class
+
+ * mod/tinymce/start.php: fixes tinymce longtext registration
+
+ * mod/embed/start.php: fixed embed longtext menu registration
+
+ * views/default/input/button.php, views/default/input/submit.php: added
+ better support for classes to buttons
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggMenuItem.php, js/lib/ui.js,
+ mod/profile/views/default/profile/owner_block.php,
+ .../views/default/object/reported_content.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/object/plugin/advanced.php,
+ views/default/object/widget/elements/controls.php,
+ views/default/page/layouts/widgets/add_button.php,
+ views/default/river/item/controls.php: Fixes #3032: toggler pattern is now <a
+ href="#target" class="elgg-toggler">...</a> Wow, so much nicer.
+
+ * engine/classes/ElggMenuItem.php: Added support for "rel" to ElggMenuItem
+
+ * engine/classes/ElggMenuItem.php: Fixes #3023: added support for 'class'
+ argument in elgg_register_menu_item
+
+ * views/default/css/admin.php, views/default/css/elements/navigation.php,
+ views/default/navigation/menu/default.php,
+ views/default/navigation/menu/elements/group.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/navigation/menu/elements/section.php,
+ views/default/navigation/menu/metadata.php,
+ views/default/navigation/menu/page.php,
+ views/default/navigation/menu/site.php,
+ views/default/navigation/menu/user_hover.php,
+ views/default/page/elements/footer.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/layouts/content/filter.php,
+ views/default/page/layouts/content/header.php: Refs #3021:
+ elgg-section-$section => elgg-menu-$menu-$section Added elgg-menu-hz for
+ horizontal menus
+
+ * mod/embed/start.php, mod/embed/views/default/embed/link.php: Fixes #2895:
+ Embed uses longtext menu -- I believe that covers *all* the menus we had
+ brought up!
+
+ * mod/tinymce/start.php, mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/js/tinymce.php,
+ mod/tinymce/views/default/tinymce/init.php, views/default/input/longtext.php:
+ Refs #2538: Cleaned up custom tinymce code into elgg.tinymce.*. Refs #2895:
+ TinyMCE makes use of longtext menu
+
+ * views/default/river/item/controls.php: Refs #2895: River items now emit a
+ "river" menu. Not confident on the name, just trying to keep things short
+ and sweet.
+
+ * mod/search/start.php, views/default/page/elements/header.php: Removed
+ header/extend in favor of just extending page/elements/header
+
+ * views/default/css/elements/navigation.php,
+ views/default/page/layouts/content/header.php: Refs #2895: Content header now
+ emits a "title" menu
+
+2011-03-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/save.php: Fixes #2425, #2427. Blog status for
+ published and draft correctly set the river items.
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/likes/display.php,
+ views/default/css/elements/navigation.php: core/likes/display uses
+ image-block component. ensures that the like icon is even with the "x users
+ liked this" text. Wondering if we should split the two up entirely.
+
+ * views/default/css/elements/navigation.php,
+ views/default/page/layouts/content/filter.php: Refs #2895: Converted content
+ filter to a menu, duplicated styles to mimic tabs... ick.
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/manifest.xml, mod/blog/start.php: blog plugin uses on_activate to
+ set its class or the upgrade event
+
+ * mod/groups/views/default/forms/groups/search.php,
+ mod/thewire/views/default/forms/thewire/add.php,
+ views/default/css/elements/buttons.php,
+ views/default/forms/members/name_search.php,
+ views/default/forms/members/tag_search.php,
+ views/default/forms/widgets/save.php, views/default/input/submit.php: brought
+ back the blue submit button
+
+ * views/default/css/elements/buttons.php: yuck - have to reset all the
+ styling from elgg-button for elgg-button-delete
+
+ * actions/admin/plugins/activate.php, actions/admin/plugins/deactivate.php:
+ Fixes #3013 activating/deactivating a plugin forwards to plugin page with
+ changed plugin given focus
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/pages/all.php: No need for ".=" here
+
+ * mod/groups/start.php: pg/groups/world => pg/groups/all
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/widgets.php, mod/developers/start.php,
+ mod/diagnostics/start.php, mod/externalpages/start.php,
+ mod/logbrowser/start.php, mod/reportedcontent/start.php,
+ mod/uservalidationbyemail/start.php: Fixes #3014 using more standard
+ "register" in admin convenience function
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/navigation.php: Fixes for breadcrumbs and
+ metadata menus. Added basic styles for title menu
+
+ * views/default/core/likes/display.php: false is default for encode text in
+ output/url -- no need to specify
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messageboard/start.php, .../views/default/forms/messageboard/add.php,
+ .../views/default/messageboard/css.php: cleaned up the css for messageboard
+
+ * mod/messageboard/languages/en.php,
+ .../views/default/annotation/messageboard.php,
+ .../views/default/forms/messageboard/add.php,
+ .../views/default/messageboard/messageboard.php,
+ .../default/river/object/messageboard/create.php,
+ .../views/default/widgets/messageboard/content.php,
+ .../views/default/widgets/messageboard/edit.php: cleaned up the messageboard
+ plugin further
+
+ * views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php: finished making the "default"
+ view the default view for annotation rather than generic_comment
+
+2011-03-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/river/filter.php: Convert river filter javascript to
+ new style
+
+2011-03-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/annotation/default.php: improved the default annotation view
+
+
+2011-02-28 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/topbar.php: No more reason to explicitly add
+ elgg-menu-topbar class
+
+ * views/default/css/elements/navigation.php,
+ views/default/navigation/menu/site.php: Fixes for several menu issues
+
+ * views/default/page/elements/footer.php: No more need to explicitly include
+ elgg-menu-footer class
+
+ * views/default/navigation/menu/default.php: Always include name of menu in
+ menu classes
+
+ * mod/bookmarks/start.php, views/default/page/elements/sidebar.php: Refs
+ #2895: Renamed "page_links" to "extras" -- feels more semantic (facebook's
+ menu has actions such as unfriend, share, block)
+
+2011-02-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, mod/categories/manifest.xml,
+ mod/categories/start.php: Fixes #3011. on_activate and on_deactivate work for
+ plugins now. Updated the categories plugin to use it.
+
+2011-02-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php,
+ mod/categories/views/default/output/categories.php,
+ views/default/css/elements/icons.php,
+ views/default/page/components/list/body.php: pushing categories to the next
+ line when viewing an entity
+
+ * views/default/js/admin.php: slide up system messages in admin area
+
+ * views/default/page/admin.php: fixed the AWHOL state of system messages on
+ admin pages
+
+ * .../views/default/admin/users/unvalidated.php,
+ .../forms/uservalidationbyemail/bulk_action.php: fixed bad return value in
+ unvalidated users bulk action form
+
+2011-02-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/forms/useradd.php: fixed useradd form
+
+ * engine/lib/admin.php, engine/lib/navigation.php: Fixes #2951 not
+ registering utilities menu item by default but added code to automatically
+ register a parent menu if not registered in admin menu registration function.
+ We lose the ability to set a weight on utilities.
+
+ * engine/lib/admin.php, engine/lib/widgets.php, mod/developers/start.php,
+ mod/diagnostics/start.php, mod/externalpages/start.php,
+ mod/logbrowser/start.php, mod/reportedcontent/start.php,
+ mod/uservalidationbyemail/start.php: simplified admin menu registration
+ function in preparation for adding sections
+
+ * install/ElggInstaller.php, install/languages/en.php: Fixes #2799 added
+ check for session.auto_start
+
+ * engine/lib/admin.php, views/default/css/admin.php,
+ views/default/page/admin.php: moved admin messages into admin page shell
+
+ * engine/lib/admin.php, install/ElggInstaller.php, languages/en.php,
+ views/default/css/admin.php, views/default/widgets/admin_welcome/content.php:
+ Fixes #2913 - directs the user to admin dashboard when installer finishes
+
+ * .../views/default/bookmarks/bookmarklet.php: Fixes #2977 changed title to
+ alt
+
+ * _graphics/friendspicker.png, actions/friends/collections/edit.php,
+ languages/en.php, pages/friends/collections/add.php,
+ pages/friends/collections/pickercallback.php,
+ views/default/core/friends/collections.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php,
+ views/default/forms/friends/collections/add.php,
+ views/default/forms/friends/collections/edit.php,
+ views/default/input/friendspicker.php: Fixes #2982 friends collections work
+ even if the code is convoluted and poorly written.
+
+ * .../notifications/subscriptions/forminternals.php: fixed notifications
+ plugin's hacked up friends picker...shudder
+
+ * mod/groups/lib/groups.php,
+ mod/groups/views/default/forms/groups/invite.php: fixed group invite form
+
+ * engine/lib/elgglib.php: fixed image size attributes added to "power by"
+ image
+
+2011-02-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggSite.php: Refs #2693 - Added pg/css and pg/js to the
+ list of public pages for walled garden.
+
+2011-02-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/addcollection.php, actions/friends/collections/add.php,
+ actions/friends/collections/delete.php, actions/friends/collections/edit.php,
+ actions/friends/deletecollection.php, actions/friends/editcollection.php,
+ engine/lib/users.php, pages/friends/add.php, pages/friends/collections.php,
+ pages/friends/collections/add.php,
+ pages/friends/collections/pickercallback.php,
+ pages/friends/collections/view.php, pages/friends/edit.php,
+ pages/friends/pickercallback.php, views/default/core/friends/collection.php,
+ views/default/core/friends/collections.php,
+ views/default/core/friends/collectiontabs.php,
+ views/default/forms/friends/collectionfields.php,
+ views/default/forms/friends/collections/edit.php,
+ views/default/forms/friends/edit.php: Refs #2982 adding and deleting friend
+ collections works - editing does not
+
+ * engine/lib/views.php, mod/groups/views/default/forms/groups/invite.php,
+ pages/friends/pickercallback.php, views/default/core/friends/collection.php,
+ views/default/core/friends/picker.php, views/default/forms/friends/edit.php,
+ views/default/input/friendspicker.php: fixed friends picker js include
+
+2011-02-26 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/navigation.php: Switching elgg-menu-metadata to
+ inline-block method of declaring a horizontal menu
+
+ * mod/groups/views/default/group/default.php,
+ mod/thewire/views/default/thewire/metadata.php, views/default/css/admin.php,
+ views/default/css/elements/components.php,
+ views/default/css/elements/navigation.php,
+ views/default/navigation/menu/metadata.php,
+ views/default/object/plugin/advanced.php,
+ views/default/page/components/list/body.php, views/default/user/default.php:
+ Refs #2895: .elgg-list-metadata => .elgg-menu-metadata. Still not using menu
+ system yet, though
+
+ * views/default/css/elements/navigation.php: .elgg-menu enhancement for
+ horizontal menus
+
+ * views/default/css/elements/layout.php,
+ views/default/css/elements/navigation.php,
+ views/default/navigation/breadcrumbs.php: .elgg-menu is no longer trivial
+
+ * engine/lib/elgglib.php: Added explicit height and width to powered_by_elgg
+ icon
+
+ * views/default/css/elements/icons.php: Fixes #2691: Switching elgg-icon to
+ display:inline-block -- matches behavior of <img> tag
+
+2011-02-25 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/start.php, .../views/default/reportedcontent/css.php:
+ Converted report-this icon to be compatible with elgg_view_icon
+
+ * engine/lib/elgglib.php, mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/footer_link.php,
+ views/default/page/elements/footer.php: Refs #2895: Removed footer/links
+ view. Moved report-this link into alternate footer menu
+
+ * engine/lib/elgglib.php, views/default/css/elements/layout.php,
+ views/default/css/elements/navigation.php,
+ views/default/page/elements/footer.php: Refs #2895: Added support for an
+ "alt" section in the footer menu. Put "powered by Elgg" badge in here
+
+ * js/lib/elgglib.js, js/lib/session.js: Refs #2538: Functions don't need
+ double-namespacing
+
+ * views/default/css/elements/components.php,
+ views/default/css/elements/misc.php,
+ views/default/css/elements/navigation.php: Using shorthand in css to scrunch
+ it a bit
+
+ * views/default/css/elements/layout.php,
+ views/default/css/elements/page_layout.php, views/default/css/elgg.php:
+ Converted css/elements/page_layout to layout. Now we have a bunch of nice,
+ terse, 1-word names :)
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/users.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php,
+ views/default/page/elements/topbar.php: Refs #2895: Converted topbar to one
+ menu (felt dirty using two). Fixed styles.
+
+ * engine/lib/users.php, mod/messages/start.php,
+ mod/messages/views/default/messages/topbar.php: Refs #2895: Messages now uses
+ new topbar menu
+
+ * mod/bookmarks/start.php, .../views/default/bookmarks/page_links.php,
+ views/default/page/elements/page_links.php,
+ views/default/page/elements/sidebar.php: Refs #2895: Converted page_links
+ into a menu. Bookmarks now uses it
+
+ * engine/lib/admin.php, engine/lib/users.php,
+ views/default/page/elements/topbar.php: Refs #2895: Made topbar into 2 menus.
+ CSS will have to be fixed
+
+ * engine/lib/navigation.php: Corrects bug that occurred when ElggMenuItem is
+ passed
+
+ * mod/blog/views/default/object/blog.php, mod/groups/start.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/messages/views/default/object/messages.php,
+ .../notifications/subscriptions/forminternals.php,
+ mod/profile/views/default/profile/owner_block.php,
+ views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/core/friends/picker.php,
+ views/default/core/friends/tablelist.php,
+ views/default/forms/friends/edit.php, views/default/river/item/image.php,
+ views/default/river/relationship/friend/create.php,
+ views/default/user/default.php, views/default/widgets/friends/content.php:
+ Converted all uses of profile/icon in core + plugins to elgg_view_entity_icon
+
+ * engine/lib/navigation.php: Emit a warning + debug info when an attempt to
+ register a menu item fails
+
+ * engine/classes/ElggMenuItem.php: Supporting is_action in ElggMenuItem
+
+ * views/installation/forms/install/template.php,
+ views/installation/install/pages/admin.php,
+ views/installation/install/pages/database.php,
+ views/installation/install/pages/settings.php: Cleaned up some js in the
+ installer
+
+ * views/installation/input/checkbox.php,
+ views/installation/input/checkboxes.php: Updated input/checkboxes code in
+ installation viewtype
+
+ * views/installation/install/forms/admin.php,
+ views/installation/install/forms/database.php,
+ views/installation/install/forms/settings.php,
+ views/installation/install/forms/template.php,
+ views/installation/install/pages/admin.php,
+ views/installation/install/pages/database.php,
+ views/installation/install/pages/settings.php: Converted installation forms
+ to use elgg_view_form and the /forms/ directory
+
+2011-02-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/admin.php: Fixes #2998. Updated admin JS for dnd plugin
+ reordering with new plugin layout.
+
+2011-02-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggAnnotation.php: Fixes #2960 removing river entry for
+ deleted annotation
+
+ * views/default/css/admin.php, views/default/css/elements/reset.php: fixed
+ dragging/scrolling issue caused by overflow-y on body
+
+ * engine/classes/ElggMenuItem.php: fixed typo in elgg menu updates from last
+ night
+
+ * engine/lib/users.php, languages/en.php, pages/friends/collections.php,
+ views/default/css/elements/misc.php: fixing friends collections for backward
+ compatibility
+
+ * engine/classes/ElggMenuItem.php,
+ views/default/navigation/menu/elements/item.php: finished the implementation
+ of non-links in menu system
+
+ * engine/classes/ElggMenuItem.php,
+ mod/profile/views/default/profile/owner_block.php,
+ views/default/navigation/menu/elements/item.php: using getContent() in menu
+ system in preparation for supporting non-links
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/admin.php, engine/lib/deprecated-1.8.php,
+ engine/lib/navigation.php, engine/lib/user_settings.php,
+ engine/lib/users.php, engine/lib/views.php, mod/bookmarks/start.php,
+ mod/developers/start.php, mod/file/views/default/file/typecloud.php,
+ mod/invitefriends/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/lib/pages.php: Fixes #2997 - href used
+ instead of url in menu system
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/admin.php, engine/lib/deprecated-1.8.php,
+ engine/lib/user_settings.php, engine/lib/users.php, engine/lib/views.php,
+ mod/bookmarks/start.php, mod/developers/start.php,
+ mod/file/views/default/file/typecloud.php, mod/invitefriends/start.php,
+ mod/messages/start.php, mod/notifications/start.php, mod/pages/lib/pages.php,
+ views/default/forms/admin/menu/save.php: Refs #2997 switching from title to
+ text for menu items
+
+ * views/default/core/friends/tablelist.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php:
+ moved another friends picker css section to forms css view
+
+ * views/default/core/avatar/crop.php, views/default/core/avatar/upload.php,
+ views/default/css/elements/misc.php, views/default/forms/avatar/crop.php:
+ cutting down the amount of css required for the avatar page
+
+ * views/default/core/river/body.php, views/default/core/river/controls.php,
+ views/default/core/river/footer.php, views/default/core/river/image.php,
+ views/default/river/item.php, views/default/river/item/body.php,
+ views/default/river/item/controls.php, views/default/river/item/footer.php,
+ views/default/river/item/image.php: organized the river views according to
+ the subview pattern
+
+2011-02-23 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/modules.php: Adjusting offset for dropdown
+ module
+
+ * engine/lib/admin.php: Simplify registration of jeditable library
+
+ * views/default/css/elements/components.php,
+ views/default/css/elements/layout_objects.php, views/default/css/elgg.php:
+ Refs #2993: Changed css layout_objects to components
+
+ * views/default/css/elgg.php: Refs #2995: Including css/elements/buttons in
+ css/elgg
+
+ * views/default/css/elements/buttons.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php:
+ Fixes #2995: buttons get their own css file
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/object/default.php,
+ views/default/object/elements/list_body.php,
+ views/default/page/components/list/body.php, views/default/user/default.php:
+ Fixes #2992: moved object/elements/list_body to page/components/list/body
+
+ * js/lib/ui.js: Fixes #2976: Removed second toggler implementation
+
+ * mod/blog/lib/blog.php, mod/file/index.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php, mod/messages/read.php,
+ .../views/default/forms/messages/process.php,
+ mod/messages/views/default/object/messages.php, mod/pages/view.php,
+ mod/profile/views/default/profile/owner_block.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/thewire/profile_status.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/friends/picker.php,
+ views/default/forms/profile/fields/reset.php, views/default/input/button.php,
+ views/default/object/plugin/advanced.php,
+ views/default/page/layouts/content/header.php,
+ views/default/page/layouts/widgets/add_button.php: Every occurrence of
+ elgg-button-$type needs an elgg-button base class declaration -- or should we
+ remove that requirement?
+
+ * mod/profile/views/default/profile/owner_block.php,
+ .../views/default/object/reported_content.php,
+ views/default/core/river/controls.php, views/default/core/river/footer.php,
+ views/default/object/widget/elements/controls.php,
+ views/default/object/widget/elements/settings.php,
+ views/default/page/layouts/widgets/add_button.php,
+ views/default/page/layouts/widgets/add_panel.php: Refs #2976: Converted most
+ markup to use elgg-toggler elgg-toggles-* pattern
+
+ * views/default/css/elements/page_layout.php,
+ views/default/page/default.php: Fixes #2957: elgg-page-classic =>
+ elgg-page-default
+
+ * views/default/page/admin.php, views/default/page/layouts/one_column.php,
+ views/default/page/layouts/one_sidebar.php: Moved elgg-inner out of layouts
+ and into the page shell
+
+ * mod/messageboard/views/default/messageboard/js.php,
+ mod/messages/views/default/object/messages.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/css/ie.php,
+ views/default/css/ie6.php, views/default/page/upgrade.php: Converted
+ delete-button to elgg-button-delete throughout plugins
+
+ * views/default/css/elements/forms.php, views/default/css/elements/misc.php:
+ Moved elgg-button-dropdown to forms
+
+ * views/default/css/elements/chrome.php: Cleanup of css/elements/chrome.php
+
+ * views/default/css/elements/forms.php: Converted delete-button to
+ elgg-button-delete. This breaks some things because the semantics of the two
+ are not equivalent. .delete-button just really needed to die
+
+ * views/failsafe/canvas/default.php, views/foaf/canvas/default.php,
+ views/ical/canvas/default.php, views/json/canvas/default.php,
+ views/opendd/canvas/default.php, views/php/canvas/default.php: Deleting
+ deprecated canvas/ directory from all viewtypes
+
+ * views/default/navigation/menu/default.php: DRY'ed up default menu a bit
+
+2011-02-22 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/page/shells/theme_preview.php,
+ .../views/default/page/theme_preview.php: Moved theme_preview page shell out
+ into page/
+
+ * views/default/css/elements/page_layout.php,
+ views/default/page/elements/sidebar_alt.php,
+ views/default/page/layouts/one_column.php,
+ views/default/page/layouts/one_sidebar.php,
+ views/default/page/layouts/two_sidebar.php: Trying to simplify layout css:
+ nixed elgg-aside .elgg-sidebar.elgg-alt => .elgg-sidebar-alt (similar to
+ .elgg-image-alt)
+
+ * views/default/admin/footer.php, views/default/admin/header.php,
+ views/default/page/admin.php, views/default/page/layouts/admin.php: extracted
+ admin header, footer to admin/*. Moved pageshell code from admin layout to
+ admin pageshell.
+
+ * install/css/install.css, views/installation/install/footer.php,
+ views/installation/install/header.php,
+ views/installation/install/sidebar.php, views/installation/page/default.php,
+ views/installation/page/elements/footer.php,
+ views/installation/page/elements/header.php,
+ views/installation/page/elements/sidebar.php: Move install
+ footer/header/sidebar into page/elements. Converted CSS to use more standard
+ Elgg framework objects
+
+ * views/default/page/elements/content_header.php,
+ .../page/elements/content_header_member.php: Removing holdovers from elgg.com
+
+ * views/failsafe/page/default.php, views/failsafe/page/shells/default.php,
+ views/foaf/page/default.php, views/foaf/page/shells/default.php,
+ views/ical/page/default.php, views/ical/page/shells/default.php,
+ views/installation/page/default.php,
+ views/installation/page/shells/default.php, views/json/page/default.php,
+ views/json/page/shells/default.php, views/opendd/page/default.php,
+ views/opendd/page/shells/default.php, views/php/page/default.php,
+ views/php/page/shells/default.php, views/rss/page/default.php,
+ views/rss/page/shells/default.php, views/xml/page/default.php,
+ views/xml/page/shells/default.php: Moved page/shells/* to page/*
+
+ * mod/embed/views/default/embed/css.php, views/default/css/ie.php,
+ views/default/export/entity.php: entity-listing => elgg-image-block,
+ margin-top => mtm
+
+ * mod/groups/lib/groups.php,
+ mod/groups/views/default/forms/groups/delete.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forms/groups/search.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/profile/buttons.php,
+ .../views/default/groups/profile/profile_block.php,
+ .../views/default/groups/profile/widgets.php,
+ .../views/default/groups/sidebar/members.php: Touch ups of groups plugin
+
+ * mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php,
+ mod/embed/views/default/embed/lightbox_init.php,
+ mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/embed/views/default/group/default/embed.php,
+ mod/embed/views/default/object/file/embedlist.php: Touch ups for the embed
+ plugin -- this one needs some serious work still, though...
+
+ * views/default/output/url.php: Utilizing elgg_extract in output/url
+
+ * js/lib/configuration.js: Added elgg.get_site_url(), so people don't have
+ to deal with the config object.
+
+ * mod/diagnostics/actions/download.php,
+ .../views/default/admin/utilities/diagnostics.php,
+ .../views/default/diagnostics/forms/download.php: Touch ups for diagnostics
+ plugin
+
+ * views/default/admin/plugin_settings.php,
+ views/default/core/settings/tools.php,
+ views/default/forms/plugins/settings/save.php: Deprecated
+ (user)settings/$plugin_id/edit in favor of plugins/$plugin_id/(user)settings
+
+ * mod/bookmarks/start.php: Default permissions for new actions is logged_in,
+ so no need to make that explicit
+
+ * mod/blog/lib/blog.php, mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/input/datetime.php,
+ mod/blog/views/default/js/blog/save_draft.php: Cleaned up blog js
+
+2011-02-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Fixes #2952 less silliness in Elgg now
+
+ * engine/lib/pageowner.php: Refs #2790 - fixes it for real this time
+
+ * engine/lib/pageowner.php: Fixes #2790 adds fix from 1.7 branch into trunk
+
+2011-02-22 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * crontab.example, documentation/examples/crontab.example: Moved
+ crontab.example into documentation directory
+
+2011-02-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/actions/developers/settings.php,
+ mod/developers/languages/en.php, mod/developers/manifest.xml,
+ .../views/default/admin/developers/settings.php,
+ mod/developers/views/default/developers/css.php,
+ .../views/default/forms/developers/settings.php: started adding a settings
+ page
+
+2011-02-22 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * : hmmm... how did those get there?
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/thewire/views/default/object/thewire.php,
+ views/default/object/default.php, views/default/page/layouts/content.php,
+ views/default/user/default.php: Fixes #2950: All files that were calling into
+ layout/* now use the up-to-date locations
+
+ * .../views/default/bookmarks/page_links.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/theme_preview/icons.php,
+ mod/thewire/views/default/thewire/metadata.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/core/likes/display.php, views/default/icon/user/default.php,
+ views/default/navigation/menu/metadata.php,
+ views/default/navigation/menu/site.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/page/elements/page_links.php,
+ views/default/page/elements/topbar.php,
+ views/default/river/relationship/friend/create.php: Fixes #2980: DRY'ed up
+ all plugins to use elgg_view_icon instead of generating their own html
+
+ * views/default/forms/comments/inline.php: Deprecated forms/comments/inline
+ in favor of passing inline => TRUE to forms/comments/add
+
+ * views/default/core/river/footer.php: core river footer taking advantage of
+ new DRY comment form
+
+ * engine/lib/views.php: Refs #2980: Added an elgg_view_icon function
+
+ * views/default/graphics/ajax_loader.php: Typo in ajax_loader
+
+ * views/default/navigation/listtype.php,
+ views/default/navigation/topbar_tools.php: Cleaned up some nav views
+
+ * views/default/navigation/menu/metadata.php: Refs #2950:
+ layout/objects/list/metadata => navigation/menu/metadata
+
+ * views/default/object/elements/list_body.php,
+ views/default/page/components/list/body.php,
+ views/default/page/layouts/content.php,
+ views/default/page/layouts/widgets.php: Refs #2950: update locations of
+ layout elements + moved page/components/list/body into
+ object/elements/list_body -- not sure if this will be the final location
+
+ * views/default/navigation/viewtype.php: Added appropraite @deprecated tag
+ to navigation/viewtype
+
+ * views/default/profile/icon.php: Included proper deprecation notice with
+ deprecated view
+
+ * views/default/layout/objects/list/body.php,
+ views/default/layout/objects/list/metadata.php,
+ views/default/layout/shells/content/filter.php,
+ views/default/layout/shells/content/footer.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/content/sidebar.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/layout/shells/widgets/add_panel.php,
+ views/default/page/components/list/body.php,
+ views/default/page/layouts/content/filter.php,
+ views/default/page/layouts/content/footer.php,
+ views/default/page/layouts/content/header.php,
+ views/default/page/layouts/content/sidebar.php,
+ views/default/page/layouts/widgets/add_button.php,
+ views/default/page/layouts/widgets/add_panel.php: Refs #2950: Moved /layout/
+ views into /page/ dir -- still not satisfied with page/components/list/body,
+ page/layouts/content/* and page/layouts/widgets/add_button
+
+ * views/default/forms/comments/add.php: Dry'ed up forms/comments/add a bit
+
+ * views/default/forms/comments/add.php: merged comments/inline and
+ comments/add forms
+
+ * views/default/forms/friends/edit.php: Deleted completed @todo
+
+ * pages/friends/add.php, pages/friends/edit.php,
+ views/default/forms/friends/edit.php: forms/friends/edit no longer contains
+ input/form logic
+
+ * views/default/admin/users/add.php, views/default/forms/useradd.php:
+ Extracted input/form login from forms/useradd
+
+ * engine/lib/admin.php, views/default/admin/components/invalid_plugin.php,
+ views/default/admin/components/plugin.php,
+ .../admin/components/plugin_dependencies.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugin_settings.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/core/settings/tools.php,
+ views/default/core/settings/tools/plugin.php,
+ .../forms/admin/plugins/simple_update_states.php,
+ views/default/forms/plugins/usersettings/save.php,
+ views/default/js/admin.php, views/default/object/plugin.php,
+ views/default/object/plugin/advanced.php,
+ .../object/plugin/elements/dependencies.php,
+ views/default/object/plugin/invalid.php,
+ views/default/object/plugin/simple.php: Refs #2950: Cleanup of plugin-related
+ view structure
+
+ * views/default/output/longtext.php: output/longtext can now apply arbitrary
+ html attributes to the wrapper div
+
+ * views/default/core/dashboard/blurb.php: Cleaned up core/dashboard/blurb to
+ take advantage of the new <div> wrapper around output/longtext
+
+2011-02-21 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * pages/settings/tools.php: Removed use of deprecated set_page_owner
+
+ * views/default/admin/sidebar.php, views/default/admin/sidebar/menu.php,
+ views/default/page/layouts/admin.php: Refs #2950: Cleaned up admin sidebar
+ code
+
+ * engine/lib/deprecated-1.8.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/page/elements/owner_block.php: elgg-owner-block-menu =>
+ elgg-menu-owner-block
+
+ * views/default/admin/sidebar/menu.php,
+ views/default/layout/shells/admin/menu.php,
+ views/default/page/layouts/admin.php: Refs #2950: layout/shells/admin/menu =>
+ admin/sidebar/menu
+
+ * engine/lib/views.php, views/default/page/admin.php,
+ views/default/page/default.php, views/default/page/shells/admin.php,
+ views/default/page/shells/default.php, views/default/page/shells/upgrade.php,
+ views/default/page/shells/walled_garden.php, views/default/page/upgrade.php,
+ views/default/page/walled_garden.php: Refs #2950: Move page/shells/ directly
+ under /page/ since nowhere else in views do we use a shells directory.
+
+ * views/default/layout/objects/widget/controls.php,
+ views/default/layout/objects/widget/settings.php,
+ views/default/object/widget.php,
+ views/default/object/widget/elements/controls.php,
+ views/default/object/widget/elements/settings.php,
+ views/default/page/components/widget.php: Refs #2950: Moved widget code to
+ object/widget/*
+
+2011-02-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php: Default page owner code now ignores the query.
+ Works for pages like pg/bookmarks/add/34?address=http://google.com
+
+2011-02-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: fixed caching of user avatars
+
+ * engine/lib/admin.php, engine/lib/views.php, mod/bookmarks/start.php,
+ mod/categories/start.php, mod/custom_index/start.php,
+ .../views/default/page/shells/theme_preview.php, mod/embed/start.php,
+ mod/file/start.php, mod/groups/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/search/start.php, mod/tinymce/start.php,
+ mod/twitter/start.php, mod/zaudio/start.php, views/default/css.php,
+ views/default/css/elements/layout_objects.php, views/default/css/elgg.php,
+ views/default/css/screen.php, views/default/page/shells/default.php: Fixes
+ #2934 switching to css/elgg for css view since using a print viewtype is a
+ good idea and screen would become a confusing idea
+
+ * actions/likes/add.php, engine/classes/ElggEntity.php, languages/en.php,
+ views/default/core/likes/display.php, views/default/core/river/controls.php:
+ fixes #2885 #2569 likes controlled by canAnnotate() with plugin hook
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggObject.php, engine/classes/ElggUser.php,
+ mod/blog/classes/ElggBlog.php, mod/thewire/classes/ElggWire.php,
+ mod/thewire/start.php, views/default/core/river/controls.php: Fixes #2971
+ added canComment() method and implemented it for ElggBlog
+
+2011-02-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/activate.php,
+ actions/admin/plugins/activate_all.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/deactivate_all.php,
+ actions/admin/plugins/set_priority.php,
+ actions/admin/plugins/simple_update_states.php, install/ElggInstaller.php,
+ languages/en.php: Fixes #2452. Removed the first admin installation notice.
+ It was just a reminder to his "save" on the simple plugins screen. This is
+ pretty obvious.
+
+ * engine/lib/upgrades/2010050701.php: Fixes #2310. Rewriting
+ disable_registration to allow_registration in walled garden upgrade.
+
+ * mod/bookmarks/actions/bookmarks/save.php,
+ mod/messageboard/actions/add.php,
+ mod/messageboard/views/default/messageboard/js.php: Fixes #2719. Removing
+ hack from bookmarks add. Now appends http:// to www.example.com and validates
+ that.
+
+2011-02-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/save.php, mod/blog/lib/blog.php: fixed blog sticky
+ forms
+
+ * mod/file/index.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/view.php, mod/groups/lib/discussion.php, mod/groups/start.php,
+ mod/pages/friends.php, mod/pages/index.php, mod/pages/start.php,
+ mod/thewire/start.php: Fixes #2970 updated groups, file, pages, and wire
+ plugins for automatic page owner setting
+
+ * mod/bookmarks/actions/bookmarks/save.php: fixed sticky forms for bookmarks
+
+
+ * mod/bookmarks/views/default/object/bookmarks.php: fixed copy and paste
+ error in bookmarks
+
+ * mod/blog/lib/blog.php, mod/bookmarks/pages/add.php,
+ mod/bookmarks/pages/all.php, mod/bookmarks/pages/edit.php,
+ mod/bookmarks/pages/friends.php, mod/bookmarks/pages/owner.php,
+ mod/bookmarks/pages/view.php, mod/bookmarks/start.php: Refs #2970 updated
+ blog and bookmarks plugins
+
+2011-02-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/create_upgrade.php: Fixed a few bugs with
+ create_upgrade.php. It now also automatically increments version.php.
+
+ * version.php: Refs #2049: Missed version.php.
+
+2011-02-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php: added code to figure out page owner rather than
+ explicitly setting in all the plugin page handlers
+
+2011-02-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * ..._svn-custom_profile_fields-390ac967b0bb5665.php: Fixes #2049. Created
+ migration for 1.7 custom profile fields to 1.8.
+
+ * mod/groups/actions/delete.php: Refs #2787, #2956: Merged fix for deleting
+ group icon files on group delete to trunk.
+
+ * views/default/core/river/filter.php: Refs #2697, #2956. Ported fix to show
+ users and groups in river filter to trunk.
+
+ * engine/lib/actions.php: Refs #2833, #2956. Merged 1.7's action timeout
+ changes to 1.8.
+
+ * engine/tests/regression/trac_bugs.php: Refs #2956. Merged left out merges
+ from r2799 to trunk.
+
+ * engine/lib/elgglib.php: Refs #2749, #2956. Merged elgg_depracated_notice()
+ fixes to trunk.
+
+ * engine/lib/configuration.php: Refs #2793, #2956. Ported
+ run_function_once() and datalist_get/set() changes for values > 32 chars to
+ trunk.
+
+ * engine/lib/configuration.php: Refs #2813, #2956. Ported get_config()
+ returns null to 1.8's get_config() and elgg_get_config().
+
+ * engine/lib/notification.php: Refs #2617, #2956: Merged email notification
+ exception message fix in r7926 to trunk.
+
+ * mod/file/start.php: Refs #2765, #2956. Merged r7830 fix for group files to
+ trunk.
+
+ * engine/classes/ElggEntity.php, engine/tests/objects/entities.php: Fixes
+ #2963: Rewrote ElggEntity->setMetadata() because yikes. Wrote unit tests for
+ setting metadata on saved / unsaved entities.
+
+2011-02-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/layouts/admin.php: only include footer/analytics view
+ once on admin pages
+
+2011-02-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../actions/resend_validation.php,
+ mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ .../views/default/uservalidationbyemail/js.php,
+ .../uservalidationbyemail/unvalidated_user.php: Fixes #2658. Merged
+ uservalidationbyemail changes from 1.7 to 1.8. This plugin needs cleanup.
+
+ * engine/lib/widgets.php: Fixed problems with user-self registration if
+ default widgets are set.
+
+ * js/lib/ui.js: Removing more debug code.
+
+ * js/lib/ui.js: Removing debug code from previous.
+
+ * js/lib/ui.js: Fixes #2947: User hover menu attached to body and shows
+ regardless of overflow.
+
+ * mod/bookmarks/actions/bookmarks/save.php: Fixes #2719: Addresses are
+ checked and normalized (and checked again) for bookmarks.
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/views/default/forms/messages/send.php: Can send messages to
+ non-friends.
+
+ * languages/en.php, views/default/admin/appearance/default_widgets.php:
+ Added instructions for default widgets.
+
+ * actions/widgets/add.php: No need to say the widget was added because we
+ can see it happen.
+
+ * views/default/css/admin.php: Copied all the icons into the admin theme.
+
+ * install/ElggInstaller.php: Installation loads 3 default widgets for the
+ admin dashboard.
+
+ * views/default/css/elements/icons.php: Refs #2961: Restoring old icon CSS
+ for sprites and hover menu.
+
+ * mod/messageboard/views/default/messageboard/js.php: Fixes #2962. I hate
+ ie.
+
+ * mod/messageboard/actions/add.php, mod/messageboard/actions/delete.php,
+ mod/messageboard/ajax_endpoint/load.php, mod/messageboard/history.php,
+ mod/messageboard/index.php, mod/messageboard/languages/en.php,
+ mod/messageboard/manifest.xml, mod/messageboard/pages/owner.php,
+ mod/messageboard/start.php, .../views/default/annotation/messageboard.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ .../default/messageboard/messageboard_content.php,
+ .../views/default/widgets/messageboard/content.php,
+ .../views/default/widgets/messageboard/edit.php: Refs #2916. More cleanup of
+ the messageboard widget.
+
+ * views/default/admin/appearance/default_widgets.php: Refs #2753. Missed
+ this one.
+
+ * js/lib/ajax.js: elgg.action() now supports full URLs.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/views/default/input/longtext.php: fixed tinymce "remove
+ editor" javascript
+
+ * languages/en.php: updated language string for comments
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/elgglib.js: elgg.normalize_url() JS does the same as
+ elgg_normalize_url() PHP.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/layout/shells/custom_index.php,
+ .../views/default/page/layouts/custom_index.php: updated the custom index for
+ new views layout structure
+
+ * mod/notifications/start.php: fixed the call to unextend the user settings
+ for notifications
+
+ * views/default/page/elements/messages.php: system messages use autop() for
+ formatting rather than output/longtext
+
+ * views/default/css/elements/chrome.php,
+ views/default/forms/comments/add.php,
+ views/default/page/elements/comments.php: improved the styling of the comment
+ area
+
+ * languages/en.php, mod/blog/languages/en.php, mod/blog/lib/blog.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php,
+ mod/thewire/views/default/object/thewire.php: Fixes #2824 moved byline text
+ in core language file
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js: Avatar menus use live() so they'll work with content
+ inserted into the dom.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/chrome.php,
+ views/default/css/elements/typography.php, views/default/output/longtext.php:
+ added elgg-output class for displaying user input with typical styling for
+ lists and tables
+
+ * engine/lib/views.php: fixed typo
+
+ * views/default/page/elements/comments.php: another work around to suppress
+ incorrect warnings from elgg_view()
+
+ * views/default/input/longtext.php: added a work around for injecting
+ internal* variables to handle deprecation code - this prevents warnings from
+ being emitted for no reason
+
+ * mod/bookmarks/views/default/object/bookmarks.php,
+ views/default/css/elements/icons.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php,
+ views/default/layout/objects/list/body.php,
+ views/default/output/tagcloud.php, views/default/output/tags.php: improved
+ icon css so that they do not require having display: block
+
+ * views/default/css/screen.php: removed a $CONFIG usage in css/screen view
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/annotation/generic_comment.php: Genericked up
+ annotation/generic_comment view to allow reuse in plugins.
+
+ * install/ElggInstaller.php: Fixes #2959: Removed engine/lib/install.php
+ from ElggInstaller since it's no longer required.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/likes/display.php: fixed typo on function name
+
+2011-02-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/page_layout.php,
+ views/default/css/elements/typography.php: Moving elgg-heading-main into
+ typography
+
+ * views/default/css/elements/page_layout.php: That wasn't supposed to be
+ there...
+
+ * views/default/css/elements/page_layout.php,
+ views/default/css/elements/typography.php: Moved elgg-heading-site into
+ typography
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messageboard/actions/add.php, mod/messageboard/start.php,
+ .../views/default/forms/messageboard/add.php,
+ .../views/default/messageboard/forms/add.php,
+ mod/messageboard/views/default/messageboard/js.php,
+ .../views/default/widgets/messageboard/content.php: Refs #2916: Moved
+ messageboard js into elgg.messageboard object. Moved forms into
+ forms/messageboard. Can post now, but wow this plugin needs cleaned up.
+
+2011-02-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/views/default/messages/topbar.php: More consistent way of
+ building topbar item for messages plugin
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/actions/bookmarks/save.php: sticky form wasn't being cleared
+ in bookmarks - that's fixed now
+
+ * mod/bookmarks/views/default/object/bookmarks.php: fixed display issue when
+ a bookmark has no description text
+
+2011-02-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/theme_preview/forms.php: elgg-state-selected doesn't
+ make sense for non-default buttons
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/actions/bookmarks/delete.php: fixed forward url when
+ deleting a bookmark
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixes #2905: Admin action links on user hover menu
+ asks for confirmation.
+
+ * engine/classes/ElggMenuItem.php,
+ views/default/navigation/menu/elements/item.php: Added 4 methods to
+ ElggMenuItem: get/setLinkClass() and get/setItemClass(). This allows you to
+ put classes on the a and li tags it generates.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: added documentation for the livesearch page handler
+
+2011-02-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/page/shells/theme_preview.php,
+ .../views/default/theme_preview/forms.php: More buttons in forms theme
+ preview
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js, views/default/output/confirmlink.php: Pulled the confirm
+ link output view's JS into elgg.us. Any links with elgg-requires-confirmation
+ will get a confirm box with the title of the anchor tag as the question, or
+ the default "Are you sure?" if that doesn't exist.
+
+ * views/default/input/plaintext.php: Fixed the tab that was showing up in
+ every text area.
+
+2011-02-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/search_hooks.php: removed $CONFIG usage in search hooks
+
+ * mod/pages/views/default/pages/sidebar/history.php: Fixes #2955 fixed typo
+
+ * mod/blog/lib/blog.php, mod/thewire/tests/regex.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/forms/admin/menu/save.php: Fixes #2428 last of the $CONFIG
+ removals. Anything missed can be individual tickets
+
+2011-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/wrapper.php: Fixes #2768. min-height
+ needed a little bit more for the profile widgets.
+
+ * mod/groups/start.php: Removing test group default widget code.
+
+ * actions/widgets/add.php, actions/widgets/delete.php,
+ actions/widgets/move.php, actions/widgets/save.php, engine/lib/views.php,
+ engine/lib/widgets.php, js/lib/ui.widgets.js, languages/en.php,
+ mod/defaultwidgets/actions/update.php, mod/defaultwidgets/languages/en.php,
+ mod/defaultwidgets/manifest.xml, mod/defaultwidgets/start.php,
+ .../admin/appearance/default_dashboard_widgets.php,
+ .../admin/appearance/default_profile_widgets.php,
+ .../views/default/defaultwidgets/editor.php, mod/groups/start.php,
+ mod/profile/start.php, views/default/object/plugin.php,
+ views/default/page/components/widget.php,
+ views/default/page/layouts/widgets.php: Fixes #2753: Default widgets merged
+ into core as extensible admin section and updated to work with new widgets.
+ Will need an upgrade for users running the old default widgets in 1.7.
+
+2011-02-19 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/shells/widgets/add_panel.php: clearfix > clearfloat
+
+ * mod/developers/languages/en.php, mod/developers/start.php,
+ .../views/default/page/shells/theme_preview.php,
+ .../views/default/theme_preview/header.php,
+ .../views/default/theme_preview/index.php,
+ mod/developers/views/default/theme_preview/nav.php,
+ .../views/default/theme_preview/navigation.php: theme_preview is using more
+ familiar/correct page handling practices
+
+2011-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/pageowner.js, views/default/js/elgg.php: Added stub for page owners
+ in elgg.js
+
+ * views/default/core/likes/display.php: Fixes #2953: Like button doesn't
+ show up for logged out users.
+
+ * engine/lib/entities.php: Fixing list_registered_entities() from displaying
+ things it should. You now must explicitly register object subtypes to get
+ them to display.
+
+ * views/default/forms/plugins/settings/save.php: Fixed plugin settings save
+ form.
+
+ * .../views/default/thewire/scripts/counter.js,
+ mod/twitterservice/start.php, mod/twitterservice/twitterservice_lib.php,
+ .../views/default/twitterservice/metatags.php: Removing unneeded @copyright
+ and @license tags.
+
+2011-02-18 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: Added some color to the selected state for
+ admin page menu so we can tell what page we're on
+
+ * views/default/css/admin.php, views/default/css/elements/reset.php: Added
+ overflow-y: scroll by default so that the page doesn't get jerky when an
+ animation breaks the fold
+
+ * views/default/css/admin.php: Improved the admin menu a bit
+
+2011-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/categories/manifest.xml, mod/custom_index/manifest.xml,
+ mod/defaultwidgets/manifest.xml, mod/developers/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/embed/manifest.xml,
+ mod/externalpages/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/oauth_lib/manifest.xml,
+ mod/pages/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/twitterservice/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: Updated copyright and author information in plugin
+ manifests.
+
+2011-02-18 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php, engine/start.php: Fixes #2943: Removed
+ engine/lib/install.php
+
+2011-02-18 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/twitterservice_lib.php: Adding plugin hooks for
+ authorization and login events.
+
+2011-02-18 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php, engine/lib/river.php, engine/lib/views.php,
+ .../views/default/theme_preview/objects.php,
+ views/default/core/river/body.php, views/default/layout/objects/gallery.php,
+ views/default/layout/objects/image_block.php,
+ views/default/layout/objects/list.php,
+ views/default/layout/objects/module.php,
+ views/default/layout/objects/widget.php, views/default/object/widget.php,
+ views/default/page/components/gallery.php,
+ views/default/page/components/image_block.php,
+ views/default/page/components/list.php,
+ views/default/page/components/module.php,
+ views/default/page/components/widget.php,
+ views/default/page/elements/owner_block.php, views/default/river/item.php:
+ Refs #2950: layout/objects => page/components
+
+2011-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/layouts/widgets.php: Removed unused var in widgets
+ layout.
+
+2011-02-18 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, views/default/layout/shells/admin.php,
+ views/default/layout/shells/content.php,
+ views/default/layout/shells/default.php,
+ views/default/layout/shells/one_column.php,
+ views/default/layout/shells/one_sidebar.php,
+ .../layout/shells/two_column_left_sidebar.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/layout/shells/widgets.php,
+ views/default/page/layouts/admin.php, views/default/page/layouts/content.php,
+ views/default/page/layouts/default.php,
+ views/default/page/layouts/one_column.php,
+ views/default/page/layouts/one_sidebar.php,
+ .../page/layouts/two_column_left_sidebar.php,
+ views/default/page/layouts/two_sidebar.php,
+ views/default/page/layouts/widgets.php: Refs #2950: layout/shells =>
+ page/layouts
+
+ * engine/lib/views.php, mod/search/views/default/search/list.php,
+ views/default/layout/elements/comments.php,
+ views/default/layout/elements/owner_block.php,
+ views/default/layout/elements/page_links.php,
+ views/default/layout/elements/sidebar.php,
+ views/default/layout/elements/title.php,
+ views/default/layout/shells/one_sidebar.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/page/elements/comments.php,
+ views/default/page/elements/owner_block.php,
+ views/default/page/elements/page_links.php,
+ views/default/page/elements/sidebar.php,
+ views/default/page/elements/title.php: Refs #2950: layout/elements =>
+ page/elements
+
+ * views/default/admin/statistics/overview.php: @todos for refactoring admin
+ statistics
+
+2011-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginPackage.php, languages/en.php: Fixes #2945, Refs
+ #2946. Plugins that require priority on an uninstalled plugin don't crash the
+ plugins admin.
+
+ * .../views/default/bookmarks/page_links.php: Don't show the bookmark this
+ link if you're not logged in.
+
+2011-02-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/views/default/file/css.php,
+ .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/icon/object/file.php,
+ views/default/css/elements/chrome.php,
+ views/default/css/elements/layout_objects.php: improved .elgg-gallery and
+ added .elgg-photo
+
+2011-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php: Refs #2847. Install now sets the
+ viewspath_cache_enabled.
+
+ * engine/lib/cache.php, install/ElggInstaller.php: Refs #2847. Fixed
+ simplecache settings and functionality for initial installation.
+
+ * engine/lib/database.php, engine/lib/deprecated-1.8.php,
+ engine/lib/upgrades/create_upgrade.php, engine/lib/version.php,
+ install/ElggInstaller.php, upgrade.php: Fixes #1433, #2183. Upgrades are now
+ tracked and will be run if needed regardless of version.
+
+2011-02-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/twitterservice_lib.php: Fixes faulty logic in twitter
+ services that allowed new users to register via twitter when site
+ registration was off.
+
+ * views/default/admin/components/plugin_settings.php: Fixes #2938: Restored
+ the $vars['entity'] in plugin settings for backward compatibility with
+ plugins.
+
+2011-02-17 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/components/plugin_settings.php: Cleaned up a manual
+ implementation of elgg-module
+
+2011-02-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_bookmarklet.gif, mod/bookmarks/graphics/bookmark.gif,
+ mod/bookmarks/graphics/bookmarklet.gif, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/bookmarks/js.php,
+ .../views/default/bookmarks/page_links.php: Further cleanup of bookmarks.
+ Moved bookmarklet to plugin. Pulled in the 1.7 bookmark pin and made the
+ "Bookmark this page" less ugly. Added js to append the title.
+
+ * mod/bookmarks/actions/bookmarks/edit.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/group_module.php,
+ .../default/bookmarks/groupprofile_bookmarks.php,
+ .../views/default/forms/bookmarks/save.php: Fixes #2680. Added group profile
+ bookmark widget. Fixed a problem editing bookmarks.
+
+ * mod/bookmarks/pages/owner.php: Hiding the filter tabs for bookmarks when
+ not in a filter context.
+
+ * views/default/layout/shells/content/filter.php: Fixed typo in filter nav
+ view.
+
+ * mod/bookmarks/lib/bookmarks.php, mod/bookmarks/pages/add.php,
+ mod/bookmarks/pages/edit.php, mod/bookmarks/pages/owner.php,
+ mod/bookmarks/start.php: Fixes #2680: Added group support to bookmarks
+ plugin.
+
+ * mod/bookmarks/bookmarklet.php, mod/bookmarks/languages/en.php,
+ mod/bookmarks/lib/bookmarks.php, mod/bookmarks/pages/add.php,
+ mod/bookmarks/pages/all.php, mod/bookmarks/pages/bookmarklet.php,
+ mod/bookmarks/pages/friends.php, mod/bookmarks/pages/owner.php,
+ mod/bookmarks/start.php, .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/owner_block.php,
+ mod/bookmarks/views/default/bookmarks/sharing.php,
+ .../default/river/object/bookmarks/annotate.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/edit.php: Refs #2680: Bookmarks revamp,
+ part 3: menus and bookmarklet.
+
+2011-02-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/file/views/default/object/file.php: calling the new category output view
+ in the plugins - looks like the pages plugin is missing the categories code
+
+ * mod/tinymce/start.php: added tinymce to admin css
+
+2011-02-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/widget/settings.php: Fixes #2915. Can edit
+ widget settings again.
+
+ * mod/bookmarks/actions/bookmarks/add.php,
+ mod/bookmarks/actions/bookmarks/delete.php,
+ mod/bookmarks/actions/bookmarks/save.php, mod/bookmarks/lib/bookmarks.php,
+ mod/bookmarks/pages/add.php, mod/bookmarks/pages/edit.php,
+ mod/bookmarks/pages/inbox.php, mod/bookmarks/pages/view.php,
+ mod/bookmarks/start.php, .../views/default/forms/bookmarks/save.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/widgets/bookmarks/content.php,
+ .../views/default/widgets/bookmarks/edit.php,
+ .../views/default/widgets/bookmarks/view.php: Refs #2680. Bookmarks revamp,
+ part 2.
+
+2011-02-16 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/groups/start.php, mod/messages/start.php, mod/pages/start.php,
+ mod/profile/start.php, mod/thewire/start.php: Updated
+ register_entity_url_handler => elgg_* in plugins. Used this regex:
+ ([^_a-z])register_entity_url_handler\((.*),(.*,.*)\);
+
+2011-02-15 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.7.php, engine/lib/deprecated-1.8.php,
+ engine/lib/elgglib.php, engine/lib/install.php, engine/lib/pam.php,
+ engine/lib/views.php, engine/lib/widgets.php: Moved all deprecated core
+ functions into the appropriate deprecation fine
+
+ * engine/lib/entities.php, engine/lib/users.php, mod/blog/start.php,
+ mod/bookmarks/start.php, mod/file/start.php, mod/groups/start.php,
+ mod/pages/start.php, mod/thewire/start.php: Removed all calls to deprecated
+ register_entity_type
+
+ * actions/admin/site/update_advanced.php, engine/handlers/cache_handler.php,
+ engine/lib/actions.php, engine/lib/admin.php, engine/lib/cache.php,
+ engine/lib/deprecated-1.8.php, engine/lib/upgrades/2010060101.php,
+ engine/lib/views.php, engine/start.php,
+ .../views/default/page/shells/theme_preview.php, mod/notifications/index.php,
+ mod/profile/start.php, views/default/core/friends/picker.php,
+ views/default/page/elements/head.php: Fixes #2923: Removed "view" prefix from
+ simplecache function names
+
+ * engine/lib/elgglib.php: Fixes #2695: Return false on autoload fail, rather
+ than throwing exception
+
+ * engine/lib/entities.php: Fixes #2777: delete_entity is now recursive
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php,
+ engine/lib/entities.php, engine/lib/extender.php, engine/lib/metadata.php,
+ engine/lib/relationships.php: Fixes #2860: Deprecated several registration
+ functions that were using the 'callback-first' ordering
+
+ * views/default/css/elements/grid.php: Fixes #2924: elgg-grid clearfixes
+
+ * engine/lib/entities.php: Fixes #2476: update_entity_last_action()
+ sanitizes posted time.
+
+2011-02-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Updated egef_plugin_user_settings() to accept
+ plugin_id instead of plugin_name.
+
+ * engine/lib/upgrades/2011010101.php: Fixes #2926: Fixed upgrade for plugin
+ user settings.
+
+2011-02-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/languages/en.php: added language strings for theme preview
+
+2011-02-15 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/shells/walled_garden.php: Refs #2693: Walledgarden code
+ cleanup -- Too much custom code
+
+2011-02-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/start.php,
+ mod/developers/views/default/developers/ipsum.php,
+ .../views/default/theme_preview/forms.php,
+ .../views/default/theme_preview/general.php,
+ .../views/default/theme_preview/objects.php,
+ .../views/default/theme_preview/widgets.php: moved lorem ipsum into a view
+
+2011-02-15 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/lib/blog.php, mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/input/datetime.php,
+ mod/blog/views/default/widgets/blog/edit.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ mod/bookmarks/views/default/bookmarks/sharing.php,
+ mod/categories/views/default/input/categories.php,
+ .../views/default/settings/categories/edit.php,
+ .../views/default/defaultwidgets/editor.php,
+ .../views/default/theme_preview/forms.php,
+ mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/upload/content.php,
+ .../views/default/forms/expages/edit.php,
+ mod/file/views/default/file/embed_upload.php,
+ mod/file/views/default/forms/file/upload.php,
+ mod/file/views/default/widgets/filerepo/edit.php,
+ .../default/settings/garbagecollector/edit.php,
+ mod/groups/views/default/forms/discussion/save.php,
+ mod/groups/views/default/forms/groups/delete.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forms/groups/search.php,
+ mod/groups/views/default/settings/groups/edit.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ .../views/default/settings/logrotate/edit.php, mod/messages/read.php,
+ .../views/default/forms/messages/process.php,
+ .../views/default/forms/messages/reply.php,
+ mod/messages/views/default/forms/messages/send.php,
+ .../notifications/subscriptions/forminternals.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ .../views/default/forms/reportedcontent/add.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/widgets/reportedcontent/edit.php,
+ .../views/default/widgets/tagcloud/edit.php,
+ mod/thewire/views/default/forms/thewire/add.php,
+ mod/thewire/views/default/widgets/thewire/edit.php,
+ mod/tinymce/views/default/input/longtext.php,
+ .../views/default/settings/twitterservice/edit.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ .../uservalidationbyemail/unvalidated_user.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/friends/picker.php, views/default/core/river/controls.php,
+ views/default/core/river/filter.php, views/default/core/river/footer.php,
+ .../core/settings/account/default_access.php,
+ views/default/core/settings/account/email.php,
+ views/default/core/settings/account/language.php,
+ views/default/core/settings/account/name.php,
+ .../core/settings/account/notifications.php,
+ views/default/core/settings/account/password.php,
+ views/default/forms/admin/menu/save.php,
+ views/default/forms/admin/site/update_advanced.php,
+ views/default/forms/admin/site/update_basic.php,
+ views/default/forms/avatar/crop.php, views/default/forms/avatar/upload.php,
+ views/default/forms/comments/add.php,
+ views/default/forms/comments/inline.php,
+ views/default/forms/friends/edit.php, views/default/forms/login.php,
+ views/default/forms/members/name_search.php,
+ views/default/forms/members/tag_search.php,
+ views/default/forms/plugins/settings/save.php,
+ views/default/forms/profile/edit.php,
+ views/default/forms/profile/fields/add.php, views/default/forms/register.php,
+ views/default/forms/user/passwordreset.php,
+ views/default/forms/user/requestnewpassword.php,
+ views/default/forms/useradd.php, views/default/forms/widgets/save.php,
+ views/default/graphics/ajax_loader.php, views/default/input/access.php,
+ views/default/input/checkboxes.php, views/default/input/datepicker.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/radio.php, views/default/input/securitytoken.php,
+ views/default/input/userpicker.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_panel.php,
+ views/default/navigation/tabs.php,
+ views/default/widgets/content_stats/edit.php,
+ views/default/widgets/friends/edit.php,
+ views/default/widgets/new_users/edit.php,
+ views/default/widgets/online_users/edit.php,
+ views/installation/input/access.php, views/installation/input/button.php,
+ views/installation/input/checkboxes.php,
+ views/installation/input/dropdown.php, views/installation/input/form.php,
+ views/installation/input/hidden.php, views/installation/input/longtext.php,
+ views/installation/input/password.php,
+ views/installation/input/securitytoken.php,
+ views/installation/input/text.php,
+ views/installation/install/forms/template.php: Fixes #2921: converted
+ internalname => name and internalid => id
+
+ * engine/lib/cache.php, engine/lib/views.php: Fixes #2920: Moved simplecache
+ functions into cache.php
+
+ * engine/classes/ElggBatch.php, engine/classes/ElggPluginManifest.php,
+ engine/lib/admin.php, engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/lib/metastrings.php, engine/lib/plugins.php, engine/lib/river.php,
+ engine/lib/views.php, engine/lib/xml.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/forms/file/upload.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/forms/discussion/save.php,
+ mod/groups/views/default/groups/edit.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/messages/views/default/forms/messages/send.php,
+ mod/messages/views/default/object/messages.php,
+ mod/pages/views/default/object/page_top.php,
+ .../views/default/pages/sidebar/navigation.php,
+ mod/profile/views/default/profile/owner_block.php,
+ mod/thewire/views/default/forms/thewire/add.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/metadata.php,
+ mod/uservalidationbyemail/start.php,
+ .../uservalidationbyemail/unvalidated_user.php,
+ views/default/admin/components/invalid_plugin.php,
+ .../admin/components/plugin_dependencies.php,
+ views/default/annotation/generic_comment.php,
+ views/default/forms/plugins/settings/save.php,
+ views/default/forms/widgets/save.php, views/default/icon/user/default.php,
+ views/default/input/checkboxes.php, views/default/input/radio.php,
+ views/default/layout/elements/comments.php,
+ views/default/layout/objects/gallery.php,
+ views/default/layout/objects/image_block.php,
+ views/default/layout/objects/list.php,
+ views/default/layout/objects/list/body.php,
+ views/default/layout/objects/list/metadata.php,
+ views/default/layout/objects/module.php,
+ views/default/layout/objects/widget.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/shells/content.php,
+ views/default/layout/shells/content/filter.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_panel.php,
+ views/default/navigation/breadcrumbs.php,
+ views/default/navigation/menu/elements/group.php,
+ views/default/navigation/menu/user_hover.php,
+ views/default/navigation/pagination.php, views/default/navigation/tabs.php,
+ views/default/object/plugin.php, views/default/output/confirmlink.php,
+ views/default/output/longtext.php, views/default/output/url.php,
+ views/default/page/elements/body.php, views/default/profile/icon.php,
+ views/rss/layout/objects/list.php: Fixes #2808: elgg_get_array_value =>
+ elgg_extract
+
+ * js/lib/userpicker.js, views/default/input/autocomplete.php,
+ views/default/input/userpicker.php: Refs #2102: addressing more
+ userpicker/autocomplete bugs
+
+ * views/default/input/autocomplete.php: Refs #2102: Some input/autocomplete
+ fixes
+
+ * documentation/stubs/config.php, engine/handlers/page_handler.php,
+ engine/lib/admin.php, engine/lib/cron.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/input.php, engine/lib/pagehandler.php,
+ engine/lib/river.php, engine/lib/tags.php, engine/lib/user_settings.php,
+ engine/lib/users.php, js/lib/friends_picker.js, mod/blog/start.php,
+ mod/bookmarks/start.php, mod/categories/start.php, mod/developers/start.php,
+ mod/diagnostics/start.php, mod/embed/start.php, mod/externalpages/start.php,
+ mod/file/start.php, mod/groups/start.php, mod/invitefriends/start.php,
+ mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/search/start.php, mod/thewire/start.php,
+ mod/twitterservice/start.php, mod/uservalidationbyemail/start.php: Replaced
+ all occurrences of register_page_handler in core with
+ elgg_register_page_handler
+
+ * views/default/js/friendsPickerv1.php: Friendspicker was moved to
+ js/lib/friends_picker.js
+
+ * js/lib/userpicker.js, views/default/input/userpicker.php: Refs #2102:
+ Replace input/userpicker with jQuery UI autocomplete
+
+ * htaccess_dist: Combining two rewrite rules into one
+
+2011-02-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/autocomplete.js, views/default/input/autocomplete.php: Refs #2102:
+ Replaced input/autocomplete with jQuery UI autocomplete (untested)
+
+ * engine/lib/deprecated-1.8.php, engine/lib/pagehandler.php: Prepended elgg_
+ to (un)register_page_handler() functions. Deprecated old ones
+
+ * views/default/js/initialize_elgg.php,
+ views/default/page/elements/head.php: Views in the js/ directory should not
+ contain <script> tags
+
+2011-02-14 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/twitterservice_lib.php: Saving avatar filename with
+ user GUID instead of old-style username.
+
+2011-02-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/elgg.php: Removed unnecessary deprecated javascript
+ function
+
+ * js/lib/languages.js, js/lib/session.js, js/lib/ui.widgets.js: No need for
+ double-namespacing of javascript functions
+
+ * mod/developers/views/default/developers/css.php: Give the css preview a
+ little more vertical breathing room
+
+ * engine/lib/views.php: Refs #2610: Custom template handler for views now
+ sent through call_user_func
+
+ * engine/lib/views.php: Refs #2124: Adding backwards compatibility
+ conversions for internalname/internalid
+
+ * views/default/page/elements/body.php,
+ views/default/page/elements/footer.php,
+ views/default/page/elements/header.php,
+ views/default/page/elements/messages.php,
+ views/default/page/elements/topbar.php, views/default/page/shells/admin.php,
+ views/default/page/shells/default.php: Cleaned up views/default/page/
+ directory
+
+ * engine/lib/views.php, vendors/jquery/jquery-1.4.2.min.js,
+ vendors/jquery/jquery-1.5.min.js, vendors/jquery/jquery-ui-1.7.2.min.js,
+ vendors/jquery/jquery-ui-1.8.9.min.js: Refs #2525: jQuery => 1.5, jQuery UI
+ => 1.8.9
+
+ * views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php,
+ views/default/css/elements/modules.php: More cleanup of login/forms css --
+ converted login_dropdown to use elgg-toggler pattern
+
+ * js/lib/ui.js: Fixes #2902: Added elgg-toggler pattern.
+
+2011-02-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: remove some unused css from admin theme
+
+2011-02-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggBatch.php: Clearing caches in ElggBatch.
+
+ * engine/handlers/cache_handler.php: Cache handler won't serve up cached
+ pages if caching is disabled. Refs #2758: Added call to
+ elgg_view_regenerate_simplecache() on cache misses if cache is enabled.
+ Leaving #2758 open in case Cash has a better idea since he's more familiar
+ with the simple cache changes.
+
+ * engine/classes/ElggEntity.php, engine/lib/metadata.php: Removed last of
+ deprecated metadata calls in trunk.
+
+ * actions/comments/delete.php, actions/likes/delete.php,
+ actions/profile/edit.php, engine/classes/ElggAnnotation.php,
+ engine/classes/ElggEntity.php, engine/classes/ElggRiverItem.php,
+ engine/handlers/export_handler.php, engine/lib/annotations.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/tests/api/entity_getter_functions.php,
+ engine/tests/api/metastrings.php, engine/tests/regression/trac_bugs.php,
+ mod/blog/lib/blog.php, mod/messageboard/actions/delete.php,
+ mod/pages/revision.php: Updated trunk to use new annotation functions. Added
+ checks for annotations_* options vs annotation_* options because it's so easy
+ to confuse.
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggUser.php,
+ engine/lib/entities.php: Fixes #2918. Moved annotation/metadata delete
+ functions from ElggUser to ElggEntity. When deleted, entities now correctly
+ delete metadata they own as well as metadata on them. Removed uses of
+ deprecated functions.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php: More fixes to annotations/metadata changes. Now
+ all function support getting via a metastring id.
+
+ * engine/lib/relationships.php: Fixes #2914. Merged fix for r.time_created
+ sorting to trunk.
+
+2011-02-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/developers/start.php, .../views/default/theme_preview/forms.php,
+ .../views/default/theme_preview/header.php, views/default/icon/default.php:
+ getting rid of some warnings in theme preview
+
+ * mod/developers/start.php, .../views/default/admin/developers/preview.php,
+ .../views/default/theme_preview/forms.php,
+ .../views/default/theme_preview/general.php,
+ .../views/default/theme_preview/grid.php,
+ .../views/default/theme_preview/header.php,
+ .../views/default/theme_preview/icons.php,
+ mod/developers/views/default/theme_preview/nav.php,
+ .../views/default/theme_preview/objects.php,
+ .../views/default/theme_preview/widgets.php: Refs #2903 navigation updated
+ for theme preview
+
+2011-02-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php,
+ engine/lib/elgglib.php, engine/lib/metadata.php,
+ engine/tests/api/metastrings.php,
+ mod/pages/views/default/object/page_top.php: Refs #2912. Added checks for
+ constraints in dangerous functions. Unit tests no longer remove all
+ metadata/annotations.
+
+2011-02-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/theming/preview/forms.php,
+ documentation/theming/preview/general.php,
+ documentation/theming/preview/grid.php,
+ documentation/theming/preview/head.php,
+ documentation/theming/preview/icons.php,
+ documentation/theming/preview/index.php,
+ documentation/theming/preview/nav.php,
+ documentation/theming/preview/objects.php,
+ documentation/theming/preview/widgets.php, mod/developers/start.php,
+ .../views/default/page/shells/theme_preview.php,
+ .../views/default/theme_preview/forms.php,
+ .../views/default/theme_preview/general.php,
+ .../views/default/theme_preview/grid.php,
+ .../views/default/theme_preview/icons.php,
+ .../views/default/theme_preview/index.php,
+ mod/developers/views/default/theme_preview/nav.php,
+ .../views/default/theme_preview/objects.php,
+ .../views/default/theme_preview/widgets.php: Refs #2903 moving theme preview
+ into developers plugin - navigation and titles are broken
+
+2011-02-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php, engine/lib/entities.php,
+ engine/tests/objects/entities.php: Deprecated ElggEntity->clearMetadata() by
+ ElggEntity->deleteMetadata(). Disabling entities now disables their
+ annotations and metadata. Enabling entities enables annotations and metadata.
+ Fixes #1115.
+
+ * engine/classes/ElggBatch.php: If using a callback in ElggBatch, make sure
+ there's an initial value to return.
+
+ * engine/lib/metastrings.php: Allowing metastrings_type for metastring-based
+ object functions.
+
+2011-02-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: added tabs to admin theme
+
+ * mod/externalpages/actions/add.php, mod/externalpages/actions/addfront.php,
+ mod/externalpages/actions/edit.php, mod/externalpages/index.php,
+ mod/externalpages/languages/en.php, mod/externalpages/manifest.xml,
+ mod/externalpages/read.php, mod/externalpages/start.php,
+ .../views/default/expages/analytics.php,
+ mod/externalpages/views/default/expages/css.php,
+ .../views/default/expages/footer_menu.php,
+ .../views/default/expages/forms/edit.php,
+ .../views/default/expages/forms/editfront.php,
+ .../views/default/expages/front_left.php,
+ .../views/default/expages/front_right.php,
+ mod/externalpages/views/default/expages/menu.php,
+ .../views/default/forms/expages/edit.php,
+ mod/externalpages/views/default/object/expages.php: updates externalpages to
+ 1.8
+
+2011-02-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggMetadata.php, engine/lib/annotations.php,
+ engine/lib/deprecated-1.8.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/tests/api/metastrings.php: Refs #2907. DRY'd up and abstracted out a
+ lot of metadata / annotation functions so I can implement #1115 with a clean
+ conscious.
+
+2011-02-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/externalpages/actions/add.php, mod/externalpages/actions/addfront.php,
+ mod/externalpages/index.php, mod/externalpages/languages/en.php,
+ mod/externalpages/manifest.xml, mod/externalpages/read.php,
+ mod/externalpages/start.php, .../views/default/expages/analytics.php,
+ mod/externalpages/views/default/expages/css.php,
+ .../views/default/expages/footer_menu.php,
+ .../views/default/expages/forms/edit.php,
+ .../views/default/expages/forms/editfront.php,
+ .../views/default/expages/front_left.php,
+ .../views/default/expages/front_right.php,
+ mod/externalpages/views/default/expages/menu.php,
+ mod/externalpages/views/default/object/expages.php, mod/sitepages/README.txt,
+ mod/sitepages/actions/edit_settings.php, mod/sitepages/index.php,
+ mod/sitepages/languages/en.php, mod/sitepages/manifest.xml,
+ mod/sitepages/sitepages_functions.php, mod/sitepages/start.php,
+ .../views/default/admin/site/sitepages.php,
+ .../views/default/canvas/layouts/frontpage.php,
+ mod/sitepages/views/default/sitepages/css.php,
+ .../views/default/sitepages/custom_frontpage.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ .../views/default/sitepages/keywords/sitestats.php,
+ .../views/default/sitepages/keywords/userlist.php,
+ mod/sitepages/views/default/sitepages/members.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/sitepages/views/default/sitepages/metatags.php,
+ mod/sitepages/views/default/sitepages/sidebar.php,
+ mod/sitepages/views/default/sitepages/welcome.php: swapping sitepages for
+ externalpages since the external pages is easier to integrate into 1.8 .
+ sitepages needs more work before it is ready for release (plus we would need
+ an upgrade script)
+
+ * engine/lib/entities.php: Refs #2301 demoting type:subtype warnings to
+ notices
+
+ * actions/email/save.php, actions/user/default_access.php,
+ actions/user/language.php, actions/user/name.php, actions/user/password.php,
+ engine/lib/user_settings.php, engine/lib/users.php,
+ views/default/core/settings/account/language.php,
+ views/default/forms/account/settings.php: Fixes #2848 pulls user settings
+ code out of actions into functions. We should investigate putting them in a
+ library that is only loaded on demand
+
+ * engine/lib/user_settings.php, engine/lib/usersettings.php,
+ engine/start.php, install/ElggInstaller.php: user settings library is now
+ user_settings.php
+
+ * engine/lib/admin.php: documentation update for admin functions
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/admin.php, languages/en.php,
+ views/default/layout/shells/admin/menu.php: admin menu uses weights for
+ ordering
+
+2011-02-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggBatch.php: Additional checking in ElggBatch for valid
+ key.
+
+2011-02-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/confirmlink.php, views/default/output/dropdown.php,
+ views/default/output/email.php, views/default/output/pulldown.php,
+ views/default/output/radio.php, views/default/output/text.php,
+ views/default/output/url.php: Fixed #2218 finished up the encoding issues by
+ turning of double encoding
+
+ * mod/categories/views/default/categories/css.php,
+ mod/categories/views/default/input/categories.php: categories are listed
+ horizontally
+
+2011-02-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggBatch.php: Added ability to get results of callback
+ function in ElggBatch.
+
+ * engine/classes/ElggBatch.php: Fixed ElggBatch problems when specifying a
+ limit of 0. Fixed a shoot yourself in the foot situation if passing a dumb
+ number to chunk size.
+
+ * engine/classes/ElggBatch.php: Added ElggBatch class for more efficient
+ batch operations on large sets of Elgg* objects.
+
+2011-02-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/shells/admin.php: added the footer analytics view for
+ js
+
+ * mod/custom_index/index.php, mod/custom_index/languages/en.php,
+ mod/custom_index/manifest.xml, mod/custom_index/start.php,
+ .../views/default/canvas/layouts/new_index.php,
+ .../views/default/custom_index/css.php,
+ .../views/default/layout/shells/custom_index.php: updated custom index for
+ 1.8
+
+2011-02-13 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/account/login_dropdown.php,
+ views/default/css/elements/misc.php: Renamed signin to elgg-button-dropdown
+
+ * views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/misc.php, views/default/css/elements/modules.php,
+ views/default/forms/login.php: Progress refactoring the login dropdown and
+ login forms -- not quite there yet, though Added another module: dropdown.
+
+2011-02-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/custom_index/index.php, mod/custom_index/languages/en.php,
+ mod/custom_index/manifest.xml, mod/custom_index/start.php,
+ .../views/default/canvas/layouts/new_index.php,
+ .../views/default/custom_index/css.php: moved custom_index back into core
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/layout_objects.php: Updated docs for
+ layout_objects
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php, views/default/core/river/footer.php: Refs
+ #650. Replaced count_annotations().
+
+ * mod/pages/views/default/pages/sidebar/history.php,
+ views/default/core/likes/display.php, views/default/core/river/controls.php,
+ views/default/layout/elements/comments.php: Refs #650. Replaced
+ list_annotations() by elgg_list_annotations().
+
+ * engine/classes/ElggEntity.php, engine/lib/views.php,
+ mod/messageboard/history.php: Updated a few recent calls to
+ elgg_get_annotations() to use 'reverse_order_by' => true.
+
+ * engine/lib/metastrings.php: Refs #2906. Missed a file.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php: Fixes #2906. Added
+ elgg_sql_reverse_order_by() and wired it up to ege() and ega(). Pass
+ 'reverse_order_by' => true in option arrays.
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php, mod/thewire/actions/delete.php,
+ mod/thewire/add.php, mod/thewire/everyone.php, mod/thewire/index.php,
+ mod/thewire/languages/en.php, mod/thewire/manifest.xml,
+ mod/thewire/pages/everyone.php, mod/thewire/pages/friends.php,
+ mod/thewire/pages/previous.php, mod/thewire/pages/reply.php,
+ mod/thewire/pages/tag.php, mod/thewire/pages/thread.php,
+ mod/thewire/pages/user.php, mod/thewire/readme.txt, mod/thewire/start.php,
+ mod/thewire/tests/regex.php, mod/thewire/views/default/forms/thewire/add.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/thewire/views/default/thewire/metadata.php,
+ mod/thewire/views/default/thewire/notfound.php,
+ .../views/default/thewire/profile_status.php,
+ mod/thewire/views/default/thewire/reply.php,
+ mod/thewire/views/default/thewire/view.php,
+ .../views/default/widgets/thewire/content.php,
+ mod/thewire/views/default/widgets/thewire/edit.php: a mostly completed port
+ of JHU/APL wire plugin to 1.8
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php, engine/lib/annotations.php,
+ engine/lib/views.php, engine/tests/objects/entities.php,
+ mod/messageboard/history.php, views/default/core/likes/display.php,
+ views/default/core/river/controls.php, views/default/core/river/footer.php:
+ Refs #650. Replaced calls to get_annotations() by elgg_get_annotations().
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/details.php: added the status view into
+ details on profile page
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php, engine/lib/users.php,
+ views/default/forms/profile/edit.php: Refs #650. Replaced uses for
+ get_metadata_byname() by elgg_get_metadata()
+
+ * engine/classes/ElggMetadata.php, engine/handlers/export_handler.php,
+ engine/lib/deprecated-1.8.php, engine/lib/metadata.php: Refs #650. Changed
+ elgg_get_metadata_by_id() to elgg_get_metadata_from_id() to be consistent
+ with other functions.
+
+ * engine/classes/ElggMetadata.php, engine/handlers/export_handler.php,
+ engine/lib/metadata.php: Refs #650. Replaced get_metadata() by
+ elgg_get_metadata_by_id()
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggFile.php,
+ engine/lib/metadata.php, engine/lib/notification.php,
+ views/default/export/entity.php: Refs #650: Replaced uses of
+ get_metadata_for_entity() by elgg_get_metadata().
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/list/body.php: allow plugins to decline the
+ addition of tags to their entity list view
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php, engine/lib/metadata.php: Deprecated
+ get_metadata() by elgg_get_metadata_by_id() to avoid confusion with
+ elgg_get_metadata(). Not in love with the name...had considered
+ elgg_get_metadatum(). Open to suggestions.
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php: Refs #650: Deprecated
+ find_metadata() with elgg_get_metadata(). Deprecated
+ get_metadata_for_entity() and get_metadata_byname() <twitch>. Added
+ elgg_get_metastrings_based_objects() to deal with the commonalities between
+ the metadata and annotation getter functions.
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/checkboxes.php: Label wraps checkbox for usability
+
+ * mod/minify/lib/min/.htaccess, mod/minify/lib/min/README.txt,
+ mod/minify/lib/min/builder/_index.js, mod/minify/lib/min/builder/bm.js,
+ mod/minify/lib/min/builder/index.php, mod/minify/lib/min/builder/ocCheck.php,
+ mod/minify/lib/min/builder/rewriteTest.js, mod/minify/lib/min/config.php,
+ mod/minify/lib/min/groupsConfig.php, mod/minify/lib/min/index.php,
+ mod/minify/lib/min/lib/CSS.php, mod/minify/lib/min/lib/FirePHP.php,
+ mod/minify/lib/min/lib/HTTP/ConditionalGet.php,
+ mod/minify/lib/min/lib/HTTP/Encoder.php, mod/minify/lib/min/lib/JSMin.php,
+ mod/minify/lib/min/lib/JSMinPlus.php, mod/minify/lib/min/lib/Minify.php,
+ mod/minify/lib/min/lib/Minify/Build.php,
+ mod/minify/lib/min/lib/Minify/CSS/Compressor.php,
+ mod/minify/lib/min/lib/Minify/CSS/UriRewriter.php,
+ mod/minify/lib/min/lib/Minify/Cache/APC.php,
+ mod/minify/lib/min/lib/Minify/Cache/File.php,
+ mod/minify/lib/min/lib/Minify/Cache/Memcache.php,
+ mod/minify/lib/min/lib/Minify/CommentPreserver.php,
+ mod/minify/lib/min/lib/Minify/Controller/Base.php,
+ mod/minify/lib/min/lib/Minify/Controller/Files.php,
+ .../lib/min/lib/Minify/Controller/Groups.php,
+ .../lib/min/lib/Minify/Controller/MinApp.php,
+ mod/minify/lib/min/lib/Minify/Controller/Page.php,
+ .../lib/min/lib/Minify/Controller/Version1.php,
+ mod/minify/lib/min/lib/Minify/HTML.php,
+ mod/minify/lib/min/lib/Minify/ImportProcessor.php,
+ mod/minify/lib/min/lib/Minify/Lines.php,
+ mod/minify/lib/min/lib/Minify/Logger.php,
+ mod/minify/lib/min/lib/Minify/Packer.php,
+ mod/minify/lib/min/lib/Minify/Source.php,
+ mod/minify/lib/min/lib/Minify/YUICompressor.php,
+ mod/minify/lib/min/lib/Solar/Dir.php, mod/minify/lib/min/utils.php,
+ mod/minify/manifest.xml, mod/minify/start.php: Doh, how did this get here?
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/examples/plugins/manifest.xml,
+ engine/tests/test_files/plugin_18/manifest.xml: Refs #2898: Updated docs and
+ test manifest for the xmlns changes.
+
+ * engine/classes/ElggPluginManifest.php, mod/blog/manifest.xml,
+ mod/bookmarks/manifest.xml, mod/categories/manifest.xml,
+ mod/defaultwidgets/manifest.xml, mod/developers/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/embed/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/minify/manifest.xml, mod/notifications/manifest.xml,
+ mod/oauth_lib/manifest.xml, mod/pages/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/sitepages/manifest.xml, mod/tagcloud/manifest.xml,
+ mod/thewire/manifest.xml, mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/twitterservice/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: Refs #2898: Using an XML namespace instead of
+ version attribute on plugin manifests.
+
+ * mod/twitterservice/languages/en.php,
+ mod/twitterservice/twitterservice_lib.php,
+ .../views/default/settings/twitterservice/edit.php: Cleaned up more
+ twitterservice code. Twitter usernames now have random digits appended upon
+ name collision. Added the option for admins to allow twitter sign up even if
+ site registration is disabled.
+
+ * actions/admin/user/delete.php: Deleting a user from his profile forwards
+ to the right page.
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/delete.php, mod/file/actions/file/upload.php,
+ mod/pages/actions/pages/delete.php: Fixed #2887 redirects on blog, file, and
+ pages works now - bookmarks plugin still needs plenty of work
+
+ * mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, .../actions/reportedcontent/add.php,
+ .../actions/reportedcontent/archive.php,
+ .../actions/reportedcontent/delete.php, mod/reportedcontent/start.php,
+ .../views/default/forms/reportedcontent/add.php,
+ .../views/default/reportedcontent/form.php: updated reported content to use
+ elgg_view_form
+
+ * views/default/css/admin.php,
+ views/default/forms/admin/site/update_advanced.php,
+ views/default/forms/admin/site/update_basic.php,
+ views/default/forms/avatar/crop.php, views/default/forms/avatar/upload.php,
+ views/default/forms/comments/add.php, views/default/forms/friends/edit.php,
+ views/default/forms/login.php, views/default/forms/plugins/settings/save.php,
+ views/default/forms/profile/edit.php, views/default/forms/register.php,
+ views/default/forms/user/requestnewpassword.php,
+ views/default/forms/useradd.php, views/default/forms/usersettings/save.php,
+ views/default/forms/widgets/save.php, views/default/group/default.php: Refs
+ #2032 core forms use divs
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/widgets/blog/edit.php,
+ mod/categories/views/default/input/categories.php,
+ .../views/default/forms/diagnostics/download.php,
+ mod/file/views/default/forms/file/upload.php,
+ mod/file/views/default/widgets/filerepo/edit.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ .../views/default/forms/invitefriends/invite.php,
+ .../views/default/forms/messages/reply.php,
+ mod/messages/views/default/forms/messages/send.php,
+ .../forms/notificationsettings/groupsave.php,
+ .../default/forms/notificationsettings/save.php,
+ .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/personal.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/widgets/reportedcontent/edit.php,
+ .../default/usersettings/twitterservice/edit.php: updated the plugins that
+ have already been updated to 1.8 html/css to use divs rather than p tags in
+ forms
+
+ * mod/groups/views/default/forms/groups/delete.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/edit.php: pulled delete form out of edit view
+ for groups
+
+ * mod/groups/views/default/forms/discussion/save.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ views/default/css/elements/forms.php: recommended to use <div> in forms for
+ wrapping content - added css to support that and updated all group forms
+
+ * views/default/input/form.php: moved security tokens to top of form so we
+ can use :last-child
+
+ * views/default/input/access.php: fixed another bug from last night
+
+ * views/default/input/plaintext.php, views/default/input/radio.php: fixing a
+ few bugs introduced last night in the input views
+
+ * mod/bookmarks/languages/en.php: fixed enable group bookmarks language
+ string
+
+ * views/default/input/checkboxes.php, views/default/input/radio.php: Refs
+ #1393 added work around note to checkboxes and radio inputs for integer
+ labels
+
+ * views/default/css/elements/forms.php, views/default/input/checkboxes.php,
+ views/default/input/radio.php: Fixes #972 checkboxes and radio input fields
+ support horizontal and vertical alignments
+
+ * mod/blog/lib/blog.php: blog object wasn't being passed to the form view
+
+ * engine/lib/output.php: fixed bug in elgg_format_attributes() that caused
+ none string values to be ignored
+
+ * views/default/input/form.php: reverted part of [8148] that broke all forms
+
+
+ * views/default/admin/components/plugin_settings.php,
+ views/default/forms/plugins/settings/save.php: continued cleaning up admin
+ plugin settings
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/radio.php: Fixes #2143: DRYed up input/radio -- other
+ views still should be addressed, but not because they aren't DRY, therefore
+ I'm calling this ticket closed
+
+ * views/default/input/checkbox.php, views/default/input/form.php,
+ views/default/input/password.php, views/default/input/pulldown.php: Refs
+ #2143: General cleanup of input views
+
+ * views/default/input/access.php: Refs #2143: DRYed up input/access -- wow,
+ that feels good
+
+ * views/default/input/longtext.php: Refs #2143: DRYed up input/longtext --
+ maybe I missed it, but was there a difference b/w plaintext and longtext?
+
+ * views/default/input/plaintext.php: Refs #2143: DRYed up input/plaintext
+
+ * views/default/input/dropdown.php: Refs #2143: DRYed up input/dropdown --
+ probably could be better still
+
+ * views/default/input/hidden.php: Refs #2143: DRY up input/hidden
+
+ * views/default/input/password.php: Refs #2143: DRYed up input/password
+
+ * views/default/input/file.php: Refs #2143: DRYed up input/file
+
+ * engine/lib/deprecated-1.8.php, engine/lib/entities.php:
+ register_entity_url_handler => elgg_register_entity_url_handler (because
+ every other reigstration function asks for the callback last)
+
+ * engine/lib/entities.php, engine/lib/extender.php,
+ engine/lib/relationships.php: Refs #2610: Using call_user_func in url hooks
+
+ * engine/lib/pagehandler.php: Page handler uses call_user_func (so methods
+ of classes can be used as page handlers)
+
+2011-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/start.php, mod/twitterservice/twitterservice_lib.php:
+ Twitter services now allows login with twitter properly for a single user.
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php: Added
+ elgg_get_entities_from_plugin_user_settings(). Added a name_prefix option to
+ elgg_get_entities_from_private_settings().
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/theming/preview/objects.php, engine/lib/views.php,
+ mod/blog/views/default/blog/group_module.php,
+ mod/blog/views/default/blog/sidebar/archives.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/sidebar/featured.php,
+ mod/groups/views/default/groups/sidebar/find.php,
+ .../views/default/groups/sidebar/members.php,
+ mod/pages/views/default/pages/group_module.php,
+ mod/pages/views/default/pages/sidebar/history.php,
+ .../views/default/pages/sidebar/navigation.php,
+ views/default/core/members/sidebar.php, views/default/core/river/body.php,
+ views/default/layout/elements/owner_block.php,
+ views/default/layout/shells/admin/menu.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/output/tagcloud.php: Fixes #2904: Converted most
+ elgg_view('layout/objects/module') instances to elgg_view_module()
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/head.php, views/default/page/shells/admin.php,
+ views/default/page/shells/default.php,
+ views/default/page/shells/walled_garden.php: pulled <head> out into page
+ shell also
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Added an elgg_view_module shortcut function -- now
+ to try it out!
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/topbar.php: fixed topbar html
+
+2011-02-12 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Added missing @deprecated tags to a couple
+ functions
+
+ * engine/lib/deprecated-1.8.php, engine/lib/views.php: set_view_location =>
+ elgg_set_view_location (to match elgg_get_view_location)
+
+ * views/default/spotlight/default.php: Bye bye spotlight
+
+ * engine/lib/users.php: One more conversion to elgg_view_form
+
+ * .../views/default/diagnostics/forms/download.php,
+ .../views/default/forms/diagnostics/download.php,
+ mod/file/views/default/file/embed_upload.php,
+ mod/file/views/default/forms/file/upload.php,
+ .../views/default/forms/invitefriends/invite.php,
+ .../views/default/invitefriends/form.php,
+ .../views/default/invitefriends/formitems.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/minify/lib/min/.htaccess, mod/minify/lib/min/README.txt,
+ mod/minify/lib/min/builder/_index.js, mod/minify/lib/min/builder/bm.js,
+ mod/minify/lib/min/builder/index.php, mod/minify/lib/min/builder/ocCheck.php,
+ mod/minify/lib/min/builder/rewriteTest.js, mod/minify/lib/min/config.php,
+ mod/minify/lib/min/groupsConfig.php, mod/minify/lib/min/index.php,
+ mod/minify/lib/min/lib/CSS.php, mod/minify/lib/min/lib/FirePHP.php,
+ mod/minify/lib/min/lib/HTTP/ConditionalGet.php,
+ mod/minify/lib/min/lib/HTTP/Encoder.php, mod/minify/lib/min/lib/JSMin.php,
+ mod/minify/lib/min/lib/JSMinPlus.php, mod/minify/lib/min/lib/Minify.php,
+ mod/minify/lib/min/lib/Minify/Build.php,
+ mod/minify/lib/min/lib/Minify/CSS/Compressor.php,
+ mod/minify/lib/min/lib/Minify/CSS/UriRewriter.php,
+ mod/minify/lib/min/lib/Minify/Cache/APC.php,
+ mod/minify/lib/min/lib/Minify/Cache/File.php,
+ mod/minify/lib/min/lib/Minify/Cache/Memcache.php,
+ mod/minify/lib/min/lib/Minify/CommentPreserver.php,
+ mod/minify/lib/min/lib/Minify/Controller/Base.php,
+ mod/minify/lib/min/lib/Minify/Controller/Files.php,
+ .../lib/min/lib/Minify/Controller/Groups.php,
+ .../lib/min/lib/Minify/Controller/MinApp.php,
+ mod/minify/lib/min/lib/Minify/Controller/Page.php,
+ .../lib/min/lib/Minify/Controller/Version1.php,
+ mod/minify/lib/min/lib/Minify/HTML.php,
+ mod/minify/lib/min/lib/Minify/ImportProcessor.php,
+ mod/minify/lib/min/lib/Minify/Lines.php,
+ mod/minify/lib/min/lib/Minify/Logger.php,
+ mod/minify/lib/min/lib/Minify/Packer.php,
+ mod/minify/lib/min/lib/Minify/Source.php,
+ mod/minify/lib/min/lib/Minify/YUICompressor.php,
+ mod/minify/lib/min/lib/Solar/Dir.php, mod/minify/lib/min/utils.php,
+ mod/minify/manifest.xml, mod/minify/start.php, mod/notifications/groups.php,
+ .../forms/notificationsettings/groupsave.php,
+ .../default/forms/notificationsettings/save.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../forms/uservalidationbyemail/bulk_action.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/river/footer.php, views/default/core/settings/account.php,
+ views/default/forms/admin/site/update_advanced.php,
+ views/default/forms/admin/site/update_basic.php,
+ views/default/forms/friends/edit.php,
+ views/default/forms/user/passwordreset.php, views/default/forms/useradd.php,
+ views/default/forms/usersettings/save.php,
+ views/default/forms/widgets/save.php,
+ views/default/layout/objects/widget/settings.php,
+ views/installation/install/forms/admin.php,
+ views/installation/install/forms/database.php,
+ views/installation/install/forms/settings.php: Converted most forms to use
+ elgg_view_form (therefore also moved the views to forms/*). Some views are
+ left that _only_ do elgg_view_form, so I wonder if those should even be kept
+ around.
+
+2011-02-12 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/twitterservice_lib.php: Registering forward() calls to
+ a plugin-specific reason for use in plugin hooks.
+
+2011-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php, mod/embed/start.php,
+ mod/embed/views/default/embed/addcontentjs.php,
+ mod/embed/views/default/embed/lightbox_init.php,
+ mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/metatags.php: light clean up on the embed
+ plugin which doesn't appear to work at present
+
+2011-02-11 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Typo correction: @deprecate => @deprecated
+
+ * mod/blog/views/default/js/blog/save_draft.php,
+ .../views/default/widgets/bookmarks/view.php,
+ .../views/default/defaultwidgets/editor.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/gallery.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/metatags.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/file/views/default/file/embed_upload.php,
+ .../views/default/groups/profile/widgets.php,
+ .../views/default/widgets/messageboard/content.php,
+ .../views/default/forms/messages/process.php,
+ .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/jsfuncs.php,
+ .../views/default/pages/sidebar/navigation.php,
+ mod/profile/views/default/profile/wrapper.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/tinymce/views/default/tinymce/init.php,
+ mod/zaudio/views/default/zaudio/audioplayer.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/friends/collection.php,
+ views/default/core/friends/collections.php,
+ views/default/core/friends/collectiontabs.php,
+ views/default/core/friends/picker.php,
+ .../default/core/friends/tablelistcountupdate.php,
+ views/default/core/river/filter.php, views/default/forms/avatar/crop.php,
+ views/default/forms/register.php,
+ views/default/forms/user/requestnewpassword.php,
+ views/default/input/autocomplete.php, views/default/input/datepicker.php,
+ views/default/input/userpicker.php,
+ views/installation/install/forms/template.php: Added disapproving @todo's
+ wherever I could find javascript not conforming to 1.8 conventions
+
+2011-02-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/categories/actions/save.php, mod/categories/languages/en.php,
+ mod/categories/listing.php, mod/categories/readme.txt,
+ mod/categories/start.php, mod/categories/views/default/categories.php,
+ mod/categories/views/default/categories/list.php,
+ mod/categories/views/default/categories/view.php,
+ mod/categories/views/default/input/categories.php,
+ mod/categories/views/default/output/categories.php,
+ .../views/default/settings/categories/edit.php: some clean up of the
+ categories plugin - html/css polish needed
+
+2011-02-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Fixes #2888: Plugins are checked for validity in
+ elgg_get_plugins(). It won't return broken plugins unless specifically
+ requested.
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php: Moved
+ list_entities_from_annotation_count_by_metadata() to deprecated-18.php.
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php: Refs #650.
+ Added 'annotation_calculation' to elgg_get_annotations(). Deprecated
+ list_annotations() by elgg_list_annotations(). Deprecated get_annotations_*()
+ by elgg_get_annotations() and passing annotation_calculation.
+
+ * engine/lib/entities.php: Added $viewer callback option for
+ elgg_list_entities().
+
+ * engine/lib/views.php: Fixed doc spacing that was throwing errors in PHP
+ Code Sniffer.
+
+2011-02-11 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/page_layout.php,
+ views/default/page/shells/admin.php, views/default/page/shells/default.php:
+ elgg-classic => elgg-page-classic, elgg-admin => elgg-page-admin
+
+ * views/default/css/elements/layout_objects.php,
+ views/default/css/elements/modules.php, views/default/css/screen.php: Added
+ css/elements/modules.php. Modules and widgets deserve their own space.
+
+ * views/default/admin/components/plugin.php, views/default/css/admin.php,
+ views/default/page/shells/default.php: Cleaned up admin advanced plugins view
+ a bit
+
+ * views/default/page/elements/head.php,
+ views/default/page/elements/html_begin.php,
+ views/default/page/elements/html_end.php,
+ views/default/page/shells/admin.php, views/default/page/shells/default.php,
+ views/default/page/shells/walled_garden.php: Fixes #1303: Pulled
+ html_begin/end into page shells. extracted <head> element into
+ page/elements/head
+
+ * mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/categories/manifest.xml, mod/defaultwidgets/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/embed/manifest.xml, mod/file/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/invitefriends/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/oauth_lib/manifest.xml,
+ mod/pages/manifest.xml, mod/reportedcontent/manifest.xml,
+ mod/search/manifest.xml, mod/sitepages/manifest.xml,
+ mod/tagcloud/manifest.xml, mod/thewire/manifest.xml,
+ mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/twitterservice/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: Converted all manifest files to 1.8 style
+
+2011-02-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/deprecated-1.8.php: Moved
+ get_annotations() to deprecated-1.8.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/tests/api/entity_getter_functions.php: Refs #650. Deprecated
+ get_annotations() for elgg_get_annotations().
+
+2011-02-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/diagnostics/start.php: not outputing all the plugin information in
+ diagnostics plugin due to new plugin system structure
+
+ * engine/lib/admin.php: Fixes #2872 - returned plugin settings menu to
+ working order
+
+2011-02-11 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php,
+ .../forms/admin/plugins/simple_update_states.php: Cleanup of basic plugins
+ area
+
+ * views/default/admin/components/invalid_plugin.php,
+ views/default/admin/components/plugin.php, views/default/css/admin.php,
+ .../forms/admin/plugins/simple_update_states.php, views/default/js/admin.php:
+ More cleanup of admin/plugins css
+
+ * views/default/admin/components/plugin.php,
+ .../admin/components/plugin_dependencies.php, views/default/css/admin.php:
+ elgg-$state-dependency => elgg-state-(error|success)
+
+ * views/default/output/rss_view.php: Removed unused view: output/rss_view
+
+ * .../uservalidationbyemail/unvalidated_user.php: Converted hardcoded styles
+ to css primitives
+
+2011-02-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/reset.php, views/default/input/submit.php: Removed
+ nonsensical comments
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ .../notifications/subscriptions/forminternals.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/core/settings/account.php,
+ views/default/css/elements/chrome.php,
+ views/default/page/elements/topbar.php: Added border primitives
+ "b<loc><type>" where type is "a" or "b" -- anyone want to choose better
+ names? :)
+
+ * mod/blog/views/default/forms/blog/save.php:
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/groups/views/default/groups/edit.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php: disabled =>
+ elgg-state-disabled in plugins (only found in blog and groups)
+
+ * views/default/admin/plugins/simple.php,
+ .../forms/admin/plugins/simple_update_states.php: Moved the simple plugins
+ admin form to the forms/ dir
+
+ * views/default/admin/components/plugin.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/css/admin.php, views/default/css/elements/forms.php,
+ views/default/forms/profile/fields/reset.php,
+ views/default/page/shells/walled_garden.php,
+ views/installation/install/nav.php: .disabled => .elgg-state-disabled (core
+ only)
+
+ * views/default/admin/plugins/advanced.php: Using spacing primitives rather
+ than <br/>
+
+ * views/default/css/admin.php: Corrected minor problem with admin tables
+
+ * views/default/forms/plugins/settings/save.php,
+ views/default/forms/plugins/usersettings/save.php,
+ views/default/object/plugin.php: Plugin settings forms now use the forms/
+ directory
+
+2011-02-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/navigation.php: fixed access issue on menu name
+
+2011-02-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/theming/preview/forms.php, mod/blog/lib/blog.php,
+ mod/blog/views/default/forms/blog/save.php,
+ .../views/default/admin/utilities/diagnostics.php, mod/file/index.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/edit.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/groups/profile/buttons.php, mod/messages/read.php,
+ .../views/default/forms/messages/process.php, mod/pages/view.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/owner_block.php,
+ .../views/default/object/reported_content.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/friends/picker.php, views/default/css/admin.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php,
+ views/default/forms/profile/fields/reset.php, views/default/input/button.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/page/elements/content_header.php,
+ views/installation/input/button.php: Converted buttons to elgg-object-type
+ naming convention. Added table of buttons to forms theming preview meant for
+ previewing all button types and states (still have to implement those...)
+
+2011-02-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php, mod/garbagecollector/start.php,
+ mod/groups/actions/edit.php, mod/groups/views/default/forms/groups/edit.php,
+ mod/logrotate/start.php, mod/sitepages/start.php,
+ mod/twitterservice/start.php, mod/twitterservice/twitterservice_lib.php,
+ .../views/default/twitterservice/metatags.php,
+ views/default/core/settings/tools/plugin.php: Refs #2874. Finished removing
+ calls to deprecated plugin mgmt functions in core and core plugins.
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ engine/lib/admin.php, engine/lib/deprecated-1.8.php, engine/lib/plugins.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/core/settings/tools.php,
+ views/default/core/settings/tools/plugin.php,
+ views/default/object/plugin.php: Refs #2874: More removal of deprecated
+ function user in plugins systems.
+
+ * engine/classes/ElggPlugin.php, engine/lib/deprecated-1.8.php,
+ engine/lib/plugins.php: Refs #2869, #2874. Renamed ElggPlugin::remove*
+ functions to unset*. Added ElggPlugin::getAllUserSettings() and
+ getAllSettings(). Deprecated all plugin settings and user setting functions
+ with correctly named functions.
+
+2011-02-09 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/helpers.php: Slightly more efficient way of
+ declaring spacing helpers
+
+2011-02-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/manifest.xml, mod/messages/manifest.xml, mod/pages/manifest.xml,
+ mod/search/manifest.xml: updated version number
+
+2011-02-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, engine/lib/plugins.php: Refs #2869: Fixed
+ problems when deleting user settings using wrapper function.
+
+ * engine/classes/ElggPluginPackage.php, engine/lib/admin.php,
+ mod/diagnostics/start.php, pages/settings/tools.php,
+ views/default/core/settings/tools.php,
+ views/default/core/settings/tools/plugin.php,
+ views/default/object/plugin.php: Refs #2874: Using elgg_get_plugins() instead
+ of get_installed_plugins().
+
+ * engine/classes/ElggPlugin.php: Fixed typo that break
+ ElggPlugin::isActive().
+
+ * engine/lib/input.php, engine/lib/upgrades/2010050701.php,
+ engine/lib/upgrades/2010100500.php, mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/link.php, mod/notifications/start.php,
+ mod/sitepages/index.php, mod/thewire/start.php, mod/twitterservice/start.php,
+ views/default/core/settings/tools.php: Refs #2874: Using
+ elgg_is_active_plugin() in core and bundled plugins.
+
+2011-02-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php, engine/lib/deprecated-1.8.php,
+ engine/lib/plugins.php: Fixes #2858: is_plugin_enabled() is deprecated by
+ elgg_is_active_plugin() instead of ElggPlugin::isActive().
+
+ * engine/classes/ElggPlugin.php, engine/lib/plugins.php: Fixes #2869: User
+ settings for plugins work again.
+
+2011-02-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/languages/de.php, mod/tagcloud/languages/en.php,
+ mod/tagcloud/manifest.xml, mod/tagcloud/start.php, mod/tagcloud/tagcloud.php,
+ mod/tagcloud/views/default/tagcloud/css.php,
+ .../views/default/widgets/tagcloud/content.php,
+ .../views/default/widgets/tagcloud/edit.php: cleaned up tagcloud plugin
+
+ * mod/search/start.php, .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/list.php: updated search plugin for new
+ html/css
+
+ * .../views/default/admin/utilities/diagnostics.php: ahhh...missed this one
+ too
+
+ * mod/logbrowser/views/default/logbrowser/form.php: missed this file in the
+ admin backend update last night
+
+ * engine/lib/views.php, views/default/layout/elements/title.php: added a
+ class variable to title view
+
+2011-02-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginPackage.php: Fixes #2863: Can now use all 6 dep
+ types with conflicts.
+
+ * engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser18.php,
+ engine/classes/ElggPluginPackage.php, engine/lib/plugins.php,
+ engine/tests/api/plugins.php, engine/tests/test_files/plugin_18/manifest.xml,
+ languages/en.php, views/default/admin/components/plugin.php,
+ .../admin/components/plugin_dependencies.php, views/default/css/admin.php:
+ Added suggests to the plugins deps system. It parallels the requires system,
+ but doesn't affect if the plugin can be enabled and only shows up in the deps
+ table on the advanced view.
+
+ * engine/classes/ElggPluginManifest.php: Running plugins' blurb,
+ description, name, and screenshot->description through elgg_echo().
+
+2011-02-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/layout/shells/admin.php,
+ views/default/page/shells/admin.php: rough system messages implementation for
+ admin backend
+
+ * js/lib/ui.js, views/default/admin/components/plugin_settings.php,
+ views/default/admin/statistics/overview.php,
+ views/default/admin/users/newest.php, views/default/admin/users/online.php,
+ views/default/css/admin.php, views/default/forms/admin/menu/save.php,
+ views/default/forms/useradd.php, views/default/layout/shells/admin.php,
+ views/default/layout/shells/admin/menu.php: updates for the admin css based
+ on the reworking I did to the html
+
+ * .../views/default/reportedcontent/footer_link.php,
+ views/default/annotation/generic_comment.php,
+ views/default/css/elements/forms.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/typography.php, views/default/icon/default.php,
+ views/default/input/form.php, views/default/navigation/menu/user_hover.php,
+ views/default/output/tagcloud.php: bringing us a little closer to validating
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ .../notifications/subscriptions/forminternals.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/core/settings/account.php,
+ views/default/css/elements/chrome.php: a tiny amount of progress on the css
+ chrome element view
+
+ * js/lib/ui.js, views/default/css/elements/chrome.php,
+ views/default/css/elements/forms.php, views/default/css/elements/grid.php,
+ views/default/css/elements/helpers.php, views/default/css/elements/icons.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php,
+ views/default/css/elements/typography.php,
+ views/default/layout/elements/page_links.php,
+ views/default/layout/objects/image_block.php,
+ views/default/navigation/menu/page.php,
+ views/default/navigation/menu/site.php,
+ views/default/navigation/menu/user_hover.php,
+ views/default/page/elements/footer.php: more tweaking of css - menu and
+ general clean up
+
+ * views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php,
+ views/default/layout/shells/content/header.php,
+ views/default/page/elements/header_logo.php: starting to standardize on
+ elgg-<type>-<subtype> for css such as elgg-heading-site
+
+2011-02-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/chrome.php,
+ views/default/css/elements/forms.php,
+ views/default/css/elements/page_layout.php,
+ views/default/css/elements/reset.php,
+ views/default/css/elements/typography.php: removed some old css no longer
+ supported by modern browsers
+
+2011-02-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/profile/fields/add.php, actions/profile/fields/edit.php,
+ engine/lib/admin.php, .../admin/appearance/profile_fields/list.php,
+ views/default/css/admin.php, views/default/js/admin.php: Pulled elgg-icon and
+ elgg-icon-* into the admin css. Pulled out profile field JS into elgg.admin
+ obj. Fixed editing profile field names.
+
+ * _graphics/elgg_sprites.png, documentation/theming/preview/icons.php,
+ views/default/css/elements/icons.php: Added dragger icon.
+
+2011-02-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: fixed typo in plugin library
+
+ * languages/en.php, mod/search/index.php, mod/search/start.php,
+ mod/search/views/default/search/list.php,
+ mod/search/views/default/search/listing.php: Fixes 2354 Using list instead of
+ listing for search now
+
+ * mod/search/index.php, mod/search/start.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/entity_list.php,
+ mod/search/views/default/search/gallery.php,
+ .../views/default/search/gallery_listing.php,
+ mod/search/views/default/search/layout.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/search_box.php,
+ mod/search/views/default/search/startblurb.php,
+ mod/search/views/rss/search/comments/entity.php,
+ mod/search/views/rss/search/entity.php,
+ mod/search/views/rss/search/layout.php,
+ mod/search/views/rss/search/listing.php: Fixes #2335 #2336 clean up and minor
+ standardization of search plugin - needs html/css clean up
+
+2011-02-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php, views/default/js/admin.php: Added
+ drag and drop reordering of plugins. Started pulling out admin area's js into
+ elgg.admin JS object.
+
+2011-02-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/input.php: moved sticky forms into the
+ input library
+
+2011-02-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/entity.php,
+ views/default/entities/entity_list.php,
+ views/default/entities/entity_listing.php,
+ views/default/entities/gallery.php,
+ views/default/entities/gallery_listing.php, views/default/entities/list.php,
+ views/default/entities/list_item.php, views/default/graphics/icon.php,
+ views/default/object/default.php: removing old entities views that are no
+ longer needed and did the last changes for the icon system
+
+ * mod/groups/icon.php, mod/groups/start.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/groups/profile/profile_block.php: updated the groups plugin
+ to use the new icon structure
+
+ * engine/lib/views.php, mod/file/start.php,
+ mod/file/views/default/file/icon.php,
+ .../default/file/icon/application/default.php,
+ .../views/default/file/icon/application/excel.php,
+ .../views/default/file/icon/application/msword.php,
+ .../views/default/file/icon/application/pdf.php,
+ .../default/file/icon/application/powerpoint.php,
+ .../default/file/icon/application/vnd.ms-excel.php,
+ .../file/icon/application/vnd.ms-powerpoint.php,
+ .../application/vnd.oasis.opendocument.text.php,
+ .../views/default/file/icon/application/x-gzip.php,
+ .../file/icon/application/x-rar-compressed.php,
+ .../default/file/icon/application/x-stuffit.php,
+ .../views/default/file/icon/application/zip.php,
+ mod/file/views/default/file/icon/archive.php,
+ mod/file/views/default/file/icon/audio.php,
+ mod/file/views/default/file/icon/audio/default.php,
+ mod/file/views/default/file/icon/default.php,
+ mod/file/views/default/file/icon/document.php,
+ mod/file/views/default/file/icon/text/default.php,
+ .../views/default/file/icon/text/directory.php,
+ mod/file/views/default/file/icon/text/v-card.php,
+ mod/file/views/default/file/icon/video.php,
+ mod/file/views/default/file/icon/video/default.php,
+ mod/file/views/default/object/file.php, views/default/icon/default.php:
+ updated the file plugin to use the new icon structure
+
+ * engine/classes/ElggUser.php, engine/lib/actions.php,
+ engine/lib/database.php, engine/lib/deprecated-1.7.php,
+ engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/lib/relationships.php, engine/lib/widgets.php: fixed some minor
+ documentation issues
+
+ * mod/bookmarks/views/default/object/bookmarks.php: missed this use of
+ elgg_count_comments() in change to ->countComments()
+
+2011-02-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPlugin.php: Fixed bug when trying to set a plugin's
+ priority to 1 without using "first."
+
+2011-02-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php, engine/lib/elgglib.php,
+ engine/lib/views.php, mod/blog/views/default/object/blog.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/pages/views/default/object/page_top.php,
+ views/default/core/likes/display.php: moved the count comments and likes
+ functions into the ElggEntity class
+
+ * engine/lib/views.php, mod/file/edit.php, mod/messages/read.php: Fixes
+ #2854 removing my bad idea of auto-appending action in elgg_view_form()
+
+ * mod/pages/actions/pages/delete.php, mod/pages/start.php,
+ .../views/default/icon/object/page/medium.php,
+ mod/pages/views/default/icon/object/page/small.php,
+ .../views/default/icon/object/page_top/medium.php,
+ .../views/default/icon/object/page_top/small.php,
+ mod/pages/views/default/pages/icon.php: Fixes #2853 pages plugin uses the
+ icon url plugin hook and fixes delete action
+
+ * documentation/theming/preview/objects.php, js/lib/elgglib.js,
+ .../core/settings/statistics/numentities.php,
+ views/default/core/settings/statistics/online.php,
+ views/default/css/elements/chrome.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/page_layout.php,
+ views/default/page/elements/messages.php: more css/html improvements - added
+ .elgg-table and a featured module
+
+ * views/default/input/access.php, views/default/input/checkboxes.php,
+ views/default/input/datepicker.php, views/default/input/dropdown.php,
+ views/default/input/email.php, views/default/input/hidden.php,
+ views/default/input/longtext.php, views/default/input/plaintext.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/input/userpicker.php: Fixes #2510 sticky forms is finish - Elgg
+ 1.9 could have a ElggForm class that makes it even easier to use a sticky
+ form
+
+2011-02-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/theming/preview/objects.php, engine/lib/views.php,
+ mod/blog/views/default/blog/group_module.php,
+ mod/blog/views/default/blog/sidebar/archives.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ .../default/groups/profile/activity_module.php,
+ .../views/default/groups/sidebar/featured.php,
+ mod/groups/views/default/groups/sidebar/find.php,
+ .../views/default/groups/sidebar/members.php,
+ .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/personal.php,
+ mod/pages/views/default/pages/group_module.php,
+ mod/pages/views/default/pages/sidebar/history.php,
+ .../views/default/pages/sidebar/navigation.php,
+ views/default/core/likes/display.php, views/default/core/members/sidebar.php,
+ .../core/settings/account/default_access.php,
+ views/default/core/settings/account/email.php,
+ views/default/core/settings/account/language.php,
+ .../core/settings/account/notifications.php,
+ views/default/core/settings/account/password.php,
+ .../core/settings/statistics/numentities.php,
+ views/default/core/settings/statistics/online.php,
+ views/default/core/settings/tools/plugin.php,
+ views/default/css/elements/chrome.php, views/default/css/elements/grid.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/page_layout.php,
+ views/default/css/elements/reset.php, views/default/output/tagcloud.php:
+ using elgg-module-<type>
+
+ * views/default/icon/user/default/large.php,
+ views/default/icon/user/default/master.php,
+ views/default/icon/user/default/medium.php,
+ views/default/icon/user/default/small.php,
+ views/default/icon/user/default/tiny.php,
+ views/default/icon/user/default/topbar.php, views/default/profile/hover.php:
+ a little clean up of unnecessary views
+
+ * documentation/theming/preview/icons.php, engine/classes/ElggEntity.php,
+ engine/lib/deprecated-1.8.php, engine/lib/entities.php, engine/lib/input.php,
+ engine/lib/users.php, engine/lib/views.php, js/lib/ui.js,
+ mod/pages/views/default/pages/icon.php, views/default/css/elements/icons.php,
+ views/default/input/userpicker.php, views/default/page/elements/topbar.php,
+ views/default/profile/icon.php, views/foaf/page/shells/default.php: Fixes
+ #2559 refs #2475 added ElggEntity:getIconURL() and elgg_view_entity_icon()
+
+2011-02-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php, views/default/css/admin.php: The
+ screenshot desc is now used. Small css changes.
+
+ * views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php, views/default/css/admin.php: Better
+ displaying of full screenshots in plugins admin.
+
+ * engine/classes/ElggPluginPackage.php, engine/lib/plugins.php: Fixes #2852:
+ Checking other plugins' conflicts to see if plugin is able to be activated in
+ ElggPluginPackage->checkDependencies(). Some language clarification in admin
+ panel.
+
+2011-02-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/theming/preview/widgets.php: fixed widgets theming preview
+ by overriding some javascript
+
+ * engine/classes/ElggEntity.php: supporting private settings before an
+ entity is saved
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggWidget.php,
+ engine/lib/users.php: using setPrivateSetting() and getPrivateSetting()
+ instead of procedural functions
+
+ * views/default/css/elements/icons.php,
+ views/default/graphics/ajax_loader.php: fixed ajax loader css and html
+
+ * documentation/css/preview/forms.php,
+ documentation/css/preview/general.php, documentation/css/preview/grid.php,
+ documentation/css/preview/head.php, documentation/css/preview/icons.php,
+ documentation/css/preview/index.php, documentation/css/preview/nav.php,
+ documentation/css/preview/objects.php, documentation/css/preview/widgets.php,
+ documentation/theming/preview/forms.php,
+ documentation/theming/preview/general.php,
+ documentation/theming/preview/grid.php,
+ documentation/theming/preview/head.php,
+ documentation/theming/preview/icons.php,
+ documentation/theming/preview/index.php,
+ documentation/theming/preview/nav.php,
+ documentation/theming/preview/objects.php,
+ documentation/theming/preview/widgets.php, mod/developers/languages/en.php,
+ .../views/default/admin/developers/preview.php: changed named from css
+ preview to theming preview
+
+ * documentation/css/preview/forms.php,
+ documentation/css/preview/general.php, documentation/css/preview/grid.php,
+ documentation/css/preview/icons.php, documentation/css/preview/nav.php,
+ documentation/css/preview/objects.php, documentation/css/preview/widgets.php:
+ better navigation for theming previews
+
+ * documentation/css/preview/grid.php, documentation/css/preview/icons.php,
+ js/lib/ui.js, views/default/css/elements/grid.php,
+ views/default/css/elements/icons.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/navigation.php, views/default/js/elgg.php,
+ views/default/profile/hover.php: cleaned up hover menu
+
+ * mod/blog/views/default/forms/blog/save.php,
+ views/default/css/elements/base.php, views/default/css/elements/chrome.php,
+ views/default/css/elements/core.php, views/default/css/elements/forms.php,
+ views/default/css/elements/helpers.php,
+ views/default/css/elements/layout.php,
+ views/default/css/elements/layout_objects.php,
+ views/default/css/elements/misc.php,
+ views/default/css/elements/page_layout.php,
+ views/default/css/elements/spacing.php,
+ views/default/css/elements/typography.php, views/default/css/screen.php,
+ views/default/page/elements/header_logo.php: getting back to the css - making
+ changes based on Evan's comments
+
+ * documentation/css/preview/forms.php,
+ documentation/css/preview/general.php, documentation/css/preview/grid.php,
+ documentation/css/preview/icons.php, documentation/css/preview/images.php,
+ documentation/css/preview/index.php, documentation/css/preview/nav.php,
+ documentation/css/preview/objects.php, documentation/css/preview/widgets.php:
+ cleaned up navigation of the css preview documentation
+
+ * mod/developers/start.php, .../views/default/admin/developers/preview.php,
+ mod/developers/views/default/developers/css.php: setting size for iframe for
+ css preview
+
+ * views/default/css/admin.php, views/default/layout/shells/admin.php:
+ removed unecessary inner div for .elgg-main because of switch back to
+ overflow: hidden
+
+2011-02-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Fixed a problem with detecting conflicting plugin
+ versions. Not showing a stray = when versions aren't specified in conflicts
+ and requires.
+
+2011-02-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, views/default/admin/components/plugin.php,
+ views/default/css/admin.php: Added support for screenshots in the advanced
+ plugin admin.
+
+ * engine/classes/ElggPlugin.php: Fixed typo that caused ElggPlugin->path not
+ to be correctly set when loading from a plugin id.
+
+ * documentation/examples/plugins/manifest.xml,
+ engine/classes/ElggPluginManifest.php, engine/classes/ElggPluginPackage.php,
+ engine/lib/plugins.php, engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_18/manifest.xml: Renamed 'name' to 'plugin'
+ for priority req. Updated unit tests and docs.
+
+ * documentation/examples/plugins/manifest.xml: Added priority requires to
+ example manifest.
+
+ * engine/lib/plugins.php, languages/en.php,
+ views/default/admin/components/plugin.php: Fixed problems showing detected
+ values for plugin conflicts. Clarified language for what the first value
+ column means.
+
+ * engine/classes/ElggMenuItem.php, engine/classes/ElggPlugin.php,
+ engine/classes/ElggPluginManifest.php, engine/classes/ElggPluginPackage.php,
+ engine/lib/plugins.php, languages/en.php,
+ .../admin/components/plugin_dependencies.php, views/default/css/admin.php:
+ Added new priority 'requires' for plugin dep system. You can now say that a
+ plugin is required to be after / before another plugin in the system.
+
+2011-02-04 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggData.php: I'm a dummy -- getType and getSubtype are
+ taken care of by Loggable...
+
+ * engine/classes/ElggData.php: Added type and subtype abstract functions to
+ ElggData
+
+2011-02-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Fixes #2822: Added missing language string.
+
+ * engine/classes/ElggPluginPackage.php, engine/lib/deprecated-1.8.php,
+ engine/lib/plugins.php: Fixes #2820, Fixes #2823. Using elgg_get_plugins() in
+ elgg_get_plugins_provides(). Fixed plugin conflicts system. Removed cruft
+ from ElggPluginPackage. Fixed deprecated get_installed_plugins() to honor the
+ type requested.
+
+2011-02-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/deprecated-1.8.php: Updated elgg_get_plugin_path in
+ load_plugin_manifest to elgg_get_plugins_path
+
+ * mod/profile/start.php, mod/sitepages/views/default/sitepages/css.php,
+ pages/dashboard.php, views/default/layout/shells/widgets.php: Changed widgets
+ layout "box" parameter to "content" just like the other layouts
+
+2011-02-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/css/preview/forms.php, install/ElggInstaller.php,
+ mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/input/datetime.php,
+ mod/blog/views/default/widgets/blog/edit.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/file/views/default/widgets/filerepo/edit.php,
+ .../default/settings/garbagecollector/edit.php,
+ mod/groups/views/default/forms/discussion/save.php,
+ mod/groups/views/default/settings/groups/edit.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ .../views/default/settings/logrotate/edit.php,
+ mod/messages/views/default/forms/messages/send.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ .../views/default/widgets/reportedcontent/edit.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ .../views/default/widgets/tagcloud/edit.php,
+ .../views/default/settings/twitterservice/edit.php,
+ .../views/default/admin/users/unvalidated.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/core/river/filter.php,
+ views/default/core/settings/account/language.php,
+ views/default/css/admin.php, views/default/forms/admin/menu/save.php,
+ views/default/input/access.php, views/default/input/dropdown.php,
+ views/default/input/pulldown.php, views/default/output/dropdown.php,
+ views/default/output/pulldown.php,
+ views/default/widgets/content_stats/edit.php,
+ views/default/widgets/friends/edit.php,
+ views/default/widgets/new_users/edit.php,
+ views/default/widgets/online_users/edit.php,
+ views/installation/input/access.php, views/installation/input/dropdown.php,
+ views/installation/input/pulldown.php: changed input/pulldown to
+ input/dropdown
+
+ * engine/lib/tags.php, engine/lib/views.php, engine/tests/ui/submenu.php,
+ mod/bookmarks/bookmarklet.php, mod/thewire/add.php, mod/thewire/everyone.php,
+ mod/thewire/index.php, pages/friends/edit.php,
+ .../layout/shells/one_column_with_sidebar.php: removed
+ one_column_with_sidebar layout - use one_sidebar instead
+
+ * engine/lib/views.php, mod/categories/views/default/categories.php,
+ mod/categories/views/default/categories/list.php,
+ .../views/default/sitepages/keywords/userlist.php: removed uses of
+ $vars[config] in views
+
+ * engine/lib/output.php, .../views/default/twitterservice/login.php,
+ .../views/default/admin/users/unvalidated.php: removes uses of $vars[url]
+ from core and plugins
+
+ * engine/lib/views.php: Fixes #2124 only setting $vars[user], $vars[url],
+ and $vars[config] in elgg_view() if not already set
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginPackage.php,
+ engine/lib/configuration.php, engine/lib/plugins.php, mod/blog/start.php,
+ mod/categories/start.php, mod/defaultwidgets/start.php,
+ mod/developers/start.php, mod/diagnostics/start.php,
+ mod/file/actions/file/download.php, mod/file/start.php, mod/groups/icon.php,
+ mod/groups/start.php, mod/invitefriends/start.php,
+ mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php,
+ mod/reportedcontent/start.php, mod/sitepages/start.php,
+ mod/thewire/start.php, mod/twitterservice/start.php,
+ views/default/admin/components/plugin.php: changed elgg_get_plugin_path() to
+ elgg_get_plugins_path()
+
+ * engine/lib/configuration.php, mod/categories/start.php,
+ mod/defaultwidgets/start.php, mod/diagnostics/start.php,
+ mod/groups/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/search/start.php, mod/twitterservice/languages/en.php,
+ mod/twitterservice/twitterservice_lib.php,
+ .../default/usersettings/twitterservice/edit.php: Refs #2428 just a few more
+ CONFIG uses left to be replaced
+
+ * mod/categories/actions/save.php,
+ .../views/default/settings/categories/edit.php, mod/file/start.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/delete.php,
+ mod/groups/actions/featured.php, mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/icon.php,
+ mod/invitefriends/actions/invite.php,
+ .../views/default/invitefriends/formitems.php, mod/notifications/start.php,
+ mod/pages/start.php, mod/profile/icon.php, mod/profile/start.php,
+ mod/sitepages/sitepages_functions.php, mod/twitterservice/start.php,
+ mod/twitterservice/twitterservice_lib.php,
+ .../default/usersettings/twitterservice/edit.php,
+ mod/uservalidationbyemail/lib/functions.php: Refs #2428 almost done removing
+ CONFIG access - mostly plugin start.php left
+
+2011-02-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/actions/add.php, mod/bookmarks/actions/bookmarks/add.php,
+ mod/bookmarks/actions/bookmarks/delete.php,
+ mod/bookmarks/actions/bookmarks/edit.php, mod/bookmarks/actions/delete.php,
+ mod/bookmarks/actions/edit.php, mod/bookmarks/actions/reference.php,
+ mod/bookmarks/actions/remove.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/languages/en.php, mod/bookmarks/pages/add.php,
+ mod/bookmarks/pages/all.php, mod/bookmarks/pages/friends.php,
+ mod/bookmarks/pages/inbox.php, mod/bookmarks/pages/owner.php,
+ mod/bookmarks/pages/view.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ .../default/bookmarks/groupprofile_bookmarks.php,
+ .../views/default/bookmarks/owner_block.php,
+ mod/bookmarks/views/default/bookmarks/sharing.php,
+ mod/bookmarks/views/default/bookmarks/stats.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/river/object/bookmarks/annotate.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/bookmarks/views/rss/object/bookmarks.php: Refs #2680: First pass at
+ porting the 1.7 bookmarks to 1.8. Functional, but code is still messy.
+
+ * engine/lib/actions.php: Added more info to the @params documentation for
+ elgg_register_action.
+
+2011-02-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ .../core/settings/account/default_access.php,
+ views/default/core/settings/account/language.php,
+ views/default/forms/login.php, views/default/input/button.php,
+ views/default/js/initialize_elgg.php,
+ views/default/page/elements/html_begin.php,
+ views/default/page/elements/html_end.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/rss/page/shells/default.php,
+ views/xml/messages/exceptions/exception.php: Refs #2428 removed some uses of
+ CONFIG in the views
+
+ * views/default/css/elements/navigation.php,
+ views/default/navigation/pagination.php: Fixes #2802 put state class on list
+ element rather than span
+
+ * install/ElggInstaller.php: fixes #2784 for real this time
+
+ * install/ElggInstaller.php: Fixes #2784 #2842 installer uses new plugin
+ system now
+
+2011-02-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/manifest.xml, mod/bookmarks/manifest.xml,
+ mod/defaultwidgets/manifest.xml, mod/embed/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/logbrowser/manifest.xml,
+ mod/logrotate/manifest.xml, mod/messageboard/manifest.xml,
+ mod/messages/manifest.xml, mod/notifications/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/search/manifest.xml,
+ mod/tinymce/manifest.xml, mod/uservalidationbyemail/manifest.xml,
+ mod/zaudio/manifest.xml: updated the plugin manifest files to use the new
+ variable name for activation on installation
+
+2011-02-02 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, views/default/river/item.php: Fixes #2846:
+ elgg_view_river_item calls river/item view first.
+
+ * views/default/core/river/body.php: Adding quotes to "constant" item
+
+2011-02-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Fixes #2844 setting table for access_id to fix fatal
+ error
+
+ * mod/groups/actions/edit.php, mod/groups/start.php,
+ mod/groups/views/default/forms/groups/edit.php: moved name out of
+ configurable fields for a group
+
+ * mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/edit.php: more clean up of the group edit
+ form
+
+ * mod/groups/lib/groups.php, mod/groups/start.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/edit.php: a little clean up of the groups
+ edit form
+
+ * .../layout/shells/two_column_left_sidebar.php,
+ views/default/page/shells/default.php: backward compatibility code for
+ plugins that add admin pages
+
+ * languages/en.php: added a string from 1.7 profile plugin into core for
+ backward compatibility
+
+2011-02-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page/elements/html_begin.php: Puts css before js in the
+ head, per website performance best practices
+
+ * engine/lib/views.php: Initialize global $CURRENT_SYSTEM_VIEWTYPE correctly
+
+ * engine/lib/deprecated-1.7.php, engine/lib/deprecated-1.8.php,
+ engine/lib/sessions.php, engine/lib/sites.php, engine/lib/tags.php,
+ engine/lib/users.php, engine/lib/usersettings.php, engine/lib/views.php:
+ Moved deprecated files from sessions.php - xml.php into deprecation files for
+ 1.7 and 1.8
+
+ * engine/lib/deprecated-1.7.php, engine/lib/deprecated-1.8.php,
+ engine/lib/group.php, engine/lib/location.php, engine/lib/metadata.php,
+ engine/lib/navigation.php, engine/lib/objects.php, engine/lib/output.php,
+ engine/lib/pageowner.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php, engine/lib/relationships.php,
+ engine/lib/river.php: Moved functions from export.php - river.php into
+ deprecated files
+
+ * engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/deprecated-1.7.php,
+ engine/lib/deprecated-1.8.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/start.php: Moving deprecated functions out of
+ files access.php - entities.php. This time into two files based on version
+ deprecated and maintaining documentation
+
+ * engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/deprecated.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/install.php, engine/lib/location.php, engine/lib/mb_wrapper.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/navigation.php, engine/lib/objects.php, engine/lib/output.php,
+ engine/lib/pageowner.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php: Reversing 7975
+
+ * engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/deprecated.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/install.php, engine/lib/location.php, engine/lib/mb_wrapper.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/navigation.php, engine/lib/objects.php, engine/lib/output.php,
+ engine/lib/pageowner.php, engine/lib/plugins.php,
+ engine/lib/private_settings.php, engine/start.php: Refs #2839: moved
+ deprecated functions from access.php - private_settings.php to
+ deprecated.php. Still have to do relationships.php - xml.php. Deleted
+ documentation for these functions since 1) it was using up precious bytes,
+ and 2) documentation should not be needed since people should not be trying
+ to use these if they are using 1.8, and 3) I assume the documentation will
+ exist as archived 1.7 docs.
+
+2011-01-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/group_module.php,
+ mod/file/views/default/file/group_module.php,
+ .../views/default/discussion/group_module.php,
+ mod/groups/views/default/groups/css.php,
+ .../default/groups/profile/activity_module.php,
+ mod/pages/views/default/pages/group_module.php,
+ views/default/css/elements/core.php: fixed css for group module headers
+
+ * engine/lib/output.php: supporting 'javascript:' when normalizing urls
+
+ * engine/lib/pageowner.php: fixed typo in deprecation notice
+
+ * .../layout/shells/two_column_left_sidebar.php: made
+ two_column_left_sidebar layout also handle $vars['content']
+
+ * engine/lib/navigation.php: accidently removed the site menu set up
+ function
+
+2011-01-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/forms/blog/save.php,
+ mod/pages/views/default/annotation/page.php,
+ views/default/annotation/default.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/css/admin.php,
+ views/default/css/elements/core.php,
+ views/default/layout/objects/list/body.php: introducing elgg-subtext as
+ replacement for elgg-list-subtitle and elgg-subtitle
+
+ * engine/lib/elgglib.php, engine/lib/navigation.php,
+ engine/tests/ui/submenu.php, views/default/layout/elements/sidebar.php,
+ views/default/layout/elements/title.php,
+ views/default/navigation/sidebar_menu.php,
+ views/default/navigation/submenu_group.php,
+ views/default/navigation/submenu_item.php,
+ views/default/navigation/submenu_js.php: removed menu code introduced for
+ elgg.com that did not make it into 1.8
+
+ * views/default/annotation/default.php: using the new image block rather
+ than deprecated listing view
+
+ * views/default/navigation/tabs.php: supporting adding a class to navigation
+ tabs
+
+2011-01-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/statistics/overview.php: updated the overview
+ statistics page
+
+ * engine/lib/group.php, engine/lib/pageowner.php, engine/lib/users.php,
+ engine/lib/widgets.php, mod/blog/views/default/blog/group_module.php,
+ mod/blog/views/default/blog/sidebar/archives.php,
+ mod/blog/views/default/blog/sidebar/tagcloud.php,
+ mod/blog/views/default/widgets/blog/content.php,
+ mod/bookmarks/bookmarklet.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ .../views/default/widgets/bookmarks/view.php,
+ .../views/default/defaultwidgets/editor.php, mod/file/friends.php,
+ mod/file/index.php, mod/file/search.php, mod/file/upload.php,
+ mod/file/view.php, mod/file/views/default/file/group_module.php,
+ .../views/default/widgets/filerepo/content.php, mod/groups/lib/groups.php,
+ .../default/widgets/a_users_groups/content.php, mod/messageboard/index.php,
+ .../views/default/widgets/messageboard/content.php, mod/messages/inbox.php,
+ mod/messages/read.php, mod/messages/sent.php, mod/pages/friends.php,
+ mod/pages/index.php, mod/pages/revision.php, mod/pages/view.php,
+ mod/pages/views/default/pages/group_module.php,
+ .../views/default/pages/sidebar/navigation.php,
+ mod/pages/views/default/widgets/pages/content.php, mod/profile/icon.php,
+ mod/profile/views/default/profile/details.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/owner_block.php, mod/thewire/index.php,
+ .../views/default/widgets/thewire/content.php, pages/avatar/edit.php,
+ pages/avatar/view.php, pages/friends/index.php, pages/friends/of.php,
+ pages/friends/pickercallback.php, pages/profile/edit.php,
+ pages/settings/account.php, pages/settings/statistics.php,
+ pages/settings/tools.php, .../core/settings/account/default_access.php,
+ views/default/core/settings/account/email.php,
+ views/default/core/settings/account/language.php,
+ views/default/core/settings/account/name.php,
+ views/default/core/settings/account/password.php,
+ views/default/js/initialize_elgg.php,
+ views/default/layout/elements/owner_block.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/widgets.php,
+ views/default/page/elements/content_header.php,
+ .../page/elements/content_header_member.php,
+ views/foaf/page/shells/default.php: changed elgg_get_page_owner() to
+ elgg_get_page_owner_entity() to be more consistent
+
+ * mod/file/languages/en.php: updated language file for file plugin due to
+ change in groups
+
+ * mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/groups/css.php,
+ .../default/groups/profile/activity_module.php,
+ .../default/groups/profile/activity_widget.php,
+ .../views/default/groups/profile/widgets.php: adding activity module to
+ groups
+
+ * views/default/css/admin.php: going back to overflow:hidden on elgg-body -
+ too many issues with display: table-cell
+
+ * languages/en.php, views/default/css/admin.php,
+ views/default/widgets/content_stats/content.php,
+ views/default/widgets/content_stats/edit.php,
+ views/default/widgets/friends/edit.php,
+ views/default/widgets/new_users/edit.php,
+ views/default/widgets/online_users/edit.php: added edit views for admin
+ widgets
+
+ * mod/ecml/README.txt, mod/ecml/actions/save_permissions.php,
+ mod/ecml/ecml_functions.php, mod/ecml/graphics/dailymotion.png,
+ mod/ecml/graphics/ecml.png, mod/ecml/graphics/googlemaps.png,
+ mod/ecml/graphics/logo_bliptv.gif, mod/ecml/graphics/logo_dailymotion.gif,
+ mod/ecml/graphics/logo_googlemaps.gif, mod/ecml/graphics/logo_livevideo.gif,
+ mod/ecml/graphics/logo_redlasso.gif, mod/ecml/graphics/logo_slideshare.gif,
+ mod/ecml/graphics/logo_vimeo.gif, mod/ecml/graphics/logo_youtube.gif,
+ mod/ecml/graphics/redlasso_1.png, mod/ecml/graphics/redlasso_2.png,
+ mod/ecml/graphics/slideshare.png, mod/ecml/graphics/url_status.png,
+ mod/ecml/graphics/vimeo.png, mod/ecml/graphics/youtube.png,
+ mod/ecml/languages/en.php, mod/ecml/manifest.xml, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/help.php,
+ mod/ecml/views/default/ecml/help/blip.tv.php,
+ mod/ecml/views/default/ecml/help/dailymotion.php,
+ mod/ecml/views/default/ecml/help/googlemaps.php,
+ mod/ecml/views/default/ecml/help/livevideo.php,
+ mod/ecml/views/default/ecml/help/redlasso.php,
+ mod/ecml/views/default/ecml/help/slideshare.php,
+ mod/ecml/views/default/ecml/help/vimeo.php,
+ mod/ecml/views/default/ecml/help/youtube.php,
+ mod/ecml/views/default/ecml/input_ext.php,
+ mod/ecml/views/default/ecml/keyword_help.php,
+ mod/ecml/views/default/ecml/keywords/blip.tv.php,
+ .../views/default/ecml/keywords/dailymotion.php,
+ mod/ecml/views/default/ecml/keywords/entity.php,
+ .../views/default/ecml/keywords/googlemaps.php,
+ mod/ecml/views/default/ecml/keywords/livevideo.php,
+ mod/ecml/views/default/ecml/keywords/redlasso.php,
+ .../views/default/ecml/keywords/slideshare.php,
+ mod/ecml/views/default/ecml/keywords/user_list.php,
+ mod/ecml/views/default/ecml/keywords/vimeo.php,
+ mod/ecml/views/default/ecml/keywords/youtube.php,
+ .../views/default/embed/web_services/content.php,
+ mod/ecml/views/default/settings/ecml/edit.php: moving ecml to plugins
+ repository as it won't be a part of 1.8.0. It will be back though...
+
+ * views/default/css/admin.php, views/default/css/elements/navigation.php,
+ views/default/css/elements/reset.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/navigation/pagination.php, views/default/navigation/tabs.php:
+ adding elgg-state-* css elements
+
+ * engine/lib/views.php: fixed bug where a null passed as 2nd parameter to
+ elgg_view_layout() prevented backward compatibility
+
+ * js/lib/ui.widgets.js: one too many parents in the widget collapse code
+
+ * mod/ecml/views/default/ecml/input_ext.php,
+ mod/embed/views/default/embed/link.php, views/default/css/admin.php,
+ views/default/css/elements/forms.php: namespaced longtext-control
+
+ * mod/tinymce/graphics/ed-bg.gif, mod/tinymce/graphics/example.gif,
+ mod/tinymce/graphics/more.gif, mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ mod/tinymce/views/default/tinymce/init.php: cleaned up tinymce plugin
+
+ * mod/reportedcontent/start.php, .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/user_report.php,
+ .../default/widgets/reportedcontent/content.php,
+ .../views/default/widgets/reportedcontent/edit.php: added reported content
+ widget
+
+ * mod/reportedcontent/languages/en.php, mod/reportedcontent/start.php,
+ .../default/admin/utilities/reportedcontent.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/reportedcontent/admin_css.php, views/default/css/admin.php:
+ adding margin to admin buttons
+
+ * .../graphics/sign_in_with_twitter.gif,
+ mod/twitterservice/languages/en.php, mod/twitterservice/manifest.xml,
+ mod/twitterservice/start.php, mod/twitterservice/twitterservice_lib.php,
+ mod/twitterservice/vendors/twitteroauth/LICENSE,
+ mod/twitterservice/vendors/twitteroauth/OAuth.php,
+ mod/twitterservice/vendors/twitteroauth/README,
+ .../vendors/twitteroauth/twitterOAuth.php,
+ .../views/default/settings/twitterservice/edit.php,
+ .../views/default/twitterservice/css.php,
+ .../views/default/twitterservice/login.php,
+ .../views/default/twitterservice/metatags.php,
+ .../default/usersettings/twitterservice/edit.php: moved twitterservice into
+ core
+
+2011-01-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/chrome.php,
+ views/default/css/elements/core.php, views/default/css/elements/icons.php,
+ views/default/css/elements/navigation.php,
+ views/default/layout/objects/gallery.php,
+ views/default/layout/objects/list.php: light clean-up of the css
+
+ * js/lib/ui.widgets.js, pages/dashboard.php,
+ views/default/admin/dashboard.php, views/default/css/admin.php,
+ views/default/css/elements/core.php, views/default/layout/objects/widget.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/objects/widget/settings.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/layout/shells/widgets/add_panel.php: converted widgets to
+ modules
+
+ * engine/lib/views.php: added support for $vars to elgg_view_entity() - need
+ to clean up documentation and deprecate old usage
+
+2011-01-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/widgets.php, languages/en.php,
+ mod/developers/languages/en.php, mod/developers/start.php,
+ mod/thewire/start.php, views/default/admin/dashboard.php,
+ views/default/admin/overview/statistics.php,
+ views/default/admin/statistics/overview.php, views/default/css/admin.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_panel.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/widgets/content_stats/content.php,
+ views/default/widgets/new_users/content.php,
+ views/default/widgets/online_users/content.php: welcome to the admin
+ dashboard
+
+2011-01-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/logbrowser/start.php,
+ .../views/default/admin/utilities/logbrowser.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/logbrowser/table.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/appearance/profile_fields.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/overview/statistics.php,
+ views/default/admin/users/newest.php, views/default/admin/users/online.php,
+ views/default/css/admin.php, views/default/forms/admin/menu/save.php,
+ views/default/forms/profile/fields/add.php, views/default/forms/useradd.php,
+ views/default/layout/shells/admin.php,
+ views/default/layout/shells/admin/menu.php: updated more of the admin backend
+ to use new CSS/HTML
+
+ * views/default/admin/overview/statistics.php, views/default/css/admin.php:
+ starting to remove the old HTML/CSS in the admin backend
+
+ * views/default/css/admin.php, views/default/layout/shells/admin.php,
+ views/default/layout/shells/admin/menu.php: take two of the admin header and
+ sidebar menu - sidebar menu still needs plenty of work
+
+ * views/default/layout/objects/module.php: default elgg-inner to false in
+ module
+
+ * engine/lib/group.php, mod/groups/start.php: Refs #2557 merged fix into
+ trunk from 1.7 branch
+
+ * engine/lib/database.php, engine/lib/entities.php,
+ engine/lib/metastrings.php, engine/lib/notification.php, engine/lib/pam.php,
+ engine/lib/users.php, engine/lib/web_services.php, engine/lib/xml-rpc.php:
+ Refs #2804 #2805 pulling changes in trunk from 1.7 branch
+
+ * languages/en.php: forgot these language strings in the admin theme update
+
+ * views/default/css/admin.php, views/default/layout/shells/admin.php:
+ playing around a little with the admin theme
+
+2011-01-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ErrorResult.php: Fixes #2586 ErrorResult has PHP5
+ constructor now
+
+ * engine/lib/web_services.php: missed check for null parameters in web
+ services parameter code
+
+ * engine/lib/web_services.php: Fixes #2548 do not need include_post_data()
+ because of changes to rewrite rules
+
+ * engine/lib/sessions.php, engine/lib/web_services.php,
+ mod/uservalidationbyemail/start.php: testing for the existence of username in
+ pam credentials before using
+
+ * mod/groups/languages/en.php, mod/groups/lib/groups.php,
+ mod/groups/start.php, .../views/default/groups/sidebar/members.php: Fixes
+ #2295 added a group member list page
+
+ * views/default/css/elements/base.php,
+ .../layout/shells/one_column_with_sidebar.php: css now provides center for
+ text and centered for divs
+
+ * mod/pages/history.php, mod/pages/images/application.png,
+ mod/pages/images/code.png, mod/pages/images/css.png, mod/pages/images/db.png,
+ mod/pages/images/directory.png, mod/pages/images/doc.png,
+ mod/pages/images/file.gif, mod/pages/images/file.png,
+ mod/pages/images/film.png, mod/pages/images/flash.png,
+ mod/pages/images/folder-closed.gif, mod/pages/images/folder.gif,
+ mod/pages/images/folder_open.png, mod/pages/images/html.png,
+ mod/pages/images/java.png, mod/pages/images/linux.png,
+ mod/pages/images/minus.gif, mod/pages/images/music.png,
+ mod/pages/images/pdf.png, mod/pages/images/php.png,
+ mod/pages/images/picture.png, mod/pages/images/plus.gif,
+ mod/pages/images/ppt.png, mod/pages/images/psd.png,
+ mod/pages/images/ruby.png, mod/pages/images/script.png,
+ mod/pages/images/spinner.gif, mod/pages/images/treeview-black-line.gif,
+ mod/pages/images/treeview-black.gif,
+ mod/pages/images/treeview-default-line.gif,
+ mod/pages/images/treeview-default.gif,
+ mod/pages/images/treeview-famfamfam-line.gif,
+ mod/pages/images/treeview-famfamfam.gif,
+ mod/pages/images/treeview-gray-line.gif, mod/pages/images/treeview-gray.gif,
+ mod/pages/images/treeview-red-line.gif, mod/pages/images/treeview-red.gif,
+ mod/pages/images/txt.png, mod/pages/images/xls.png, mod/pages/images/zip.png,
+ mod/pages/index.php, mod/pages/javascript/jquery.treeview.async.js,
+ mod/pages/javascript/jquery.treeview.js, mod/pages/lib/pages.php,
+ mod/pages/new.php, mod/pages/pagesTree.php, mod/pages/revision.php,
+ mod/pages/start.php, mod/pages/vendors/jquery-treeview/.gitignore,
+ mod/pages/vendors/jquery-treeview/README.md,
+ mod/pages/vendors/jquery-treeview/changelog.txt,
+ mod/pages/vendors/jquery-treeview/demo/async.html,
+ mod/pages/vendors/jquery-treeview/demo/bg.gif,
+ mod/pages/vendors/jquery-treeview/demo/demo.js,
+ mod/pages/vendors/jquery-treeview/demo/edit.html,
+ mod/pages/vendors/jquery-treeview/demo/images.html,
+ mod/pages/vendors/jquery-treeview/demo/index.html,
+ mod/pages/vendors/jquery-treeview/demo/large.html,
+ .../vendors/jquery-treeview/demo/prerendered.html,
+ mod/pages/vendors/jquery-treeview/demo/screen.css,
+ mod/pages/vendors/jquery-treeview/demo/simple.html,
+ .../vendors/jquery-treeview/demo/sortable.html,
+ mod/pages/vendors/jquery-treeview/demo/source.php,
+ mod/pages/vendors/jquery-treeview/demo/source.phps,
+ .../vendors/jquery-treeview/images/ajax-loader.gif,
+ mod/pages/vendors/jquery-treeview/images/file.gif,
+ .../jquery-treeview/images/folder-closed.gif,
+ .../vendors/jquery-treeview/images/folder.gif,
+ mod/pages/vendors/jquery-treeview/images/minus.gif,
+ mod/pages/vendors/jquery-treeview/images/plus.gif,
+ .../jquery-treeview/images/treeview-black-line.gif,
+ .../jquery-treeview/images/treeview-black.gif,
+ .../images/treeview-default-line.gif,
+ .../jquery-treeview/images/treeview-default.gif,
+ .../images/treeview-famfamfam-line.gif,
+ .../jquery-treeview/images/treeview-famfamfam.gif,
+ .../jquery-treeview/images/treeview-gray-line.gif,
+ .../jquery-treeview/images/treeview-gray.gif,
+ .../jquery-treeview/images/treeview-red-line.gif,
+ .../jquery-treeview/images/treeview-red.gif,
+ .../jquery-treeview/jquery.treeview.async.js,
+ .../vendors/jquery-treeview/jquery.treeview.css,
+ .../jquery-treeview/jquery.treeview.edit.js,
+ .../vendors/jquery-treeview/jquery.treeview.js,
+ .../vendors/jquery-treeview/jquery.treeview.min.js,
+ .../jquery-treeview/jquery.treeview.sortable.js,
+ .../vendors/jquery-treeview/lib/jquery.cookie.js,
+ mod/pages/vendors/jquery-treeview/lib/jquery.js,
+ mod/pages/vendors/jquery-treeview/todo, mod/pages/view.php,
+ mod/pages/views/default/pages/css.php,
+ mod/pages/views/default/pages/metatags.php,
+ mod/pages/views/default/pages/sidebar/history.php,
+ .../views/default/pages/sidebar/navigation.php,
+ .../views/default/pages/sidebar/sidebarthis.php,
+ mod/pages/views/default/pages/sidebar/starter.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/sidebar/wrapper.php: finished the first pass on
+ the pages plugin for using the new HTML/CSS
+
+ * views/default/layout/shells/content/header.php: this time got the guid
+ correct for the add button
+
+ * views/default/css/elements/navigation.php: limiting the +/- additions to
+ page menus
+
+ * js/lib/ui.js: limit the collapsible menus to page menus
+
+ * actions/widgets/add.php: making sure context is set correctly when adding
+ a widget
+
+ * views/default/layout/shells/content/header.php: fixed add link for all
+ site content pages
+
+ * mod/pages/actions/pages/edit.php, mod/pages/edit.php,
+ mod/pages/friends.php, mod/pages/history.php, mod/pages/index.php,
+ mod/pages/languages/en.php, mod/pages/lib/pages.php, mod/pages/new.php,
+ mod/pages/revision.php, mod/pages/start.php,
+ mod/pages/views/default/annotation/icon.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/css.php,
+ mod/pages/views/default/pages/group_module.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/icon.php,
+ mod/pages/views/default/pages/pagegallery.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/pages/sidebar/navigation.php,
+ mod/pages/views/default/widgets/pages/content.php,
+ mod/pages/views/default/widgets/pages/edit.php, mod/pages/world.php: more
+ clean up of the pages plugin to use new HTML/CSS
+
+ * mod/blog/views/default/object/blog.php: using list metadata view rather
+ than custom code
+
+ * engine/classes/ElggPlugin.php: fixed bug with plugin settings because of
+ assignment operator confusion
+
+ * engine/lib/private_settings.php: do not need {} around quoted variables
+ surrounded by quotes
+
+ * engine/classes/ElggPlugin.php: Fixes #2812 - correct check for guid now
+
+ * engine/classes/ElggPlugin.php: fixed backward compatibility issue with
+ $CONFIG in plugins' start.php
+
+ * engine/lib/navigation.php: deprecated add_menu() and made it compatible
+ with 1.8
+
+ * .../layout/shells/two_column_left_sidebar.php: added the
+ two_column_left_sidebar layout back so that plugins from 1.7 work with 1.8
+
+2011-01-21 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php, views/default/css/elements/base.php,
+ views/default/css/elements/chrome.php, views/default/css/elements/core.php,
+ views/default/css/elements/forms.php, views/default/css/elements/grid.php,
+ views/default/css/elements/icons.php, views/default/css/elements/layout.php,
+ views/default/css/elements/misc.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/reset.php, views/default/css/elements/spacing.php,
+ views/default/css/elements/typography.php: Made a thorough pass over the css.
+ Included todo's throughout to track what still needs to be done.
+
+2011-01-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/list/metadata.php: moved likes to end of
+ metadata and added a links parameter
+
+ * views/default/layout/shells/content/header.php: using page owner rather
+ than owner for better support for groups
+
+ * engine/lib/views.php: adding 'action' to url when overriding the form
+ action
+
+2011-01-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/actions/delete.php, mod/messages/actions/messages/delete.php,
+ mod/messages/actions/messages/process.php,
+ mod/messages/actions/messages/send.php, mod/messages/actions/send.php,
+ mod/messages/inbox.php, mod/messages/index.php,
+ mod/messages/languages/en.php, mod/messages/lib/messages.php,
+ mod/messages/read.php, mod/messages/readme.txt, mod/messages/send.php,
+ mod/messages/sent.php, mod/messages/start.php,
+ .../views/default/forms/messages/process.php,
+ .../views/default/forms/messages/reply.php,
+ mod/messages/views/default/forms/messages/send.php,
+ mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php,
+ mod/messages/views/default/object/messages.php: Updated the messages plugin
+ to use the new CSS/HTML
+
+ * mod/pages/actions/pages/editwelcome.php, mod/pages/edit.php,
+ mod/pages/friends.php, mod/pages/history.php, mod/pages/index.php,
+ mod/pages/languages/en.php, mod/pages/lib/pages.php, mod/pages/new.php,
+ mod/pages/start.php, mod/pages/view.php,
+ .../views/default/forms/pages/editwelcome.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/welcome.php, mod/pages/welcome.php,
+ mod/pages/world.php: pages plugin using new layout - still need to get
+ subpages working and navigation
+
+2011-01-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/export_handler.php, index.php,
+ mod/reportedcontent/start.php, mod/sitepages/sitepages_functions.php,
+ mod/tagcloud/tagcloud.php, pages/friends/add.php,
+ pages/friends/collections.php: changed layout on pages to one_sidebar
+
+ * mod/search/index.php, mod/search/views/default/search/layout.php,
+ mod/search/views/default/search/no_results.php: using new menu system and
+ page layouts in search
+
+ * mod/groups/graphics/icon.php, mod/groups/icon.php,
+ mod/groups/languages/en.php, mod/groups/lib/discussion.php,
+ mod/groups/start.php, .../views/default/discussion/group_module.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ .../views/default/groups/profile/forum_widget.php,
+ .../views/default/groups/profile/widgets.php,
+ .../views/default/object/groupforumtopic.php: finished discussion rewrite to
+ use new html/css
+
+2011-01-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/discussion/delete.php,
+ mod/groups/actions/discussion/save.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/addtopic.php,
+ mod/groups/edittopic.php, mod/groups/forum.php, mod/groups/languages/en.php,
+ mod/groups/lib/discussion.php, mod/groups/start.php,
+ mod/groups/topicposts.php,
+ mod/groups/views/default/forms/discussion/save.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/viewposts.php,
+ .../views/default/groups/group_sort_menu.php,
+ .../views/default/groups/profile/forum_widget.php,
+ .../views/default/object/groupforumtopic.php: discussion topics using new
+ page handler
+
+ * mod/developers/languages/en.php, mod/developers/manifest.xml,
+ mod/developers/start.php, .../views/default/admin/developers/preview.php:
+ added the beginnings of a core developers tool plugin
+
+ * documentation/css/preview/general.php, documentation/css/preview/grid.php,
+ documentation/css/preview/images.php, documentation/css/preview/index.php,
+ documentation/css/preview/nav.php, documentation/css/preview/objects.php,
+ documentation/css/preview/widgets.php: Added images to css preview and
+ removed the page centering
+
+ * engine/lib/river.php: Fixes #2402 adds 'add' 'river' plugin hook
+
+ * actions/profile/edit.php: Fixes #2372 fixed the entity included in profile
+ update event
+
+ * engine/tests/suite.php: Refs #2757 merged fix into trunk
+
+ * mod/twitter/languages/en.php, mod/twitter/start.php: Refs #2791 merged fix
+ into trunk
+
+2011-01-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/list/body.php: Small typo in comment
+
+2011-01-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/invite.php, mod/groups/lib/groups.php,
+ mod/groups/membershipreq.php, mod/groups/start.php,
+ .../views/default/groups/profile/buttons.php: finished moving the group pages
+ to library - forum pages next
+
+ * mod/groups/activity.php, mod/groups/all.php, mod/groups/edit.php,
+ mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invitations.php, mod/groups/languages/en.php,
+ mod/groups/lib/groups.php, mod/groups/membership.php, mod/groups/new.php,
+ mod/groups/start.php, .../views/default/groups/group_sort_menu.php,
+ .../views/default/groups/profile/buttons.php: moved most of the groups pages
+ into its library
+
+2011-01-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, mod/diagnostics/languages/en.php,
+ mod/logbrowser/languages/en.php,
+ .../views/default/admin/utilities/logbrowser.php: finished the admin title
+ modifications
+
+ * engine/lib/system_log.php: Fixed problem where system log code would crash
+ due to new plugin code
+
+ * engine/lib/admin.php, languages/en.php, mod/defaultwidgets/start.php,
+ .../views/default/admin/utilities/diagnostics.php,
+ mod/uservalidationbyemail/languages/en.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/appearance/profile_fields.php,
+ views/default/admin/overview/numentities.php,
+ views/default/admin/overview/online.php,
+ views/default/admin/overview/statistics.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/admin/users/add.php, views/default/admin/users/newest.php,
+ views/default/admin/users/online.php, views/default/layout/shells/admin.php,
+ views/default/layout/shells/administration.php: drying up the title creation
+ in the admin backend
+
+ * mod/groups/all.php, mod/groups/languages/en.php,
+ mod/groups/views/default/group/default.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ .../views/default/groups/sidebar/featured.php,
+ mod/groups/views/default/groups/sidebar/find.php,
+ .../views/default/icon/group/default/large.php,
+ .../views/default/icon/group/default/medium.php,
+ .../views/default/icon/group/default/small.php,
+ .../views/default/icon/group/default/tiny.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/settings/groups/edit.php: cleanup of the groups
+ plugin views
+
+2011-01-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/installation/canvas/default.php: elgg_view_layout is not used in
+ installation so removing old view
+
+ * install/css/install.css, views/installation/messages/errors/error.php,
+ views/installation/messages/errors/list.php,
+ views/installation/messages/list.php,
+ views/installation/messages/messages/list.php,
+ views/installation/messages/messages/message.php,
+ views/installation/page/elements/messages.php,
+ views/installation/page/shells/default.php: Fixes #2783 - updated
+ installation message code to mirror default views
+
+2011-01-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginPackage.php: Refs #2781: Checking if a dir was
+ passed as a plugin package. Need to do this to allow packages to be loaded
+ outside of plugin_dir.
+
+ * engine/classes/ElggPlugin.php: Refs #2781: Using same technique to check
+ for full plugin path in ElggPlugin.
+
+ * views/default/admin/plugins/simple.php: Refs #2782: Fixed WSOD for simple
+ plugin admin.
+
+ * languages/en.php, views/default/admin/components/invalid_plugin.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php: Refs #2782: Fixed WSOD for invalid
+ plugins on admin screen. Needs better CSS, but holding off until admin area
+ CSS revamp.
+
+ * engine/lib/entities.php: Changed callback function option from
+ 'row_callback' to 'callback' for elgg_get_entities().
+
+2011-01-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginPackage.php: Refs #2781 path checking in
+ ElggPluginPackage constructor should work for both *nix and Windows now
+
+ * mod/groups/groupprofile.php, .../views/default/groups/activity_latest.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/members.php,
+ .../default/groups/profile/activity_widget.php,
+ .../views/default/groups/profile/buttons.php,
+ .../default/groups/profile/closed_membership.php,
+ .../views/default/groups/profile/forum_widget.php,
+ .../views/default/groups/profile/profile_block.php,
+ .../views/default/groups/profile/widgets.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/groups/sidebar/members.php: cleaned up the group profile
+
+2011-01-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php,
+ mod/file/views/default/object/file.php,
+ views/default/css/elements/chrome.php, views/default/output/tags.php: changed
+ tag display to <ul>
+
+2011-01-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixes #1242: elgg_get_data() correctly returns an
+ empty array on no results. It still returns false on error, but I consider
+ that the correct behavior. Please reopen if it needs discussion.
+
+ * engine/lib/database.php, engine/tests/objects/entities.php: Refs #1242,
+ Fixes #2775. Pulled common code between get_data() and get_data_row() into
+ elgg_query_runner(). Caching is now done in the query runner instead of
+ spread across execute_query() and get_data*(). Namespacing cache for callback
+ and single row request. I'm open to better names for that function. Not
+ closing #1242 because the elgg_get_entities*() functions can still return
+ false.
+
+2011-01-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/start.php: moved action registration into init
+
+ * mod/sitepages/sitepages_functions.php: updating the site pages class to
+ use initializeAttributes
+
+ * mod/blog/languages/en.php, mod/blog/lib/blog.php, mod/blog/start.php,
+ mod/blog/views/default/blog/group_module.php, mod/file/index.php,
+ mod/file/languages/en.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/file/group_module.php,
+ views/default/layout/shells/content/header.php: switched from new to add
+
+ * engine/lib/relationships.php: Fixes test for $relationship_guid in sql
+ generating function
+
+ * engine/classes/ElggPluginPackage.php, engine/lib/elgglib.php,
+ engine/lib/metadata.php, engine/lib/views.php, engine/lib/xml.php: Fixes
+ #2774 - fixes several E_NOTICE issues - mostly due to accessign array indexes
+
+
+ * engine/start.php: replaced deprecated load_plugins() - thanks to hellekin
+
+2011-01-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ajax.js: Refs #2770 - success messages are stoted is success array
+ now in json
+
+ * js/lib/ui.js, views/default/js/elgg.php: Refs #2676 removes old
+ elgg_system_messages() function
+
+2011-01-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/elgglib.js: Fixes #2770: Corrected markup in JS to create system
+ messages.
+
+ * mod/profile/manifest.xml: Refs #2761. Removed test dep from profile
+ manifest. Profile no longer requires a version of Elgg from the year 3009.
+
+ * actions/admin/plugins/activate.php,
+ actions/admin/plugins/activate_all.php, actions/admin/plugins/deactivate.php,
+ actions/admin/plugins/deactivate_all.php, actions/admin/plugins/disable.php,
+ actions/admin/plugins/disableall.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/enableall.php, actions/admin/plugins/reorder.php,
+ actions/admin/plugins/set_priority.php,
+ actions/admin/plugins/simple_update_states.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginPackage.php, engine/lib/plugins.php,
+ languages/en.php, mod/profile/manifest.xml,
+ views/default/admin/components/plugin.php,
+ .../admin/components/plugin_dependencies.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php: Fixes #2760. Refs #2759. Updated
+ plugin admin actions to use the new system. Added plugin dependency views in
+ admin. ElggPluginPackage->checkDependencies() now returns the detected value.
+
+
+ * engine/classes/ElggPluginManifestParser17.php: Refs #2759: Added
+ elgg_version to 1.7 manifest parser.
+
+ * mod/oauth_lib/start.php: Fixes #2764. Corrected plugin path for oauth
+ vendor libs.
+
+2011-01-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.js, views/default/js/elgg.php: Fixes #2676 system messages fade
+ out again
+
+ * engine/lib/upgrades/2011010401.php, version.php: Fixes #2458 adds upgrade
+ to set default_access on old installs
+
+2011-01-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../page/elements/content_header_member.php,
+ views/default/page/shells/admin.php: Refs #7221: Removed CRLFs.
+
+ * views/default/js/languages.php, views/default/js/languages/en.php: Refs
+ #2771: Removed CRLFs.
+
+ * engine/lib/filestore.php: Refs #2771: Removed CRLF.
+
+ * js/lib/ajax.js, js/lib/elgglib.js, js/lib/languages.js,
+ js/lib/security.js, js/lib/session.js, js/lib/ui.js, js/lib/ui.widgets.js,
+ js/tests/ElggAjaxOptionsTest.js, js/tests/ElggAjaxTest.js,
+ js/tests/ElggLanguagesTest.js, js/tests/ElggLibTest.js,
+ js/tests/ElggSecurityTest.js, js/tests/ElggSessionTest.js,
+ js/tests/jsTestDriver.conf: Refs #2771: Removing CRLFs from javascript files.
+
+
+ * engine/lib/plugins.php: Fixed problem removing plugin entities if physical
+ files were deleted.
+
+2011-01-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/start.php: Refs #2732 added link to site pages but tab menu
+ still does not work
+
+ * mod/captcha/backgrounds/bg1.jpg, mod/captcha/backgrounds/bg2.jpg,
+ mod/captcha/backgrounds/bg3.jpg, mod/captcha/backgrounds/bg4.jpg,
+ mod/captcha/backgrounds/bg5.jpg, mod/captcha/captcha.php,
+ mod/captcha/fonts/1.ttf, mod/captcha/fonts/Liberation_serif_License.txt,
+ mod/captcha/languages/en.php, mod/captcha/manifest.xml,
+ mod/captcha/start.php, mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php, mod/crontrigger/manifest.xml,
+ mod/crontrigger/start.php: moving captcha and crontrigger plugins out of core
+
+
+2011-01-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginPackage.php: Removed experimental duplicate code
+ from ElggPlugin.
+
+ * engine/classes/ElggPlugin.php: Added ElggPlugin::getPath().
+
+ * engine/lib/plugins.php: Reindexing plugin priorities after regenerating
+ entities.
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginManifest.php,
+ engine/lib/plugins.php: Fixes #2763. Better normalizing for unused 1.7
+ manifest options. Added logging when ElggPluginPackage can't be loaded.
+ Better disabling of deleted physical plugins.
+
+ * mod/oauth_lib/manifest.xml: Removing unsupported requires in 1.7 manifest
+ for oauth lib.
+
+2011-01-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/examples/plugins/manifest.xml,
+ engine/classes/ElggPlugin.php, engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser18.php,
+ engine/classes/ElggPluginPackage.php, engine/lib/plugins.php,
+ engine/lib/upgrades/2011010101.php, engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_18/manifest.xml, languages/en.php,
+ version.php: Fixes #1986, #2170, #2225, #2759. Integrated ElggPluginPackage
+ and ElggPluginManifest with ElggPlugin. System now uses ElggPlugin objects to
+ determin plugins. Order is stored in private settings. This absolutely
+ requires running upgrade.php.
+
+ * engine/lib/elgglib.php: Refs #7552, #2547. Autoloading functions return
+ bool.
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggExtender.php,
+ engine/classes/ElggRelationship.php, engine/classes/ElggWidget.php: Refs
+ #2490. Using array_key_exists() instead of isset() in get() overrides to
+ prevent a check for (invalid) metadata with the name of an attribute if that
+ attribute evaluates to !isset().
+
+ * engine/lib/private_settings.php: Added checking for real entities to other
+ private setting functions.
+
+ * engine/lib/private_settings.php: set_private_setting() checks if the guid
+ is a real entity.
+
+ * upgrade.php: Upgrade invalidates simplecache instead of regenerating it.
+
+2011-01-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/save.php, mod/groups/languages/en.php,
+ mod/groups/views/default/groups/featured.php,
+ .../default/widgets/a_users_groups/content.php,
+ .../views/default/widgets/a_users_groups/edit.php: updated group widget
+
+ * engine/lib/admin.php, views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/plugins_advanced.php,
+ views/default/admin/plugins/plugins_simple.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/admin/site/site_advanced.php,
+ views/default/admin/site/site_basic.php: revert structure of admin views and
+ fixed uniqueness of admin page menu items
+
+2011-01-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, mod/blog/views/default/blog/sidebar/archives.php,
+ mod/blog/views/default/blog/sidebar/revisions.php,
+ mod/blog/views/default/forms/blog/save.php,
+ mod/embed/views/default/object/file/embedlist.php,
+ mod/groups/views/default/forms/groups/search.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/members.php,
+ views/default/annotation/generic_comment.php,
+ views/default/core/likes/display.php, views/default/core/members/sidebar.php,
+ views/default/css/admin.php, views/default/css/elements/core.php,
+ views/default/css/elements/misc.php, views/default/output/tagcloud.php:
+ updating the sidebar boxes to use the new module classes
+
+ * engine/lib/languages.php, .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/personal.php,
+ views/default/core/dashboard/blurb.php,
+ .../core/settings/account/default_access.php,
+ views/default/core/settings/account/email.php,
+ views/default/core/settings/account/language.php,
+ .../core/settings/account/notifications.php,
+ views/default/core/settings/account/password.php,
+ .../core/settings/statistics/numentities.php,
+ views/default/core/settings/statistics/online.php,
+ views/default/core/settings/tools/plugin.php,
+ views/default/css/elements/forms.php, views/default/css/elements/misc.php,
+ views/default/css/screen.php: using the info module for user settings
+
+ * views/default/css/admin.php, views/default/css/elements/base.php,
+ views/default/css/elements/chrome.php, views/default/css/elements/core.php,
+ views/default/css/elements/icons.php, views/default/css/elements/layout.php,
+ views/default/css/elements/misc.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/skin.php, views/default/css/elements/spacing.php,
+ views/default/css/elements/typography.php, views/default/css/screen.php,
+ .../layout/shells/one_column_with_sidebar.php: Refs #2317 dividing css
+ element views into skin views and base views. The expectation is that the
+ base views would not be overridden in a theme so the admin css can depend on
+ them.
+
+ * mod/blog/views/default/object/blog.php,
+ views/default/css/elements/core.php, views/default/navigation/menu/site.php,
+ views/default/output/longtext.php: starting adding a .elgg-text class -
+ plugins need to use output/longtext when displaying text
+
+ * .../views/default/bookmarks/bookmarklet.php,
+ views/default/css/elements/core.php: added discoverable pattern to css
+
+ * mod/blog/views/default/widgets/blog/edit.php,
+ mod/file/actions/file/delete.php, mod/file/actions/file/download.php,
+ mod/file/actions/file/save.php, mod/file/actions/file/upload.php,
+ mod/file/classes/FilePluginFile.php, mod/file/edit.php, mod/file/friends.php,
+ mod/file/index.php, mod/file/languages/en.php, mod/file/lib/file.php,
+ mod/file/search.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/file/css.php,
+ mod/file/views/default/file/group_module.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/icon.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/file/upload.php,
+ mod/file/views/default/forms/file/upload.php,
+ .../views/default/widgets/filerepo/content.php,
+ mod/file/views/default/widgets/filerepo/edit.php, mod/file/world.php,
+ mod/groups/views/default/groups/css.php,
+ views/default/output/confirmlink.php: almost finished updating the file
+ plugin to work with new html/css
+
+ * engine/lib/elgglib.php: removed unnecessary variable from stick forms code
+
+
+ * engine/lib/views.php: fixed the function for viewing latest comments
+
+ * engine/lib/output.php: stop double encoding attributes in output/input
+ elements
+
+ * engine/lib/users.php, languages/en.php: Fixes #2740 - exception messages
+ using the value for minimum username and password length
+
+ * engine/lib/group.php: Fixes #2561 only triggering join, group event if the
+ add relationship succeeded
+
+ * engine/lib/metadata.php: Fixes #2698 not sanitizing strings to prevent
+ double encoding
+
+2010-12-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #2684, #2754: Merged r7701 to trunk.
+
+2010-12-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: not caching js and css when not served through
+ simple cache right now
+
+2010-12-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Refs #2583, #2754: Merged r7445-7446 to
+ trunk.
+
+2010-12-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * documentation/css/preview/grid.php: added borders to the css grid preview
+
+2010-12-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php, engine/lib/views.php: Refs #2752, #2635. Merged
+ r7299 to trunk.
+
+ * engine/lib/metadata.php: Merged r7272 from 1.7 to trunk.
+
+2010-12-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/lib/blog.php, mod/file/download.php, mod/file/index.php,
+ mod/file/start.php, mod/file/thumbnail.php, mod/file/upload.php,
+ mod/file/views/default/file/groupprofile_files.php: file index page now
+ working for both users and groups
+
+ * mod/file/download.php, mod/file/index.php, mod/file/search.php,
+ mod/file/thumbnail.php, mod/file/views/default/file/upload.php,
+ .../views/default/widgets/filerepo/content.php,
+ mod/file/views/rss/object/file.php: a little standardization of the file
+ plugin code
+
+ * mod/embed/views/default/embed/embed.php,
+ views/default/navigation/tabs.php: Fixes #2703 - added support for url ids in
+ navigation tabs
+
+ * mod/embed/views/default/embed/css.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ views/default/core/friends/collectiontabs.php, views/default/css/admin.php,
+ views/default/css/elements/navigation.php, views/default/css/ie.php,
+ views/default/navigation/tabs.php: switching to a better name for tabs in css
+
+
+ * views/default/css/admin.php, views/default/css/elements/heading.php,
+ views/default/css/screen.php: removed heading css elements view
+
+ * views/default/navigation/menu/site.php: site menu needs a clearfix
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/views.php,
+ mod/file/search.php, mod/file/views/default/file/css.php,
+ views/default/layout/objects/gallery.php: added a proper gallery view - still
+ need to wire up the elgg_view_list_item functions and remove the use of
+ context
+
+ * mod/blog/views/default/object/blog.php: updated blog plugin due to change
+ in output/confirmlink
+
+2010-12-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/search.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/object/file.php, views/default/css/elements/core.php,
+ views/default/layout/objects/list.php,
+ views/default/layout/objects/list/metadata.php: added gallery css for the
+ file plugin
+
+ * documentation/css/preview/forms.php,
+ documentation/css/preview/general.php, documentation/css/preview/grid.php,
+ documentation/css/preview/head.php, documentation/css/preview/index.php,
+ documentation/css/preview/nav.php, documentation/css/preview/objects.php,
+ documentation/css/preview/widgets.php: major addition - adding preview of CSS
+ for developers and themers
+
+ * views/default/css/elements/skin.php: added some base css for 4 different
+ modules
+
+ * views/default/layout/objects/widget.php,
+ views/default/layout/objects/widget/controls.php: allow anyone to minimize a
+ widget
+
+ * views/default/widgets/friends/content.php: put a catch in for a bad owner
+ in the friends widget
+
+ * engine/lib/entities.php: adding ability to override access regardless of
+ whether the entity is saved in the database yet
+
+ * views/default/graphics/icon.php, views/default/output/confirmlink.php,
+ views/default/profile/hover.php: more html validation cleanup
+
+ * mod/tinymce/views/default/input/longtext.php: supporting an id in tinycme
+ longtext and not using the invalid language attribute
+
+ * views/default/input/autocomplete.php, views/default/input/checkboxes.php,
+ views/default/input/datepicker.php, views/default/input/userpicker.php: fixed
+ a few minor issues in input views for validation
+
+ * views/default/layout/objects/list/metadata.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/output/access.php: updated the default object entity view
+
+ * views/default/layout/objects/list/metadata.php: let likes code handle
+ whether the user is logged in or not
+
+ * views/default/input/autocomplete.php: fixes documentation and url of
+ endpoint
+
+ * mod/file/view.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/file/icon.php,
+ .../default/file/icon/application/default.php,
+ .../views/default/file/icon/application/excel.php,
+ .../views/default/file/icon/application/msword.php,
+ .../views/default/file/icon/application/pdf.php,
+ .../default/file/icon/application/powerpoint.php,
+ .../default/file/icon/application/vnd.ms-excel.php,
+ .../file/icon/application/vnd.ms-powerpoint.php,
+ .../application/vnd.oasis.opendocument.text.php,
+ .../views/default/file/icon/application/x-gzip.php,
+ .../file/icon/application/x-rar-compressed.php,
+ .../default/file/icon/application/x-stuffit.php,
+ .../views/default/file/icon/application/zip.php,
+ mod/file/views/default/file/icon/archive.php,
+ mod/file/views/default/file/icon/audio.php,
+ mod/file/views/default/file/icon/audio/default.php,
+ mod/file/views/default/file/icon/default.php,
+ mod/file/views/default/file/icon/document.php,
+ mod/file/views/default/file/icon/text/default.php,
+ .../views/default/file/icon/text/directory.php,
+ mod/file/views/default/file/icon/text/v-card.php,
+ mod/file/views/default/file/icon/video.php,
+ mod/file/views/default/file/icon/video/default.php,
+ .../default/file/specialcontent/audio/mid.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/x-wav.php,
+ .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/object/file.php: updated the object/file view
+
+ * actions/admin/user/resetpassword.php, actions/register.php,
+ actions/user/default_access.php, actions/useradd.php,
+ pages/account/register.php, pages/avatar/view.php,
+ views/default/admin/overview/statistics.php, views/default/profile/hover.php,
+ views/installation/input/button.php: Refs #2428 removed more CONFIG uses
+
+ * mod/groups/all.php, mod/groups/views/default/group/default.php: fixed new
+ groups listing
+
+ * engine/lib/views.php: required for river rss to work
+
+ * views/rss/canvas/default.php, views/rss/core/river/body.php,
+ views/rss/layout/objects/image_block.php, views/rss/output/url.php:
+ supporting river rss
+
+ * views/rss/entities/entity_list.php, views/rss/layout/objects/list.php,
+ views/rss/layout/shells/default.php: Fixes #2113 - updated rss view type to
+ use new view structure for lists
+
+ * engine/lib/plugins.php, views/default/admin/plugins/plugins_simple.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/admin/site/site_advanced.php,
+ views/default/admin/site/site_basic.php: fixed a few issues with the admin
+ backend - need to look into better ways to structure admin sub views
+
+2010-12-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/categories/views/default/categories/css.php,
+ mod/embed/views/default/embed/css.php,
+ .../views/default/invitefriends/formitems.php,
+ .../views/default/messageboard/forms/add.php,
+ .../views/default/widgets/messageboard/content.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/messages.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ mod/tinymce/views/default/input/longtext.php,
+ .../uservalidationbyemail/unvalidated_user.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/plugins_advanced.php,
+ views/default/css/admin.php, views/default/css/elements/forms.php,
+ views/default/css/screen.php, views/default/input/access.php,
+ views/default/input/checkbox.php, views/default/input/checkboxes.php,
+ views/default/input/email.php, views/default/input/file.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/plaintext.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/page/shells/walled_garden.php,
+ views/installation/input/access.php, views/installation/input/checkboxes.php,
+ views/installation/input/longtext.php, views/installation/input/pulldown.php:
+ stage 1 in moving the forms markup to elgg- namespaced css - buttons still
+ need work
+
+ * mod/diagnostics/index.php, mod/diagnostics/start.php,
+ .../views/default/admin/utilities/diagnostics.php,
+ .../views/default/diagnostics/forms/download.php,
+ .../views/default/diagnostics/runalltests.php: updated the diagnostics plugin
+ to use the new admin backend
+
+ * engine/lib/admin.php, languages/en.php, mod/logbrowser/start.php,
+ mod/reportedcontent/start.php: added admin utilities menu item
+
+ * mod/diagnostics/index.php, mod/search/index.php,
+ mod/sitepages/sitepages_functions.php,
+ views/default/page/elements/content.php: Fixes #2241 - removed direct calls
+ to the content wrapper view and removed the view as it is been replaced by a
+ body view
+
+ * mod/blog/lib/blog.php: Refs #2077 added new blog post button to group blog
+ - can be used as module for remianing group tools
+
+ * mod/blog/lib/blog.php: Fixes #2169 - setting the blog edit page owner to
+ container
+
+ * mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/messages.php,
+ views/foaf/user/default.php: Refs #1553 - removed all hard coded profile urls
+ from core
+
+ * engine/lib/river.php, engine/lib/views.php: Fixes #2221 - rewrite of rover
+ functions has been completed with moving elgg_view_river_item() into the
+ views library. The ugly C&P functions were moved into the riverdashboard
+ plugin and new 1.7 style get/list functions were introduced
+
+ * actions/profile/edit.php, actions/profile/fields/add.php,
+ actions/profile/fields/delete.php, actions/profile/fields/reorder.php,
+ actions/profile/fields/reset.php, engine/lib/users.php,
+ mod/profile/views/default/profile/details.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/forms/profile/edit.php: Fixes #2751 profile custom fields uses
+ the config table now
+
+ * engine/lib/configuration.php: added a catch for configuration names longer
+ than 32 characters
+
+ * engine/lib/configuration.php: fixed bug where get_config was returning 0
+ because there is not not auto id on the config table
+
+ * mod/tabbed_profile/actions/addcomment.php,
+ mod/tabbed_profile/actions/deletecomment.php,
+ mod/tabbed_profile/graphics/defaultlarge.gif,
+ mod/tabbed_profile/graphics/defaultmaster.gif,
+ mod/tabbed_profile/graphics/defaultmedium.gif,
+ mod/tabbed_profile/graphics/defaultsmall.gif,
+ mod/tabbed_profile/graphics/defaulttiny.gif,
+ mod/tabbed_profile/graphics/defaulttopbar.gif,
+ mod/tabbed_profile/graphics/drag_handle.png,
+ mod/tabbed_profile/graphics/speech_bubble_tail.gif,
+ mod/tabbed_profile/graphics/twitter16px.png, mod/tabbed_profile/icon.php,
+ mod/tabbed_profile/icondirect.php, mod/tabbed_profile/languages/en.php,
+ mod/tabbed_profile/manifest.xml, mod/tabbed_profile/start.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ .../views/default/profile/content_wrapper.php,
+ mod/tabbed_profile/views/default/profile/css.php,
+ .../views/default/profile/listing.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ .../views/default/profile/menu/links.php,
+ .../views/default/profile/metatags.php,
+ .../views/default/profile/ownerblock.php,
+ .../views/default/profile/sidebar.php,
+ .../views/default/profile/tab_navigation.php,
+ .../views/default/profile/tabs/activity.php,
+ .../views/default/profile/tabs/commentwall.php,
+ .../views/default/profile/tabs/details.php,
+ .../views/default/profile/tabs/friends.php,
+ .../views/default/profile/tabs/groups.php,
+ .../views/default/profile/tabs/twitter.php: Fixes #2481 - moving
+ tabbed_profile plugin into the plugins repo from core - it needs some updates
+ to reflect changes to the core profile plugin
+
+ * mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ mod/riverdashboard/endpoint/get_comments.php,
+ mod/riverdashboard/endpoint/get_likes.php,
+ mod/riverdashboard/endpoint/ping.php,
+ mod/riverdashboard/graphics/follow_icon.png,
+ mod/riverdashboard/graphics/refresh.png, mod/riverdashboard/index.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/manifest.xml,
+ mod/riverdashboard/start.php, .../views/default/river/dashboard.php,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/ecml/activity.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/river/body.php,
+ .../views/default/riverdashboard/river/footer.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/json/riverdashboard/container.php,
+ .../views/rss/riverdashboard/container.php: Fixes #2226 moves riverdashboard
+ into secondary plugins from core plugins - most of riverdashboard
+ functionality is now in core (except for displaying who has liked stuff and
+ ajax refreshes)
+
+ * views/default/css/screen.php, views/default/forms/likes/display.php,
+ views/default/forms/likes/link.php: cleaned up left over views and css from
+ likes
+
+ * actions/likes/add.php, actions/likes/delete.php, engine/lib/elgglib.php,
+ js/lib/ui.js, languages/en.php, views/default/annotation/likes.php,
+ views/default/core/likes/display.php, views/default/core/river/controls.php,
+ views/default/css/screen.php, views/default/forms/likes/edit.php,
+ views/default/js/elgg.php: rewrote the display of likes
+
+ * engine/lib/annotations.php: updated documentation on new
+ elgg_annotation_exists() function
+
+ * mod/blog/views/default/object/blog.php: let likes code handle logged in
+ user status
+
+ * views/default/css/elements/navigation.php: forgot to remove commented css
+ statement
+
+ * views/default/css/elements/navigation.php,
+ views/default/page/elements/footer.php: styled the footer menu
+
+ * views/default/css/elements/core.php, views/default/css/elements/skin.php,
+ views/default/layout/elements/page_links.php,
+ views/default/layout/elements/sidebar.php: created a new layout element -
+ page links - holds stuff like the rss link
+
+ * mod/file/classes/FilePluginFile.php, mod/file/start.php: moved the file
+ class into a class file
+
+ * mod/blog/lib/blog.php, mod/blog/start.php: more clean up of the blog
+ plugin - removed unused functions and moved the url forwarder into library
+
+ * mod/defaultwidgets/start.php, mod/diagnostics/start.php,
+ mod/logbrowser/start.php, mod/messages/start.php,
+ mod/reportedcontent/start.php, mod/uservalidationbyemail/start.php: updating
+ plugins to use new page menu
+
+ * mod/file/view.php: forgot to add this file for the fie plugin
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/admin.php, engine/lib/navigation.php, engine/lib/users.php,
+ js/lib/ui.js, views/default/admin/overview.php,
+ views/default/admin/overview/statistics.php, views/default/css/admin.php,
+ views/default/css/elements/navigation.php,
+ views/default/layout/elements/sidebar.php,
+ views/default/navigation/menu/elements/group.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/navigation/menu/page.php: page menu using the new menu system -
+ admin menu updated
+
+ * mod/file/actions/delete.php, mod/file/actions/download.php,
+ mod/file/actions/file/delete.php, mod/file/actions/file/download.php,
+ mod/file/actions/file/save.php, mod/file/actions/file/upload.php,
+ mod/file/actions/save.php, mod/file/actions/upload.php, mod/file/edit.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/languages/en.php,
+ mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/object/file.php, mod/file/world.php: starting to
+ update the file plugin to use the new html/css
+
+ * mod/blog/languages/en.php, mod/blog/lib/blog.php, mod/blog/start.php,
+ mod/blog/views/default/blog/group_module.php,
+ views/default/layout/shells/content/header.php: new content link uses guid to
+ make supporting groups and users easier
+
+ * views/default/output/url.php: supporting anchors with a href in output/url
+
+
+ * views/default/layout/objects/list/metadata.php: added a general metadata
+ view for lists
+
+2010-12-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Cleaned up register_translations().
+
+2010-12-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Added elgg_register_viewtype().
+
+2010-12-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: merged the admin profile edit fields language strings
+ into core
+
+ * engine/lib/plugins.php: fixing merge of plugin code [7727] - it blew away
+ the plugin class loading code
+
+ * languages/en.php, mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/details.php: moved profile fields language
+ strings into core and update profile plugin details view
+
+ * engine/lib/users.php, views/default/navigation/menu/user_admin.php:
+ removed early version of admin context menu and fixed missing edit profile
+ button
+
+2010-12-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Refs #2635, #2643. Merged cache changes into
+ trunk.
+
+2010-12-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/graphics/drag_handle.png,
+ mod/profile/graphics/twitter16px.png, mod/profile/languages/en.php,
+ mod/profile/start.php, mod/profile/views/default/profile/box.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/details.php,
+ mod/profile/views/default/profile/listing.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ mod/profile/views/default/profile/menu/links.php,
+ mod/profile/views/default/profile/owner_block.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ mod/profile/views/default/profile/sidebar.php,
+ mod/profile/views/default/profile/wrapper.php: more clean up of the basic
+ profile plugin - reorged views and removed a lot of cruft
+
+2010-12-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Refs #2543: set_default_config() uses better
+ names. get_config() rewrites old names to new, but have to double up
+ assignments in $CONFIG for ppl not using get_config().
+
+2010-12-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/users.php, engine/lib/views.php, mod/blog/start.php,
+ mod/bookmarks/start.php, mod/file/start.php, mod/logbrowser/start.php,
+ mod/messages/start.php, mod/pages/start.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ views/default/navigation/menu/user_hover.php: improved menu creation for on
+ demand menus and integrated hover menu items into profile owner block
+
+ * engine/classes/ElggUser.php, engine/lib/elgglib.php, engine/lib/users.php,
+ mod/logbrowser/start.php, mod/messages/start.php,
+ views/default/css/elements/navigation.php, views/default/js/elgg.php,
+ views/default/navigation/menu/user_hover.php,
+ views/default/profile/hover.php: moved most of the code for the user hover
+ menu into the new menu system
+
+2010-12-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/icons/user/defaultlarge.gif,
+ _graphics/icons/user/defaultmaster.gif,
+ _graphics/icons/user/defaultmedium.gif,
+ _graphics/icons/user/defaultsmall.gif, _graphics/icons/user/defaulttiny.gif,
+ _graphics/icons/user/defaulttopbar.gif,
+ mod/profile/graphics/defaultlarge.gif,
+ mod/profile/graphics/defaultmaster.gif,
+ mod/profile/graphics/defaultmedium.gif,
+ mod/profile/graphics/defaultsmall.gif, mod/profile/graphics/defaulttiny.gif,
+ mod/profile/graphics/defaulttopbar.gif,
+ mod/profile/graphics/speech_bubble_tail.gif,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ views/default/icon/user/default/large.php,
+ views/default/icon/user/default/master.php,
+ views/default/icon/user/default/medium.php,
+ views/default/icon/user/default/small.php,
+ views/default/icon/user/default/tiny.php,
+ views/default/icon/user/default/topbar.php: moved default profile icons into
+ core
+
+ * mod/blog/start.php, mod/blog/views/default/blog/group_module.php,
+ mod/bookmarks/languages/en.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/groups/views/default/group/default.php, mod/pages/start.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/skin.php,
+ views/default/layout/elements/owner_block.php,
+ views/default/layout/elements/sidebar.php,
+ views/default/layout/objects/list/body.php,
+ views/default/navigation/menu/default.php, views/default/user/default.php:
+ updated owner blocks for users and groups
+
+2010-12-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, mod/blog/views/default/object/blog.php,
+ views/default/layout/elements/comments.php: supporting id for comments for in
+ page links
+
+ * mod/blog/views/default/object/blog.php,
+ views/default/layout/objects/list/body.php: fixing a few display issues in
+ the object/blog view
+
+ * mod/blog/views/default/object/blog.php,
+ views/default/css/elements/core.php,
+ views/default/layout/objects/list/body.php: creating standard list body for
+ plugins
+
+2010-12-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/profile/tabs/friends.php,
+ .../views/default/profile/tabs/groups.php: using new list methods in tabbed
+ profile plugin
+
+ * engine/classes/ElggUser.php: Added list groups and list friends class
+ methods - will be handy for federation
+
+ * engine/classes/ElggUser.php: added a class math to get a user's groups and
+ cleaned up some documentation
+
+ * engine/lib/users.php: Refs #2283 using entity_row_to_elggstar() when
+ loading user from username or code so that ElggUser can be subclassed
+
+ * views/default/layout/objects/list.php: Fixes #2730 - passing the vars
+ array into elgg_view_list_item so that eventually plugins can pass additional
+ parameters into list views
+
+ * engine/lib/elgglib.php: Fixes #2741 skipping :// when replacing // in file
+ paths so that we support URIs
+
+ * mod/tabbed_profile/manifest.xml: do not enable tabbed profile by default -
+ also need to set a conflict key in its manifest for the profile plugin
+
+2010-12-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/defaultwidgets/editor.php,
+ .../views/default/embed/web_services/content.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../views/default/riverdashboard/css.php,
+ views/default/admin/components/plugin.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/core/friends/picker.php, views/default/css/admin.php,
+ views/default/css/elements/forms.php, views/default/css/screen.php,
+ views/default/input/button.php, views/installation/input/button.php: adding
+ elgg namespace to button css classes
+
+2010-12-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: merged the fix to get access collection
+ documentation into trunk from 1.7 branch
+
+2010-12-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php, pages/entities/index.php,
+ views/default/css/elements/skin.php, views/default/css/screen.php,
+ views/default/forms/likes/edit.php, views/default/output/confirmlink.php:
+ added elgg-icon-delete and elgg-icon-likes
+
+ * engine/lib/views.php, mod/groups/views/default/groups/grouplisting.php,
+ .../views/default/profile/listing.php,
+ .../views/default/profile/tabs/activity.php,
+ .../views/default/profile/tabs/friends.php,
+ .../views/default/profile/tabs/groups.php: added the core river to the tabbed
+ profile plugin and fixed some deprecated function warnings
+
+2010-12-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/admin.php: fixed a bug I introduced in the admin css
+
+ * mod/profile/views/default/profile/box.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/details.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ mod/profile/views/default/profile/sidebar.php,
+ views/default/css/elements/skin.php: an almost done widget-based profile
+ plugin
+
+ * actions/widgets/save.php, engine/classes/ElggDiskFilestore.php,
+ js/lib/ui.js, js/lib/ui.widgets.js,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php, pages/dashboard.php,
+ views/default/css/screen.php, views/default/graphics/ajax_loader.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/objects/widget/settings.php,
+ views/default/layout/shells/widgets.php: fixed a few bugs and updated the
+ widget code
+
+ * js/lib/ui.widgets.js, views/default/css/screen.php,
+ views/default/layout/objects/widget.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/objects/widget/settings.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/layout/shells/widgets/add_panel.php: namespaced the widget code
+
+
+ * js/lib/ui.widgets.js, pages/dashboard.php,
+ views/default/core/dashboard/blurb.php, views/default/css/screen.php,
+ views/default/layout/shells/widgets.php: starting to use the grid in the
+ widget code
+
+ * engine/lib/river.php: fixed missed variable name change in river's use of
+ image block pattern
+
+ * mod/profile/views/default/profile/javascript.php,
+ .../views/default/profile/javascript.php: moved avatar drop down javascript
+ into core
+
+ * mod/file/views/default/file/css.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/icon.php, mod/profile/start.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/tabbed_profile/start.php,
+ mod/tabbed_profile/views/default/profile/css.php,
+ .../views/default/profile/javascript.php, views/default/css/screen.php,
+ views/default/js/elgg.php, views/default/profile/icon.php: using
+ elgg-user-icon instead of usericon and moving the css into core
+
+ * mod/blog/views/default/forms/blog/save.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/messages/views/default/messages/messages.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ .../views/default/object/reported_content.php,
+ mod/tabbed_profile/views/default/profile/css.php,
+ .../views/default/profile/ownerblock.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/css/admin.php, views/default/css/elements/forms.php,
+ views/default/css/elements/skin.php, views/default/css/screen.php,
+ views/default/forms/profile/fields/reset.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/page/elements/content_header.php: replacing action-button with
+ elgg-action-button
+
+ * views/default/css/elements/skin.php,
+ views/default/layout/shells/content/header.php: using more generic markup for
+ main header
+
+ * mod/search/views/default/search/css.php,
+ mod/search/views/default/search/search_box.php: updated search box css
+
+ * .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/footer_link.php, mod/sitepages/start.php,
+ .../views/default/sitepages/footer_menu.php,
+ views/default/css/elements/skin.php, views/default/page/elements/footer.php:
+ cleaning up the page footer - still need to add css for footer menu
+
+ * views/default/css/elements/skin.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/page/elements/topbar.php: refining the elgg-alt pattern
+
+ * views/default/css/admin.php, views/default/css/elements/core.php,
+ views/default/css/elements/layout.php, views/default/css/screen.php,
+ views/default/layout/objects/image_block.php: completed the media to image
+ block switch
+
+ * engine/lib/river.php, engine/lib/views.php,
+ mod/blog/views/default/object/blog.php, mod/riverdashboard/start.php,
+ views/default/annotation/generic_comment.php,
+ views/default/css/elements/layout.php,
+ views/default/layout/objects/image_block.php,
+ views/default/layout/objects/media.php: changed name from media block to
+ image block
+
+ * views/default/css/admin.php,
+ views/default/layout/shells/administration.php,
+ views/default/page/shells/admin.php: started cleaning up the admin css
+
+ * engine/lib/admin.php, engine/lib/views.php, engine/start.php: added a
+ ready,system event so that plugins can do things after the init has finished
+ but before pages are created
+
+ * views/default/navigation/menu/user_admin.php,
+ views/default/profile/hover.php, views/default/profile/icon.php: cleaned up
+ profile hover menu
+
+ * engine/lib/users.php, mod/logbrowser/start.php,
+ .../views/default/logbrowser/adminlinks.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ .../views/default/profile/admin_menu.php,
+ .../views/default/profile/hoverover.php,
+ mod/tabbed_profile/views/default/profile/icon.php,
+ .../views/default/profile/ownerblock.php,
+ views/default/navigation/menu/user_admin.php, views/default/profile/icon.php:
+ added a user admin menu that plugins can add menu items to
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/pages/start.php, mod/profile/views/default/profile/ownerblock.php: pulled
+ user owner block menu out of profile plugin with new menu code
+
+ * mod/profile/actions/addcomment.php, mod/profile/actions/deletecomment.php,
+ mod/profile/start.php, mod/profile/views/default/profile/box.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ .../views/default/profile/content_wrapper.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/details.php,
+ .../views/default/profile/tab_navigation.php,
+ .../views/default/profile/tabs/activity.php,
+ .../views/default/profile/tabs/commentwall.php,
+ mod/profile/views/default/profile/tabs/details.php,
+ mod/profile/views/default/profile/tabs/friends.php,
+ mod/profile/views/default/profile/tabs/groups.php,
+ mod/profile/views/default/profile/tabs/twitter.php,
+ mod/tabbed_profile/actions/addcomment.php,
+ mod/tabbed_profile/actions/deletecomment.php,
+ mod/tabbed_profile/graphics/defaultlarge.gif,
+ mod/tabbed_profile/graphics/defaultmaster.gif,
+ mod/tabbed_profile/graphics/defaultmedium.gif,
+ mod/tabbed_profile/graphics/defaultsmall.gif,
+ mod/tabbed_profile/graphics/defaulttiny.gif,
+ mod/tabbed_profile/graphics/defaulttopbar.gif,
+ mod/tabbed_profile/graphics/drag_handle.png,
+ mod/tabbed_profile/graphics/speech_bubble_tail.gif,
+ mod/tabbed_profile/graphics/twitter16px.png, mod/tabbed_profile/icon.php,
+ mod/tabbed_profile/icondirect.php, mod/tabbed_profile/languages/en.php,
+ mod/tabbed_profile/manifest.xml, mod/tabbed_profile/start.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ .../views/default/profile/admin_menu.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ .../views/default/profile/content_wrapper.php,
+ mod/tabbed_profile/views/default/profile/css.php,
+ .../views/default/profile/hoverover.php,
+ mod/tabbed_profile/views/default/profile/icon.php,
+ .../views/default/profile/javascript.php,
+ .../views/default/profile/listing.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ .../views/default/profile/menu/links.php,
+ .../views/default/profile/metatags.php,
+ .../views/default/profile/ownerblock.php,
+ .../views/default/profile/sidebar.php,
+ .../views/default/profile/tab_navigation.php,
+ .../views/default/profile/tabs/activity.php,
+ .../views/default/profile/tabs/commentwall.php,
+ .../views/default/profile/tabs/details.php,
+ .../views/default/profile/tabs/friends.php,
+ .../views/default/profile/tabs/groups.php,
+ .../views/default/profile/tabs/twitter.php: rough widget profile plugin
+
+ * mod/profile/javascript.php, mod/profile/start.php,
+ .../views/default/profile/content_wrapper.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/ownerblock.php,
+ .../views/default/profile/profile_content.php,
+ .../default/profile/profile_contents/activity.php,
+ .../profile/profile_contents/commentwall.php,
+ .../default/profile/profile_contents/details.php,
+ .../default/profile/profile_contents/friends.php,
+ .../default/profile/profile_contents/groups.php,
+ .../default/profile/profile_contents/twitter.php,
+ .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php,
+ mod/profile/views/default/profile/sidebar.php,
+ .../views/default/profile/tab_navigation.php,
+ .../views/default/profile/tabs/activity.php,
+ .../views/default/profile/tabs/commentwall.php,
+ mod/profile/views/default/profile/tabs/details.php,
+ mod/profile/views/default/profile/tabs/friends.php,
+ mod/profile/views/default/profile/tabs/groups.php,
+ mod/profile/views/default/profile/tabs/twitter.php: more profile clean up
+
+ * mod/profile/edit.php, mod/profile/index.php, mod/profile/profile_lib.php,
+ mod/profile/start.php: more cleanup of the profile plugin from the
+ reorganization
+
+2010-12-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/profile/fields/add.php, actions/profile/fields/delete.php,
+ actions/profile/fields/reorder.php, actions/profile/fields/reset.php,
+ engine/lib/admin.php, mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/editdefault.php, mod/profile/actions/editfield.php,
+ mod/profile/actions/reorder.php, mod/profile/actions/resetdefaultprofile.php,
+ mod/profile/start.php, mod/profile/vendor/jquery.jeditable.mini.js,
+ .../default/admin/appearance/defaultprofile.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../default/profile/editdefaultprofileitems.php,
+ vendors/jquery/jquery.jeditable.mini.js,
+ views/default/admin/appearance/profile_fields.php,
+ .../admin/appearance/profile_fields/list.php,
+ views/default/forms/profile/fields/add.php,
+ views/default/forms/profile/fields/reset.php: continuing to slash and burn
+ the profile plugin - moving the admin profile fields into core - last major
+ change
+
+ * actions/profile/edit.php, engine/lib/users.php, languages/en.php,
+ mod/profile/actions/edit.php, mod/profile/start.php, pages/avatar/edit.php,
+ pages/profile/edit.php, views/default/forms/profile/edit.php: moved profile
+ edit form into core
+
+ * engine/lib/users.php, languages/en.php, mod/profile/editicon.php,
+ .../views/default/js/jquery.imgareaselect-0.8.js,
+ .../default/js/jquery.imgareaselect-0.8.min.js,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/editicon.php,
+ .../views/default/profile/profile_ownerblock.php, pages/avatar/edit.php,
+ pages/avatar/view.php, vendors/jquery/jquery.imgareaselect-0.8.min.js,
+ views/default/core/avatar/crop.php, views/default/core/avatar/upload.php,
+ views/default/css/screen.php, views/default/forms/avatar/crop.php,
+ views/default/forms/avatar/upload.php: pulling the avatar code out of the
+ profile plugin - just some minor icon related code left
+
+ * actions/avatar/crop.php, actions/avatar/upload.php, engine/lib/users.php,
+ languages/en.php, mod/groups/start.php, mod/profile/actions/cropicon.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/views/default/profile/editicon.php,
+ views/default/forms/avatar/crop.php, views/default/forms/avatar/upload.php:
+ moved the avatar forms and actions into core from profile plugin
+
+ * engine/classes/ElggMenuItem.php, engine/lib/users.php,
+ engine/lib/usersettings.php, mod/invitefriends/index.php,
+ mod/invitefriends/start.php, .../views/default/invitefriends/formitems.php,
+ mod/notifications/groups.php, mod/notifications/index.php,
+ mod/notifications/start.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/groupsform.php,
+ views/default/css/elements/navigation.php,
+ views/default/layout/elements/sidebar.php,
+ views/default/navigation/menu/default.php: half way through converting
+ submenu to new menu code - pages and groups are the two major users left
+
+ * actions/admin/menu/save.php, actions/admin/menu_items.php,
+ engine/classes/ElggMenuItem.php, engine/lib/admin.php,
+ engine/lib/navigation.php, engine/lib/river.php, engine/lib/users.php,
+ mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/groups/start.php, mod/pages/start.php, mod/riverdashboard/start.php,
+ mod/thewire/start.php, views/default/admin/appearance/menu_items.php,
+ views/default/navigation/menu/elements/item.php,
+ views/default/navigation/menu/site.php,
+ views/default/navigation/site_nav.php,
+ views/default/page/elements/header.php: site nav menu now uses new menu code
+ (and finished the implementation of custom menu items while I was at it - not
+ backward compatible with the previous half finished version)
+
+2010-12-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * pages/account/forgotten_password.php, pages/account/register.php,
+ pages/entities/list.php, pages/friends/index.php, pages/friends/of.php,
+ pages/settings/statistics.php: updated some of the core pages based on new
+ CSS and layouts
+
+ * mod/notifications/start.php: fixed another underline to dash conversion
+ issue
+
+ * engine/lib/upgrades/2010121702.php, languages/en.php, version.php,
+ views/default/annotation/annotatelike.php,
+ views/default/river/annotation/likes/create.php: last of the river updates I
+ hope - fixes the likes river view
+
+ * engine/lib/notification.php, engine/lib/statistics.php,
+ engine/lib/users.php, engine/lib/usersettings.php,
+ mod/notifications/start.php, pages/settings/account.php,
+ pages/settings/index.php, pages/settings/plugins.php,
+ pages/settings/statistics.php, pages/settings/tools.php,
+ pages/settings/user.php, views/default/core/settings/account.php,
+ .../core/settings/account/default_access.php,
+ views/default/core/settings/account/email.php,
+ views/default/core/settings/account/language.php,
+ views/default/core/settings/account/name.php,
+ .../core/settings/account/notifications.php,
+ views/default/core/settings/account/password.php,
+ views/default/core/settings/statistics.php,
+ .../core/settings/statistics/numentities.php,
+ views/default/core/settings/statistics/online.php,
+ views/default/core/settings/tools.php,
+ views/default/core/settings/tools/plugin.php,
+ views/default/forms/account/settings.php,
+ views/default/page/elements/topbar.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php, views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/notifications.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/usersettings/user.php: reorganized the settings views and
+ updated the pages to use new layout
+
+ * .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php: removed old river code from
+ the profile plugin - profile updates no longer go to the river
+
+ * engine/lib/upgrades/2010121701.php, mod/groups/languages/en.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ .../river/object/groupforumtopic/annotate.php,
+ .../river/object/groupforumtopic/create.php,
+ .../river/object/groupforumtopic/update.php,
+ .../default/river/relationship/member/create.php, version.php: updated group
+ member and group forum topics to new river
+
+ * mod/pages/actions/pages/edit.php,
+ .../views/default/river/object/page/update.php,
+ .../views/default/river/object/page_top/update.php: removed pages update
+ river code
+
+ * mod/pages/languages/en.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/page_top/create.php,
+ mod/thewire/languages/en.php,
+ .../views/default/river/object/thewire/create.php: added pages and thewire
+ river entries
+
+ * languages/en.php, .../views/default/river/object/blog/create.php,
+ .../default/river/object/bookmarks/create.php, mod/file/languages/en.php,
+ .../views/default/river/object/file/create.php, mod/groups/languages/en.php,
+ mod/groups/views/default/river/group/create.php: supporting putting content
+ in groups in for river views and added file river code
+
+ * .../views/default/river/object/blog/create.php,
+ mod/bookmarks/languages/en.php,
+ .../default/river/object/bookmarks/create.php, views/default/css/screen.php,
+ .../river/annotation/generic_comment/create.php,
+ views/default/river/relationship/friend/create.php: updated river views for
+ content display and added new bookmarks river view code
+
+ * mod/bookmarks/start.php: bookmarks plugin needs to be rewritten - hacked
+ it to get the add functionality working
+
+ * engine/classes/ElggMenuBuilder.php, engine/classes/ElggMenuItem.php,
+ engine/lib/navigation.php, engine/lib/views.php: Refs #2320 added new menu
+ functions and classes
+
+ * mod/riverdashboard/start.php, .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/river/footer.php: fixed remaining javascript
+ for riverdashboard - it's ready to be moved out to plugins
+
+ * .../views/default/riverdashboard/css.php: fixed comment form toggle in
+ riverdashboard plugin
+
+ * mod/riverdashboard/index.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/river/body.php,
+ .../views/default/riverdashboard/river/footer.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ views/default/forms/likes/display.php: updated riverdashboard plugin to use
+ new river display code - javascript code currently broken for comments and
+ likes
+
+ * .../views/default/river/object/blog/create.php,
+ mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ mod/riverdashboard/start.php, .../views/default/river/item/list.php: updated
+ riverdashboard to load the river item class
+
+ * actions/comments/add.php, engine/lib/upgrades/2010121602.php,
+ mod/blog/languages/en.php, mod/file/languages/en.php,
+ mod/pages/languages/en.php, .../views/default/river/object/page/annotate.php,
+ .../default/river/object/page_top/annotate.php, version.php,
+ views/default/annotation/annotate.php,
+ .../river/annotation/generic_comment/create.php: updated the river
+ generic_comment view for the new river code
+
+ * _graphics/elgg_sprites.png, engine/lib/upgrades/2010121601.php,
+ languages/en.php, .../default/river/relationship/friend/create.php,
+ version.php, views/default/core/river/controls.php,
+ views/default/css/elements/skin.php, views/default/css/screen.php,
+ views/default/friends/river/create.php, views/default/river/item/list.php,
+ views/default/river/item/wrapper.php,
+ views/default/river/relationship/friend/create.php: updated the river friend
+ view for the new river code
+
+2010-12-16 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/upload_js.php: Fixes #2313, #1106 removed the last of the
+ aborted multiple file uploading code
+
+ * engine/lib/elgglib.php, js/lib/languages.js: Fixes #2725 - js page handler
+ now handles javascript views with slashes in their names
+
+ * engine/lib/elgglib.php: fixed a lot of notices being generated by the new
+ plugin hook code
+
+ * pages/members/search.php: replaced deprecated function in members search
+ page
+
+ * views/default/css/elements/skin.php,
+ views/default/layout/shells/one_column.php,
+ views/default/layout/shells/one_sidebar.php,
+ views/default/layout/shells/two_sidebar.php: adjusted page body css to use
+ top level class to determine width and centering
+
+ * pages/members/search.php, views/default/layout/shells/one_sidebar.php:
+ added title parameter to one_sidebar layout
+
+ * pages/members/search.php, views/default/layout/shells/content.php,
+ views/default/layout/shells/one_sidebar.php: layout views should use
+ 'content' to support alternate viewtypes (like rss) - updated the one_sidebar
+ view
+
+ * engine/lib/users.php, languages/en.php, mod/friends/languages/en.php,
+ mod/friends/manifest.xml, mod/friends/start.php,
+ .../views/default/widgets/friends/content.php,
+ mod/friends/views/default/widgets/friends/edit.php,
+ views/default/widgets/friends/content.php,
+ views/default/widgets/friends/edit.php: moved friends widget into core
+
+2010-12-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/widget.php,
+ views/default/layout/objects/widget/controls.php,
+ views/default/layout/objects/widget/settings.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout/shells/widgets/add_button.php,
+ views/default/layout/shells/widgets/add_panel.php,
+ views/default/object/widget.php, views/default/widgets/add_button.php,
+ views/default/widgets/add_panel.php, views/default/widgets/controls.php,
+ views/default/widgets/settings.php, views/default/widgets/wrapper.php: moved
+ widget into layout/objects as one of our core css objects
+
+ * engine/classes/ElggPluginManifestParser17.php: Fixes #2728 creating a name
+ for plugins with 1.7 manifests based on hellekin's patch
+
+ * views/default/admin/plugins/advanced.php: checking if categories are set
+ before looping (hellekin)
+
+ * engine/lib/statistics.php, mod/diagnostics/start.php,
+ mod/groups/start.php: updated to removing more deprecation warnings (from
+ hellekin)
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/friends/start.php, mod/groups/start.php, mod/messageboard/start.php,
+ mod/pages/start.php, mod/tagcloud/start.php, mod/thewire/start.php,
+ mod/twitter/start.php: replacing calls to add_widget_type() with
+ elgg_register_widget_type() (from hellekin)
+
+ * install/ElggRewriteTester.php: Ignore SSL certificate errors when testing
+ URL rewriting during installation (from hellekin)
+
+ * engine/lib/access.php, engine/lib/users.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ pages/friends/pickercallback.php, views/default/core/friends/collection.php,
+ views/default/core/friends/collections.php,
+ views/default/core/friends/collectiontabs.php,
+ views/default/core/friends/picker.php,
+ views/default/core/friends/tablelist.php,
+ .../default/core/friends/tablelistcountupdate.php,
+ views/default/forms/friends/edit.php, views/default/friends/collection.php,
+ views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php, views/default/friends/picker.php,
+ views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php: moving friends views into
+ core
+
+ * pages/friends/add.php, pages/friends/edit.php,
+ pages/friends/pickercallback.php,
+ views/default/forms/friends/collectionfields.php,
+ views/default/forms/friends/edit.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php: moved friend forms into forms directory
+
+
+ * engine/lib/elgglib.php, .../default/river/object/bookmarks/create.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/river/object/thewire/create.php,
+ views/default/annotation/annotate.php, views/default/core/river/controls.php,
+ views/default/forms/likes/display.php, views/default/forms/likes/edit.php,
+ views/default/forms/likes/link.php, views/default/likes/forms/display.php,
+ views/default/likes/forms/edit.php, views/default/likes/forms/link.php: moved
+ likes forms into forms directory
+
+ * mod/notifications/index.php: added friends picker js to notifications
+ plugin - is there a reason it isn't using the friends picker view?
+
+ * engine/lib/notification.php, mod/notifications/start.php,
+ .../notifications/settings/usersettings.php,
+ views/default/usersettings/notifications.php: moved default notification
+ settings into usersettings
+
+ * views/default/js/initialise_elgg.php,
+ views/default/js/initialize_elgg.php,
+ views/default/page/elements/html_begin.php,
+ views/default/scripts/initialize_elgg.php: last step in conversion to elgg.js
+
+
+ * engine/lib/views.php, mod/embed/start.php, mod/profile/start.php,
+ views/default/js/elgg.php, views/default/js/initialise_elgg.php: 1st step in
+ changing initialise_elgg.js to elgg.js
+
+ * views/default/upload/upload_form_content.php: upload form content view not
+ used anywhere
+
+ * views/default/settings/system.php: site settings were moved to admin views
+
+
+ * pages/account/forgotten_password.php, pages/account/register.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php, views/default/admin/users/add.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/forms/login.php, views/default/forms/register.php,
+ views/default/forms/user/requestnewpassword.php,
+ views/default/forms/useradd.php: moved account forms into forms directory
+
+2010-12-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/users.php, index.php,
+ mod/sitepages/start.php, views/default/account/login_box.php,
+ views/default/account/login_dropdown.php,
+ views/default/account/login_walled_garden.php,
+ views/default/core/account/login_box.php,
+ views/default/core/account/login_dropdown.php,
+ views/default/core/account/login_walled_garden.php,
+ views/default/page/elements/header.php: moved account views into core views -
+ account forms are next
+
+ * views/default/css/elements/core.php,
+ views/default/css/elements/layout.php,
+ views/default/css/elements/page_layout.php,
+ views/default/css/elements/skin.php,
+ views/default/css/elements/typography.php, views/default/css/screen.php:
+ moving more css into the skin view - including page layout information
+
+ * upgrade.php, views/default/page/shells/upgrade.php,
+ views/default/settings/upgrading.php: Refs #2733 added explanation on the
+ security of the upgrade script
+
+ * engine/lib/users.php: Fixes #2103 adding a site nav entry for members
+
+ * mod/members/index.php, mod/members/languages/en.php,
+ mod/members/manifest.xml, mod/members/start.php,
+ mod/members/views/default/members/css.php,
+ .../views/default/members/members_navigation.php,
+ mod/members/views/default/members/search.php: Refs #2723 removing old members
+ plugin
+
+ * engine/lib/upgrades/2010121401.php, engine/lib/users.php,
+ languages/en.php, pages/members/index.php, pages/members/search.php,
+ version.php, views/default/core/members/nav.php,
+ views/default/core/members/sidebar.php,
+ views/default/forms/members/name_search.php,
+ views/default/forms/members/tag_search.php: Fixes #2723 members listing pages
+ now in core
+
+2010-12-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: sanitise_filepath() removes double /s.
+
+ * engine/classes/ElggPluginPackage.php: Cleaned up constructor logic for
+ ElggPluginPackage. Better detection of invalid paths.
+
+2010-12-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: front page code does not depend on riverdashboard plugin
+ anymore
+
+ * .../views/default/river/object/blog/create.php: Refs #2226 need a catch in
+ river views until riverdashboard plugin is updated
+
+ * mod/blog/languages/en.php, .../views/default/river/object/blog/create.php:
+ Refs #2226 updated blog plugin to use new river view
+
+ * engine/classes/ElggRiverItem.php, engine/lib/annotations.php,
+ engine/lib/river.php, engine/lib/views.php, languages/en.php,
+ mod/riverdashboard/index.php, mod/riverdashboard/start.php,
+ .../views/default/river/item/list.php, pages/river.php,
+ views/default/core/river/body.php, views/default/core/river/controls.php,
+ views/default/core/river/filter.php, views/default/core/river/footer.php,
+ views/default/core/river/image.php, views/default/css/screen.php,
+ views/default/forms/comments/inline.php: Refs #2226 moving riverdashboard
+ into core - need to clean up riverdashboard plugin and move to plugins
+ repository and update plugins with new river views
+
+2010-12-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/core/dashboard/blurb.php, views/default/dashboard/blurb.php:
+ adding a place to put views for core pages
+
+ * js/lib/ui.js: added toggler function
+
+ * views/default/page/shells/admin.php,
+ views/default/page/shells/default.php: removed unnecessary title code in page
+ shells
+
+ * pages/dashboard/latest.php: removed unused dashboard directory
+
+ * engine/lib/users.php, pages/dashboard.php, pages/dashboard/index.php:
+ moved dashboard handler into base pages directory
+
+ * views/default/layout/objects/media.php: fixed typo
+
+2010-12-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/page_layout.php,
+ views/default/layout/objects/media.php: added alternate picture block to css
+ media object
+
+ * views/default/layout/shells/content.php,
+ views/default/layout/shells/one_column.php,
+ views/default/layout/shells/one_sidebar.php,
+ views/default/layout/shells/two_sidebar.php: supporting an additional class
+ on primary layouts
+
+ * views/default/layout/objects/list.php: added better list id's based on
+ type
+
+ * views/default/css/elements/page_layout.php,
+ views/default/layout/objects/module.php, views/default/output/tagcloud.php:
+ updated module markup and fixed a bug with its footer code
+
+ * engine/lib/entities.php: fixed spelling error in documentation
+
+ * engine/lib/tags.php: updated tags library to use new sql functions
+
+ * engine/lib/relationships.php: provided more flexibility in creating the
+ relationships join sql
+
+ * views/default/page/elements/topbar.php: fixed copy and paste error in the
+ topbar view
+
+2010-12-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/lib/blog.php, views/default/layout/shells/content/filter.php:
+ using all rather than everyone to be more consistent
+
+ * views/default/css/elements/core.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/reset.php, views/default/css/elements/skin.php,
+ views/default/css/screen.php: Refs #2317 starting create a css skin sub view
+
+ * engine/lib/views.php, views/default/css/elements/page_layout.php,
+ views/default/layout/objects/media.php: changed name of icon block to picture
+ block in media object to avoid conflicts with elgg sprites
+
+ * mod/search/views/default/search/css.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php, views/default/css/screen.php,
+ views/default/navigation/site_nav.php: a few more adjustments to the page
+ header
+
+ * views/default/css/elements/navigation.php,
+ views/default/navigation/site_nav.php: finished clean up the header css
+ (except for search box in search plugin
+
+ * _graphics/elgg_toolbar_logo.gif, mod/search/views/default/search/css.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php,
+ views/default/navigation/site_nav.php,
+ views/default/page/elements/header_logo.php: stage 1 of cleaning up page
+ header css
+
+ * views/default/css/elements/page_layout.php, views/default/css/screen.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/elements/topbar_logout.php: completed the topbar
+ modifications
+
+2010-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/css.php: Fixes #2724 fixed typo in
+ riverdashboard CSS
+
+ * views/default/input/userpicker.php: Fixes #2726 applied zcho's patch to
+ fix more errors from the "_" to "-" CSS conversion
+
+2010-12-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #1411: Can specify custom row callbacks with
+ 'row_callback' options in elgg_get_entities().
+
+2010-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php, .../views/default/profile/topbar_extend.php: topbar
+ friends should be in core, not profile plugin
+
+ * mod/embed/views/default/embed/js.php,
+ views/default/settings/upgrading.php: Fixes #2717 - fixing more errors
+ introduced by my over aggressive renaming script - thanks to zcho and
+ hellekin
+
+ * engine/classes/ElggSite.php: Fixes #2721 fixed typo - thanks for the
+ report!
+
+2010-12-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Refs #1411: Documentation fix.
+
+ * engine/lib/annotations.php: Refs #1411. Added ability to specify
+ annotation time_created lower and upper. Deprecated remaining
+ get/list_entities_from/by_annotation*() functions.
+
+2010-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/page_layout.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/elements/topbar_logout.php: cleaning up the topbar CSS
+
+2010-12-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/tests/api/entity_getter_functions.php:
+ Refs #1411. Added elgg_get_entities_from_annotation_calculation(). Deprecated
+ get_entities_from_annotations_count() and
+ get_entities_from_annotation_calculate_x().
+ elgg_get_entities_from_annotations() now runs through egef_metadata() for
+ backward compatibility support.
+
+2010-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layout/objects/list.php: added ability to include pagination
+ before and after a list
+
+ * engine/lib/views.php, views/default/layout/objects/list.php,
+ views/default/navigation/pagination.php: fixed pagination for annotations due
+ to changes in views
+
+2010-12-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: DRY'd up elgg_get_entities() where clause helper
+ functions. Added ability to specify guids in elgg_get_entity*() functions.
+
+2010-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/elements/core.php,
+ views/default/css/elements/navigation.php,
+ views/default/css/elements/page_layout.php, views/default/css/screen.php:
+ Refs #2317 pulled more css out into sub views
+
+ * views/default/css/screen.php, views/default/navigation/pagination.php:
+ Updated pagination to use semantic html
+
+2010-12-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added ability to check for empty string in
+ elgg_get_array_value().
+
+ * engine/lib/entities.php: Fixed a bug that wouldn't let you specify
+ multiple selects in get_entities().
+
+ * engine/lib/relationships.php: Refs #1411. Deprecated
+ get_entities_by_relationship_count() and
+ list_entities_by_relationship_count().
+
+ * engine/tests/api/entity_getter_functions.php: Removed the silly things I
+ was doing in the egef_relationship_count() test.
+
+2010-12-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/ajax/loader.php, views/default/graphics/ajax_loader.php:
+ moved ajax loader into the graphics view directory
+
+ * views/default/css/components/OOCSS_LICENSE,
+ views/default/css/components/forms.php,
+ views/default/css/components/grid.php,
+ views/default/css/components/heading.php,
+ views/default/css/components/reset.php,
+ views/default/css/components/spacing.php,
+ views/default/css/components/typography.php,
+ views/default/css/elements/OOCSS_LICENSE,
+ views/default/css/elements/forms.php, views/default/css/elements/grid.php,
+ views/default/css/elements/heading.php, views/default/css/elements/reset.php,
+ views/default/css/elements/spacing.php,
+ views/default/css/elements/typography.php, views/default/css/screen.php:
+ changed css/components to css/elements
+
+ * views/default/css/screen.php, views/default/page/elements/footer.php,
+ views/default/page/elements/header.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/shells/default.php: using the generic .elgg-inner class on
+ topbar, header, and footer
+
+2010-12-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/entity_getter_functions.php: D'oh. Re-enabled the other
+ getter unit tests.
+
+ * engine/lib/relationships.php,
+ engine/tests/api/entity_getter_functions.php: Refs #1411: Added
+ elgg_get_entity_from_relationship_count().
+
+2010-12-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/comments/latest.php: comment views have been moved
+
+ * engine/lib/views.php, mod/blog/views/default/blog/sidebar_menu.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/list.php, views/default/comments/list.php,
+ views/default/layout/elements/comments.php,
+ views/default/layout/objects/list.php: Fixes #2189 created the object/list
+ view with semantic markup
+
+ * engine/lib/elgglib.php, engine/lib/views.php, mod/blog/lib/blog.php,
+ mod/bookmarks/bookmarklet.php, mod/bookmarks/start.php,
+ mod/diagnostics/index.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/search.php, mod/file/world.php, mod/groups/all.php,
+ mod/groups/index.php, mod/groups/membership.php, mod/members/index.php,
+ mod/search/index.php, mod/sitepages/sitepages_functions.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/page/elements/body.php,
+ views/default/page/elements/content.php,
+ views/default/page/elements/content_header.php,
+ .../page/elements/content_header_member.php,
+ views/default/page/elements/footer.php,
+ views/default/page/elements/header.php,
+ views/default/page/elements/header_logo.php,
+ views/default/page/elements/html_begin.php,
+ views/default/page/elements/html_end.php,
+ views/default/page/elements/messages.php,
+ views/default/page/elements/topbar.php,
+ views/default/page/elements/topbar_logout.php,
+ views/default/page/shells/admin.php, views/default/page/shells/default.php,
+ views/default/page/shells/walled_garden.php,
+ views/default/page_elements/body.php,
+ views/default/page_elements/content.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_logo.php,
+ views/default/page_elements/html_begin.php,
+ views/default/page_elements/html_end.php,
+ views/default/page_elements/messages.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_elements/topbar_logout.php,
+ views/default/page_shells/admin.php, views/default/page_shells/default.php,
+ views/default/page_shells/walled_garden.php,
+ views/failsafe/page/shells/default.php,
+ views/failsafe/page_shells/default.php, views/foaf/page/shells/default.php,
+ views/foaf/page_elements/contentwrapper.php,
+ views/foaf/page_shells/default.php, views/ical/page/shells/default.php,
+ views/ical/pageshells/pageshell.php,
+ views/installation/page/shells/default.php,
+ views/installation/page_shells/default.php,
+ views/json/page/shells/default.php,
+ views/json/page_elements/contentwrapper.php,
+ views/json/page_shells/default.php, views/opendd/page/shells/default.php,
+ views/opendd/pageshells/pageshell.php, views/php/page/shells/default.php,
+ views/php/page_shells/default.php, views/rss/page/shells/default.php,
+ views/rss/page_elements/contentwrapper.php,
+ views/rss/page_shells/default.php, views/xml/page/shells/default.php,
+ views/xml/page_shells/default.php: reorganized the page views as discussed
+
+ * views/js/object/default.php, views/js/pageshells/pageshell.php,
+ views/js/user/default.php: removed unused viewtype js
+
+ * views/default/layout/elements/owner_block.php,
+ views/default/layout/elements/sidebar.php,
+ views/default/layout/elements/title.php,
+ views/default/layout/shells/administration.php,
+ .../layout/shells/one_column_with_sidebar.php,
+ views/default/layout/shells/one_sidebar.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/sidebar.php,
+ views/default/page_elements/title.php: moved a few elements to layout from
+ page
+
+ * views/default/content/filter.php, views/default/content/footer.php,
+ views/default/content/header.php, views/default/content/sidebar.php,
+ views/default/layout/shells/content.php,
+ views/default/layout/shells/content/filter.php,
+ views/default/layout/shells/content/footer.php,
+ views/default/layout/shells/content/header.php,
+ views/default/layout/shells/content/sidebar.php: moved content views into
+ layout/shells/content
+
+2010-12-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/item/wrapper.php: Refs #2700 fixed another stray
+ conversion in riverdashboard
+
+ * engine/lib/views.php, mod/blog/start.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ views/default/layout/objects/media.php,
+ views/default/layout/objects/module.php,
+ views/default/layout/shells/administration.php,
+ views/default/layout/shells/content.php,
+ views/default/layout/shells/default.php,
+ views/default/layout/shells/one_column.php,
+ .../layout/shells/one_column_with_sidebar.php,
+ views/default/layout/shells/one_sidebar.php,
+ views/default/layout/shells/two_sidebar.php,
+ views/default/layout/shells/widgets.php,
+ views/default/layout_elements/media.php,
+ views/default/layout_elements/module.php,
+ views/default/layouts/administration.php, views/default/layouts/default.php,
+ views/default/layouts/main_content.php, views/default/layouts/one_column.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/layouts/one_sidebar.php, views/default/layouts/two_sidebar.php,
+ views/default/layouts/widgets.php, views/default/output/tagcloud.php:
+ reorganized the layout views
+
+2010-12-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Refs #2220. Check that an autoload class is
+ registered before trying to include it.
+
+ * engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginPackage.php: Removed leading _ in private var names.
+
+
+2010-12-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser17.php,
+ engine/classes/ElggPluginManifestParser18.php,
+ engine/classes/ElggPluginPackage.php, engine/tests/api/plugins.php,
+ engine/tests/test_files/plugin_18/manifest.xml: Renamed 'elgg' manifest
+ requirment to 'elgg_version' to be more in line with the current options.
+ Removed assignments in if statements. 1.7 manifest files properly show
+ elgg_version as a requirement.
+
+2010-12-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/views.php,
+ views/default/messages/list.php, views/default/page_elements/messages.php,
+ views/default/page_shells/admin.php, views/default/page_shells/default.php,
+ views/default/page_shells/walled_garden.php: cleaned up system messages
+ display code
+
+ * views/default/friends/list.php,
+ views/default/messages/exceptions/exception.php: removing unused views
+
+ * views/default/css/screen.php, views/default/layout_elements/media.php,
+ views/default/layout_elements/module.php: added more options to module view
+
+ * engine/lib/views.php, languages/en.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/list.php, views/default/comments/forms/edit.php,
+ views/default/forms/comments/add.php,
+ views/default/layout_elements/media.php: comments use the media view now
+
+ * mod/blog/lib/blog.php, views/default/css/screen.php: Fixed minor display
+ issues with blog breadcrumbs and also the archives page
+
+2010-12-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/screen.php, views/default/navigation/breadcrumbs.php:
+ rewrote breadcrumbs
+
+ * languages/en.php: changed "my friends" to "friends"
+
+ * engine/lib/views.php, mod/blog/languages/en.php, mod/blog/lib/blog.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/forms/blog/save.php,
+ mod/blog/views/default/js/blog/save_draft.php, views/default/css/screen.php:
+ blog plugin now uses the new elgg_view_form() function
+
+ * engine/lib/views.php: Fixes #2616 Adds Evan's view form convenience
+ function
+
+ * engine/lib/views.php, mod/blog/views/default/object/blog.php,
+ views/default/annotation/generic_comment.php: added a convience function for
+ the media content pattern - is elgg_view_media() a good name?
+
+ * mod/blog/views/default/object/blog.php,
+ views/default/annotation/generic_comment.php, views/default/css/screen.php,
+ views/default/layout_elements/media.php: changed img | body media element to
+ icon | body
+
+ * engine/lib/views.php: moved the view functions around so that they are
+ grouped together by function
+
+ * engine/lib/views.php, languages/en.php, mod/blog/actions/blog/delete.php,
+ mod/blog/actions/blog/save.php, mod/blog/languages/en.php,
+ mod/blog/lib/blog.php, mod/blog/start.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php, views/default/content/filter.php,
+ views/default/content/header.php, views/default/css/components/forms.php:
+ Clean-up of the blog plugin - now using urls from 1.7.5
+
+ * mod/uservalidationbyemail/start.php: fixed bug in uservalidationbyemail
+ permissions hook handler - was giving everyone permission to everything
+
+2010-12-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, mod/blog/blog_lib.php, mod/blog/lib/blog.php,
+ mod/blog/start.php: Fixes #2519 we can now register and load php libraries -
+ blog plugin is using this
+
+ * engine/lib/views.php, mod/blog/views/default/object/blog.php,
+ views/default/annotation/generic_comment.php,
+ views/default/comments/latest.php, views/default/css/screen.php,
+ views/default/entities/list.php: object/blog view uses new media view - needs
+ some clean up
+
+ * engine/lib/views.php, mod/blog/views/default/blog/sidebar_menu.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/world.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/comments/latest.php, views/default/css/screen.php,
+ views/default/layout_elements/media.php,
+ views/default/layout_elements/module.php: welcome to the new media view - it
+ is being used in the new latest comments module
+
+ * views/default/css/screen.php, views/default/layouts/main_content.php,
+ views/default/layouts/one_sidebar.php, views/default/page_elements/body.php,
+ views/default/page_elements/content.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_shells/default.php: using classes for page level divs
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/object/blog.php, views/default/content/header.php,
+ views/default/css/screen.php: fitting blog object display into new html
+ structure
+
+ * mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ views/default/annotation/latest_comments.php, views/default/css/screen.php,
+ views/default/layout_elements/module.php, views/default/layouts/module.php,
+ views/default/output/tagcloud.php: blog sidebar html updates finished - uses
+ modules!
+
+ * mod/blog/blog_lib.php, mod/blog/start.php,
+ views/default/content/filter.php, views/default/content/footer.php,
+ views/default/content/header.php, views/default/content/sidebar.php,
+ views/default/css/screen.php, views/default/layouts/main_content.php: a
+ better main content view structure
+
+ * views/default/css/screen.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/page_elements/content.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_shells/default.php: striking balance between all classes
+ and giving ids on major layout elements for easy css-only theming
+
+ * engine/lib/views.php: check if there are any messages before grabbing them
+ in elgg_view_page()
+
+2010-12-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Fixes #2706 simplecache url generator was not
+ handling an empty last cache date
+
+ * install/ElggInstaller.php, install/css/install.css,
+ views/installation/install/forms/template.php,
+ views/installation/install/nav.php,
+ views/installation/install/pages/complete.php,
+ views/installation/page_shells/default.php: Refs #2706 updates display of
+ installer due to switch to dashes in CSS elements
+
+2010-12-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/cache_handler.php: Cache handler needs to support _ in
+ views
+
+ * mod/riverdashboard/index.php,
+ .../views/default/riverdashboard/ecml/activity.php: Refs #2700: Removed a few
+ stray hyphens.
+
+ * install/ElggInstaller.php: Refs #2706. Added configuration.php to
+ installation engine bootstrapping. Required because of use of
+ elgg_get_site_url().
+
+2010-12-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/components/grid.php: updated grid css - added sixths
+
+ * engine/lib/views.php, views/default/entities/list.php,
+ views/default/entities/list_item.php: Refs #2189 the beginning of semantic
+ markup for entity lists - needs some reorganization
+
+ * views/default/navigation/tabs.php: removed extra div in navigation/tabs
+
+2010-12-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/item/wrapper.php: Another stray hyphens
+
+ * .../views/default/river/item/list.php: hyphen snuck in to
+ elgg_view_river_item
+
+2010-12-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser.php,
+ engine/classes/ElggPluginManifestParser17.php,
+ engine/classes/ElggPluginManifestParser18.php,
+ engine/classes/ElggPluginPackage.php, engine/lib/plugins.php,
+ engine/tests/api/plugins.php, engine/tests/test_files/plugin_17/manifest.xml,
+ engine/tests/test_files/plugin_18/manifest.xml, languages/en.php: Refs #1986
+ #2170 #2225. Added semantic manifest.xml support and unit tests. Also added
+ plugin dependencies system. See
+ engine/tests/test_files/plugin_18/manifest.xml for examples. Not closing
+ tickets pending discussion.
+
+ * mod/oauth_lib/manifest.xml, mod/sitepages/manifest.xml: Removed more
+ incompatible 1.8 attributes in 1.7-style manifests.
+
+ * mod/ecml/manifest.xml: Removing unsupported 1.7-style manifest elements.
+
+2010-12-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php, mod/blog/start.php, views/default/css/screen.php,
+ views/default/layouts/module.php,
+ views/default/page_elements/main_header.php,
+ views/default/page_elements/main_module.php,
+ views/default/page_elements/main_nav.php: preview of what the main content
+ area looks like with a module approach
+
+ * views/default/css/screen.php, views/default/navigation/breadcrumbs.php:
+ updated breadcrumbs with elgg- namespace
+
+ * views/default/css/screen.php, views/default/layouts/one_column.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/page_elements/footer.php: adjusted the one column and two
+ column layouts
+
+ * mod/blog/views/default/object/blog.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/groups/groupprofile.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/messages/views/default/messages/messages.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php, views/default/css/screen.php,
+ views/default/js/initialise_elgg.php, views/default/likes/forms/edit.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php: Refs #2700 completed the _ to -
+ conversion for screen.css (leaves admin.css and plugin css)
+
+2010-12-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/start.php: Refs #2700. Fixed a misplaced - in
+ riverdashboard from the css _ to - conversion.
+
+2010-12-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/layouts/module.php: adding a generic module layout
+
+ * views/default/css/screen.php, views/default/page_elements/header.php:
+ cleaned up header css for new layout
+
+2010-12-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Better code and docs or previous.
+
+ * engine/lib/elgglib.php: Added 'true' as a truthy value for ini_get_bool().
+
+
+2010-12-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css/screen.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/page_elements/footer.php: more cleanup of the basic layout css
+
+ * views/default/css/screen.php, views/default/page_elements/topbar.php:
+ cleaned up the topbar css
+
+ * views/default/widgets/wrapper.php: fixed typo in widget display
+ deprecation
+
+ * views/default/page_elements/footer.php: restored the powered by badge
+ image
+
+ * js/lib/ui.js, views/default/css/components/reset.php,
+ views/default/css/screen.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/messages/errors/list.php, views/default/messages/list.php,
+ views/default/messages/messages/list.php,
+ views/default/page_elements/content.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_shells/default.php: rough implementation of Evan's page
+ layout
+
+ * engine/lib/sites.php: added a function for getting current site entity
+
+ * js/lib/ui.js, js/lib/ui.widgets.js, views/default/js/initialise_elgg.php,
+ views/default/layouts/widgets.php, views/default/widgets/add_panel.php,
+ views/default/widgets/wrapper.php: Refs #2700 fixed the widget code with the
+ new CSS element names
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php,
+ .../views/default/river/object/blog/create.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/view.php,
+ .../views/default/defaultwidgets/editor.php,
+ .../views/default/embed/web_services/content.php,
+ mod/ecml/views/default/settings/ecml/edit.php,
+ mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/object/file/embedlist.php, mod/file/friends.php,
+ mod/file/index.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/upload.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/widgets/filerepo/content.php, mod/groups/groupprofile.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../default/river/relationship/member/create.php,
+ .../views/default/invitefriends/formitems.php, mod/members/index.php,
+ mod/members/views/default/members/css.php,
+ .../views/default/members/members_navigation.php,
+ mod/members/views/default/members/search.php,
+ .../views/default/widgets/messageboard/content.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/view.php, mod/notifications/start.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../views/default/river/object/page/create.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../default/profile/editdefaultprofileitems.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/listing.php,
+ .../views/default/profile/profile_navigation.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ .../default/admin/overview/reportedcontent.php,
+ .../views/default/reportedcontent/form.php,
+ mod/riverdashboard/endpoint/get_comments.php,
+ mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ mod/riverdashboard/start.php, .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/ecml/activity.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/search_box.php,
+ .../views/default/canvas/layouts/frontpage.php,
+ mod/sitepages/views/default/sitepages/css.php,
+ mod/sitepages/views/default/sitepages/members.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ mod/thewire/views/default/thewire/css.php,
+ .../views/default/thewire/profile_status.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/account/login_dropdown.php,
+ views/default/account/login_walled_garden.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/overview.php, views/default/admin/overview/online.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/admin/users/newest.php, views/default/admin/users/online.php,
+ views/default/ajax/loader.php, views/default/annotation/annotate.php,
+ views/default/annotation/annotatelike.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/annotation/likes.php, views/default/comments/forms/edit.php,
+ views/default/css/admin.php, views/default/css/ie.php,
+ views/default/css/ie6.php, views/default/css/screen.php,
+ views/default/dashboard/blurb.php, views/default/entities/entity_listing.php,
+ views/default/export/entity.php, views/default/export/metadata.php,
+ views/default/export/relationship.php, views/default/friends/collection.php,
+ views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php, views/default/friends/picker.php,
+ views/default/input/userpicker.php, views/default/js/friendsPickerv1.php,
+ views/default/js/initialise_elgg.php,
+ views/default/layouts/administration.php,
+ views/default/layouts/one_column.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/layouts/widgets.php, views/default/likes/forms/edit.php,
+ views/default/likes/forms/link.php, views/default/messages/errors/list.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/navigation/listtype.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/site_nav.php, views/default/navigation/tabs.php,
+ .../notifications/settings/usersettings.php,
+ views/default/output/rss_view.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_logo.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_elements/topbar_logout.php,
+ views/default/page_shells/walled_garden.php,
+ views/default/river/item/wrapper.php, views/default/settings/system.php,
+ views/default/settings/upgrading.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/widgets/add_button.php, views/default/widgets/add_panel.php,
+ views/default/widgets/controls.php, views/default/widgets/settings.php,
+ views/default/widgets/wrapper.php,
+ views/installation/page_shells/default.php: Refs #2700 replaced most
+ underscores with hyphens - there may be broken display code due to extent of
+ this change
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/object/blog.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/defaultwidgets/editor.php,
+ mod/ecml/views/default/ecml/input_ext.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/link.php,
+ mod/file/views/default/object/file.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/object/groupforumtopic.php,
+ .../views/default/invitefriends/formitems.php,
+ .../views/default/messageboard/forms/add.php,
+ .../views/default/widgets/messageboard/content.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/view.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../default/admin/appearance/defaultprofile.php,
+ .../profile/commentwall/commentwall_content.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../default/profile/editdefaultprofileitems.php,
+ mod/profile/views/default/profile/editicon.php,
+ .../views/default/profile/profile_ownerblock.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/riverdashboard/css.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/twitter/views/default/twitter/css.php,
+ .../uservalidationbyemail/unvalidated_user.php,
+ views/default/account/forms/register.php,
+ views/default/account/login_walled_garden.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/css/admin.php,
+ views/default/css/components/forms.php, views/default/css/ie.php,
+ views/default/css/ie6.php, views/default/css/screen.php,
+ views/default/friends/picker.php, views/default/input/access.php,
+ views/default/input/button.php, views/default/input/checkbox.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php, views/default/input/userpicker.php,
+ views/default/js/upload_js.php, views/default/layouts/widgets.php,
+ views/default/page_elements/content_header.php,
+ views/default/page_shells/walled_garden.php,
+ views/default/usersettings/form.php, views/default/widgets/add_button.php,
+ views/installation/input/access.php, views/installation/input/button.php,
+ views/installation/input/longtext.php, views/installation/input/password.php,
+ views/installation/input/text.php: Refs #2700 changed underscores to hyphens
+ for the forms css elements
+
+ * views/default/css/admin.php, views/default/css/components/OOCSS_LICENSE,
+ views/default/css/components/forms.php,
+ views/default/css/components/grid.php,
+ views/default/css/components/heading.php,
+ views/default/css/components/reset.php,
+ views/default/css/components/spacing.php,
+ views/default/css/components/typography.php, views/default/css/screen.php:
+ Refs #2317 pulled a few sections of CSS out to try out granular CSS
+
+ * views/default/css.php, views/default/css/screen.php: moved the CSS into
+ the new css/screen view and added a check for old themes
+
+2010-12-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php, mod/blog/start.php, mod/bookmarks/start.php,
+ mod/captcha/start.php, mod/categories/start.php, mod/ecml/start.php,
+ mod/embed/start.php, mod/file/start.php, mod/groups/start.php,
+ mod/members/start.php, mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/riverdashboard/start.php,
+ mod/search/start.php, mod/sitepages/start.php, mod/tagcloud/start.php,
+ mod/thewire/start.php, mod/tinymce/start.php, mod/twitter/start.php,
+ mod/zaudio/start.php, views/default/css/elgg.php,
+ views/default/css/screen.php: screen.css is a better name for our main css
+ file
+
+2010-12-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Fixes #1457. Added optional status param for
+ get_installed_plugins()
+
+2010-12-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Fixes #2461 unsetting CONFIG variable in
+ unset_config()
+
+ * engine/lib/access.php: Fixes #2430 adds
+ get_entities_from_access_collection() into trunk
+
+ * .../views/default/widgets/filerepo/content.php,
+ mod/file/views/default/widgets/filerepo/view.php,
+ .../views/default/widgets/friends/content.php,
+ mod/friends/views/default/widgets/friends/view.php,
+ .../default/widgets/a_users_groups/content.php,
+ .../views/default/widgets/a_users_groups/view.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php,
+ .../views/default/widgets/messageboard/content.php,
+ .../views/default/widgets/messageboard/view.php,
+ mod/pages/views/default/widgets/pages/content.php,
+ mod/pages/views/default/widgets/pages/view.php,
+ .../views/default/widgets/tagcloud/content.php,
+ .../views/default/widgets/tagcloud/view.php,
+ .../views/default/widgets/thewire/content.php,
+ mod/thewire/views/default/widgets/thewire/view.php,
+ .../views/default/widgets/twitter/content.php,
+ mod/twitter/views/default/widgets/twitter/view.php,
+ views/default/widgets/wrapper.php: Fixes #2555 content.php is the new display
+ view for widgets
+
+2010-11-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Fix typo in previous.
+
+ * engine/classes/ElggPlugin.php, engine/classes/ElggPluginManifest.php,
+ engine/classes/ElggPluginManifestParser.php,
+ engine/classes/ElggPluginManifestParser17.php,
+ engine/classes/ElggPluginManifestParser18.php, engine/lib/plugins.php,
+ engine/tests/api/plugins.php: Refs #1986 #2170 #2225 Added
+ ElggPluginManifest, ElggPluginManifestParser, and its parser classes for 1.7
+ and 1.8 style manifests. Changed load_plugin_manifest() to use new parser.
+ Added initial unit tests.
+
+2010-11-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/user/passwordreset.php, actions/usersettings/save.php,
+ pages/account/register.php, pages/dashboard/latest.php,
+ pages/friends/pickercallback.php: Refs #2428 removed a few CONFIG uses in
+ core
+
+ * mod/crontrigger/start.php, mod/garbagecollector/start.php,
+ mod/invitefriends/start.php, mod/logbrowser/start.php, mod/members/start.php,
+ mod/messageboard/start.php, mod/reportedcontent/start.php,
+ mod/sitepages/start.php, mod/thewire/start.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php: Refs #2428 removed some global CONFIG
+ usage in plugins
+
+ * mod/uservalidationbyemail/start.php: fixed typo in uservalidationbyemail
+ plugin
+
+ * mod/messages/start.php, mod/messages/views/default/messages/topbar.php:
+ started cleaning up the messages plugin
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php: Refs #2428 adds
+ elgg_get_plugin_path() and elgg_get_data_path()
+
+ * mod/zaudio/manifest.xml, mod/zaudio/readme.txt, mod/zaudio/start.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/mpg.php,
+ mod/zaudio/views/default/zaudio/audioplayer.php,
+ mod/zaudio/views/default/zaudio/css.php: Updated the zaudio plugin for 1.8
+
+2010-11-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggEntity.php: Refs #2668: Deprecated
+ ElggEntity::setContainer() for setContainerGUID()
+
+2010-11-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Fixes #2694 fixed typo in join_group()
+
+ * engine/handlers/export_handler.php: fixed typo in the code that I moved
+ from /services/export
+
+ * mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php: Fixes #2508 Sending user to referrer
+ in reported content admin actions
+
+ * engine/lib/configuration.php, views/default/page_shells/admin.php,
+ views/default/page_shells/default.php,
+ views/default/page_shells/walled_garden.php: Refs #2428 added
+ elgg_get_config(), elgg_set_config(), and elgg_save_config()
+
+ * views/default/css/admin.php: removed reported content css in admin css
+ view
+
+ * mod/crontrigger/start.php, mod/garbagecollector/languages/en.php,
+ mod/garbagecollector/start.php,
+ .../default/settings/garbagecollector/edit.php,
+ mod/logrotate/languages/en.php, mod/logrotate/start.php,
+ .../views/default/settings/logrotate/edit.php, mod/tinymce/languages/en.php,
+ mod/tinymce/start.php: cleaned up some of the other smaller plugins
+
+ * mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ .../views/default/admin/overview/logbrowser.php,
+ .../views/default/logbrowser/adminlinks.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/logbrowser/table.php,
+ mod/logbrowser/views/default/object/logwrapper.php: Cleaned up the log
+ browser plugin
+
+ * mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/languages/en.php, mod/reportedcontent/start.php,
+ .../default/admin/overview/reportedcontent.php,
+ .../views/default/object/reported_content.php,
+ .../views/default/reportedcontent/admin_css.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/footer_link.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/reportedcontent/user_report.php: cleaned up the reported
+ content plugin
+
+2010-11-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/views.php,
+ views/default/friends/picker.php, views/default/page_elements/html_begin.php:
+ Fixes #2173 #2507 integrated the ie and admin stylesheets into the new
+ simplecache code
+
+ * _css/css.php, _css/js.php, engine/handlers/cache_handler.php,
+ engine/lib/views.php, engine/start.php, htaccess_dist, simplecache/view.php,
+ views/default/css/elgg.php, views/default/friends/picker.php: Fixes #2160
+ #2678 introducing a more flexible simplecache handler (this requires an
+ htaccess update)
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, views/default/css/admin.php,
+ views/default/css/ie.php, views/default/css/ie6.php,
+ views/default/css_ie.php, views/default/css_ie6.php,
+ views/default/layouts/administration.php,
+ views/default/page_elements/html_begin.php,
+ views/default/page_elements/html_begin_admin.php,
+ views/default/page_shells/admin.php: Refs #2173 #2160 #2507 added a css page
+ handler to support multiple css files
+
+ * services/export/handler.php: Refs #2681 removes services directory
+
+ * engine/handlers/export_handler.php, htaccess_dist: Fixes #2681 moves
+ export handler into handler directory - current installs need to have
+ .htaccess updated
+
+ * engine/lib/web_services.php, services/api/rest_api.php: moved rest/rpc web
+ services handler into web_services library
+
+ * engine/lib/api.php, engine/lib/web_services.php, engine/start.php,
+ install/ElggInstaller.php: moved api.php to web_services.php as it is more
+ descriptive
+
+2010-11-27 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/ajax/loader.php: Fixes #2280: ajax/loader view starts out
+ with display set to none
+
+2010-11-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: Updated contrib file.
+
+ * CONTRIBUTORS.txt, README.txt: Cleaned up some typos and formatting issues
+ in README and CONTRIB files.
+
+ * CONTRIBUTORS.txt, COPYRIGHT.txt: Fixed typos and cleaned up copyright and
+ contrib file.
+
+2010-11-24 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Fixes #2664: elgg_view_entity subtype defaults to
+ "default" rather than $type
+
+ * engine/handlers/page_handler.php, engine/handlers/pagehandler.php,
+ htaccess_dist: Fixes #2667: pagehandler.php => page_handler.php. You'll need
+ to update .htaccess to keep developing
+
+ * mod/sitepages/start.php: unnecessary declaration of global $CONFIG;
+
+ * mod/blog/blog_lib.php, mod/blog/start.php, mod/sitepages/start.php:
+ Removing superfluous calls to insert site root in urls
+
+ * engine/lib/metadata.php: Deprecated list_entities_from_metadata_multi
+
+ * languages/en.php: Added generic function deprecation translation
+
+ * mod/bookmarks/actions/add.php, mod/bookmarks/actions/edit.php,
+ mod/defaultwidgets/actions/update.php, mod/defaultwidgets/start.php,
+ mod/file/actions/upload.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/featured.php, mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/start.php,
+ mod/messages/actions/delete.php, mod/pages/actions/pages/edit.php,
+ mod/pages/actions/pages/editwelcome.php, mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/editfield.php, mod/profile/actions/iconupload.php,
+ mod/profile/actions/reorder.php, mod/profile/actions/resetdefaultprofile.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/start.php,
+ mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php:
+ Refs #2451: Removes (admin_)gatekeeper() calls from core plugin actions
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, actions/admin/site/update_advanced.php,
+ actions/admin/site/update_basic.php, actions/admin/user/ban.php,
+ actions/admin/user/delete.php, actions/admin/user/makeadmin.php,
+ actions/admin/user/removeadmin.php, actions/admin/user/resetpassword.php,
+ actions/admin/user/unban.php, actions/comments/add.php,
+ actions/email/save.php, actions/entities/delete.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/remove.php, actions/import/opendd.php, actions/likes/add.php,
+ .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php, actions/user/spotlight.php,
+ actions/useradd.php, actions/usersettings/save.php,
+ engine/lib/notification.php, engine/lib/users.php: Refs #2451: Removed
+ gatekeeper/admin_gatekeeper() calls from core actions
+
+ * engine/lib/actions.php, engine/lib/admin.php, engine/lib/elgglib.php,
+ engine/lib/export.php, engine/lib/plugins.php, engine/lib/sessions.php,
+ engine/lib/users.php, engine/lib/widgets.php, mod/blog/start.php,
+ mod/bookmarks/start.php, mod/categories/start.php,
+ mod/defaultwidgets/start.php, mod/diagnostics/start.php, mod/ecml/start.php,
+ mod/file/start.php, mod/groups/start.php, mod/invitefriends/start.php,
+ mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/sitepages/start.php,
+ mod/thewire/start.php, mod/uservalidationbyemail/start.php: Fixes #2655:
+ Converted register_action to elgg_register_action throughout core
+
+ * engine/lib/actions.php: Refs #2655: Introducing elgg_register_action() + a
+ few fixes to typos in documentation
+
+2010-11-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/cron_handler.php, engine/lib/cron.php: Fixes #2472 move
+ cron_handler.php logic into cron page handler
+
+ * mod/groups/views/default/groups/groupprofile.php: Fixes #2638 - specifying
+ the full url on the urls so we don't have this problem anymore
+
+ * mod/embed/start.php, mod/pages/start.php, mod/profile/start.php,
+ mod/sitepages/start.php, views/default/page_elements/html_begin.php: Fixes
+ #2270 - deprecates metatags view and replaces with html_head/extend
+
+ * mod/profile/actions/cropicon.php, mod/profile/actions/iconupload.php:
+ Fixes #2418 and merges [7121] into trunk
+
+ * engine/lib/widgets.php: returning an empty array when there are no widgets
+ for a context
+
+ * views/default/css.php: adjusted text color of widget titles
+
+ * views/default/input/checkbox.php, views/default/input/checkboxes.php:
+ Fixes #397 and Refs #2396 Can suppress the default value for both
+ input/checkbox and input/checkboxes
+
+2010-11-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggSite.php, engine/lib/sites.php: Fixes #2488 "return"
+ was missing in ElggSite::getObjects() (also updated some documentation)
+
+ * engine/classes/ElggSite.php, engine/lib/sites.php: updated the deprecated
+ list_site_members() to use new ElggSite::listMembers() method and updated
+ ElggSite::getMembers() to accept all the arguments from elgg_get_entities()
+
+ * engine/lib/sites.php: deprecated some sites functions that were never
+ supported or fully implemented
+
+ * engine/lib/database.php, engine/lib/plugins.php: Refs #2673 moved changes
+ into trunk from 1.7 branch
+
+2010-11-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Refs #2660: Merged r7409's
+ remove_group_tool_option() to trunk.
+
+ * mod/bookmarks/actions/add.php,
+ mod/bookmarks/views/default/object/bookmarks.php: Merged bookmarks XSS fixes
+ in r7406 to trunk.
+
+2010-11-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: widgets should not have content outside their
+ container
+
+ * engine/classes/ElggWidget.php, engine/lib/widgets.php: widget column ids
+ must be integers
+
+2010-11-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/user/password.php, languages/en.php,
+ views/default/user/settings/password.php: Refs #2669: Merged password change
+ fixes in 7404 to trunk.
+
+ * mod/members/views/default/members/search.php: Refs #2612: Merged r7402 to
+ trunk.
+
+ * mod/profile/views/default/profile/listing.php,
+ .../default/profile/profile_contents/details.php: Refs #2670: Merged XFN
+ fixes from 1.7 to 1.8. Removed unused code in profile_contents/details.php
+
+2010-11-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/index.php: removed call to deprecated page_owner()
+
+ * engine/lib/tags.php, mod/blog/views/default/blog/sidebar_menu.php,
+ mod/file/start.php, mod/tagcloud/tagcloud.php,
+ .../views/default/widgets/tagcloud/view.php: removed deprecated tag library
+ calls
+
+ * engine/classes/ElggSite.php, engine/lib/sites.php, engine/lib/views.php,
+ mod/thewire/index.php: deprecated two site functions and removed a use of
+ previously deprecated function in the wire plugin
+
+ * engine/lib/widgets.php: fix for previous
+
+ * engine/lib/widgets.php: use more Elgg standrad function names -
+ elgg_register_widget_type()
+
+2010-11-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ui.widgets.js: added hack for opera/jquery-ui bug
+
+ * js/lib/ui.widgets.js, languages/en.php, views/default/css.php,
+ views/default/widgets/controls.php, views/default/widgets/wrapper.php: added
+ collapsible state to widgets
+
+ * engine/classes/ElggData.php: Refs #2629 Brett is correct - don't need the
+ call to initializeAttributes() because all the first level subclasses call
+ initializeAttributes()
+
+ * engine/classes/ElggData.php, engine/classes/ElggFile.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggWidget.php: Refs #2629 This
+ should fix this ticket. Need to remove initialise_attributes from any class
+ updated with new method and add call to initializeAttributes in ElggData for
+ those that are not updated.
+
+ * engine/classes/ElggWidget.php, languages/en.php, views/default/css.php,
+ views/default/dashboard/blurb.php, views/default/widgets/controls.php,
+ views/default/widgets/wrapper.php: added some light styling to the widget
+ control buttons
+
+2010-11-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggGroup.php, engine/classes/ElggObject.php,
+ engine/classes/ElggSite.php, engine/classes/ElggUser.php: Fixes #2629: Pulled
+ old initialise_attributes() into ElggData and added a default param to emit a
+ deprecation notice if called.
+
+2010-11-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/widgets/settings.php: Fixes #1342 dashboard widgets do not
+ have access controls
+
+ * js/lib/ui.widgets.js, mod/friends/start.php,
+ views/default/widgets/add_panel.php, views/default/widgets/wrapper.php: Fixes
+ #472 handling interactive adding/deleting of widgets with single/multiple
+ instance constraints
+
+ * js/lib/ui.widgets.js, languages/en.php, mod/friends/start.php,
+ views/default/css.php, views/default/layouts/widgets.php,
+ views/default/widgets/add_panel.php: Refs #472 not allowing widgets to be
+ added if only single instance allowed
+
+ * actions/widgets/add.php, actions/widgets/save.php,
+ engine/classes/ElggWidget.php, engine/lib/widgets.php: moved save widget
+ settings function to ElggWidget
+
+ * engine/lib/widgets.php, views/default/layouts/widgets.php: added a plugin
+ hook for determining who can edit a widget layout
+
+ * actions/widgets/add.php, engine/classes/ElggWidget.php,
+ js/lib/ui.widgets.js: fixed bug where widgets were not saving their new
+ position
+
+ * engine/classes/ElggWidget.php: do not need special canEdit method for
+ ElggWidget
+
+ * engine/classes/ElggEntity.php, engine/tests/objects/objects.php: Refs
+ #2668 adds getContainerGUID()
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggUser.php,
+ engine/classes/Loggable.php, engine/lib/entities.php,
+ engine/lib/extender.php, engine/tests/objects/entities.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/actions/leave.php,
+ mod/thewire/actions/delete.php: Fixes #2668 adding getOwnerGUID()
+
+2010-11-20 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/helpers.php: Fixed typos in text expectations that were
+ cause elgg_normalize_url unit tests to fial
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggObject.php, engine/classes/ElggSite.php,
+ engine/classes/ElggUser.php, engine/tests/objects/entities.php,
+ engine/tests/objects/objects.php, engine/tests/objects/sites.php,
+ engine/tests/objects/users.php: Fixes #2490: attributes initialize to NULL
+ instead of empty string or 0. Updated tests to reflect this
+
+ * engine/classes/ElggPlugin.php: Marking initialise_attributes as deprecated
+ in ElggPlugin
+
+ * engine/classes/ElggGroup.php: Marking initialise_attributes as deprecated
+
+ * engine/handlers/pagehandler.php, engine/lib/actions.php,
+ engine/lib/elgglib.php, engine/lib/group.php, engine/lib/sessions.php: Fixes
+ #2237: Added 'reason' parameter to forward() to allow proper headers and more
+ flexible destinations via plugin hooks. Also made use of this in core
+ gatekeeper functions and in pagehandler.php
+
+ * views/default/input/checkbox.php, views/default/input/checkboxes.php:
+ Fixes #2396: Added a new input/checkbox view. input/checkboxes harnesses it
+
+ * engine/lib/views.php: Fixes #2615: Viewtype now included in views plugin
+ hooks
+
+ * mod/htmlawed/start.php: Fixes #2497: htmLawed now uses a plugin hook for
+ allowed_styles and htmlawed_config
+
+ * engine/lib/elgglib.php, engine/lib/users.php: Fixes #2468: Deprecated
+ call_gatekeeper() and callpath_gatekeeper()
+
+ * views/default/output/calendar.php, views/default/output/confirmlink.php,
+ views/default/output/email.php, views/default/output/friendlytime.php,
+ views/default/output/pulldown.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php: Fixes #2036: using htmlspecialchars in output
+ views
+
+ * js/lib/security.js: Fixes #2620: Security token refresh action is now
+ security/refreshtoken
+
+ * mod/messageboard/actions/add.php: Fixes #2357: messageboard post action
+ redirects to referrer
+
+ * engine/classes/ElggEntity.php, engine/lib/entities.php,
+ engine/tests/objects/entities.php: Fixes #2473: removes
+ initialise_entity_cache()
+
+ * mod/blog/views/default/blog/forms/edit.php, mod/diagnostics/index.php,
+ .../views/default/embed/web_services/content.php,
+ .../views/default/admin/users/unvalidated.php,
+ views/default/admin/plugins/advanced.php, views/default/input/button.php,
+ views/default/input/reset.php, views/default/input/submit.php,
+ views/installation/input/reset.php, views/installation/input/submit.php: Refs
+ #2143: DRY up button input views (button, reset, submit). Changed core uses
+ of button to reflect the fact that it no longer defaults to submit
+
+ * js/lib/security.js: Utilizing elgg.extend, rather than jQuery.extend
+
+ * js/lib/languages.js: Commented elgg.add_translation Utilizing elgg.extend
+ instead of $.extend
+
+ * js/lib/elgglib.js: Added an elgg.extend method for merging two or more
+ objects
+
+ * views/default/input/submit.php: Refs #2143: Cleaned up input/submit
+
+ * views/default/input/tags.php: Refs #2143: DRY up input/tags
+
+ * views/default/input/email.php: Refs #2143: DRY up input/email
+
+ * views/default/input/text.php: Refs #2143: DRY up input/text
+
+ * views/default/input/form.php: Refs #2143: DRYed up input/form
+
+ * engine/lib/output.php: Doesn't make any sense for elgg_format_attributes
+ to default to an empty array...
+
+ * engine/lib/output.php, views/default/input/url.php,
+ views/default/output/url.php: Refs #2143: Added elgg_format_attributes() for
+ generating an attribute string from an associative array. DRYed up
+ input/output url
+
+2010-11-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/add.php, engine/lib/widgets.php, js/lib/ui.widgets.js,
+ views/default/css.php, views/default/layouts/widgets.php,
+ views/default/widgets/add.php, views/default/widgets/add_panel.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/settings.php,
+ views/default/widgets/wrapper.php: improving interactions of widgets -
+ containment wasn't working due to height issues
+
+ * engine/lib/widgets.php, views/default/widgets/add.php,
+ views/default/widgets/wrapper.php: finished updated the widgets library
+
+ * actions/widgets/save.php, js/lib/ui.widgets.js,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php:
+ updating widget contents when settings are changed
+
+ * actions/widgets/save.php, engine/lib/widgets.php, js/lib/ui.widgets.js,
+ views/default/css.php, views/default/widgets/controls.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php:
+ saving widget settings
+
+ * actions/widgets/delete.php, engine/classes/ElggWidget.php,
+ engine/lib/widgets.php, js/lib/ui.widgets.js, languages/en.php,
+ views/default/css.php, views/default/widgets/controls.php,
+ views/default/widgets/wrapper.php: users can delete widgets from layout
+
+ * actions/widgets/add.php, actions/widgets/move.php,
+ engine/classes/ElggWidget.php, engine/lib/widgets.php: moved some widget
+ functionality into ElggWidget class
+
+ * mod/file/views/default/widgets/filerepo/edit.php,
+ mod/file/views/default/widgets/filerepo/view.php: updated file widget to use
+ 1.7 elgg_get_entities* APIs
+
+ * .../views/default/widgets/bookmarks/edit.php,
+ .../views/default/widgets/bookmarks/view.php: updated bookmarks widget to use
+ 1.7 APIs
+
+ * actions/register.php: Closes #2653 users are logged in on registration and
+ login exceptions are caught for unvalidated users
+
+ * engine/lib/users.php, mod/uservalidationbyemail/actions/delete.php,
+ .../actions/resend_validation.php,
+ mod/uservalidationbyemail/actions/validate.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php: Closes #617 core has get and set
+ functions for user validation status
+
+ * actions/widgets/add.php, actions/widgets/move.php, engine/lib/widgets.php,
+ js/lib/ui.widgets.js, languages/en.php, views/default/layouts/widgets.php,
+ views/default/widgets/wrapper.php: saving widget position after moving
+
+ * engine/lib/version.php: $CONFIG->path is not set up early enough for some
+ elgg deprecate notices
+
+ * engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/pagehandler.php, engine/handlers/service_handler.php,
+ engine/handlers/xml-rpc_handler.php: switching to using full paths in
+ handlers
+
+2010-11-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/add.php, engine/lib/widgets.php, js/lib/ui.widgets.js:
+ Added functions to support moving and adding widgets
+
+ * engine/lib/widgets.php, views/default/css.php,
+ views/default/layouts/widgets.php, views/default/widgets/wrapper.php: Refs
+ #1793 getting sorted widgets from elgg_get_widgets()
+
+ * actions/widgets/add.php, engine/lib/widgets.php, js/lib/ui.widgets.js,
+ languages/en.php, views/default/css.php, views/default/layouts/widgets.php,
+ views/default/widgets/add.php, views/default/widgets/add_button.php: Refs
+ #1793 added ability to add widgets to layout through ajax
+
+ * engine/lib/location.php: Refs #1411, #2165 added
+ elgg_list_entities_from_location() and deprecated in_area functions
+
+ * engine/lib/location.php, engine/tests/api/entity_getter_functions.php:
+ Refs #2165 adds elgg_get_entities_from_location()
+
+ * engine/lib/private_settings.php,
+ engine/tests/api/entity_getter_functions.php: Refs #2165 added
+ elgg_get_entities_from_private_settings()
+
+2010-11-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/url.php: Refs #2143 I need ids for urls for the
+ widget code right now
+
+ * engine/lib/widgets.php, js/lib/ui.widgets.js, languages/en.php,
+ views/default/css.php, views/default/layouts/widgets.php,
+ views/default/widgets/add.php, views/default/widgets/add_button.php: Refs
+ #1793 - added a basic add new widgets view - it is not wired up yet
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/removeadmin.php, actions/admin/user/resetpassword.php,
+ actions/admin/user/unban.php, languages/en.php: Closes #1422 admin user
+ actions now check for self before banning, deleting, or removing admin
+ privileges
+
+ * pages/friends/index.php, pages/friends/of.php: Refs #1411 using new
+ elgg_list* functions in friends page handlers
+
+ * pages/friends/index.php, pages/friends/of.php: Refs #2662 removed html
+ from friends page handlers
+
+ * js/lib/ui.widgets.js, views/default/css.php,
+ views/default/layouts/widgets.php, views/default/widgets/wrapper.php: Refs
+ #821 #1793 early widget layout - does not include edit settings, delete,
+ collapsing, reloading, or adding widgets
+
+2010-11-16 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/lib/functions.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../uservalidationbyemail/unvalidated_user.php: Refs #2573 updates the
+ uservalidationbyemail plugin to work with new validation metadata approach
+
+ * engine/lib/upgrades/2010111501.php, version.php: Fixes #2573 upgrade
+ script for new user validation approach
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/views.php,
+ install/ElggInstaller.php: Fixes #2642 changed elgg_view_page() to always
+ pick up page_shell views for the page_shells directory
+
+ * .gitignore, engine/lib/actions.php, engine/settings.example.php,
+ install/ElggInstaller.php: Pulled in hellekin's fixes from
+ https://github.com/Elgg/Elgg/pull/2
+
+ * engine/lib/views.php: made page_draw() backward compatible with 1.7
+
+ * engine/lib/install.php: just in case any plugin called the previous
+ install functions, I put them back as stubs
+
+2010-11-15 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Refs #617 put user validation functions back in
+ users lib
+
+ * mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php: Refs #2573 fixes validation issue for
+ users registered with validation turned off. Still need to write an upgrade
+ script since validation status wasn't set on unvalidated users before this
+
+ * engine/classes/ElggPAM.php, engine/lib/pam.php,
+ mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/start.php: Fixes #1417 Users get notified when
+ their accounts are not validated for any authentication attempt
+
+ * actions/register.php: #Refs 2653 removed login() call since it was
+ conflicting with user validation plugin
+
+2010-11-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, engine/classes/ElggPAM.php,
+ engine/classes/LoginException.php, engine/lib/api.php, engine/lib/pam.php,
+ engine/lib/sessions.php, engine/tests/services/api.php, languages/en.php:
+ Refs #1417 Elgg core now passes back useful messages to user when log in
+ fails - uservalidationbyemail is next
+
+ * index.php: fixed bug where the front page wasn't being populated with the
+ views
+
+ * engine/classes/ElggAccess.php: fixed typo in comment
+
+2010-11-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/entities/entity_listing.php: Refs
+ #2391: Baby steps toward getting a unified css -- haven't landed on a name
+ yet, but listing/icon/info seems to make the most sense. Do we need to be
+ worried about naming collisions, since those names are so simple?
+
+ * js/classes/ElggPriorityList.js, js/lib/elgglib.js, js/lib/events.js,
+ js/lib/languages.js, js/lib/prototypes.js, js/tests/ElggEventsTest.js,
+ js/tests/ElggLibTest.js, js/tests/jsTestDriver.conf, vendors/sprintf.js,
+ views/default/js/initialise_elgg.php: Refs #2538: Added vsprintf support to
+ elgg.echo. Added unit tests for normalize_url, added prototype definitions
+ for Array#forEach for compatibility with IE.
+
+ * js/classes/ElggPriorityList.js, js/lib/events.js: Refs #2538: Refactored
+ and cleaned up ElggPriorityList and events
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/calendar.php, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/location.php, engine/lib/metadata.php,
+ engine/lib/relationships.php, engine/lib/users.php, engine/lib/views.php,
+ mod/ecml/ecml_functions.php, mod/file/search.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/object/file.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/search/views/default/search/entity_list.php,
+ views/default/entities/entity_list.php,
+ views/default/navigation/listtype.php, views/default/navigation/viewtype.php,
+ views/default/object/default.php, views/default/user/default.php: Fixes
+ #2334: Converted viewtype => listtype and viewtypetoggle => listtypetoggle.
+ Did my best to maintain backwards compatibility but might have missed
+ something...
+
+ * engine/tests/api/helpers.php: Added some more unit tests for
+ elgg_normalize_url
+
+ * engine/classes/ElggEntity.php: No comment...
+
+ * engine/classes/ElggEntity.php: Wow, what a blunder -- what to go deleting
+ random methods, Winslow
+
+ * views/default/input/button.php: Refs #1208: Default input/button to
+ 'button' type (rather than 'submit' type).
+
+ * engine/classes/ElggEntity.php: Refs #2486: Added support for the
+ 'recursive' parameter to ElggEntity::delete()
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggData.php,
+ engine/classes/ElggEntity.php: Added comments to several undocumented methods
+
+ * mod/pages/actions/pages/editwelcome.php: Fixes #2572: Removed last
+ @license tag from pages plugin
+
+2010-11-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Fixes #2561 fixed typo - thanks for the report
+
+2010-11-13 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/objects/entities.php: Cleaning up database after new
+ ElggEntity unit test.
+
+2010-11-12 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/tests/objects/entities.php: Updating
+ ElggEntity::clearMetaData() to fail when passed a non-existent metadata name.
+ Fixes #2273
+
+2010-11-11 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Obliterated C&P in elgg_trigger_plugin_hook
+
+ * engine/lib/elgglib.php: Making CodeSniffer happy + reduced C&P in
+ elgg_trigger_event
+
+2010-11-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Refs #2641 merged [7295] into trunk
+
+ * mod/groups/views/default/groups/groupprofile.php: Fixes #2638 fixes group
+ action url problem
+
+ * mod/groups/all.php: Refs #2640 fixes a layout issue due to change in
+ elgg_view_layout()
+
+ * views/default/canvas/default.php,
+ views/default/canvas/layouts/administration.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/one_column_with_sidebar.php,
+ views/default/canvas/layouts/widgets.php: Closes #2637 good-bye canvas
+
+ * engine/lib/views.php, views/default/layouts/administration.php,
+ views/default/layouts/default.php, views/default/layouts/one_column.php,
+ views/default/layouts/one_column_with_sidebar.php,
+ views/default/layouts/widgets.php: Refs #2637 moved canvas/layouts to layouts
+
+
+ * engine/lib/admin.php, engine/lib/tags.php, engine/lib/users.php,
+ engine/lib/views.php, engine/tests/ui/submenu.php, index.php,
+ mod/blog/start.php, mod/bookmarks/bookmarklet.php, mod/bookmarks/start.php,
+ mod/diagnostics/index.php, mod/ecml/start.php, mod/file/edit.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/search.php,
+ mod/file/upload.php, mod/file/world.php, mod/groups/activity.php,
+ mod/groups/addtopic.php, mod/groups/all.php, mod/groups/edit.php,
+ mod/groups/edittopic.php, mod/groups/forum.php, mod/groups/groupprofile.php,
+ mod/groups/index.php, mod/groups/invitations.php, mod/groups/invite.php,
+ mod/groups/membership.php, mod/groups/membershipreq.php, mod/groups/new.php,
+ mod/groups/topicposts.php, mod/invitefriends/index.php,
+ mod/members/index.php, mod/messages/index.php, mod/messages/read.php,
+ mod/messages/send.php, mod/messages/sent.php, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/pages/edit.php, mod/pages/history.php,
+ mod/pages/index.php, mod/pages/new.php, mod/pages/view.php,
+ mod/pages/welcome.php, mod/pages/world.php, mod/profile/edit.php,
+ mod/profile/editicon.php, mod/profile/index.php, mod/profile/start.php,
+ mod/reportedcontent/add.php, mod/riverdashboard/index.php,
+ mod/search/index.php, mod/search/views/default/search/layout.php,
+ mod/sitepages/index.php, mod/sitepages/sitepages_functions.php,
+ mod/tagcloud/tagcloud.php, mod/thewire/add.php, mod/thewire/everyone.php,
+ mod/thewire/index.php, pages/account/forgotten_password.php,
+ pages/account/register.php, pages/dashboard/index.php,
+ pages/dashboard/latest.php, pages/entities/index.php, pages/friends/add.php,
+ pages/friends/collections.php, pages/friends/edit.php,
+ pages/friends/index.php, pages/friends/of.php, pages/settings/plugins.php,
+ pages/settings/statistics.php, pages/settings/user.php,
+ services/export/handler.php, views/default/canvas/default.php,
+ views/default/canvas/layouts/administration.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/one_column_with_sidebar.php,
+ views/default/js/initialise_elgg.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/page_elements/sidebar.php: Fixes #2640 - elgg_view_layout now
+ uses a parameter array like all the other elgg_view* functions
+
+2010-11-11 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixes #2367: Corrected plugin hook documentation
+ to maintain that the default priority is 500
+
+2010-11-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixes #2306: deprecated get/count/list_user_objects
+ as well as get_user_objects_by_metadata
+
+ * engine/lib/elgglib.php: Using max() to give priority a minimum value of 0
+ for plugin hooks
+
+ * actions/login.php, actions/plugins/settings/save.php,
+ actions/register.php, actions/usersettings/save.php,
+ documentation/examples/events/advanced.php,
+ documentation/examples/events/all.php,
+ documentation/examples/events/basic.php,
+ documentation/examples/events/emit.php,
+ documentation/examples/hooks/basic.php,
+ documentation/examples/hooks/register/advanced.php,
+ documentation/examples/hooks/register/all.php,
+ documentation/examples/hooks/register/basic.php,
+ documentation/examples/hooks/register/emit.php,
+ documentation/examples/hooks/trigger/advanced.php,
+ documentation/examples/hooks/trigger/basic.php,
+ documentation/stubs/config.php, engine/classes/ElggSession.php,
+ engine/classes/ElggSite.php, engine/handlers/cron_handler.php,
+ engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/api.php, engine/lib/configuration.php,
+ engine/lib/cron.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/filestore.php, engine/lib/group.php, engine/lib/input.php,
+ engine/lib/location.php, engine/lib/metadata.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/output.php,
+ engine/lib/pageowner.php, engine/lib/plugins.php,
+ engine/lib/relationships.php, engine/lib/sessions.php, engine/lib/sites.php,
+ engine/lib/statistics.php, engine/lib/system_log.php, engine/lib/users.php,
+ engine/lib/usersettings.php, engine/lib/version.php, engine/lib/views.php,
+ engine/lib/widgets.php, engine/start.php, engine/tests/suite.php,
+ engine/tests/test_skeleton.php, index.php, install/ElggInstaller.php,
+ mod/blog/start.php, mod/bookmarks/start.php, mod/captcha/start.php,
+ mod/categories/start.php, mod/crontrigger/start.php,
+ mod/defaultwidgets/start.php, mod/diagnostics/actions/download.php,
+ mod/diagnostics/start.php, mod/ecml/ecml_functions.php, mod/ecml/start.php,
+ mod/embed/start.php, mod/embed/views/default/embed/embed.php,
+ mod/file/start.php, mod/friends/start.php, mod/garbagecollector/start.php,
+ mod/groups/start.php, mod/htmlawed/start.php, mod/invitefriends/start.php,
+ mod/logbrowser/start.php, mod/logrotate/start.php, mod/members/index.php,
+ mod/members/start.php, mod/messageboard/start.php, mod/messages/start.php,
+ mod/notifications/start.php, mod/pages/start.php,
+ mod/profile/actions/edit.php, mod/profile/actions/iconupload.php,
+ mod/profile/start.php, mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/start.php,
+ mod/riverdashboard/start.php, mod/search/index.php, mod/search/start.php,
+ mod/sitepages/start.php, mod/tagcloud/start.php, mod/thewire/start.php,
+ mod/tinymce/start.php, mod/twitter/start.php,
+ mod/uservalidationbyemail/start.php, mod/zaudio/start.php,
+ services/api/rest_api.php, services/export/handler.php,
+ views/default/page_elements/owner_block.php: Fixes #2367: With fear and
+ trepidation, converting events/plugin hooks to use elgg_ prefixed versions
+
+ * engine/lib/views.php: Refs #2124: Removed js, page_owner, and
+ page_owner_user variables from $vars
+
+ * engine/lib/views.php: Refs #2124: Removed session variables from $vars
+
+2010-11-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/register.php: Refs #866 - registration uses
+ https if configured for login
+
+2010-11-10 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/login_box.php: No sense in calling
+ elgg_get_site_url() twice here...
+
+ * views/default/account/login_box.php: Prevent "https login" from breaking
+ login on sites that are https by default
+
+2010-11-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php: Refs #2609 - added fix to trunk
+
+ * views/default/annotation/default.php: Refs #2626 - adds default annotation
+ view to trunk
+
+ * engine/lib/metadata.php: Refs #2632 - cleaned up documentation on metadata
+
+
+ * engine/lib/elgglib.php, engine/lib/users.php, index.php,
+ mod/sitepages/start.php, views/default/account/forms/login.php,
+ views/default/account/forms/login_dropdown.php,
+ .../default/account/forms/login_walled_garden.php,
+ views/default/account/login_box.php,
+ views/default/account/login_dropdown.php,
+ views/default/account/login_walled_garden.php, views/default/css.php,
+ views/default/css_ie.php, views/default/page_elements/header.php: Refs #2506
+ reorged the login box views - css still needs to be cleaned up
+
+ * mod/diagnostics/index.php, mod/members/index.php, mod/search/index.php,
+ mod/sitepages/sitepages_functions.php,
+ views/default/canvas/layouts/administration.php,
+ .../canvas/layouts/one_column_with_sidebar.php,
+ views/default/page_elements/content.php,
+ views/default/page_elements/elgg_content.php,
+ views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/elgg_header.php,
+ views/default/page_elements/elgg_header_logo.php,
+ views/default/page_elements/elgg_sidebar.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/elgg_topbar_logout.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_logo.php,
+ views/default/page_elements/sidebar.php,
+ views/default/page_elements/topbar.php,
+ views/default/page_elements/topbar_logout.php,
+ views/default/page_shells/admin.php, views/default/page_shells/default.php:
+ Fixes #2631 removes 'elgg_' namespace from the page element views - anyone
+ working with the trunk will need to update their theme and/or flush their
+ cache
+
+2010-11-09 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/tests/ElggLibTest.js: Renamed test method appropriately. jslinted
+ ElggLibTest.
+
+ * js/tests/ElggEventsTest.js: Using nullFunction + abstractMethod reference
+ instead of new closures in EventsTest
+
+ * js/tests/ElggAjaxOptionsTest.js: Using nullFunction reference instead of
+ new closure in ajaxOptionsTest
+
+ * js/lib/ui.widgets.js: jslinted ui.widgets.js
+
+ * js/lib/ui.js: jslinted ui.js
+
+ * js/lib/session.js: jsLinted session.js, employed elgg type-checker
+ functions, and did some more miscellaneous cleanup
+
+ * js/lib/elgglib.js: Added elgg.isNumber type-checking function
+
+ * js/lib/security.js: jsLinted security.js + using elgg typecheckers rather
+ than ===
+
+ * js/lib/languages.js: jslinted languages.js
+
+ * js/lib/elgglib.js: Abstract methods are no longer nameable
+
+2010-11-07 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ajax.js: Various tweaks to coding style + comments (apologies for
+ my schizo here... trying to experiment to see what works). Using
+ type-checking helpers rather than raw typeof and === checks
+
+ * js/lib/elgglib.js: Addition of type-checking helper functions, various
+ tweaks to comments, code style, etc.
+
+2010-11-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggDiskFilestore.php: replaced usages of
+ make_file_matrix() with new method makeFileMatrix()
+
+ * views/default/css.php: added text color for warnings otherwise warnings
+ that occur in topbar end up blank
+
+ * engine/lib/entities.php, engine/lib/private_settings.php,
+ engine/start.php, install/ElggInstaller.php: pulled private settings out into
+ a separate lib
+
+ * engine/lib/relationships.php: Refs #1411 fixes bug introduced in [7213]
+ that broke listing relationships
+
+2010-11-06 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * js/lib/ajax.js: jsLinted ajax.js, removed experimental functions
+
+2010-11-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php: removed hacked in link to conversations
+ plugin in riverdashboard
+
+2010-11-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * COPYRIGHT.txt, README.txt: small tweaks to the readme and copyright pages
+
+2010-11-04 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/output.php, engine/tests/api/helpers.php: Fixes #2463: Added
+ support for forwarding to root-level files, e.g. forward('install.php')
+
+2010-11-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/output.php: Refs #2463 Added trim for leading /s to avoid //s
+ when passing elgg_normalize_url('/mod/some/file.php').
+
+2010-11-04 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/output.php, engine/tests/api/helpers.php: Fixes #2463: Added ^
+ to beginning of normalize_url regex to prevent matching on urls like
+ mod/plugin/page.php. Added unit tests to verify functionality.
+
+ * engine/lib/elgglib.php: Added @deprecated docblock tag to events()
+
+ * engine/tests/objects/objects.php: Removed requirement that object
+ container be a group
+
+2010-11-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/views.php,
+ views/default/friends/picker.php, views/default/page_elements/html_begin.php:
+ Fixes #2210 - using new functions for registering the core js and css files
+
+2010-11-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php: Moved list_entities_groups
+ to groups.php and deprecated in favor of elgg_list_entities
+
+2010-11-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/river/create.php: Fixed missing ).
+
+ * COPYRIGHT.txt: Added myself to the copyright.
+
+ * mod/blog/start.php, mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/object/blog.php,
+ .../views/default/river/object/blog/create.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ .../default/river/object/bookmarks/create.php, mod/categories/listing.php,
+ mod/categories/start.php, mod/diagnostics/actions/download.php,
+ mod/diagnostics/start.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/search.php, mod/file/start.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/river/object/file/create.php,
+ mod/garbagecollector/start.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/invite.php, mod/groups/actions/joinrequest.php,
+ mod/groups/activity.php, mod/groups/all.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../river/object/groupforumtopic/annotate.php,
+ .../river/object/groupforumtopic/create.php,
+ .../river/object/groupforumtopic/update.php,
+ .../default/river/relationship/member/create.php,
+ mod/invitefriends/actions/invite.php,
+ .../views/default/invitefriends/formitems.php, mod/members/index.php,
+ mod/messageboard/index.php, mod/messageboard/start.php,
+ .../default/river/object/messageboard/create.php, mod/messages/index.php,
+ mod/messages/read.php, mod/messages/send.php, mod/messages/sent.php,
+ mod/messages/start.php, mod/pages/history.php, mod/pages/index.php,
+ mod/pages/new.php, mod/pages/start.php, mod/pages/view.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/annotate.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/page/update.php,
+ .../default/river/object/page_top/annotate.php,
+ .../views/default/river/object/page_top/create.php,
+ .../views/default/river/object/page_top/update.php, mod/pages/welcome.php,
+ mod/pages/world.php, mod/profile/actions/addcomment.php,
+ mod/profile/actions/edit.php,
+ .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/welcome.php, mod/search/index.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/startblurb.php,
+ mod/search/views/rss/search/comments/entity.php, mod/tagcloud/tagcloud.php,
+ mod/thewire/index.php, mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/rss/object/thewire.php,
+ .../views/rss/search/object/thewire/entity.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ .../uservalidationbyemail/unvalidated_user.php: Fixes #1320: Bundled mods use
+ elgg_echo()'s internal string substitution.
+
+2010-11-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Refs #2351: deprecated get_objects_in_group() in
+ favor of elgg_get_entities(). There's nothing the former can do that the
+ latter can't, so it's not worth maintaining.
+
+2010-11-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, actions/admin/user/delete.php,
+ actions/admin/user/resetpassword.php, actions/comments/add.php,
+ actions/entities/delete.php, actions/friends/add.php,
+ actions/friends/remove.php, actions/likes/add.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, engine/classes/ElggAnnotation.php,
+ engine/classes/ElggDiskFilestore.php, engine/classes/ElggExtender.php,
+ engine/classes/ElggFile.php, engine/classes/ElggFileCache.php,
+ engine/classes/ElggGroup.php, engine/classes/ElggMemcache.php,
+ engine/classes/ElggMetadata.php, engine/classes/ElggObject.php,
+ engine/classes/ElggRelationship.php, engine/classes/ElggSite.php,
+ engine/classes/ElggUser.php, engine/handlers/cron_handler.php,
+ engine/lib/actions.php, engine/lib/api.php, engine/lib/cron.php,
+ engine/lib/database.php, engine/lib/entities.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/group.php, engine/lib/notification.php,
+ engine/lib/objects.php, engine/lib/output.php, engine/lib/plugins.php,
+ engine/lib/relationships.php, engine/lib/sites.php, engine/lib/users.php,
+ engine/lib/xml-rpc.php, index.php, install/ElggInstaller.php,
+ install/ElggRewriteTester.php, languages/en.php, pages/friends/index.php,
+ pages/friends/of.php, services/export/handler.php,
+ views/default/admin/plugins/simple.php,
+ views/default/annotation/annotate.php,
+ views/default/friends/river/create.php,
+ views/default/group/search/startblurb.php, views/default/object/default.php,
+ views/default/user/search/startblurb.php: Refs #1320. Updated core to use
+ elgg_echo()'s native string replacement.
+
+ * engine/lib/languages.php: Refs #1320: elgg_echo() has built-in sprintf
+ support.
+
+ * mod/groups/views/default/groups/find.php: Refs #2582. Merged [7224] to
+ trunk.
+
+2010-11-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, mod/blog/views/default/object/blog.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/object/file/embedlist.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/widgets/filerepo/view.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../views/default/groups/invitationrequests.php,
+ mod/groups/views/default/groups/members.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/widgets/a_users_groups/view.php,
+ .../views/default/admin/overview/logbrowser.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/view.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../views/default/profile/profile_ownerblock.php,
+ .../views/default/reportedcontent/listing.php,
+ mod/riverdashboard/endpoint/get_comments.php,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/entity.php,
+ .../views/default/canvas/layouts/frontpage.php,
+ mod/sitepages/views/default/sitepages/members.php,
+ mod/sitepages/views/default/sitepages/sidebar.php,
+ mod/sitepages/views/default/sitepages/welcome.php,
+ mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ .../default/account/forms/login_walled_garden.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/annotation/likes.php,
+ views/default/canvas/layouts/administration.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/one_column_with_sidebar.php, views/default/css.php,
+ views/default/css_ie.php, views/default/entities/entity_listing.php,
+ views/default/entities/gallery_listing.php, views/default/friends/picker.php,
+ views/default/likes/forms/edit.php, views/default/navigation/pagination.php,
+ views/default/navigation/site_nav.php, views/default/output/rss_view.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_shells/walled_garden.php: Fixes #2440: Converted
+ clearfloat to clearfix, brought back orig clearfloat
+
+ * engine/lib/entities.php: Refs #2050: Added missing docblock parameters
+
+ * engine/classes/ElggEntity.php, engine/lib/entities.php: Fixes #2050: Added
+ subtype parameter to can_write_to_container functions and hooks
+
+ * engine/lib/entities.php: Set return type of get_entity to ElggEntity
+
+ * engine/classes/ElggEntity.php, engine/classes/ElggObject.php: Fixes #2134:
+ Moved getContainerEntity() method to ElggEntity
+
+ * engine/lib/group.php: Refs #1411: Deprecated
+ get_entities_from_metadata_groups(_multi) in favor of
+ elgg_get_entities_from_metadata. Added proper deprecation for
+ delete_group_entity. Unsure of version deprecated -- set to 1.6
+
+ * engine/lib/access.php: bah! forgot to rename all variables in
+ list_entities_from_access_id
+
+ * engine/lib/access.php: Fixed regression in deprecated
+ list_entities_from_access_id -- was passing access_id as 'collection_id'
+ instead of 'access_id'
+
+2010-11-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/api.php, engine/lib/navigation.php,
+ engine/lib/users.php, engine/lib/usersettings.php, engine/lib/views.php,
+ engine/lib/widgets.php, engine/tests/ui/submenu.php, index.php,
+ mod/bookmarks/start.php, .../default/river/object/bookmarks/create.php,
+ mod/categories/listing.php, .../views/default/defaultwidgets/editor.php,
+ mod/diagnostics/index.php, mod/diagnostics/start.php, mod/ecml/start.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/search.php,
+ mod/file/start.php, mod/file/views/default/object/file.php,
+ mod/file/world.php, mod/groups/all.php, mod/groups/forum.php,
+ mod/groups/groupprofile.php, mod/groups/index.php, mod/groups/membership.php,
+ mod/groups/start.php, .../views/default/object/groupforumtopic.php,
+ mod/invitefriends/index.php, mod/invitefriends/start.php,
+ mod/members/index.php, mod/messages/start.php, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/notifications/start.php,
+ mod/pages/actions/pages/edit.php, mod/pages/index.php, mod/pages/start.php,
+ mod/pages/view.php, mod/pages/world.php, mod/profile/edit.php,
+ mod/profile/editicon.php, mod/profile/start.php,
+ mod/riverdashboard/index.php, .../views/default/river/item/wrapper.php,
+ mod/sitepages/index.php, mod/sitepages/start.php,
+ mod/sitepages/views/default/sitepages/metatags.php,
+ .../views/default/widgets/tagcloud/view.php, mod/thewire/start.php,
+ mod/uservalidationbyemail/start.php, pages/dashboard/index.php,
+ pages/dashboard/latest.php, pages/entities/index.php,
+ pages/entities/list.php, views/default/admin/overview/online.php,
+ views/default/admin/users/online.php, views/default/annotation/annotate.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/site_nav.php, views/default/output/tagcloud.php,
+ views/default/page_elements/content_header.php,
+ views/default/widgets/editwrapper.php: Fixes #2128 - replaces all uses of
+ set_context() and get_context() in core and plugins
+
+2010-11-03 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: Fixes #2151: Replaced elgg_get_viewtype()
+ implementation with @cash's much simpler version
+
+ * engine/lib/annotations.php, engine/lib/relationships.php: Refs #1411:
+ Deprecated list_entities_from_relationship() in favor of
+ elgg_list_entities_from_relationship()
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/entities.php, engine/lib/metadata.php: Fixes #2606: Abstracted
+ elgg_list_entities. Takes an optional second argument for the 'getter',
+ defaulting to 'elgg_get_entities'. Converted current elgg_list_entities*
+ functions to use it
+
+ * README.txt: Added .txt for consistency
+
+2010-11-02 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/xml-rpc_handler.php, engine/lib/admin.php,
+ engine/lib/api.php, engine/lib/elgglib.php, engine/lib/tags.php,
+ engine/lib/users.php, engine/lib/xml-rpc.php, engine/tests/ui/submenu.php,
+ index.php, install/ElggInstaller.php, mod/blog/start.php,
+ mod/bookmarks/bookmarklet.php, mod/bookmarks/start.php,
+ mod/categories/listing.php, mod/diagnostics/index.php, mod/ecml/start.php,
+ mod/file/edit.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/search.php, mod/file/upload.php, mod/file/world.php,
+ mod/groups/activity.php, mod/groups/addtopic.php, mod/groups/all.php,
+ mod/groups/edit.php, mod/groups/edittopic.php, mod/groups/forum.php,
+ mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invitations.php, mod/groups/invite.php, mod/groups/membership.php,
+ mod/groups/membershipreq.php, mod/groups/new.php, mod/groups/topicposts.php,
+ mod/invitefriends/index.php, mod/members/index.php,
+ mod/messageboard/history.php, mod/messageboard/index.php,
+ mod/messages/index.php, mod/messages/read.php, mod/messages/send.php,
+ mod/messages/sent.php, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/pages/edit.php, mod/pages/history.php,
+ mod/pages/index.php, mod/pages/new.php, mod/pages/view.php,
+ mod/pages/welcome.php, mod/pages/world.php, mod/profile/edit.php,
+ mod/profile/editicon.php, mod/profile/index.php, mod/profile/start.php,
+ mod/reportedcontent/add.php, mod/riverdashboard/index.php,
+ mod/search/index.php, mod/sitepages/index.php, mod/sitepages/start.php,
+ mod/tagcloud/tagcloud.php, mod/thewire/add.php, mod/thewire/everyone.php,
+ mod/thewire/index.php, pages/account/forgotten_password.php,
+ pages/account/register.php, pages/dashboard/index.php,
+ pages/dashboard/latest.php, pages/entities/index.php,
+ pages/entities/list.php, pages/friends/add.php,
+ pages/friends/collections.php, pages/friends/edit.php,
+ pages/friends/index.php, pages/friends/of.php, pages/settings/plugins.php,
+ pages/settings/statistics.php, pages/settings/user.php,
+ services/api/rest_api.php, services/export/handler.php: Fixes #2360:
+ page_draw => elgg_view_page in core + bundled plugins
+
+ * documentation/examples/hooks/basic.php,
+ documentation/examples/hooks/register/all.php,
+ documentation/examples/hooks/register/emit.php: Fixed several typos in
+ documentation examples
+
+ * documentation/examples/hooks/register/advanced.php, engine/lib/views.php:
+ Refs #2360: Deprecated page_draw in favor of elgg_view_page. Updated
+ packaged documentation to reflect this.
+
+ * engine/lib/elgglib.php, engine/tests/api/helpers.php: Added url
+ normalization support to elgg_register_js and elgg_register_css
+
+ * documentation/examples/hooks/register/advanced.php,
+ documentation/examples/hooks/register/basic.php: Corrected a couple typos in
+ the documentation that are being registered as php errors
+
+ * .../default/messageboard/messageboard_content.php, mod/messages/start.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/view.php, mod/pages/history.php,
+ mod/pages/new.php, mod/pages/start.php, mod/pages/view.php,
+ mod/pages/welcome.php, mod/profile/start.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ .../views/default/riverdashboard/sitemessage.php, mod/sitepages/start.php,
+ mod/thewire/start.php, mod/thewire/views/default/object/thewire.php,
+ .../uservalidationbyemail/unvalidated_user.php: Fixes #2463: Removed
+ gratuitous references to $CONFIG->url, etc. from the rest of the plugins.
+
+ * mod/blog/start.php, mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php, mod/bookmarks/start.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/diagnostics/forms/download.php, mod/file/start.php,
+ mod/file/views/default/object/file.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/join.php, mod/groups/all.php, mod/groups/index.php,
+ mod/groups/membership.php, mod/groups/start.php,
+ mod/groups/views/default/forum/maintopic.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ .../views/default/object/groupforumtopic.php: Refs #2463: Removed gratuitous
+ references to $CONFIG->url, etc. in blog - groups plugins
+
+ * engine/lib/actions.php, engine/lib/entities.php, engine/lib/extender.php:
+ Refs #2463: Added URL normalization support for entity and extender url
+ handlers
+
+ * views/default/page_elements/content_header.php: Refs #2463:
+ page_elements/content_header normalizes 'new_link'
+
+ * engine/lib/entities.php: Refs #2463: Fixed typo of elgg_normalize_url
+ function
+
+ * engine/classes/ElggSite.php, engine/lib/actions.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/navigation.php,
+ engine/lib/views.php, engine/tests/ui/submenu.php, install/ElggInstaller.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/likes.php, views/default/friends/collection.php,
+ views/default/object/default.php,
+ views/default/page_elements/content_header.php,
+ views/default/page_elements/elgg_topbar_logout.php: Refs #2463: Removed some
+ more instances of $CONFIG->url. Added support for elgg_normalize_url to
+ elgg_add_action_tokens_to_url
+
+ * engine/lib/output.php, views/default/output/confirmlink.php,
+ views/default/output/url.php: Refs #2463: Added url normalization support to
+ output/url, output/confirmlink. Enhanced normalization to take care of urls
+ like "example.com"
+
+ * engine/lib/admin.php, engine/lib/users.php, mod/bookmarks/start.php,
+ mod/diagnostics/start.php, .../views/default/diagnostics/runalltests.php,
+ mod/file/views/default/file/embed_upload.php, mod/groups/start.php,
+ mod/invitefriends/start.php, .../views/default/invitefriends/form.php,
+ mod/logbrowser/views/default/logbrowser/form.php, mod/messages/start.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/notifications/groups.php, mod/notifications/start.php,
+ .../default/notifications/subscriptions/form.php, mod/pages/index.php,
+ mod/pages/start.php, mod/pages/view.php, mod/pages/world.php,
+ mod/profile/start.php, .../default/admin/appearance/defaultprofile.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/admin/users/unvalidated.php,
+ views/default/account/forms/forgotten_password.php,
+ .../default/account/forms/login_walled_garden.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugins/simple.php,
+ views/default/comments/forms/edit.php, views/default/friends/forms/edit.php,
+ views/default/object/plugin.php, views/default/usersettings/form.php,
+ views/default/widgets/editwrapper.php: Refs #2463: Removed many more
+ graituitous calls to elgg_get_site_url(), $CONFIG->url, etc.
+
+ * views/default/input/form.php: Refs #2463: input/form now normalizes the
+ action parameter
+
+ * engine/lib/output.php: Refs #2463: Removed stay { that was causing the
+ regexp to break
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/groups/start.php, mod/pages/start.php, mod/riverdashboard/start.php,
+ mod/thewire/start.php: Refs #2463: Removed some gratuitous calls to
+ elgg_get_site_url() from core plugins
+
+ * engine/lib/elgglib.php, engine/lib/navigation.php, engine/lib/output.php:
+ Refs #2463: Added elgg_normalize_url. forward() and add_menu() make use of
+ it
+
+ * actions/admin/menu_items.php, actions/admin/plugins/disable.php,
+ actions/admin/plugins/disableall.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/enableall.php, actions/admin/plugins/reorder.php,
+ actions/admin/plugins/simple_update_states.php,
+ actions/admin/site/update_advanced.php, actions/admin/site/update_basic.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ actions/admin/user/resetpassword.php, actions/admin/user/unban.php,
+ actions/comments/add.php, actions/comments/delete.php,
+ actions/email/save.php, actions/entities/delete.php, actions/friends/add.php,
+ actions/friends/remove.php, actions/import/opendd.php, actions/likes/add.php,
+ actions/likes/delete.php, actions/login.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/user/name.php, actions/useradd.php, actions/usersettings/save.php,
+ actions/widgets/add.php, actions/widgets/reorder.php,
+ actions/widgets/save.php, mod/blog/actions/blog/delete.php,
+ mod/blog/start.php, mod/bookmarks/actions/delete.php,
+ mod/categories/actions/save.php, mod/ecml/actions/save_permissions.php,
+ mod/file/actions/upload.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/edit.php, mod/groups/actions/featured.php,
+ mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/invitefriends/actions/invite.php,
+ mod/messages/actions/delete.php, mod/notifications/actions/groupsave.php,
+ mod/notifications/actions/save.php, mod/pages/actions/pages/delete.php,
+ mod/pages/actions/pages/edit.php, mod/profile/actions/addcomment.php,
+ mod/profile/actions/cropicon.php, mod/profile/actions/deletecomment.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/actions/resetdefaultprofile.php,
+ mod/sitepages/actions/edit_settings.php: Using REFERER shorthand throughout
+ core
+
+ * js/lib/elgglib.js: Refs #2538: Removed stray 'f' from elgg.system_messages
+ that was causing fatal error
+
+ * js/tests/jsTestDriver.conf, jsTestDriver.conf: Refs #2538: Moved
+ jsTestDriver.conf to js/tests/
+
+ * engine/js/classes/ElggEntity.js, engine/js/classes/ElggPriorityList.js,
+ engine/js/classes/ElggUser.js, engine/js/lib/ajax.js,
+ engine/js/lib/configuration.js, engine/js/lib/elgglib.js,
+ engine/js/lib/events.js, engine/js/lib/languages.js,
+ engine/js/lib/security.js, engine/js/lib/session.js, engine/js/lib/ui.js,
+ engine/js/lib/ui.widgets.js, engine/js/tests/ElggAjaxOptionsTest.js,
+ engine/js/tests/ElggAjaxTest.js, engine/js/tests/ElggEventsTest.js,
+ engine/js/tests/ElggLanguagesTest.js, engine/js/tests/ElggLibTest.js,
+ engine/js/tests/ElggPriorityListTest.js, engine/js/tests/ElggSecurityTest.js,
+ engine/js/tests/ElggSessionTest.js, js/classes/ElggEntity.js,
+ js/classes/ElggPriorityList.js, js/classes/ElggUser.js, js/lib/ajax.js,
+ js/lib/configuration.js, js/lib/elgglib.js, js/lib/events.js,
+ js/lib/languages.js, js/lib/security.js, js/lib/session.js, js/lib/ui.js,
+ js/lib/ui.widgets.js, js/tests/ElggAjaxOptionsTest.js,
+ js/tests/ElggAjaxTest.js, js/tests/ElggEventsTest.js,
+ js/tests/ElggLanguagesTest.js, js/tests/ElggLibTest.js,
+ js/tests/ElggPriorityListTest.js, js/tests/ElggSecurityTest.js,
+ js/tests/ElggSessionTest.js, jsTestDriver.conf,
+ views/default/js/initialise_elgg.php: Refs #2538: Moved js directory to elgg
+ root.
+
+ * engine/js/lib/ajax.js, engine/js/lib/elgglib.js,
+ engine/js/tests/ElggLibTest.js, engine/lib/entities.php: Refs #2538: Renamed
+ elgg.extendUrl to elgg.normalize_url
+
+ * engine/js/lib/elgglib.js: Refs #2538: Added type checking to some more
+ core functions
+
+ * engine/js/classes/ElggPriorityList.js, engine/js/lib/elgglib.js,
+ engine/js/lib/events.js, engine/js/lib/languages.js,
+ engine/js/lib/security.js, engine/js/lib/ui.js, engine/js/lib/ui.widgets.js,
+ engine/js/tests/ElggEventsTest.js, engine/js/tests/ElggLibTest.js,
+ engine/js/tests/ElggPriorityListTest.js,
+ views/default/js/initialise_elgg.php: Refs #2538: Added Elggy event system.
+ Javascript boot sequence mimics PHP.
+
+2010-11-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/js/lib/elgglib.js, views/default/css.php,
+ views/default/messages/errors/list.php, views/default/messages/list.php,
+ views/default/messages/messages/list.php: Fixes #2318: Adjusted system
+ message markup + styles to work with ajax actions
+
+ * engine/lib/actions.php: Refs #2538: Pulled in support for ajax actions
+
+ * actions/security/refreshtoken.php, engine/js/classes/ElggEntity.js,
+ engine/js/classes/ElggUser.js, engine/js/lib/elgglib.js,
+ engine/js/lib/languages.js, engine/js/tests/ElggLibTest.js,
+ jsTestDriver.conf, views/default/js/initialise_elgg.php,
+ views/default/js/languages.php, views/default/js/languages/en.php,
+ views/default/page_elements/html_begin.php,
+ views/default/page_elements/html_begin_admin.php,
+ views/default/scripts/initialize_elgg.php: Refs #2538: Added some models,
+ inheritance, more bootstrapping code
+
+ * engine/js/classes/ElggUser.js, engine/js/lib/elgglib.js,
+ engine/js/lib/languages.js, engine/js/lib/session.js,
+ engine/js/tests/ElggLanguagesTest.js: Refs #2538: Pulled in some i18n
+ features
+
+ * engine/js/tests/ElggAjaxOptionsTest.js, engine/js/tests/ElggLibTest.js,
+ engine/js/tests/ElggSecurityTest.js: Commented some js Test files
+
+ * jsTestDriver.conf: Switched jsTestDriver.conf to use default jsTestDriver
+ port
+
+2010-11-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggSite.php: Fixes #2603: Corrected is_public_page() to
+ isPublicPage().
+
+2010-11-01 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/js/lib/ajax.js, engine/js/lib/configuration.js,
+ engine/js/lib/elgglib.js, engine/js/lib/security.js,
+ engine/js/lib/session.js, engine/js/lib/ui.js, engine/js/lib/ui.widgets.js,
+ engine/js/tests/ElggAjaxOptionsTest.js, engine/js/tests/ElggAjaxTest.js,
+ engine/js/tests/ElggLibTest.js, engine/js/tests/ElggSecurityTest.js,
+ engine/js/tests/ElggSessionTest.js, jsTestDriver.conf: Refs #2538: Pulled in
+ elgg JS object and unit tests
+
+2010-10-31 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php: Refs #2597: Pushed getOwner and
+ getOwnerEntity into ElggEntity and ElggExtender
+
+ * engine/classes/ElggData.php, engine/classes/Loggable.php: Refs #2597:
+ Deprecated Loggable::getObjectOwnerGUID()
+
+2010-10-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Refs #2210 - added functions for managing
+ javascript and css files
+
+ * engine/tests/regression/trac_bugs.php: Fixed bug in regression test for
+ upscaling turned off
+
+ * engine/tests/objects/sites.php, engine/tests/objects/users.php: Fixes for
+ [7165] - entity variable changed
+
+ * engine/tests/objects/filestore.php: updated unit test for file matrix to
+ reflect updates in directory structure and class method names
+
+ * engine/tests/objects/entities.php, engine/tests/objects/objects.php,
+ engine/tests/objects/sites.php, engine/tests/objects/users.php: Refs #2597 -
+ fixes some unit tests broken in the reorg of the data models
+
+ * engine/tests/suite.php: Unit tests with the system log turned on are too
+ slow
+
+2010-10-31 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggData.php,
+ engine/classes/ElggEntity.php, engine/classes/ElggMetadata.php,
+ engine/classes/ElggRelationship.php: Refs #2597: Pulled __set, __get, __isset
+ magic functions definitions into ElggData
+
+ * engine/classes/ElggEntity.php: Refs #2597: Auto-initialize temp_metadata,
+ temp_annotations, and volatile as arrays
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggRelationship.php: Refs
+ #2597: Moved "implements Exportable" up to {{{ElggData}}}
+
+ * engine/classes/ElggEntity.php: Refs #2597:
+ ElggEntity::initializeAttributes calls into parent initializeAttributes()
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggData.php,
+ engine/classes/ElggEntity.php, engine/classes/ElggExtender.php,
+ engine/classes/ElggMetadata.php, engine/classes/ElggRelationship.php:
+ Improved initializeAttributes implementations
+
+ * engine/classes/ElggGroup.php, engine/classes/ElggObject.php,
+ engine/classes/ElggUser.php: Refs #2597: Entity type constructors all use
+ initializeAttributes now
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php: Refs #2597: Added getURL(),
+ getTimeCreated(), and initializeAttributes() to {{{ElggData}}}
+
+2010-10-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php: Refs #2597: pulled getOwner and
+ getOwnerEntity functions into ElggData I thought this would be OK even
+ though relationships don't technically have owners because ElggRelationship
+ implemented the getObectOwnerGUID method
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggRelationship.php: Refs
+ #2597: Pulled Loggable functions with identical implementations into ElggData
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggRelationship.php: Refs
+ #2597: Pulled identical {{{Iterator}}} and {{{ArrayAccess}}} implementations
+ into {{{ElggData}}}
+
+2010-10-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php, engine/lib/pageowner.php: Refs #2128 - added
+ stack context functions
+
+2010-10-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggData.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggRelationship.php: Refs
+ #2597: Added a new ElggData class that ElggEntity, ElggExtender, and
+ ElggRelationship all extend
+
+ * views/default/page_elements/title.php: Changed get_submenu to
+ elgg_get_submenu
+
+ * mod/bookmarks/views/default/object/bookmarks.php,
+ mod/ecml/views/default/ecml/input_ext.php,
+ .../views/default/groups/activity_latest.php,
+ mod/groups/views/default/river/forum/create.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ .../views/default/profile/menu/adminlinks.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php:
+ Refs #2598: Converted the rest of the $vars['url'] references to
+ elgg_get_site_url()
+
+ * mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/captcha/views/default/input/captcha.php,
+ mod/categories/views/default/categories/view.php,
+ .../views/default/defaultwidgets/editor.php,
+ .../views/default/diagnostics/runalltests.php,
+ mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/help/blip.tv.php,
+ mod/ecml/views/default/ecml/help/dailymotion.php,
+ mod/ecml/views/default/ecml/help/googlemaps.php,
+ mod/ecml/views/default/ecml/help/livevideo.php,
+ mod/ecml/views/default/ecml/help/redlasso.php,
+ mod/ecml/views/default/ecml/help/slideshare.php,
+ mod/ecml/views/default/ecml/help/vimeo.php,
+ mod/ecml/views/default/ecml/help/youtube.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/js.php, mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/upload/content.php,
+ mod/file/views/default/file/css.php,
+ mod/file/views/default/file/embed_upload.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/icon.php,
+ .../default/file/specialcontent/audio/mid.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/x-wav.php,
+ .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/file/upload.php,
+ mod/file/views/default/object/file.php,
+ mod/file/views/default/widgets/filerepo/view.php,
+ mod/file/views/rss/object/file.php, mod/groups/actions/delete.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../views/default/groups/invitationrequests.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/groups/views/default/groups/side_menu.php,
+ .../views/default/icon/group/default/large.php,
+ .../views/default/icon/group/default/medium.php,
+ .../views/default/icon/group/default/small.php,
+ .../views/default/icon/group/default/tiny.php,
+ .../views/default/object/groupforumtopic.php,
+ .../views/default/river/forum/topic/create.php,
+ .../views/default/invitefriends/form.php,
+ .../views/default/logbrowser/adminlinks.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ .../views/default/members/members_navigation.php,
+ mod/members/views/default/members/search.php,
+ .../views/default/messageboard/css.php,
+ .../views/default/messageboard/forms/add.php,
+ .../default/messageboard/messageboard_content.php,
+ .../views/default/widgets/messageboard/view.php,
+ mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php,
+ .../views/default/notifications/css.php,
+ .../default/notifications/subscriptions/form.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../views/default/icon/object/page/medium.php,
+ mod/pages/views/default/icon/object/page/small.php,
+ .../views/default/icon/object/page_top/medium.php,
+ .../views/default/icon/object/page_top/small.php,
+ mod/pages/views/default/pages/css.php,
+ mod/pages/views/default/pages/metatags.php,
+ mod/pages/views/default/widgets/pages/view.php,
+ mod/profile/actions/cropicon.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../default/profile/editdefaultprofileitems.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/icon.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ .../views/default/profile/profile_ownerblock.php,
+ .../views/default/profile/topbar_extend.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/footer_link.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/search_box.php,
+ .../views/default/sitepages/footer_menu.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ mod/thewire/views/default/widgets/thewire/view.php,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/twitter/views/default/twitter/css.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../uservalidationbyemail/unvalidated_user.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/mpg.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/login_dropdown.php,
+ .../default/account/forms/login_walled_garden.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/plugins/simple.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/annotation/likes.php,
+ views/default/canvas/layouts/administration.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/comments/forms/edit.php, views/default/css.php,
+ views/default/dashboard/blurb.php, views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/forms/edit.php,
+ views/default/group/search/finishblurb.php,
+ views/default/input/autocomplete.php, views/default/input/userpicker.php,
+ views/default/likes/forms/edit.php, views/default/likes/forms/link.php,
+ views/default/object/default.php, views/default/object/plugin.php,
+ views/default/output/tagcloud.php, views/default/output/tags.php,
+ views/default/page_elements/content_header.php,
+ views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/elgg_header_logo.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/elgg_topbar_logout.php,
+ views/default/page_elements/html_begin.php,
+ views/default/page_elements/html_begin_admin.php,
+ views/default/page_shells/walled_garden.php,
+ views/default/settings/system.php, views/default/settings/upgrading.php,
+ views/default/user/search/finishblurb.php,
+ views/default/usersettings/form.php, views/default/widgets/editwrapper.php,
+ views/default/widgets/wrapper.php, views/foaf/page_shells/default.php,
+ views/foaf/user/default.php, views/installation/install/header.php,
+ views/installation/install/nav.php,
+ views/installation/install/pages/complete.php,
+ views/installation/page_shells/default.php: Refs #2598: Converted most
+ $vars['url'] to elgg_get_site_url()
+
+2010-10-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: checking if the site has any groups before looping
+ over them
+
+ * mod/blog/blog_lib.php: fixed minor issue where blog code wasn't setting
+ type when getting subtype
+
+2010-10-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php, engine/lib/relationships.php,
+ install/ElggInstaller.php, mod/blog/start.php,
+ mod/blog/views/default/blog/sidebar_menu.php, mod/bookmarks/start.php,
+ mod/diagnostics/index.php, mod/diagnostics/start.php,
+ mod/file/actions/save.php, mod/file/actions/upload.php, mod/file/start.php,
+ .../default/file/icon/application/default.php,
+ .../views/default/file/icon/application/excel.php,
+ .../views/default/file/icon/application/msword.php,
+ .../views/default/file/icon/application/pdf.php,
+ .../default/file/icon/application/powerpoint.php,
+ .../default/file/icon/application/vnd.ms-excel.php,
+ .../file/icon/application/vnd.ms-powerpoint.php,
+ .../application/vnd.oasis.opendocument.text.php,
+ mod/file/views/default/file/icon/archive.php,
+ mod/file/views/default/file/icon/audio.php,
+ mod/file/views/default/file/icon/default.php,
+ mod/file/views/default/file/icon/document.php,
+ .../views/default/file/icon/text/directory.php,
+ mod/file/views/default/file/icon/video.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/activity.php,
+ mod/groups/forum.php, mod/groups/start.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/start.php,
+ mod/members/index.php, mod/messageboard/start.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/messages/start.php, mod/notifications/groups.php,
+ mod/notifications/start.php, mod/pages/index.php, mod/pages/start.php,
+ mod/pages/view.php, mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/world.php, mod/profile/actions/addcomment.php,
+ mod/profile/start.php, .../default/admin/appearance/defaultprofile.php,
+ .../views/default/reportedcontent/user_report.php,
+ mod/riverdashboard/start.php, mod/search/index.php, mod/thewire/start.php,
+ views/default/page_elements/content_header.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/installation/input/button.php: Refs #2598: Converted virtually all uses
+ of $CONFIG->wwwroot to elgg_get_site_url()
+
+2010-10-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggFile.php, engine/tests/objects/entities.php,
+ mod/blog/classes/ElggBlog.php: finished the conversion to
+ initializeAttributes()
+
+2010-10-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixes #2598: Added elgg_get_site_url()
+
+ * .../admin/appearance/default_dashboard_widgets.php,
+ .../admin/appearance/default_profile_widgets.php, mod/file/search.php,
+ mod/file/world.php, mod/groups/actions/leave.php, mod/pages/world.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ mod/profile/views/default/profile/icon.php,
+ .../views/default/profile/menu/adminlinks.php, mod/thewire/index.php,
+ mod/thewire/start.php: Replaced $_SESSION['id'] and $_SESSION['guid'] with
+ get_loggedin_userid()
+
+2010-10-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: fixed php exception and error handlers not being
+ next to each other in elgglib
+
+ * documentation/stubs/config.php, engine/lib/configuration.php,
+ engine/lib/database.php, engine/lib/install.php, engine/lib/sessions.php,
+ engine/lib/sites.php, engine/lib/version.php, engine/start.php: ripped out
+ last remaining tentacles of old installer from core - just needs removal of
+ install.php when elgg_view() is updated
+
+2010-10-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/users.php, engine/lib/views.php,
+ mod/blog/views/default/blog/sidebar_menu.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/start.php, .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ .../views/default/widgets/bookmarks/view.php,
+ .../views/default/defaultwidgets/editor.php, mod/file/edit.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/search.php,
+ mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/file/upload.php, mod/file/world.php,
+ mod/groups/activity.php, mod/groups/addtopic.php, mod/groups/all.php,
+ mod/groups/edittopic.php, mod/groups/forum.php, mod/groups/index.php,
+ mod/groups/membership.php, mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ .../views/default/groups/activity_latest.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/object/groupforumtopic.php, mod/members/index.php,
+ mod/messageboard/index.php, .../views/default/messageboard/forms/add.php,
+ .../views/default/widgets/messageboard/view.php, mod/messages/send.php,
+ mod/pages/edit.php, mod/pages/history.php, mod/pages/index.php,
+ mod/pages/new.php, mod/pages/start.php, mod/pages/view.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php, mod/profile/edit.php, mod/profile/editicon.php,
+ mod/profile/icon.php, mod/profile/start.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/metatags.php,
+ .../default/profile/profile_contents/details.php,
+ .../views/default/profile/profile_ownerblock.php,
+ mod/reportedcontent/add.php, .../views/default/widgets/tagcloud/view.php,
+ mod/thewire/index.php, mod/thewire/start.php,
+ mod/thewire/views/default/widgets/thewire/view.php, pages/friends/index.php,
+ pages/friends/of.php, pages/friends/pickercallback.php,
+ pages/settings/index.php, pages/settings/plugins.php,
+ pages/settings/statistics.php, pages/settings/user.php,
+ views/default/canvas/layouts/widgets.php,
+ .../notifications/settings/usersettings.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/title.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php,
+ views/foaf/page_shells/default.php: Refs #1439: Using new page_owner
+ functions in all of core
+
+ * engine/lib/filestore.php, mod/bookmarks/actions/add.php,
+ mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ mod/diagnostics/actions/download.php, mod/file/actions/delete.php,
+ mod/file/actions/save.php, mod/file/world.php, mod/groups/actions/delete.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/actions/leave.php,
+ mod/groups/groupprofile.php, mod/groups/membership.php, mod/groups/start.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/side_menu.php, mod/members/index.php,
+ mod/messages/actions/delete.php, mod/messages/send.php,
+ mod/messages/sent.php, mod/messages/start.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php,
+ .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/personal.php,
+ mod/pages/actions/pages/edit.php, mod/pages/edit.php, mod/pages/new.php,
+ mod/pages/start.php, mod/pages/welcome.php, mod/pages/world.php,
+ mod/profile/actions/addcomment.php, mod/profile/actions/edit.php,
+ mod/profile/start.php, mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/icon.php,
+ .../views/default/profile/profile_ownerblock.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/add.php,
+ .../views/default/reportedcontent/form.php,
+ mod/riverdashboard/actions/add.php, mod/riverdashboard/index.php,
+ .../views/default/riverdashboard/ecml/activity.php,
+ .../views/default/riverdashboard/welcome.php, mod/thewire/index.php,
+ mod/thewire/start.php, views/default/canvas/layouts/widgets.php,
+ views/foaf/page_shells/default.php: Refs #2124: Using get_loggedin_user
+ functions instead of $vars['user'], $_SESSION['user'], etc.
+
+ * mod/pages/views/default/pages/breadcrumbs.php,
+ views/foaf/user/default.php: Refs #2124: Using elgg_get_page_owner instead of
+ $vars['page_owner'] in views
+
+2010-10-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: organized functions in elgglib by purpose - more
+ or less
+
+ * engine/lib/elgglib.php, engine/lib/navigation.php, engine/start.php,
+ install/ElggInstaller.php: pulled navigation functions out of elgglib.php
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php: moved datalist code
+ into the configuration lib
+
+ * engine/lib/plugins.php: fixed spelling mistake in comment
+
+ * engine/lib/cache.php, engine/lib/elgglib.php: moved file path cache
+ functions into the cache lib which seems to be a more logical location for
+ them
+
+2010-10-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/useradd.php, engine/lib/entities.php: Fixed an invalid call to
+ get_pageowner_guid() in can_edit_entity(). Removed the call to the validation
+ function in useradd.
+
+2010-10-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt, README.txt: Language changes for contributors and
+ readme.
+
+2010-10-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: small readme tweak.
+
+2010-10-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/mb_wrapper.php: Fixes #2544. Pulled out the eval() for creating
+ elgg_*() mb wrapper functions.
+
+ * engine/lib/filestore.php: Fixes #2150: Removed old code in filestore.
+
+ * CHANGES.txt, _css/css.php, _css/js.php, actions/admin/menu_items.php,
+ actions/admin/plugins/simple_update_states.php, actions/comments/add.php,
+ actions/email/save.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/editcollection.php, actions/friends/remove.php,
+ actions/likes/add.php, actions/likes/delete.php, actions/login.php,
+ actions/register.php, actions/user/language.php, actions/user/password.php,
+ actions/user/spotlight.php, actions/useradd.php,
+ actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php,
+ engine/classes/APIException.php, engine/classes/CallException.php,
+ engine/classes/ClassException.php, engine/classes/ClassNotFoundException.php,
+ engine/classes/ConfigurationException.php, engine/classes/CronException.php,
+ engine/classes/DataFormatException.php, engine/classes/DatabaseException.php,
+ engine/classes/ElggAccess.php, engine/classes/ElggAnnotation.php,
+ engine/classes/ElggCache.php, engine/classes/ElggDiskFilestore.php,
+ engine/classes/ElggEntity.php, engine/classes/ElggExtender.php,
+ engine/classes/ElggFile.php, engine/classes/ElggFileCache.php,
+ engine/classes/ElggFilestore.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggHMACCache.php, engine/classes/ElggMemcache.php,
+ engine/classes/ElggMetadata.php, engine/classes/ElggObject.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggRelationship.php,
+ engine/classes/ElggSession.php, engine/classes/ElggSharedMemoryCache.php,
+ engine/classes/ElggSite.php, engine/classes/ElggStaticVariableCache.php,
+ engine/classes/ElggUser.php, engine/classes/ElggWidget.php,
+ engine/classes/ErrorResult.php, engine/classes/ExportException.php,
+ engine/classes/Exportable.php, engine/classes/Friendable.php,
+ engine/classes/GenericResult.php, engine/classes/IOException.php,
+ engine/classes/ImportException.php, engine/classes/Importable.php,
+ engine/classes/InstallationException.php,
+ engine/classes/InvalidClassException.php,
+ engine/classes/InvalidParameterException.php, engine/classes/Locatable.php,
+ engine/classes/Loggable.php, engine/classes/NotImplementedException.php,
+ engine/classes/Notable.php, engine/classes/NotificationException.php,
+ engine/classes/ODD.php, engine/classes/ODDDocument.php,
+ engine/classes/ODDEntity.php, engine/classes/PluginException.php,
+ engine/classes/RegistrationException.php,
+ engine/classes/SecurityException.php, engine/classes/SuccessResult.php,
+ engine/classes/XMLRPCArrayParameter.php,
+ engine/classes/XMLRPCBase64Parameter.php,
+ engine/classes/XMLRPCBoolParameter.php, engine/classes/XMLRPCCall.php,
+ engine/classes/XMLRPCDateParameter.php,
+ engine/classes/XMLRPCDoubleParameter.php,
+ engine/classes/XMLRPCErrorResponse.php,
+ engine/classes/XMLRPCIntParameter.php, engine/classes/XMLRPCParameter.php,
+ engine/classes/XMLRPCResponse.php, engine/classes/XMLRPCStringParameter.php,
+ engine/classes/XMLRPCStructParameter.php,
+ engine/classes/XMLRPCSuccessResponse.php, engine/classes/XmlElement.php,
+ engine/handlers/xml-rpc_handler.php, engine/lib/access.php,
+ engine/lib/actions.php, engine/lib/admin.php, engine/lib/annotations.php,
+ engine/lib/api.php, engine/lib/calendar.php, engine/lib/configuration.php,
+ engine/lib/cron.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/filestore.php, engine/lib/group.php, engine/lib/input.php,
+ engine/lib/install.php, engine/lib/languages.php, engine/lib/location.php,
+ engine/lib/memcache.php, engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/opendd.php,
+ engine/lib/output.php, engine/lib/pagehandler.php, engine/lib/pageowner.php,
+ engine/lib/pam.php, engine/lib/plugins.php, engine/lib/relationships.php,
+ engine/lib/river.php, engine/lib/sessions.php, engine/lib/sites.php,
+ engine/lib/statistics.php, engine/lib/system_log.php, engine/lib/tags.php,
+ engine/lib/upgrades/2008100701.php, engine/lib/upgrades/2008101303.php,
+ engine/lib/upgrades/2009022701.php, engine/lib/upgrades/2009041701.php,
+ engine/lib/upgrades/2009070101.php, engine/lib/upgrades/2009102801.php,
+ engine/lib/upgrades/2010033101.php, engine/lib/upgrades/2010060401.php,
+ engine/lib/upgrades/2010061501.php, engine/lib/upgrades/2010062301.php,
+ engine/lib/upgrades/2010071001.php, engine/lib/upgrades/2010071002.php,
+ engine/lib/users.php, engine/lib/usersettings.php, engine/lib/version.php,
+ engine/lib/views.php, engine/lib/widgets.php, engine/lib/xml-rpc.php,
+ engine/lib/xml.php, engine/settings.example.php, engine/start.php, index.php,
+ install.php, install/ElggInstaller.php, install/ElggRewriteTester.php,
+ .../views/default/profile/profile_ownerblock.php,
+ pages/account/forgotten_password.php, pages/account/register.php,
+ pages/dashboard/index.php, pages/dashboard/latest.php,
+ pages/entities/index.php, pages/friends/add.php, pages/friends/edit.php,
+ pages/friends/index.php, pages/friends/of.php,
+ pages/friends/pickercallback.php, pages/settings/plugins.php,
+ services/api/rest_api.php, services/export/handler.php, simplecache/view.php,
+ upgrade.php: Standardized code in all of core, not including language files,
+ tests, or core mods.
+
+2010-10-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt, README.txt: Updated readme to reflect the MIT license.
+ Updated contributors to be a flat list.
+
+2010-10-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * simplecache/view.php: Fixes #2590 - simplecache now works when simplecache
+ turned off
+
+2010-10-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/AccessControlQueryComponent.php,
+ engine/classes/DeleteQueryTypeQueryComponent.php,
+ engine/classes/InsertQueryTypeQueryComponent.php,
+ engine/classes/JoinQueryComponent.php,
+ engine/classes/LimitOffsetQueryComponent.php,
+ engine/classes/OrderQueryComponent.php, engine/classes/Query.php,
+ engine/classes/QueryComponent.php,
+ engine/classes/QueryTypeQueryComponent.php,
+ engine/classes/SelectFieldQueryComponent.php,
+ engine/classes/SelectQueryTypeQueryComponent.php,
+ engine/classes/SetQueryComponent.php, engine/classes/SimpleQuery.php,
+ engine/classes/TableQueryComponent.php,
+ engine/classes/UpdateQueryTypeQueryComponent.php,
+ engine/classes/WhereQueryComponent.php,
+ engine/classes/WhereSetQueryComponent.php,
+ engine/classes/WhereStaticQueryComponent.php: Closes #2511. Query object
+ classes removed.
+
+2010-10-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * COPYRIGHT.txt, actions/admin/menu_items.php, actions/comments/add.php,
+ actions/comments/delete.php, actions/entities/delete.php,
+ actions/friends/add.php, actions/friends/addcollection.php,
+ actions/friends/deletecollection.php, actions/friends/editcollection.php,
+ actions/friends/remove.php, actions/import/opendd.php, actions/likes/add.php,
+ actions/likes/delete.php, actions/logout.php,
+ .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/spotlight.php,
+ actions/useradd.php, actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php,
+ engine/classes/ElggFile.php, engine/classes/ElggFileCache.php,
+ engine/classes/ElggFilestore.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggHMACCache.php, engine/classes/ElggMemcache.php,
+ engine/classes/ElggMetadata.php, engine/classes/ElggStaticVariableCache.php,
+ engine/classes/ErrorResult.php, engine/classes/Exportable.php,
+ engine/classes/GenericResult.php, engine/classes/IOException.php,
+ engine/classes/Importable.php,
+ engine/classes/InsertQueryTypeQueryComponent.php,
+ engine/classes/InstallationException.php,
+ engine/classes/InvalidClassException.php,
+ engine/classes/InvalidParameterException.php,
+ engine/classes/JoinQueryComponent.php,
+ engine/classes/LimitOffsetQueryComponent.php, engine/classes/Loggable.php,
+ engine/classes/NotImplementedException.php,
+ engine/classes/NotificationException.php, engine/classes/ODD.php,
+ engine/classes/ODDDocument.php, engine/classes/ODDEntity.php,
+ engine/classes/OrderQueryComponent.php, engine/classes/Query.php,
+ engine/classes/QueryComponent.php,
+ engine/classes/QueryTypeQueryComponent.php,
+ engine/classes/RegistrationException.php,
+ engine/classes/SecurityException.php,
+ engine/classes/SelectFieldQueryComponent.php,
+ engine/classes/SelectQueryTypeQueryComponent.php,
+ engine/classes/SetQueryComponent.php, engine/classes/SimpleQuery.php,
+ engine/classes/SuccessResult.php, engine/classes/TableQueryComponent.php,
+ engine/classes/UpdateQueryTypeQueryComponent.php,
+ engine/classes/WhereQueryComponent.php,
+ engine/classes/WhereSetQueryComponent.php,
+ engine/classes/WhereStaticQueryComponent.php,
+ engine/classes/XMLRPCArrayParameter.php,
+ engine/classes/XMLRPCBase64Parameter.php,
+ engine/classes/XMLRPCBoolParameter.php, engine/classes/XMLRPCCall.php,
+ engine/classes/XMLRPCDateParameter.php,
+ engine/classes/XMLRPCDoubleParameter.php,
+ engine/classes/XMLRPCErrorResponse.php,
+ engine/classes/XMLRPCIntParameter.php, engine/classes/XMLRPCParameter.php,
+ engine/classes/XMLRPCResponse.php, engine/classes/XMLRPCStringParameter.php,
+ engine/classes/XMLRPCStructParameter.php,
+ engine/classes/XMLRPCSuccessResponse.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/api.php, engine/lib/cache.php,
+ engine/lib/calendar.php, engine/lib/cron.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/filestore.php, engine/lib/group.php,
+ engine/lib/input.php, engine/lib/install.php, engine/lib/languages.php,
+ engine/lib/location.php, engine/lib/memcache.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, engine/lib/notification.php,
+ engine/lib/objects.php, engine/lib/opendd.php, engine/lib/output.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/plugins.php, engine/lib/relationships.php, engine/lib/river.php,
+ engine/lib/sessions.php, engine/lib/sites.php, engine/lib/statistics.php,
+ engine/lib/system_log.php, engine/lib/tags.php, engine/lib/users.php,
+ engine/lib/usersettings.php, engine/lib/version.php, engine/lib/widgets.php,
+ engine/lib/xml-rpc.php, engine/lib/xml.php,
+ engine/tests/api/entity_getter_functions.php, engine/tests/api/helpers.php,
+ engine/tests/objects/entities.php, engine/tests/objects/filestore.php,
+ engine/tests/objects/metadata.php, engine/tests/objects/objects.php,
+ engine/tests/objects/sites.php, engine/tests/objects/users.php,
+ engine/tests/regression/trac_bugs.php, engine/tests/services/api.php,
+ engine/tests/suite.php, engine/tests/test_skeleton.php, index.php,
+ install.php, install/ElggInstaller.php, languages/en.php,
+ mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/delete.php, mod/blog/actions/blog/save.php,
+ mod/blog/blog_lib.php, mod/blog/start.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php, mod/bookmarks/actions/add.php,
+ mod/bookmarks/actions/delete.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/start.php, .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../views/default/widgets/bookmarks/edit.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/bookmarks/views/rss/object/bookmarks.php, mod/captcha/captcha.php,
+ mod/captcha/languages/en.php, mod/captcha/start.php,
+ mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php, mod/categories/actions/save.php,
+ mod/categories/listing.php, mod/categories/start.php,
+ mod/categories/views/default/categories.php,
+ mod/categories/views/default/categories/css.php,
+ .../views/default/settings/categories/edit.php, mod/crontrigger/start.php,
+ mod/defaultwidgets/actions/update.php, mod/defaultwidgets/start.php,
+ .../admin/appearance/default_dashboard_widgets.php,
+ .../admin/appearance/default_profile_widgets.php,
+ .../views/default/defaultwidgets/editor.php,
+ mod/diagnostics/actions/download.php, mod/diagnostics/index.php,
+ mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ .../views/default/diagnostics/forms/download.php,
+ .../views/default/diagnostics/runalltests.php,
+ mod/ecml/actions/save_permissions.php, mod/ecml/ecml_functions.php,
+ mod/ecml/languages/en.php, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/help.php,
+ mod/ecml/views/default/ecml/input_ext.php,
+ mod/ecml/views/default/ecml/keywords/blip.tv.php,
+ .../views/default/ecml/keywords/dailymotion.php,
+ mod/ecml/views/default/ecml/keywords/entity.php,
+ .../views/default/ecml/keywords/googlemaps.php,
+ mod/ecml/views/default/ecml/keywords/livevideo.php,
+ mod/ecml/views/default/ecml/keywords/redlasso.php,
+ .../views/default/ecml/keywords/slideshare.php,
+ mod/ecml/views/default/ecml/keywords/user_list.php,
+ mod/ecml/views/default/ecml/keywords/vimeo.php,
+ mod/ecml/views/default/ecml/keywords/youtube.php,
+ mod/ecml/views/default/settings/ecml/edit.php, mod/embed/start.php,
+ mod/embed/views/default/embed/css.php, mod/file/actions/delete.php,
+ mod/file/actions/download.php, mod/file/actions/save.php,
+ mod/file/actions/upload.php, mod/file/download.php, mod/file/edit.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/languages/en.php,
+ mod/file/search.php, mod/file/start.php, mod/file/thumbnail.php,
+ mod/file/upload.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/file/icon.php, mod/file/views/default/file/upload.php,
+ mod/file/views/default/object/file.php, mod/file/views/rss/object/file.php,
+ mod/file/world.php, mod/friends/start.php,
+ mod/friends/views/default/widgets/friends/edit.php,
+ mod/friends/views/default/widgets/friends/view.php,
+ mod/garbagecollector/languages/en.php, mod/garbagecollector/start.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/edit.php,
+ mod/groups/actions/featured.php, mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/all.php, mod/groups/edit.php,
+ mod/groups/graphics/icon.php, mod/groups/groupprofile.php,
+ mod/groups/index.php, mod/groups/invitations.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/membership.php,
+ mod/groups/membershipreq.php, mod/groups/new.php, mod/groups/start.php,
+ mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/group/default.php,
+ .../views/default/groups/activity_latest.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ mod/groups/views/default/groups/members.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/object/groupforumtopic.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php,
+ mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/profileitems.php,
+ mod/groups/views/rss/object/groupforumtopic.php, mod/htmlawed/start.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/index.php,
+ mod/invitefriends/languages/en.php, mod/invitefriends/start.php,
+ .../views/default/invitefriends/form.php,
+ .../views/default/invitefriends/formitems.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ .../views/default/admin/overview/logbrowser.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/object/logwrapper.php,
+ mod/logrotate/languages/en.php, mod/logrotate/start.php,
+ mod/members/index.php, mod/members/languages/en.php, mod/members/start.php,
+ mod/members/views/default/members/css.php,
+ mod/members/views/default/members/search.php,
+ mod/messageboard/actions/add.php, mod/messageboard/actions/delete.php,
+ mod/messageboard/ajax_endpoint/load.php, mod/messageboard/history.php,
+ mod/messageboard/index.php, mod/messageboard/start.php,
+ .../views/default/messageboard/css.php,
+ .../views/default/messageboard/forms/add.php,
+ .../views/default/messageboard/messageboard.php,
+ .../default/messageboard/messageboard_content.php,
+ .../views/default/widgets/messageboard/edit.php,
+ .../views/default/widgets/messageboard/view.php,
+ mod/messages/actions/delete.php, mod/messages/actions/send.php,
+ mod/messages/index.php, mod/messages/languages/en.php, mod/messages/read.php,
+ mod/messages/send.php, mod/messages/sent.php, mod/messages/start.php,
+ mod/messages/views/default/messages/css.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php,
+ mod/notifications/actions/groupsave.php, mod/notifications/actions/save.php,
+ mod/notifications/groups.php, mod/notifications/index.php,
+ mod/notifications/start.php, .../views/default/notifications/css.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/groupsform.php,
+ mod/pages/actions/pages/editwelcome.php, mod/pages/history.php,
+ mod/pages/views/default/widgets/pages/view.php,
+ mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/editfield.php, mod/profile/actions/iconupload.php,
+ mod/profile/actions/reorder.php, mod/profile/actions/resetdefaultprofile.php,
+ mod/profile/edit.php, mod/profile/editicon.php, mod/profile/icon.php,
+ mod/profile/icondirect.php, mod/profile/index.php,
+ mod/profile/javascript.php, mod/profile/profile_lib.php,
+ mod/profile/start.php, .../default/admin/appearance/defaultprofile.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/listing.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/friendlinks.php,
+ mod/profile/views/default/profile/menu/links.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/sidebar.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/languages/en.php, mod/reportedcontent/start.php,
+ .../default/admin/overview/reportedcontent.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/footer_link.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/riverdashboard/ecml/activity.php,
+ .../views/default/riverdashboard/sitemessage.php, mod/search/index.php,
+ mod/search/search_hooks.php, mod/search/start.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/gallery.php,
+ .../views/default/search/gallery_listing.php,
+ mod/search/views/default/search/layout.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/startblurb.php,
+ mod/search/views/rss/search/comments/entity.php,
+ mod/search/views/rss/search/entity.php,
+ mod/search/views/rss/search/listing.php, mod/sitepages/languages/en.php,
+ mod/sitepages/sitepages_functions.php, mod/sitepages/start.php,
+ .../views/default/admin/site/sitepages.php,
+ .../views/default/sitepages/custom_frontpage.php,
+ .../views/default/sitepages/footer_menu.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ .../views/default/sitepages/keywords/sitestats.php,
+ .../views/default/sitepages/keywords/userlist.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/sitepages/views/default/sitepages/metatags.php,
+ mod/thewire/actions/add.php, mod/thewire/actions/delete.php,
+ mod/thewire/add.php, mod/thewire/everyone.php, mod/thewire/index.php,
+ mod/thewire/start.php, mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/thewire/views/default/thewire/notfound.php,
+ mod/thewire/views/default/thewire/view.php,
+ mod/thewire/views/rss/object/thewire.php,
+ .../views/rss/search/object/thewire/entity.php, mod/tinymce/start.php,
+ mod/tinymce/views/default/input/longtext.php, mod/twitter/start.php,
+ mod/twitter/views/default/twitter/css.php,
+ mod/twitter/views/default/widgets/twitter/edit.php,
+ mod/twitter/views/default/widgets/twitter/view.php, mod/zaudio/start.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/mpg.php, pages/dashboard/index.php,
+ pages/dashboard/latest.php, pages/entities/index.php,
+ pages/entities/list.php, pages/friends/add.php,
+ pages/friends/collections.php, pages/friends/edit.php,
+ pages/friends/index.php, pages/friends/of.php,
+ pages/friends/pickercallback.php, pages/settings/index.php,
+ pages/settings/plugins.php, pages/settings/statistics.php,
+ pages/settings/user.php, services/api/rest_api.php,
+ services/export/handler.php, simplecache/view.php, upgrade.php, version.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/admin/appearance/menu_items.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/overview.php,
+ views/default/admin/overview/numentities.php,
+ views/default/admin/overview/online.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/ajax/loader.php, views/default/api/output.php,
+ views/default/canvas/default.php,
+ views/default/canvas/layouts/administration.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/one_column_with_sidebar.php,
+ views/default/comments/forms/edit.php, views/default/dashboard/blurb.php,
+ views/default/entities/entity_list.php,
+ views/default/entities/entity_listing.php,
+ views/default/entities/gallery.php,
+ views/default/entities/gallery_listing.php, views/default/export/entity.php,
+ views/default/export/metadata.php, views/default/export/relationship.php,
+ views/default/friends/collection.php, views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/list.php,
+ views/default/friends/picker.php, views/default/friends/river/create.php,
+ views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php,
+ views/default/graphics/icon.php, views/default/group/default.php,
+ views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php, views/default/input/access.php,
+ views/default/input/autocomplete.php, views/default/input/button.php,
+ views/default/input/captcha.php, views/default/input/checkboxes.php,
+ views/default/input/datepicker.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/form.php,
+ views/default/input/hidden.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/reset.php, views/default/input/securitytoken.php,
+ views/default/input/submit.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/input/urlshortener.php, views/default/input/userpicker.php,
+ views/default/likes/forms/display.php, views/default/likes/forms/edit.php,
+ views/default/likes/forms/link.php, views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/breadcrumbs.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/sidebar_menu.php,
+ views/default/navigation/submenu_group.php,
+ views/default/navigation/submenu_item.php,
+ views/default/navigation/submenu_js.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/navigation/viewtype.php,
+ .../notifications/settings/usersettings.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/object/plugin.php, views/default/object/widget.php,
+ views/default/output/calendar.php, views/default/output/checkboxes.php,
+ views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/email.php, views/default/output/iframe.php,
+ views/default/output/longtext.php, views/default/output/pulldown.php,
+ views/default/output/radio.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php, views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_shells/admin.php, views/default/page_shells/default.php,
+ views/default/river/item/list.php, views/default/river/item/wrapper.php,
+ views/default/settings/system.php, views/default/settings/upgrading.php,
+ views/default/site/default.php, views/default/spotlight/default.php,
+ views/default/upload/upload_form_content.php, views/default/user/default.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php, views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/usersettings/user.php, views/default/widgets/editwrapper.php,
+ views/default/widgets/wrapper.php, views/failsafe/canvas/default.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/page_shells/default.php, views/foaf/canvas/default.php,
+ views/foaf/page_elements/contentwrapper.php,
+ views/foaf/page_shells/default.php, views/foaf/search/entity_list.php,
+ views/foaf/user/default.php, views/ical/canvas/default.php,
+ views/ical/export/entity.php, views/ical/object/default.php,
+ views/ical/pageshells/pageshell.php, views/ical/search/entity_list.php,
+ views/installation/canvas/default.php, views/installation/input/access.php,
+ views/installation/input/button.php, views/installation/input/checkboxes.php,
+ views/installation/input/form.php, views/installation/input/hidden.php,
+ views/installation/input/longtext.php, views/installation/input/password.php,
+ views/installation/input/pulldown.php, views/installation/input/reset.php,
+ views/installation/input/securitytoken.php,
+ views/installation/input/submit.php, views/installation/input/text.php,
+ views/installation/messages/errors/error.php,
+ views/installation/messages/errors/list.php,
+ views/installation/messages/list.php,
+ views/installation/messages/messages/list.php,
+ views/installation/messages/messages/message.php,
+ views/installation/page_shells/default.php, views/js/object/default.php,
+ views/js/pageshells/pageshell.php, views/js/user/default.php,
+ views/json/api/output.php, views/json/canvas/default.php,
+ views/json/export/entity.php, views/json/export/metadata.php,
+ views/json/export/relationship.php, views/json/group/default.php,
+ views/json/messages/exceptions/exception.php, views/json/object/default.php,
+ views/json/page_elements/contentwrapper.php,
+ views/json/page_shells/default.php, views/json/river/item/list.php,
+ views/json/search/entity_list.php, views/json/site/default.php,
+ views/json/user/default.php, views/opendd/canvas/default.php,
+ views/opendd/export/entity.php, views/opendd/export/metadata.php,
+ views/opendd/export/relationship.php, views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/search/entity_list.php, views/opendd/site/default.php,
+ views/opendd/user/default.php, views/php/api/output.php,
+ views/php/canvas/default.php, views/php/export/entity.php,
+ views/php/export/metadata.php, views/php/export/relationship.php,
+ views/php/group/default.php, views/php/messages/exceptions/exception.php,
+ views/php/object/default.php, views/php/page_shells/default.php,
+ views/php/search/entity_list.php, views/php/site/default.php,
+ views/php/user/default.php, views/rss/annotation/default.php,
+ views/rss/canvas/default.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/page_elements/contentwrapper.php,
+ views/rss/page_shells/default.php, views/rss/river/item/list.php,
+ views/rss/search/entity_list.php, views/rss/user/default.php,
+ views/xml/api/output.php, views/xml/messages/exceptions/exception.php,
+ views/xml/page_shells/default.php, views/xml/xml-rpc/output.php: Removed
+ @license, @copyright, and @author from files. License and copyright are
+ covered by LICENSE.txt and COPYRIGHT.txt in root.
+
+2010-10-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * pages/entities/index.php, pages/entities/list.php: Fixes #2578 - entity
+ pages should not need call to load engine
+
+ * engine/lib/elgglib.php: Fixes #733 - events now support PHP callbacks
+
+ * engine/lib/elgglib.php: better creation of event and plugin hook
+ registration arrays
+
+ * engine/lib/elgglib.php: Fixes #2466 - split events() into register and
+ trigger functions
+
+2010-10-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Refs #733 - plugin hooks now support PHP callbacks
+
+
+2010-10-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/actions/add.php, mod/bookmarks/languages/en.php,
+ mod/bookmarks/views/default/object/bookmarks.php: Refs #2551 - merged [7051]
+ and [7053] into trunk
+
+ * views/default/annotation/annotate.php: Merges [7038] into trunk from 1.7
+ branch
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php,
+ actions/admin/plugins/simple_update_states.php: Refs #2537 - merged [7026]
+ into trunk from 1.7 branch
+
+ * engine/lib/views.php, simplecache/view.php: Refs #2410 - merged [7024]
+ into trunk from 1.7 branch
+
+ * mod/profile/views/default/profile/javascript.php,
+ .../views/default/riverdashboard/js.php: Refs #2493 - merged [7008] into
+ trunk from 1.7 branch
+
+ * engine/classes/ElggMemcache.php: Refs #2465 - merged [7007] into trunk
+ from 1.7 branch
+
+ * engine/lib/filestore.php, mod/profile/actions/iconupload.php: Refs #2499 -
+ merged [6990] into trunk from 1.7 branch
+
+ * mod/groups/views/default/river/forum/create.php: Refs #2498 - merged
+ [6982] into trunk from 1.7 branch
+
+ * mod/file/start.php, mod/file/views/default/file/groupprofile_files.php:
+ Refs #2489 - manually merged [6981] from 1.7 branch to keep group file option
+ consistent across Elgg versions
+
+ * engine/lib/database.php: Refs #2474 - merged [6976] from 1.7 branch into
+ trunk
+
+ * mod/pages/actions/pages/editwelcome.php, mod/pages/index.php,
+ mod/pages/start.php, .../views/default/forms/pages/editwelcome.php,
+ mod/pages/welcome.php, mod/pages/world.php: Refs #2496 - manually merged
+ [6975] from 1.7 branch
+
+ * mod/pages/actions/pages/edit.php: fixed stray character that got into
+ pages edit action
+
+ * install/ElggInstaller.php, views/installation/install/forms/admin.php,
+ views/installation/install/forms/database.php,
+ views/installation/install/forms/settings.php: Fixes #2570 - cannot replicate
+ issue with current_page_url() so returned to using it - fixes subdirectory
+ install issue
+
+2010-10-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/languages/en.php: added a check for
+ register globals
+
+2010-10-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/input.php, engine/start.php: Fixes
+ #2563 - setup autoload in elgglib.php so exceptions and other classes are
+ available as soon as possible
+
+ * install/ElggInstaller.php: removed exceptions.php from install boot
+ loading
+
+2010-10-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, languages/en.php: Fixes #2514 - separating action
+ error messages for undefined and no action script file
+
+ * engine/lib/query.php, engine/start.php, install/ElggInstaller.php: Refs
+ #2511 - removed empty query.php lib file
+
+ * engine/lib/elgglib.php, engine/lib/output.php, engine/lib/social.php,
+ engine/start.php, install/ElggInstaller.php: Fixes #2339 - removes social
+ library and deprecates its two functions (put it output.php for lack of a
+ better location)
+
+ * engine/lib/entities.php: Fixes #2403 - adds unregister_entity_type()
+
+2010-10-14 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/exceptions.php, engine/start.php: Deprecated unnecessary
+ exceptions.php lib file
+
+ * mod/blog/classes/ElggBlog.php: Switching blog over to autoload method for
+ plugin classes
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php, engine/start.php,
+ mod/blog/blog_lib.php: Fixes #2547: Plugins can now participate in
+ autoloading classes.
+
+2010-10-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/ElggRewriteTester.php,
+ install/cli/sample_installer.php, install/languages/en.php: Fixes #2556 - one
+ step install now supported with sample cli script
+
+2010-10-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/languages/en.php: Fixes #2312 -
+ checking value of arg_separator.output during install
+
+ * views/installation/input/button.php, views/installation/input/form.php,
+ views/installation/install/forms/admin.php,
+ views/installation/install/forms/database.php,
+ views/installation/install/forms/settings.php,
+ views/installation/install/forms/template.php,
+ views/installation/install/nav.php: Fixes #2522 - disabling form submission
+ after first submission
+
+ * install/ElggRewriteTester.php, install/languages/en.php: Fixes #2521 -
+ added check for old .htaccess
+
+ * install/ElggInstaller.php, install/languages/en.php, languages/en.php:
+ better handling of settings file issues during installation
+
+ * htaccess_dist: forgot to update rewrite rule in htaccess_dist
+
+2010-10-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/ElggRewriteTester.php,
+ install/languages/en.php: Pulled rewrite test out into separate class
+
+2010-10-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/start.php: Fixes #2529 for real this time. Not
+ using made up ElggEntity attributes. Added canEdit() override for user
+ validation so it can disable users after they register.
+
+ * engine/lib/entities.php: Checking for a valid entity before using its
+ methods in update_entity().
+
+ * engine/classes/ElggEntity.php: ElggEntity::disable() and enable() now
+ update the attributes so you don't have stale data on the object.
+
+2010-10-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, engine/settings.example.php,
+ install/ElggInstaller.php, install/languages/en.php: using config variable
+ for minimum password length
+
+ * install/ElggInstaller.php, install/languages/en.php: better error messages
+ when there are already Elgg database tables in the database
+
+ * install/ElggInstaller.php: fixed issue when settings.php is filled out
+ before installation is started
+
+ * engine/lib/elgglib.php, engine/lib/install.php, languages/en.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/page_shells/default.php: handling the database being down/busy
+ or an incomplete install. Also cleaned up failsafe views
+
+ * engine/lib/database.php: removed function replaced by installer
+
+ * install/ElggInstaller.php, views/installation/install/pages/complete.php:
+ finished the auto login option for the installer
+
+2010-10-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/register.php, install/ElggInstaller.php, install/languages/en.php:
+ pulled out special exception in registration action for first admin login
+
+2010-10-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/start.php: Fixes #2529. User validation only
+ prevents logins for disabled users to avoid conflicting with alternative
+ login plugins.
+
+2010-10-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/languages/en.php: using new email
+ validation in installer
+
+ * engine/lib/input.php, engine/lib/users.php: Fixes #2161 - using
+ filter_var() in email validation and moved is_email_address() to the input
+ library
+
+2010-10-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, install/languages/en.php,
+ views/installation/install/pages/complete.php: pulled more language strings
+ out of installer into language file
+
+ * _graphics/elgg_logo.png, install/css/install.css, install/install.css,
+ views/installation/install/header.php,
+ views/installation/page_shells/default.php: added Elgg logo to installer
+ screens
+
+2010-10-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/actions/validate.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../uservalidationbyemail/unvalidated_user.php: Merged some fixes from the
+ 1.7.4 backport of uservalidationbyemail.
+
+2010-10-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, engine/lib/actions.php,
+ engine/lib/elgglib.php, engine/lib/install.php, engine/start.php,
+ install/languages/en.php, languages/en.php,
+ views/default/settings/install.php: removed several parts of the old
+ installer from the core
+
+ * .../messages/sanitisation/dbsettings_error.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/settings/install.php, views/failsafe/settings/system.php:
+ removed old views used in previous installer
+
+ * install/ElggInstaller.php, install/languages/en.php, languages/en.php,
+ views/installation/install/forms/template.php,
+ views/installation/page_shells/default.php: Pulled installation language
+ strings out of core language file into installer
+
+2010-10-05 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2010100500.php, version.php: Creating an upgrade to
+ migrate users from old oauth to new oauth_lib plugin. Closes #2532
+
+ * mod/oauth/manifest.xml, mod/oauth/start.php,
+ mod/oauth/vendors/oauth/LICENSE,
+ mod/oauth/vendors/oauth/example/server/INSTALL,
+ .../vendors/oauth/example/server/core/init.php,
+ .../example/server/core/templates/inc/footer.tpl,
+ .../example/server/core/templates/inc/header.tpl,
+ .../oauth/example/server/core/templates/index.tpl,
+ .../oauth/example/server/core/templates/logon.tpl,
+ .../example/server/core/templates/register.tpl,
+ .../vendors/oauth/example/server/www/hello.php,
+ .../vendors/oauth/example/server/www/index.php,
+ .../vendors/oauth/example/server/www/logon.php,
+ .../vendors/oauth/example/server/www/oauth.php,
+ .../vendors/oauth/example/server/www/register.php,
+ .../oauth/example/server/www/services.xrds.php,
+ mod/oauth/vendors/oauth/library/OAuthDiscovery.php,
+ mod/oauth/vendors/oauth/library/OAuthException.php,
+ mod/oauth/vendors/oauth/library/OAuthRequest.php,
+ .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ mod/oauth/vendors/oauth/library/OAuthRequester.php,
+ mod/oauth/vendors/oauth/library/OAuthServer.php,
+ mod/oauth/vendors/oauth/library/OAuthStore.php,
+ .../library/body/OAuthBodyContentDisposition.php,
+ .../library/body/OAuthBodyMultipartFormdata.php,
+ .../vendors/oauth/library/discovery/xrds_parse.php,
+ .../vendors/oauth/library/discovery/xrds_parse.txt,
+ .../OAuthSignatureMethod.class.php, .../OAuthSignatureMethod_HMAC_SHA1.php,
+ .../signature_method/OAuthSignatureMethod_MD5.php,
+ .../OAuthSignatureMethod_PLAINTEXT.php,
+ .../OAuthSignatureMethod_RSA_SHA1.php,
+ .../library/store/OAuthStoreAbstract.class.php,
+ .../oauth/library/store/OAuthStoreAnyMeta.php,
+ .../oauth/library/store/OAuthStoreMySQL.php,
+ .../vendors/oauth/library/store/mysql/install.php,
+ .../vendors/oauth/library/store/mysql/mysql.sql,
+ .../oauth/test/discovery/xrds-fireeagle.xrds,
+ .../oauth/test/discovery/xrds-getsatisfaction.xrds,
+ .../oauth/test/discovery/xrds-magnolia.xrds,
+ mod/oauth/vendors/oauth/test/oauth_test.php, mod/oauth_lib/manifest.xml,
+ mod/oauth_lib/start.php, mod/oauth_lib/vendors/oauth/LICENSE,
+ mod/oauth_lib/vendors/oauth/example/server/INSTALL,
+ .../vendors/oauth/example/server/core/init.php,
+ .../example/server/core/templates/inc/footer.tpl,
+ .../example/server/core/templates/inc/header.tpl,
+ .../oauth/example/server/core/templates/index.tpl,
+ .../oauth/example/server/core/templates/logon.tpl,
+ .../example/server/core/templates/register.tpl,
+ .../vendors/oauth/example/server/www/hello.php,
+ .../vendors/oauth/example/server/www/index.php,
+ .../vendors/oauth/example/server/www/logon.php,
+ .../vendors/oauth/example/server/www/oauth.php,
+ .../vendors/oauth/example/server/www/register.php,
+ .../oauth/example/server/www/services.xrds.php,
+ .../vendors/oauth/library/OAuthDiscovery.php,
+ .../vendors/oauth/library/OAuthException.php,
+ .../vendors/oauth/library/OAuthRequest.php,
+ .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ .../vendors/oauth/library/OAuthRequester.php,
+ .../vendors/oauth/library/OAuthServer.php,
+ mod/oauth_lib/vendors/oauth/library/OAuthStore.php,
+ .../library/body/OAuthBodyContentDisposition.php,
+ .../library/body/OAuthBodyMultipartFormdata.php,
+ .../vendors/oauth/library/discovery/xrds_parse.php,
+ .../vendors/oauth/library/discovery/xrds_parse.txt,
+ .../OAuthSignatureMethod.class.php, .../OAuthSignatureMethod_HMAC_SHA1.php,
+ .../signature_method/OAuthSignatureMethod_MD5.php,
+ .../OAuthSignatureMethod_PLAINTEXT.php,
+ .../OAuthSignatureMethod_RSA_SHA1.php,
+ .../library/store/OAuthStoreAbstract.class.php,
+ .../oauth/library/store/OAuthStoreAnyMeta.php,
+ .../oauth/library/store/OAuthStoreMySQL.php,
+ .../vendors/oauth/library/store/mysql/install.php,
+ .../vendors/oauth/library/store/mysql/mysql.sql,
+ .../oauth/test/discovery/xrds-fireeagle.xrds,
+ .../oauth/test/discovery/xrds-getsatisfaction.xrds,
+ .../oauth/test/discovery/xrds-magnolia.xrds,
+ mod/oauth_lib/vendors/oauth/test/oauth_test.php: Changing the name of the
+ oAuth plugin to reflect it's library service status. Refs #2532
+
+2010-10-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/install.css, views/installation/messages/errors/list.php,
+ views/installation/messages/messages/list.php: Fixes #2523 - errors get red
+ box during install
+
+ * install/ElggInstaller.php, views/failsafe/input/access.php,
+ views/failsafe/input/button.php, views/failsafe/input/checkboxes.php,
+ views/failsafe/input/form.php, views/failsafe/input/hidden.php,
+ views/failsafe/input/longtext.php, views/failsafe/input/password.php,
+ views/failsafe/input/pulldown.php, views/failsafe/input/reset.php,
+ views/failsafe/input/securitytoken.php, views/failsafe/input/submit.php,
+ views/failsafe/input/text.php, views/failsafe/install/footer.php,
+ views/failsafe/install/forms/admin.php,
+ views/failsafe/install/forms/database.php,
+ views/failsafe/install/forms/settings.php,
+ views/failsafe/install/forms/template.php, views/failsafe/install/header.php,
+ views/failsafe/install/nav.php, views/failsafe/install/pages/admin.php,
+ views/failsafe/install/pages/complete.php,
+ views/failsafe/install/pages/database.php,
+ views/failsafe/install/pages/requirements.php,
+ views/failsafe/install/pages/settings.php,
+ views/failsafe/install/pages/welcome.php, views/failsafe/install/sidebar.php,
+ views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php, views/failsafe/messages/list.php,
+ views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/page_shells/install.php, views/installation/input/access.php,
+ views/installation/input/button.php, views/installation/input/checkboxes.php,
+ views/installation/input/form.php, views/installation/input/hidden.php,
+ views/installation/input/longtext.php, views/installation/input/password.php,
+ views/installation/input/pulldown.php, views/installation/input/reset.php,
+ views/installation/input/securitytoken.php,
+ views/installation/input/submit.php, views/installation/input/text.php,
+ views/installation/install/footer.php,
+ views/installation/install/forms/admin.php,
+ views/installation/install/forms/database.php,
+ views/installation/install/forms/settings.php,
+ views/installation/install/forms/template.php,
+ views/installation/install/header.php, views/installation/install/nav.php,
+ views/installation/install/pages/admin.php,
+ views/installation/install/pages/complete.php,
+ views/installation/install/pages/database.php,
+ views/installation/install/pages/requirements.php,
+ views/installation/install/pages/settings.php,
+ views/installation/install/pages/welcome.php,
+ views/installation/install/sidebar.php,
+ views/installation/messages/errors/error.php,
+ views/installation/messages/errors/list.php,
+ views/installation/messages/list.php,
+ views/installation/messages/messages/list.php,
+ views/installation/messages/messages/message.php,
+ views/installation/page_shells/default.php: moved installation to its own
+ viewtype
+
+2010-10-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/lib/functions.php,
+ .../views/default/admin/users/unvalidated.php: Using more built-in API to get
+ unvalidated users.
+
+2010-10-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, languages/en.php: Refs #2129: Pulls some
+ strings out into elgg_echo() in new installation.
+
+ * languages/en.php: Refs #2129: Added missing language string for new
+ installer.
+
+ * htaccess_dist: Cleaned up tabs vs spaces in htaccess_dist.
+
+ * languages/en.php: Refs #2129: Added missing language string for new
+ installer.
+
+2010-10-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php: uservalidationbyemail is turned on by default
+ so we need to have the first admin user validated
+
+2010-10-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install/ElggInstaller.php, languages/en.php: Closes #2129 - installer now
+ works with web servers besides Apache - tested with nginx
+
+2010-10-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/actions/bulk_action.php,
+ mod/uservalidationbyemail/actions/delete.php,
+ .../actions/resend_validation.php,
+ mod/uservalidationbyemail/actions/validate.php,
+ mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php,
+ .../views/default/admin/users/unvalidated.php,
+ .../uservalidationbyemail/unvalidated_user.php: Added admin page to validate,
+ resend validation requests, or delete unvalidated users.
+
+2010-10-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login_dropdown.php: Fixes #2505 - fixes the
+ registration link on the drop down login form
+
+2010-10-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/start.php,
+ .../default/admin/overview/reportedcontent.php: Fixed incorrect echoing of an
+ array.
+
+ * simplecache/view.php: Fixes #2504. Renamed $view to $view_name in
+ simplecache/view.php to avoid var name collision with engine/start.php's
+ $view.
+
+2010-10-01 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: replacing more documentation lost in integration of
+ installer
+
+ * engine/settings.example.php, engine/start.php, htaccess_dist, install.php,
+ install/ElggInstaller.php, install/install.css, languages/en.php,
+ views/failsafe/input/password.php, views/failsafe/install/footer.php,
+ views/failsafe/install/forms/admin.php,
+ views/failsafe/install/forms/database.php,
+ views/failsafe/install/forms/settings.php,
+ views/failsafe/install/forms/template.php, views/failsafe/install/header.php,
+ views/failsafe/install/nav.php, views/failsafe/install/pages/admin.php,
+ views/failsafe/install/pages/complete.php,
+ views/failsafe/install/pages/database.php,
+ views/failsafe/install/pages/requirements.php,
+ views/failsafe/install/pages/settings.php,
+ views/failsafe/install/pages/welcome.php, views/failsafe/install/sidebar.php,
+ views/failsafe/page_shells/install.php: Refs #2129 - integrates new installer
+ code from http://github.com/cash/Elgg - does not work yet with non-Apache web
+ servers
+
+2010-09-30 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, friends/add.php, friends/collections.php,
+ friends/edit.php, friends/index.php, friends/of.php,
+ friends/pickercallback.php, pages/friends/add.php,
+ pages/friends/collections.php, pages/friends/edit.php,
+ pages/friends/index.php, pages/friends/of.php,
+ pages/friends/pickercallback.php, views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php: Closes #2344 - moves friends pages
+ into pages directory
+
+ * engine/lib/entities.php, entities/index.php, entities/list.php,
+ mod/file/start.php, pages/entities/index.php, pages/entities/list.php: Refs
+ #2344 - moves entities directory to pages directory
+
+ * admin/index.php, engine/lib/admin.php, search/index.php: Refs #2344 -
+ removed unused search and admin directories
+
+ * engine/lib/usersettings.php, pages/settings/index.php,
+ pages/settings/plugins.php, pages/settings/statistics.php,
+ pages/settings/user.php, settings/index.php, settings/plugins.php,
+ settings/statistics.php, settings/user.php: Refs #2344 - moves settings pages
+ into the pages directory
+
+ * dashboard/index.php, dashboard/latest.php, engine/lib/users.php,
+ pages/dashboard/index.php, pages/dashboard/latest.php,
+ views/default/dashboard/blurb.php: Refs #2344 - moves dashboard pages into
+ pages directory
+
+ * account/forgotten_password.php, account/register.php,
+ engine/classes/ElggSite.php, engine/lib/users.php,
+ pages/account/forgotten_password.php, pages/account/register.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/login_dropdown.php,
+ .../default/account/forms/login_walled_garden.php: Refs #2344 - move account
+ pages into pages directory
+
+2010-09-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/register.php,
+ actions/user/requestnewpassword.php, engine/lib/sessions.php,
+ engine/lib/users.php, languages/en.php,
+ mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/lib/functions.php,
+ mod/uservalidationbyemail/start.php: Fixes #617, #2271 User validation
+ removed from core to UserValidationByEmail plugin. Without a validation
+ plugin, users can login immediately. Fixes #2243 Removed "You have validated
+ your email" email. Users are logged in immediately after registration or
+ validating email. Refs #2409 Added register, user plugin hook that is called
+ only on self registration. Can be used to halt registration.
+
+2010-09-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Checking for menu items before doing a foreach().
+
+ * engine/lib/views.php: Checking for $CONFIG->view_type before accessing it
+ in elgg_is_valid_viewtype(). Prevents a notice during installation.
+
+2010-09-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/save.php: Cleaned up the file docblock.
+
+2010-09-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/save.php: Fixes #1418: Changing an email address no longer
+ invalidates an account.
+
+ * engine/classes/ElggUser.php: Refs #617: ElggUser:makeAdmin() and
+ removeAdmin() correctly set the attribute for unsaved users.
+
+ * engine/lib/api.php: Refs #2459: Merged [6927] to trunk.
+
+ * views/json/entities/entity_list.php: Merged [6923] to trunk.
+
+ * actions/register.php, languages/en.php: Refs #2454: Merged [6920] to
+ trunk.
+
+ * mod/profile/start.php: Merged [6905] to trunk.
+
+ * engine/lib/group.php: Refs #2437: Merged [6707] to trunk.
+
+ * mod/profile/start.php: Refs #2429: Merged [6889] to trunk.
+
+2010-09-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/ElggObject.php, engine/classes/ElggSite.php: Refs #2450:
+ Documented ElggSite, clarified some docs on ElggObject.
+
+2010-09-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/APIException.php,
+ engine/classes/AccessControlQueryComponent.php,
+ engine/classes/CallException.php, engine/classes/ClassException.php,
+ engine/classes/ClassNotFoundException.php,
+ engine/classes/ConfigurationException.php, engine/classes/CronException.php,
+ engine/classes/DataFormatException.php, engine/classes/DatabaseException.php,
+ engine/classes/DeleteQueryTypeQueryComponent.php,
+ engine/classes/ElggAccess.php, engine/classes/ElggAnnotation.php,
+ engine/classes/ElggCache.php, engine/classes/ElggEntity.php,
+ engine/classes/ElggExtender.php, engine/classes/ElggFileCache.php,
+ engine/classes/ElggFilestore.php, engine/classes/ElggGroup.php,
+ engine/classes/ElggHMACCache.php, engine/classes/ElggMemcache.php,
+ engine/classes/ElggMetadata.php, engine/classes/ElggObject.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggRelationship.php,
+ engine/classes/ElggSession.php, engine/classes/ElggSharedMemoryCache.php,
+ engine/classes/ElggSite.php, engine/classes/ElggStaticVariableCache.php,
+ engine/classes/ElggUser.php, engine/classes/ElggWidget.php,
+ engine/classes/ErrorResult.php, engine/classes/ExportException.php,
+ engine/classes/Exportable.php, engine/classes/GenericResult.php,
+ engine/classes/IOException.php, engine/classes/ImportException.php,
+ engine/classes/Importable.php,
+ engine/classes/InsertQueryTypeQueryComponent.php,
+ engine/classes/InstallationException.php,
+ engine/classes/InvalidClassException.php,
+ engine/classes/InvalidParameterException.php,
+ engine/classes/JoinQueryComponent.php,
+ engine/classes/LimitOffsetQueryComponent.php, engine/classes/Locatable.php,
+ engine/classes/Loggable.php, engine/classes/NotImplementedException.php,
+ engine/classes/Notable.php, engine/classes/NotificationException.php,
+ engine/classes/ODD.php, engine/classes/ODDDocument.php,
+ engine/classes/ODDEntity.php, engine/classes/OrderQueryComponent.php,
+ engine/classes/PluginException.php, engine/classes/Query.php,
+ engine/classes/QueryComponent.php,
+ engine/classes/QueryTypeQueryComponent.php,
+ engine/classes/RegistrationException.php,
+ engine/classes/SecurityException.php,
+ engine/classes/SelectFieldQueryComponent.php,
+ engine/classes/SelectQueryTypeQueryComponent.php,
+ engine/classes/SetQueryComponent.php, engine/classes/SimpleQuery.php,
+ engine/classes/SuccessResult.php, engine/classes/TableQueryComponent.php,
+ engine/classes/UpdateQueryTypeQueryComponent.php,
+ engine/classes/WhereQueryComponent.php,
+ engine/classes/WhereSetQueryComponent.php,
+ engine/classes/WhereStaticQueryComponent.php,
+ engine/classes/XMLRPCArrayParameter.php,
+ engine/classes/XMLRPCBase64Parameter.php,
+ engine/classes/XMLRPCBoolParameter.php, engine/classes/XMLRPCCall.php,
+ engine/classes/XMLRPCDateParameter.php,
+ engine/classes/XMLRPCDoubleParameter.php,
+ engine/classes/XMLRPCErrorResponse.php,
+ engine/classes/XMLRPCIntParameter.php, engine/classes/XMLRPCParameter.php,
+ engine/classes/XMLRPCResponse.php, engine/classes/XMLRPCStringParameter.php,
+ engine/classes/XMLRPCStructParameter.php,
+ engine/classes/XMLRPCSuccessResponse.php, engine/classes/XmlElement.php:
+ Converted line endings to unix.
+
+ * engine/classes/ElggAnnotation.php, engine/classes/ElggExtender.php,
+ engine/classes/ElggPlugin.php, engine/classes/ElggRelationship.php: Refs
+ #2450: Documented a few more classes.
+
+ * engine/classes/ElggObject.php: Refs #2450: Documented ElggObject.
+
+ * engine/classes/ElggEntity.php: Refs #2450: ElggEntity documented.
+
+ * engine/lib/entities.php: Refs #2450: Changed the subpackage and fixed a
+ typo.
+
+2010-09-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/APIException.php,
+ engine/classes/AccessControlQueryComponent.php,
+ engine/classes/CallException.php, engine/classes/ClassException.php,
+ engine/classes/ClassNotFoundException.php,
+ engine/classes/ConfigurationException.php, engine/classes/CronException.php,
+ engine/classes/DataFormatException.php, engine/classes/DatabaseException.php,
+ engine/classes/DeleteQueryTypeQueryComponent.php,
+ engine/classes/ElggAccess.php, engine/classes/ElggAnnotation.php,
+ engine/classes/ElggCache.php, engine/classes/ElggDiskFilestore.php: Refs
+ #2450: Documented first bit of the classes.
+
+ * engine/lib/views.php: Refs #2450: Documented views.php.
+
+2010-09-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Fixes #2479: Removed unused actions init and
+ registered "error" action.
+
+ * documentation/examples/actions/manual_tokens.php,
+ engine/handlers/action_handler.php, engine/lib/actions.php: Refs #2450: Added
+ documentation for actions.
+
+2010-09-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Refs #2450: Documented access.php.
+
+ * engine/lib/elgglib.php: Refs #2450: Changed preferred syntax for talking
+ about hooks / events because :s are used in some names. Now using $name,
+ $type.
+
+ * engine/lib/elgglib.php: Correct spaces issue in autoload function.
+
+ * engine/lib/entities.php: Refs #2450: Documented entities.php
+
+2010-09-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/pagehandler.php, engine/handlers/service_handler.php,
+ engine/handlers/xml-rpc_handler.php: Refs #2450: Documented handler files.
+
+2010-09-15 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/classes/APIException.php,
+ engine/classes/AccessControlQueryComponent.php,
+ engine/classes/CallException.php, engine/classes/ClassException.php,
+ engine/classes/ClassNotFoundException.php,
+ engine/classes/ConfigurationException.php,
+ engine/classes/DataFormatException.php, engine/classes/DatabaseException.php,
+ engine/classes/DeleteQueryTypeQueryComponent.php,
+ engine/classes/IOException.php,
+ engine/classes/InsertQueryTypeQueryComponent.php,
+ engine/classes/InstallationException.php,
+ engine/classes/InvalidClassException.php,
+ engine/classes/InvalidParameterException.php,
+ engine/classes/JoinQueryComponent.php,
+ engine/classes/LimitOffsetQueryComponent.php,
+ engine/classes/NotImplementedException.php,
+ engine/classes/NotificationException.php,
+ engine/classes/OrderQueryComponent.php, engine/classes/PluginException.php,
+ engine/classes/Query.php, engine/classes/QueryComponent.php,
+ engine/classes/QueryTypeQueryComponent.php,
+ engine/classes/RegistrationException.php,
+ engine/classes/SecurityException.php,
+ engine/classes/SelectFieldQueryComponent.php,
+ engine/classes/SelectQueryTypeQueryComponent.php,
+ engine/classes/SetQueryComponent.php, engine/classes/SimpleQuery.php,
+ engine/classes/TableQueryComponent.php,
+ engine/classes/UpdateQueryTypeQueryComponent.php,
+ engine/classes/WhereQueryComponent.php,
+ engine/classes/WhereSetQueryComponent.php,
+ engine/classes/WhereStaticQueryComponent.php, engine/lib/access.php,
+ engine/lib/actions.php, engine/lib/admin.php, engine/lib/annotations.php,
+ engine/lib/api.php, engine/lib/cache.php, engine/lib/calendar.php,
+ engine/lib/cron.php, engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/lib/exceptions.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/filestore.php, engine/lib/group.php, engine/lib/input.php,
+ engine/lib/install.php, engine/lib/location.php, engine/lib/memcache.php,
+ engine/lib/metadata.php, engine/lib/notification.php, engine/lib/objects.php,
+ engine/lib/opendd.php, engine/lib/plugins.php, engine/lib/query.php,
+ engine/lib/relationships.php, engine/lib/river.php, engine/lib/sessions.php,
+ engine/lib/sites.php, engine/lib/system_log.php, engine/lib/tags.php,
+ engine/lib/users.php, engine/lib/widgets.php, engine/lib/xml-rpc.php,
+ engine/lib/xml.php: Refs #2220: Pulled remaining classes out of lib files.
+ Core classes now autoloaded via __autoload().
+
+2010-09-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/forgotten_password.php, account/register.php: Refs #2450: Updated
+ docs for account/*
+
+ * engine/start.php: Refs #2450: Documented engine/start.php
+
+ * documentation/stubs/config.php: Refs @2450: Better documentation for
+ $CONFIG->view.
+
+ * documentation/stubs/config.php: Refs #2450: Added config.php stub to
+ document many of the $CONFIG vars.
+
+ * actions/admin/menu_items.php: Removing unused
+ 'menu_items_hide_toolbar_entries' config value.
+
+ * engine/lib/elgglib.php: Fixes #2366: Deprecated test_ip() and
+ is_ip_in_array().
+
+ * documentation/examples/events/advanced.php,
+ documentation/examples/events/all.php,
+ documentation/examples/events/basic.php,
+ documentation/examples/events/emit.php,
+ documentation/examples/hooks/basic.php,
+ documentation/examples/hooks/register/advanced.php,
+ documentation/examples/hooks/register/all.php,
+ documentation/examples/hooks/register/basic.php,
+ documentation/examples/hooks/register/emit.php,
+ documentation/examples/hooks/trigger/advanced.php,
+ documentation/examples/hooks/trigger/basic.php: Adding documentation and
+ examples.
+
+ * engine/lib/elgglib.php: Refs #2450: Added documentation to elgglib.
+
+2010-09-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Refs #2450: Really removed the @uses and @see
+ tags.
+
+ * engine/lib/database.php: Refs #2450: Removing @see and @uses. Replaced NB:
+ with English phrases.
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php,
+ actions/admin/plugins/simple_update_states.php,
+ actions/admin/site/update_advanced.php, actions/admin/site/update_basic.php,
+ actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ actions/admin/user/resetpassword.php, actions/admin/user/unban.php: Refs
+ #2450: Updated docs for core admin actions.
+
+2010-09-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Merged get_entities() is_numeric() fix to trunk.
+
+2010-09-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/settings.example.php: Updated settings.example.php docs
+
+ * engine/lib/configuration.php: Refs #2450: Documented configuration.php.
+
+2010-09-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Refs #2450: Documentation added for database
+ functions.
+
+ * engine/settings.example.php: Refs #2450: Added db_disable_query_cache to
+ settings.example.php.
+
+ * engine/settings.example.php: Refs #2450: Documented db-related $CONFIG
+ vars.
+
+2010-09-07 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, _css/js.php: Refs #2450: Fixed some typos in css/js
+ simplecache documentation
+
+2010-09-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/forgotten_password.php, account/register.php: Refs #2450:
+ Documentation for account/ files added.
+
+ * _css/js.php: Refs #2450: Added the default viewtype in the views dir for
+ the @see tag.
+
+ * _css/css.php, _css/js.php: Refs #2450: Added documentation for js and css
+ files.
+
+2010-08-31 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php: Refs #2434 - make view
+ failures spectacular rather than silent since they should only happen during
+ development
+
+ * mod/profile/start.php, .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php: Refs #2434 - made the
+ profile plugin more robust to bad urls and did a little code standardization
+
+2010-08-30 ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php, mod/groups/views/default/group/default.php,
+ mod/groups/views/default/group/group.php: Fixes #2289: grouprofile.php now
+ uses elgg_view_entity and group/group has been renamed to group/default
+
+ * views/default/css.php, views/default/navigation/breadcrumbs.php: Refs
+ #2394: changed breadcrumbs from an id to a class
+
+2010-08-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/metadata.php: Merged [6875] from 1.7 branch into trunk
+
+ * mod/captcha/start.php: merged [6876] into trunk from 1.7 branch
+
+2010-08-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: added escaping to
+ get_entities_from_private_setting_multi()
+
+2010-08-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Closes #2420 Trac seems to work.
+
+ * README.txt: Refs #2420 trac test.
+
+ * README.txt: Refs #2420: Trac test.
+
+ * README.txt: Refs #2420 trac test.
+
+2010-08-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php: Refs #1439 added better page owner functions
+
+2010-08-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2010062301.php: Merged [6857] into trunk
+
+2010-08-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/captcha/captcha.php, mod/captcha/languages/en.php,
+ mod/captcha/manifest.xml, mod/captcha/start.php,
+ mod/captcha/views/default/input/captcha.php: standardized captcha plugin
+
+2010-08-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, .../views/default/object/groupforumtopic.php:
+ Merged [6819] into trunk from 1.7 branch
+
+ * mod/thewire/languages/en.php,
+ .../views/default/thewire/profile_status.php: merged [6828] into trunk from
+ 1.7 branch
+
+ * mod/thewire/languages/en.php,
+ mod/thewire/views/default/object/thewire.php: merged [6829] from 1.7 branch
+ into trunk
+
+ * .../views/default/object/groupforumtopic.php: merged [6832] into trunk
+ from 1.7 branch
+
+2010-08-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Fixed text overflow and word-breaking for base
+ theme
+
+2010-08-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, CONTRIBUTORS.txt, engine/lib/annotations.php,
+ engine/lib/entities.php, engine/lib/plugins.php,
+ engine/schema/upgrades/2009100701.sql, engine/start.php, languages/en.php,
+ mod/embed/views/default/object/default/embed.php,
+ mod/reportedcontent/languages/en.php, mod/search/start.php,
+ mod/twitter/views/default/widgets/twitter/view.php,
+ views/default/messages/errors/error.php,
+ views/default/messages/messages/message.php,
+ views/default/output/longtext.php: Merged r6812:6837 from 1.7 branch to trunk
+ (skipping some changes to plugins like groups and wire)
+
+ * CHANGES.txt, .../notifications/settings/usersettings/save.php,
+ actions/user/default_access.php, engine/lib/access.php,
+ engine/lib/actions.php, engine/lib/annotations.php, engine/lib/api.php,
+ engine/lib/cache.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/extender.php, engine/lib/filestore.php,
+ engine/lib/group.php, engine/lib/install.php, engine/lib/languages.php,
+ engine/lib/location.php, engine/lib/mb_wrapper.php, engine/lib/memcache.php,
+ engine/lib/metadata.php, engine/lib/notification.php, engine/lib/objects.php,
+ engine/lib/pam.php, engine/lib/plugins.php, engine/lib/query.php,
+ engine/lib/relationships.php, engine/lib/river.php, engine/lib/sessions.php,
+ engine/lib/sites.php, engine/lib/tags.php, engine/lib/users.php,
+ engine/lib/views.php, engine/lib/widgets.php, engine/lib/xml-rpc.php,
+ languages/en.php, mod/friends/add.php, mod/friends/collections.php,
+ mod/friends/edit.php, mod/friends/languages/en.php, mod/friends/start.php,
+ mod/friends/views/default/widgets/friends/edit.php,
+ mod/friends/views/default/widgets/friends/view.php, mod/htmlawed/start.php,
+ mod/messages/start.php, .../views/default/widgets/messages/view.php,
+ mod/pages/languages/en.php, mod/riverdashboard/languages/en.php,
+ services/export/handler.php, views/default/account/forms/useradd.php,
+ views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php,
+ views/default/input/autocomplete.php, views/default/page_elements/title.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php: Merged r6757:6810 from
+ 1.7 branch into trunk
+
+ * actions/email/save.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/remove.php, actions/plugins/usersettings/save.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php, actions/user/spotlight.php,
+ engine/lib/annotations.php, engine/lib/database.php,
+ engine/lib/filestore.php, engine/lib/group.php, engine/lib/metadata.php,
+ engine/lib/plugins.php, engine/lib/relationships.php, engine/lib/tags.php,
+ engine/tests/regression/trac_bugs.php, entities/list.php,
+ mod/categories/listing.php, mod/categories/views/default/categories/list.php,
+ mod/file/search.php, mod/groups/actions/addtogroup.php,
+ mod/groups/languages/en.php, .../views/default/groups/closedmembership.php,
+ settings/index.php, settings/plugins.php, settings/statistics.php,
+ settings/user.php, views/json/river/item/list.php: Merged r6701:6756 from 1.7
+ branch into trunk
+
+ * engine/lib/entities.php, engine/lib/relationships.php,
+ engine/lib/upgrades/2010071001.php, engine/lib/upgrades/2010071002.php,
+ mod/notifications/start.php, mod/pages/actions/pages/edit.php,
+ mod/pages/start.php, mod/pages/views/default/forms/pages/edit.php,
+ mod/profile/actions/cropicon.php, mod/profile/actions/iconupload.php,
+ mod/profile/icon.php, mod/profile/icondirect.php, mod/profile/start.php,
+ version.php: Merged r6684:6694 from 1.7 branch to trunk (pages plugin was
+ manually merged due to standardization of code in trunk but not branch)
+
+ * engine/lib/entities.php, engine/lib/metadata.php, engine/lib/output.php,
+ engine/lib/views.php, engine/lib/widgets.php, mod/file/world.php: Merged
+ r6671:6683 from 1.7 branch to trunk
+
+ * actions/admin/user/delete.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/filestore.php, engine/lib/metadata.php,
+ engine/lib/output.php, engine/lib/version.php, engine/lib/views.php,
+ htaccess_dist, languages/en.php,
+ mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/delete.php, mod/blog/actions/blog/save.php,
+ mod/bookmarks/actions/delete.php,
+ mod/embed/views/default/embed/item/gallery.php,
+ mod/embed/views/default/embed/item/list.php, mod/file/actions/delete.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/pages/actions/pages/delete.php,
+ .../views/default/river/object/page/create.php,
+ .../default/admin/overview/reportedcontent.php,
+ mod/riverdashboard/endpoint/get_comments.php,
+ .../views/default/river/item/wrapper.php, views/default/input/checkboxes.php,
+ views/default/input/radio.php, views/failsafe/input/checkboxes.php: Merged
+ r6620:6653 from 1.7 branch into trunk
+
+ * engine/lib/annotations.php, engine/lib/api.php, mod/file/start.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/sharing/invite.php: Merged r6614:6617 from 1.7
+ branch into trunk
+
+ * engine/lib/upgrades/2010070301.php, mod/groups/actions/edit.php,
+ mod/groups/actions/join.php, mod/groups/languages/en.php,
+ mod/groups/views/default/river/group/create.php,
+ .../default/river/relationship/member/create.php, version.php: Merged [6612]
+ from 1.7 into the trunk
+
+ * engine/lib/entities.php, engine/lib/export.php, engine/lib/input.php,
+ engine/lib/metadata.php, engine/tests/objects/metadata.php,
+ .../views/default/forms/forums/edittopic.php,
+ .../views/default/object/groupforumtopic.php,
+ .../views/default/river/object/group/create.php,
+ views/foaf/page_elements/title.php, views/json/page_elements/title.php,
+ views/rss/navigation/pagination.php, views/rss/page_elements/title.php:
+ Merged [6600],[6601],[6605],[6606],[6607],[6608],[6611] from 1.7 branch into
+ trunk
+
+2010-08-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/output.php, mod/blog/start.php,
+ mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php,
+ .../views/default/river/object/blog/create.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/object/file/embedlist.php, mod/file/start.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/object/file.php,
+ mod/file/views/default/widgets/filerepo/view.php, mod/groups/start.php,
+ mod/groups/views/default/forum/maintopic.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../default/messageboard/messageboard_content.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/view.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/river/object/page/create.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ .../views/default/reportedcontent/listing.php,
+ mod/riverdashboard/endpoint/get_comments.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/entity.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ .../views/default/thewire/profile_status.php,
+ views/default/annotation/annotate.php,
+ views/default/annotation/annotatelike.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/annotation/likes.php, views/default/object/default.php,
+ views/default/output/friendlytime.php, views/default/river/item/wrapper.php:
+ Merged r6586:6587 from 1.7 branch into trunk
+
+ * engine/lib/actions.php, mod/groups/views/default/forms/groups/edit.php,
+ views/default/graphics/icon.php: Merged [6573],[6574],[6582] from 1.7 branch
+ into trunk
+
+ * CODING.txt, INSTALL.txt, engine/lib/elgglib.php, engine/lib/metadata.php,
+ engine/lib/output.php, engine/lib/relationships.php,
+ engine/lib/upgrades/2010062301.php, engine/lib/upgrades/2010062302.php,
+ engine/schema/mysql.sql, engine/schema/upgrades/2010062401.sql,
+ engine/tests/api/entity_getter_functions.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/views/default/groups/grouplisting.php,
+ mod/search/search_hooks.php, mod/search/start.php, version.php,
+ views/default/friends/picker.php, views/default/input/checkboxes.php: Merged
+ r6534-6559 from 1.7 branch to trunk
+
+ * engine/lib/metadata.php, engine/lib/upgrades/2010061501.php,
+ engine/tests/api/entity_getter_functions.php, mod/search/start.php: Merging
+ r6517:6520 from 1.7 branch
+
+2010-08-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_shells/walled_garden.php: Updated walledgarden login to
+ wraplongnames
+
+2010-08-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * LICENCE.txt: cleaned up the included license, GPL v2
+
+2010-08-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/html_begin.php: Removed additional
+ header/extend view from HTML head. Moved metatags view to right before
+ </html>. Removed the check if the view exists since it's done in elgg_view()
+ anyway.
+
+2010-08-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Added optional param to sanitise_filepath() that
+ appends a / or not. Also removes any ../s
+
+2010-08-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/css.php: Updated embed css
+
+ * views/default/page_shells/walled_garden.php: Updated walled-garden login
+ input boxes - so they are not effected by any theme running
+
+2010-08-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/html_begin.php: a view inserted for plugins to
+ extend
+
+2010-08-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/overview.php: inserted a view for plugins to extend
+
+2010-07-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: correcting a mistake in the readme file.
+
+2010-07-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/nav.php: small nav tweak to the filter
+
+2010-07-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php, .../views/default/riverdashboard/nav.php:
+ Moved start conversation button
+
+2010-07-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php: missing string added
+
+ * mod/profile/index.php, .../default/profile/profile_contents/groups.php,
+ .../views/default/profile/profile_navigation.php: groups tab added to profile
+
+ * .../views/default/riverdashboard/nav.php: lang tweak on activity filter
+
+2010-07-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/activity.php, mod/riverdashboard/index.php,
+ .../views/default/riverdashboard/nav.php: Added interface elements for inline
+ conversation posting from activity stream
+
+2010-07-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php: added a view for plugins to extend the
+ activity view if required
+
+2010-07-18 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/activity.php: view for plugins to extend on group activity
+
+2010-07-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/pages/actions/pages/edit.php, mod/pages/history.php: More code cleanup
+ to pages.
+
+ * engine/lib/views.php: Added display:page plugin hook in page_draw
+ function.
+
+ * engine/lib/output.php, mod/ecml/start.php: plugin hook output:strip_tags
+ is now format:strip_tags.
+
+ * engine/lib/output.php: elgg_make_excerpt() uses elgg_strip_tags().
+
+2010-07-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Using elgg_strip_tags() for notification
+ body.
+
+ * mod/ecml/start.php: ECML removes keywords for elgg_strip_tags().
+
+ * engine/lib/output.php: Fixes #2099. Added elgg_strip_tags() to allow
+ plugins to remove extra formatting.
+
+ * mod/pages/start.php: Parsing pages views for ecml.
+
+ * mod/pages/actions/pages/delete.php, mod/pages/actions/pages/edit.php,
+ mod/pages/actions/pages/editwelcome.php, mod/pages/edit.php,
+ mod/pages/history.php, mod/pages/index.php, mod/pages/languages/en.php,
+ mod/pages/new.php, mod/pages/pagesTree.php, mod/pages/start.php,
+ mod/pages/view.php, mod/pages/views/default/annotation/icon.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../views/default/icon/object/page/medium.php,
+ mod/pages/views/default/icon/object/page/small.php,
+ .../views/default/icon/object/page_top/medium.php,
+ .../views/default/icon/object/page_top/small.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/css.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/metatags.php,
+ mod/pages/views/default/pages/pagegallery.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/pages/sidebar/sidebarthis.php,
+ mod/pages/views/default/pages/sidebar/starter.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/sidebar/wrapper.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/annotate.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/page/update.php,
+ .../default/river/object/page_top/annotate.php,
+ .../views/default/river/object/page_top/create.php,
+ .../views/default/river/object/page_top/update.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php: First pass at standardizing pages.
+
+ * mod/pages/actions/pages/editwelcome.php, mod/pages/history.php,
+ mod/pages/index.php, mod/pages/languages/en.php, mod/pages/new.php,
+ mod/pages/start.php, .../views/default/forms/pages/editwelcome.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/css.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/update.php,
+ .../views/default/river/object/page_top/update.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php: Converting spaces to tabs without the stray t.
+
+ * mod/pages/actions/pages/editwelcome.php, mod/pages/history.php,
+ mod/pages/index.php, mod/pages/languages/en.php, mod/pages/new.php,
+ mod/pages/start.php, .../views/default/forms/pages/editwelcome.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/css.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/update.php,
+ .../views/default/river/object/page_top/update.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php: Convert spaces to tabs.
+
+ * views/default/page_elements/elgg_header.php,
+ views/default/page_elements/elgg_header_logo.php: Fixes #2284. Pulled out
+ home link in elgg_header to page_elements/elgg_header_logo. Removed
+ csseditor-specific code that caused custom logos to still appear even when
+ csseditor was disabled.
+
+2010-07-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/account/forms/login_walled_garden.php: Added ugly hack to get
+ around problems with sliding in hidden images in visual captcha on login
+ pages in webkit browsers.
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/views.php: Fixes
+ #2195. 3rd and 4th params of page_draw() are now $page_shell and $vars.
+
+2010-07-14 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/invitefriends/languages/en.php,
+ .../views/default/invitefriends/formitems.php: Disabling friend invite form
+ when site has disabled new user registration.
+
+2010-07-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/join.php,
+ mod/groups/views/default/groups/groupprofile.php: Admin users can join
+ groups. Don't request to join a closed group if admin.
+
+2010-07-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css_ie.php: Added clearfloat improvement to IE7/8 CSS
+
+ * mod/ecml/graphics/logo_bliptv.gif, mod/ecml/graphics/logo_dailymotion.gif,
+ mod/ecml/graphics/logo_googlemaps.gif, mod/ecml/graphics/logo_livevideo.gif,
+ mod/ecml/graphics/logo_redlasso.gif, mod/ecml/graphics/logo_slideshare.gif,
+ mod/ecml/graphics/logo_vimeo.gif, mod/ecml/graphics/logo_youtube.gif,
+ mod/ecml/views/default/ecml/admin/css.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php: Added logos to embed web services
+ pane, and made embed nav-bar theme agnostic
+
+ * mod/embed/views/default/embed/css.php: Removed old classes from embed
+
+ * mod/ecml/graphics/url_status.png,
+ mod/ecml/views/default/ecml/admin/css.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php: Updated ecml and embed with new
+ success/failure for input code.
+
+ * views/default/css.php: Added disabled class to submit_button
+
+ * .../views/default/embed/web_services/content.php: Corrected js for preview
+ pane toggleclass
+
+2010-07-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/start.php: messages now parse ecml
+
+ * mod/groups/languages/en.php, mod/groups/start.php: ecml added to group
+ profiles
+
+2010-07-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/link.php: Web services tab now default embed
+ tab if ecml is enabled.
+
+2010-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/views/default/ecml/admin/css.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php: Updated embed/ecml modal interface
+
+2010-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/start.php: keep sitepages settings in their normal location
+
+2010-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_sprites.png: Updated elgg sprites graphic with embed modal
+ arrows
+
+ * mod/ecml/languages/en.php, mod/ecml/views/default/ecml/admin/css.php,
+ .../views/default/embed/web_services/content.php: continuation of embed modal
+ interfacing
+
+ * mod/ecml/views/default/ecml/admin/css.php,
+ .../views/default/embed/web_services/content.php,
+ mod/embed/views/default/embed/css.php: Beginnings of embed modal web-services
+ interfacing improvements.
+
+2010-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/river/group/create.php: river view tweaked
+
+ * mod/ecml/languages/en.php: missing string added
+
+2010-07-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php: Added instructions.
+
+ * mod/ecml/graphics/dailymotion.png, mod/ecml/graphics/googlemaps.png,
+ mod/ecml/graphics/redlasso_1.png, mod/ecml/graphics/redlasso_2.png,
+ mod/ecml/graphics/slideshare.png, mod/ecml/graphics/vimeo.png,
+ mod/ecml/graphics/youtube.png, mod/ecml/languages/en.php, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/help/blip.tv.php,
+ mod/ecml/views/default/ecml/help/dailymotion.php,
+ mod/ecml/views/default/ecml/help/googlemaps.php,
+ mod/ecml/views/default/ecml/help/livevideo.php,
+ mod/ecml/views/default/ecml/help/redlasso.php,
+ mod/ecml/views/default/ecml/help/slideshare.php,
+ mod/ecml/views/default/ecml/help/vimeo.php,
+ mod/ecml/views/default/ecml/help/youtube.php,
+ mod/ecml/views/default/ecml/keyword_help.php,
+ .../views/default/ecml/keywords/googlemaps.php,
+ mod/ecml/views/default/ecml/keywords/livevideo.php,
+ .../views/default/embed/web_services/content.php: Added ecml help for web
+ service embeds.
+
+2010-07-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/oauth/start.php: Adding a missed oauth library file.
+
+2010-07-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/README.txt, mod/embed/start.php,
+ mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/embed.php: Sorting tabs and upload sections
+ correctly by name instead of id. Passing internal_name to all views related
+ to embedding to allow correct calls to elggEmbedInsertContent() in overrided
+ layouts.
+
+ * .../views/default/embed/web_services/content.php: Added missing important
+ view for ECML web services embed.
+
+ * mod/ecml/README.txt, mod/ecml/ecml_functions.php, mod/ecml/start.php:
+ Pulled ECML regex into a constant. Added ecml_get_keywords(),
+ ecml_parse_string(), ecml_extract_keywords(), ecml_get_keyword_info(). Added
+ callback for resolving ECML given an embed code / URL. Removed unused page
+ setup hook. Added web services support. Updated docs.
+
+2010-07-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ .../views/default/groups/invitationrequests.php: Updated group forum forms
+ with an id
+
+ * .../views/default/river/object/blog/create.php,
+ .../default/river/object/bookmarks/create.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/river/object/thewire/create.php,
+ views/default/annotation/annotate.php: Moved all river entry metadata inside
+ span (pushed onto new line) and added relevant css
+
+2010-07-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added elgg_sort_3d_array_by_value(). I do this
+ often enough that a helper function will be nice.
+
+2010-07-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/manifest.xml: undo the last sitepages manifest change
+
+ * mod/sitepages/manifest.xml: site pages enabled
+
+ * mod/bookmarks/views/default/bookmarks/form.php: bookmark edit form access
+ options fixed for groups
+
+2010-07-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php,
+ mod/embed/views/default/embed/upload/content.php: Pulled out some language
+ strings.
+
+ * mod/file/views/default/file/embed_upload.php: Removed stray </div> that
+ broke IE and wasted 3 hours.
+
+ * mod/file/actions/upload.php, mod/file/start.php,
+ mod/file/views/default/file/embed_upload.php: Added upload support to file
+ embed.
+
+ * mod/file/start.php: Added embed support to file plugin.
+
+ * mod/embed/README.txt, mod/embed/languages/en.php, mod/embed/start.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/link.php: Updated documentation for embed.
+ Fixed bug passing internal_name for elggEmbedInsertContent(). Showing a
+ message if no embedable items are returned.
+
+2010-07-06 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Adding javascript and CSS to the walled garden
+ whitelist.
+
+2010-07-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/upload.php: Removed unused upload.php file in embed.
+
+2010-07-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Updated small button hover text
+
+ * mod/groups/activity.php: Added js to groups riverdashboard view
+
+2010-07-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php: small lang tweak
+
+2010-07-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/item/noaccess.php: removing stopgap from [3082] since
+ denied river items are now skipped
+
+ * views/default/river/dashboard.php: Removing another pre-1.5 view that is
+ no longer used
+
+ * views/default/river/relationship/friend/create.php: Closes #2121 - removed
+ view from pre-1.5 days
+
+ * views/default/river/wrapper.php: leftover view from pre-Elgg 1.5 days
+
+2010-07-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/start.php: removing navigation when editing for consistency
+
+2010-07-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/oauth/manifest.xml, mod/oauth/start.php,
+ mod/oauth/vendors/oauth/LICENSE,
+ mod/oauth/vendors/oauth/example/server/INSTALL,
+ .../vendors/oauth/example/server/core/init.php,
+ .../example/server/core/templates/inc/footer.tpl,
+ .../example/server/core/templates/inc/header.tpl,
+ .../oauth/example/server/core/templates/index.tpl,
+ .../oauth/example/server/core/templates/logon.tpl,
+ .../example/server/core/templates/register.tpl,
+ .../vendors/oauth/example/server/www/hello.php,
+ .../vendors/oauth/example/server/www/index.php,
+ .../vendors/oauth/example/server/www/logon.php,
+ .../vendors/oauth/example/server/www/oauth.php,
+ .../vendors/oauth/example/server/www/register.php,
+ .../oauth/example/server/www/services.xrds.php,
+ mod/oauth/vendors/oauth/library/OAuthDiscovery.php,
+ mod/oauth/vendors/oauth/library/OAuthException.php,
+ mod/oauth/vendors/oauth/library/OAuthRequest.php,
+ .../vendors/oauth/library/OAuthRequestLogger.php,
+ .../vendors/oauth/library/OAuthRequestSigner.php,
+ .../vendors/oauth/library/OAuthRequestVerifier.php,
+ mod/oauth/vendors/oauth/library/OAuthRequester.php,
+ mod/oauth/vendors/oauth/library/OAuthServer.php,
+ mod/oauth/vendors/oauth/library/OAuthStore.php,
+ .../library/body/OAuthBodyContentDisposition.php,
+ .../library/body/OAuthBodyMultipartFormdata.php,
+ .../vendors/oauth/library/discovery/xrds_parse.php,
+ .../vendors/oauth/library/discovery/xrds_parse.txt,
+ .../OAuthSignatureMethod.class.php, .../OAuthSignatureMethod_HMAC_SHA1.php,
+ .../signature_method/OAuthSignatureMethod_MD5.php,
+ .../OAuthSignatureMethod_PLAINTEXT.php,
+ .../OAuthSignatureMethod_RSA_SHA1.php,
+ .../library/store/OAuthStoreAbstract.class.php,
+ .../oauth/library/store/OAuthStoreAnyMeta.php,
+ .../oauth/library/store/OAuthStoreMySQL.php,
+ .../vendors/oauth/library/store/mysql/install.php,
+ .../vendors/oauth/library/store/mysql/mysql.sql,
+ .../oauth/test/discovery/xrds-fireeagle.xrds,
+ .../oauth/test/discovery/xrds-getsatisfaction.xrds,
+ .../oauth/test/discovery/xrds-magnolia.xrds,
+ mod/oauth/vendors/oauth/test/oauth_test.php: Moved oauth from plugins to core
+ since twitterservices is core and it depends upon oauth.
+
+2010-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php,
+ views/default/page_elements/html_begin_admin.php,
+ views/default/page_shells/admin.php: Updated admin area to be stand-alone.
+ Added a new html begin for admin area.
+
+2010-07-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/views.php,
+ views/default/page_shells/admin.php: added a parameter to the page_draw
+ function so you can specify a different page shell if required.
+
+2010-06-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/README.txt, mod/sitepages/start.php,
+ .../views/default/admin/site/sitepages.php,
+ .../views/default/settings/sitepages/edit.php: Updated README.txt for new
+ ECML. Moved settings to site category.
+
+ * mod/tinymce/views/default/embed/addcontentjs.php,
+ .../default/tinymce/embed_custom_insert_js.php: Embed's
+ elggEmbedInsertContent() now supports multiple losely coupled views to handle
+ custom insertion js. Plugin order no longer matters.
+
+ * mod/embed/start.php, mod/embed/views/default/embed/embed.php: Embed
+ correctly passes text area name to elggEmbedInsertContent().
+
+2010-06-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/views/default/sitepages/members.php,
+ mod/sitepages/views/default/sitepages/sidebar.php,
+ mod/sitepages/views/default/sitepages/welcome.php: Interface updates to
+ sitepages
+
+ * views/default/canvas/layouts/administration.php: Added more stand-alone
+ admin area rules
+
+ * mod/groups/start.php, mod/groups/views/default/forms/groups/edit.php,
+ views/default/page_elements/elgg_sidebar.php: Added classname to group edit
+ form, divider before edit buttons, and moved the invalid number preceding the
+ classname.
+
+ * mod/members/views/default/members/search.php: Added classnames to members
+ search form
+
+ * mod/members/views/default/members/search.php: Updated wrapper with new
+ naming
+
+2010-06-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/tagcloud.php: Added wrapper to tagcloud + title (for
+ theming)
+
+ * mod/profile/views/default/profile/admin_menu.php: Added float-clear on
+ owner-block links (for theming)
+
+2010-06-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Updated sidebar comments text overflow
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/object/blog.php: Updated the layout of a blogpost
+
+ * mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/groups/css.php: Updated the layout of a topic post
+ within group discussions
+
+2010-06-27 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/html_begin.php,
+ views/default/page_elements/owner_block.php: Closes #2307 #2308 - encoding
+ ampersands in RSS links
+
+2010-06-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/object/thewire/create.php: The wire can now have
+ comments and likes via the activity stream.
+
+2010-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css_ie.php: Updates to IE7 css
+
+ * views/default/admin/components/plugin.php: Updated advanced plugin strings
+ markup/classes
+
+2010-06-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/manifest.xml: notfications default state enabled
+
+ * mod/bookmarks/manifest.xml: changed the default state for bookmarks
+
+2010-06-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Added optional 4th argument 'class' for
+ elgg_instanceof().
+
+ * views/default/page_elements/content_header.php: Updated documentation for
+ page_elements/content_header
+
+2010-06-23 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/tabs.php: Only displaying navigation div when
+ tabs are present.
+
+2010-06-22 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/content_header.php: Allowing plugin authors to
+ override the default tabs (filters) displayed on the content header.
+
+2010-06-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, .../views/default/bookmarks/group_bookmarks.php,
+ .../views/default/groups/activity_latest.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/forum_latest.php: Added a 'view all' link to
+ group tools widgets.
+
+ * mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/groups/css.php: Updated groups/forums topic css
+
+2010-06-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/edittopic.php: forward to the correct place
+ after editing a topic
+
+ * mod/groups/actions/forums/addpost.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletepost.php,
+ mod/groups/actions/forums/editpost.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/activity.php,
+ mod/groups/addtopic.php, mod/groups/all.php, mod/groups/discussions.php,
+ mod/groups/edit.php, mod/groups/edittopic.php, mod/groups/forum.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forum/maintopic.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/object/groupforumtopic.php,
+ .../views/default/river/forum/topic/create.php: There was no point in group
+ discussions having their own comment annotations, better to use the generic
+ comments so this has been changed and a full group activity stream added. For
+ v1.8, there will need to be an upgrade script which will change
+ 'group_topic_post' -> 'generic_comment' and on all existing topics, take the
+ first annotation of type 'group_topic_post' and populate the topic's
+ description.
+
+ * .../views/default/river/item/wrapper.php: group discussion no longer needs
+ this check as it will be possible to comment on discussions from the activity
+ stream.
+
+2010-06-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php: Ref #2294 - group creation action also needs
+ page owner set
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/join.php,
+ mod/groups/actions/joinrequest.php, mod/groups/actions/leave.php: Refs #2294
+ - groups_write_acl_plugin_hook depends on page owner since [5782] and group
+ actions seem to end up with the group owner as the page owner. This is a
+ temporary fix for this issue. All group activity since [5782] on installs now
+ have corrupted group access lists. I have a script to fix this that I can
+ share.
+
+ * mod/groups/actions/join.php: Fixed broken join action for closed groups -
+ encoding issue on forward URL
+
+2010-06-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/views.php: included an option to display existing comments but
+ not show the new comment form.
+
+2010-06-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2010061501.php, engine/lib/views.php,
+ engine/start.php, mod/groups/actions/invite.php, version.php: Merged
+ r6506:6509 from 1.7 to trunk.
+
+ * engine/lib/pagehandler.php, friends/add.php, friends/collections.php,
+ friends/edit.php, friends/index.php, friends/of.php: Merged friends pages
+ fixes in r6501:6503 from 1.7 to trunk.
+
+ * engine/lib/notification.php, engine/lib/users.php, languages/en.php:
+ Merging r6497:6499 to trunk.
+
+ * mod/groups/actions/featured.php,
+ mod/groups/views/default/groups/grouplisting.php: Merged group featuring
+ fixes to trunk [6493]
+
+2010-06-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/pages/views/default/pages/breadcrumbs.php: Updated Pages breadcrumbs
+ markup to use generic breadcrumb style
+
+2010-06-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/pages/start.php: Making menu link for pages go to all pages instead of
+ owned pages.
+
+ * mod/pages/actions/pages/delete.php,
+ mod/pages/actions/pages/editwelcome.php, mod/pages/edit.php,
+ mod/pages/history.php, mod/pages/index.php, mod/pages/languages/en.php,
+ mod/pages/new.php, mod/pages/pagesTree.php, mod/pages/start.php,
+ mod/pages/view.php, mod/pages/views/default/annotation/icon.php,
+ mod/pages/views/default/annotation/page.php,
+ .../views/default/icon/object/page/medium.php,
+ mod/pages/views/default/icon/object/page/small.php,
+ .../views/default/icon/object/page_top/medium.php,
+ .../views/default/icon/object/page_top/small.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/pagegallery.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/pages/sidebar/sidebarthis.php,
+ mod/pages/views/default/pages/sidebar/starter.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/sidebar/wrapper.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/annotate.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/page/update.php,
+ .../default/river/object/page_top/annotate.php,
+ .../views/default/river/object/page_top/create.php,
+ .../views/default/river/object/page_top/update.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php: Quick and dirty changes to pages to work on 1.8's
+ layout.
+
+ * engine/start.php: Making sure to load all plugins when doing an upgrade to
+ pull in CSS changes and allow plugins to register for the upgrade hook.
+
+2010-06-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/views.php, engine/start.php: Merged
+ [6485] and [6486] to trunk.
+
+2010-06-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Merged 6482 to trunk.
+
+2010-06-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/register.php, engine/lib/access.php, engine/lib/users.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/languages/en.php:
+ Merged r6362:6366 from 1.7 to trunk.
+
+2010-06-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: Always show access level when
+ listing blogs, regardless of canEdit().
+
+ * mod/blog/blog_lib.php: Removing old time_created fudging for blogs. It
+ doens't work right.
+
+ * mod/profile/languages/en.php, mod/profile/profile_lib.php,
+ mod/profile/start.php, .../views/default/profile/profile_content.php,
+ .../default/profile/profile_contents/activity.php,
+ .../profile/profile_contents/commentwall.php,
+ .../default/profile/profile_contents/details.php,
+ .../default/profile/profile_contents/friends.php,
+ .../default/profile/profile_contents/sidebar.php,
+ .../default/profile/profile_contents/twitter.php,
+ mod/profile/views/default/profile/sidebar.php: Some code cleanup on profile
+ plugin. Added wrapper view for profile content. Added ECML for profile
+ content. Moved profile/profile_content/sidebar to profile/sidebar
+
+ * mod/groups/languages/en.php: Slight code cleanup in groups langauges.
+ Added string for group discussion ECML option.
+
+ * mod/groups/start.php: Added group forums to ECML views to parse.
+
+ * mod/bookmarks/languages/en.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php: Small code cleanup on bookmarks.
+ Added better logic for determining the username to use when adding a bookmark
+ via the bookmarklet.
+
+ * .../views/default/river/item/wrapper.php: Activity stream comments now
+ show up outside of the hidden div so you can see them when on the like tab.
+
+ * mod/riverdashboard/languages/en.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php: Added "Show less" on activity stream
+ comments.
+
+2010-06-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/css.php: Updates to embed interface to make
+ it theme agnostic in core
+
+ * .../views/default/riverdashboard/css.php: Updated inline comment form css
+ height - for a smoother slide animation
+
+2010-06-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php: Updated administration
+ area css with more styles to make it totally stand-alone
+
+ * mod/profile/views/default/profile/css.php: Small update to latest tweets
+ list style
+
+ * .../profile/profile_contents/commentwall.php: Added wrapper to profile
+ page commentwall
+
+2010-06-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php: ECML is
+ parsed on the activity stream.
+
+2010-06-10 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/endpoint/get_comments.php,
+ .../views/default/river/item/wrapper.php: Adding "twitter_anywhere" class to
+ Conversation and Riverdashboard posts.
+
+ * views/default/input/userpicker.php: Performing checks to handle empty
+ arrays and malformed values.
+
+2010-06-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/views/default/object/bookmarks.php: Moved view extend call -
+ so it's for all users (not just object owner), and added likes to bookmarks
+ (as we already have it in the activity stream)
+
+2010-06-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/bookmarks/group_bookmarks.php: group bookmarks now
+ provides a link to create if none exist
+
+ * mod/groups/views/default/groups/forum_latest.php: if there is no group
+ discussion, provide a link to create a topic
+
+2010-06-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/js.php: Added a 'show less' link. [Still
+ needs a js function adding to collapse list]
+
+ * mod/groups/all.php, .../views/default/groups/group_sort_menu.php: Updated
+ Groups tabs so you land on newest groups tab rather than discussion.
+
+2010-06-09 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: Pre-populating userpicker list when
+ values are passed.
+
+2010-06-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/upload/content.php: Updated embed modal
+ listings with timestamp and text formatting / css.
+
+2010-06-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/gallery.php,
+ mod/embed/views/default/embed/item/list.php: Embed hooks now accept icon_size
+ for displaying items in gallery / list view.
+
+ * .../views/default/riverdashboard/js.php: Removing debug call...I've been
+ very bad about this!
+
+ * mod/embed/views/default/embed/item/gallery.php: Embed default gallery list
+ uses medium icon instead of tiny.
+
+2010-06-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/views/default/ecml/keywords/entity.php,
+ mod/embed/views/default/embed/css.php: Updated embeded object links ui
+
+ * mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php,
+ mod/embed/views/default/embed/upload/content.php: Updated embed modal with
+ wrappers & classnames for each pane
+
+ * mod/embed/views/default/embed/css.php: Updated embed modal with an initial
+ default size
+
+ * mod/ecml/views/default/ecml/keywords/entity.php: Updated ecml inline
+ embeded document links to have a classname
+
+ * views/default/css.php: Updated core css download button
+
+2010-06-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/profile/profile_navigation.php: Properly extending
+ profile navigation view.
+
+2010-06-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/endpoint/get_likes.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/js.php: Ajaxified likes view on activity
+ stream.
+
+2010-06-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/groups/groupprofile.php: Cleaning up groups
+ navigation. Action buttons have replaced the submenu links, helping to
+ standardize user experience. Added a membership-dependent breadcrumb trail.
+
+2010-06-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/profile/profile_ownerblock.php: profile owmer block link
+ fixed
+
+2010-06-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/views/default/embed/embed.php: removing debug output.
+
+ * mod/embed/views/default/embed/embed.php: Fixed invalid variable name that
+ caused embed to ignore custom views for embed content.
+
+ * mod/embed/views/default/embed/embed.php: Upload tab selected when
+ uploading in embed modal.
+
+2010-06-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Updated documents. Removed large and small document
+ icons - we now just use the very small ones from the old filter directory.
+ Updated doc's list view and download button.
+
+ * .../views/default/riverdashboard/css.php: Updated riverdashboard more
+ comments link
+
+ * views/default/css.php, views/default/css_ie.php,
+ views/default/js/initialise_elgg.php: Updated display and position of likes
+ lists. Added js to dismiss list if a click outside the list is detected, also
+ added js so only one list is viewable at a time.
+
+2010-06-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_sidebar.php: Reverting [6371] because
+ Cash already took care of it.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php:
+ elgg_get_entities_from_metadata() and egef_annotations() support singular ->
+ plural rewrites. (Why didn't I add this originally?!)
+
+2010-06-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/endpoint/get_comments.php,
+ mod/riverdashboard/index.php, mod/riverdashboard/languages/en.php,
+ mod/riverdashboard/start.php, .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/js.php: Minimal attempt to bring
+ riverdashboard up to code standards. Fixed comment count in +N more string.
+ Added ajax grabbing of all comments when clicking more link.
+
+ * mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/save.php: Added metadata 'new_post' when autosaving
+ blogs to help with river / revision logic. Autosaved blogs now correctly
+ show up in river and don't create a revision upon initial save.
+
+ * mod/blog/views/default/blog/forms/edit.php: Fix for displaying auto save
+ time. HTML was changed without relevent JS updates.
+
+2010-06-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, .../views/default/widgets/a_users_groups/view.php:
+ Removing deprecated calls to get_entities_from_relationship() from core code.
+
+
+2010-06-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php: group create river action moved
+
+2010-06-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topicposts.php,
+ views/default/annotation/generic_comment.php: Added a classname to generic
+ comment and forum topic posts anchors - for theming purposes.
+
+2010-06-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/languages/en.php,
+ .../notifications/subscriptions/collections.php: Updating Notifications
+ language file.
+
+2010-06-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php, mod/groups/languages/en.php,
+ mod/groups/views/default/river/group/create.php: creating a new group now
+ displays in the activity stream.
+
+ * mod/groups/languages/en.php,
+ .../views/default/river/forum/topic/create.php: updated the group discussion
+ river view
+
+2010-06-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, views/default/admin/users/find.php: Removing user
+ "Find" from Admin area. Closes #2216
+
+2010-06-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: lang tweak
+
+ * mod/groups/actions/featured.php, mod/groups/languages/en.php,
+ mod/groups/views/default/groups/grouplisting.php: featuring and unfeaturing
+ groups now works
+
+ * mod/ecml/start.php: don't extend input fields yet with ecml as it is not
+ designed as an end user tool
+
+ * mod/blog/views/default/object/blog.php: blog tags will not display the
+ class if no tags exist
+
+ * actions/likes/add.php, languages/en.php: missing lang strings added
+
+2010-06-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_sidebar.php: Added elgg_sidebar/extend
+ view.
+
+2010-06-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php: Added missing language string for embed.
+
+ * mod/embed/start.php, mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/upload/content.php: Added first loosely coupled
+ upload support to embed.
+
+2010-06-04 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/users/find.php, views/default/css.php: Updating Find
+ User in the Admin section to use the livesearch user picker.
+
+2010-06-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2010060401.php,
+ .../views/default/widgets/a_users_groups/view.php, version.php: Merged
+ r6349:6351 from 1.7 to trunk.
+
+ * engine/lib/elgglib.php, engine/lib/upgrades/2010060101.php,
+ engine/start.php, .../views/default/defaultwidgets/editor.php,
+ mod/notifications/start.php, mod/profile/views/default/profile/icon.php,
+ simplecache/view.php, upgrade.php, version.php,
+ views/default/canvas/layouts/widgets.php: Merge r6301:6338 from 1.7 to trunk.
+
+
+2010-06-04 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/start.php: Allowing new users to validate email
+ addresses if the site is a Private Network.
+
+2010-06-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/invite.php: Added id to invite
+ friends to group form (for theming purposes).
+
+ * .../profile/profile_contents/commentwall.php: Removed profile content
+ wrapper from comment wall content.
+
+2010-06-03 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php: Updating views to no
+ longer parse usernames as this is handled directly thru Mentions.
+
+2010-06-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/README.txt, mod/ecml/ecml_functions.php, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/keywords/entity.php: Added entity keyword to
+ ECML. (NB: The old entity keyword is now entity_list)
+
+2010-06-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/views/default/input/longtext.php: Removed one unused and one
+ absent plugin from tinyMCE init that was causing problems in some browsers.
+
+2010-06-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CODING.txt: Updated CODING.txt with more best practices. Simplified some
+ of the examples.
+
+ * mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/gallery.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php: Moved most of the logic for
+ embed viewing into a single place. Added gallery support (still no CSS).
+
+2010-06-02 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Mathematical calculations on annotations will
+ return false for non-existent entity subtypes.
+
+ * engine/lib/tags.php, languages/en.php, mod/tagcloud/start.php,
+ mod/tagcloud/views/default/tagcloud/extend.php,
+ views/default/output/tagcloud.php: Moving new Site Tags functionality out of
+ Tagcloud plugin and into core.
+
+ * engine/lib/annotations.php, engine/tests/objects/entities.php: Requesting
+ annotations from a non-existent subtype will now return nothing instead of
+ everything. This functionality is required to preserve context.
+
+2010-06-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/languages/en.php: Added missing language strings for blog.
+
+ * views/default/entities/entity_listing.php,
+ views/default/entities/gallery_listing.php: Updated documentation for
+ entity_listing and gallery_listing.
+
+ * views/default/entities/gallery_listing.php: Updated gallery_listing.php
+ view. No CSS yet.
+
+ * mod/embed/embed.php, mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/media.php,
+ mod/embed/views/default/embed/pagination.php,
+ mod/embed/views/default/embed/simpletype.php,
+ mod/embed/views/default/embed/tabs.php,
+ mod/embed/views/default/embed/upload.php: Removing unused views and files
+ from embed.
+
+2010-06-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/views/default/tagcloud/extend.php: Updated tagcloud link
+
+2010-06-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/languages/en.php, mod/embed/views/default/embed/embed.php:
+ Standardized embed language file. Fixed title language string for embed
+ modal.
+
+2010-06-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/walled_garden_background_top.gif,
+ _graphics/walled_garden_backgroundfull_bottom.gif,
+ _graphics/walled_garden_backgroundfull_top.gif,
+ .../default/account/forms/login_walled_garden.php,
+ views/default/account/forms/register.php, views/default/css.php,
+ views/default/page_shells/walled_garden.php: Updated private network
+ (previously walled garden) login/register/lost password to be independent of
+ any theme running, and improved interface.
+
+2010-06-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php: removed redundant view call
+
+2010-06-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/start.php: Updated all site Tagcloud to use 2column canvas.
+
+2010-06-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/embed/README.txt, mod/embed/embed.php, mod/embed/manifest.xml,
+ mod/embed/start.php, mod/embed/views/default/embed/addcontentjs.php,
+ mod/embed/views/default/embed/embed.php,
+ mod/embed/views/default/embed/item/list.php,
+ mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/embed/layouts/gallery.php,
+ mod/embed/views/default/embed/layouts/list.php,
+ mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/media.php,
+ mod/embed/views/default/embed/upload.php: First pass at a loosely couple
+ embed plugin using ECML.
+
+2010-06-01 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/account/forms/login_walled_garden.php, views/default/css.php:
+ Adding a "Register" link to the Walled Garden login screen. This mimics
+ pre-existing "Lost Password" functionality without redirecting to an internal
+ page.
+
+2010-06-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Pagination uses
+ elgg_get_array_value().
+
+ * engine/lib/elgglib.php: Added elgg_get_array_value() helper function.
+
+ * views/default/navigation/pagination.php: Fixed bug in detecting and using
+ baseurl in navingation/pagination view.
+
+ * views/default/entities/entity_listing.php: Updated documentation for
+ entities/entity_listing view.
+
+2010-06-01 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/start.php, mod/tagcloud/views/default/tagcloud/extend.php,
+ views/default/output/tagcloud.php: Extending default tagcloud view to include
+ a link to all site tags. Also fixing a bug where errant "," was prepended to
+ tag list.
+
+2010-06-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: get_input() defaults to NULL instead of empty
+ string. Works better with isset().
+
+ * mod/tinymce/tinymce_content.css,
+ .../themes/advanced/skins/default/content.css: Forgot to svn add
+ tinymce_content.css. Added tinymce_content.css and reverted [6300] to allow
+ for easier tinymce upgrades.
+
+2010-06-01 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php, mod/blog/views/default/blog/sidebar_menu.php:
+ Restricting tag cloud display on Blogs and Documents by context.
+
+2010-06-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/start.php, mod/sitepages/views/default/sitepages/css.php,
+ mod/sitepages/views/default/sitepages/sidebar.php,
+ mod/sitepages/views/default/sitepages/welcome.php: Updated Sitepages homepage
+ markup with clearfloat, content wrappers and associated css.
+
+ * mod/profile/views/default/profile/css.php: Updated avatar user-menu
+ font-style.
+
+ * .../themes/advanced/skins/default/content.css: TinyMCE default editor
+ font-size increased to match preview and publish size.
+
+2010-05-31 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php: remove the filter header if not logged in
+
+ * mod/bookmarks/languages/en.php,
+ .../default/river/object/bookmarks/create.php: bookmarks river view altered
+ for groups
+
+2010-05-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: make sure logged out river display correctly
+
+ * engine/lib/river.php: small tweak to the new river
+
+ * mod/bookmarks/start.php: removed a breadcrumb view when on the all page
+
+ * mod/bookmarks/languages/en.php: change community to group for consistency
+
+2010-05-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/output.php: Merged r6263:6271 to trunk.
+
+
+ * engine/handlers/pagehandler.php, engine/lib/pagehandler.php,
+ mod/tinymce/views/default/input/longtext.php,
+ views/default/input/pulldown.php: Merged [6248] - [6252] into trunk.
+
+ * engine/lib/upgrades/2010052601.php, mod/groups/actions/edit.php,
+ mod/groups/views/default/forms/groups/edit.php, version.php: Merged [6223] -
+ [6228] into trunk.
+
+ * mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/editpost.php: Merging [6091] to trunk.
+
+ * mod/tinymce/languages/en.php, mod/tinymce/readme.txt,
+ mod/tinymce/start.php, mod/tinymce/tinymce/changelog.txt,
+ mod/tinymce/tinymce/jscripts/tiny_mce/langs/en.js,
+ mod/tinymce/tinymce/jscripts/tiny_mce/license.txt,
+ .../jscripts/tiny_mce/plugins/advhr/css/advhr.css,
+ .../tiny_mce/plugins/advhr/editor_plugin.js,
+ .../tiny_mce/plugins/advhr/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advhr/js/rule.js,
+ .../tiny_mce/plugins/advhr/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advhr/rule.htm,
+ .../tiny_mce/plugins/advimage/css/advimage.css,
+ .../tiny_mce/plugins/advimage/editor_plugin.js,
+ .../tiny_mce/plugins/advimage/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advimage/image.htm,
+ .../tiny_mce/plugins/advimage/img/sample.gif,
+ .../jscripts/tiny_mce/plugins/advimage/js/image.js,
+ .../tiny_mce/plugins/advimage/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlink/css/advlink.css,
+ .../tiny_mce/plugins/advlink/editor_plugin.js,
+ .../tiny_mce/plugins/advlink/editor_plugin_src.js,
+ .../tiny_mce/plugins/advlink/js/advlink.js,
+ .../tiny_mce/plugins/advlink/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advlink/link.htm,
+ .../tiny_mce/plugins/autosave/editor_plugin.js,
+ .../tiny_mce/plugins/autosave/editor_plugin_src.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin_src.js,
+ .../tiny_mce/plugins/compat2x/editor_plugin.js,
+ .../tiny_mce/plugins/compat2x/editor_plugin_src.js,
+ .../tiny_mce/plugins/contextmenu/editor_plugin.js,
+ .../plugins/contextmenu/editor_plugin_src.js,
+ .../plugins/directionality/editor_plugin.js,
+ .../plugins/directionality/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/editor_plugin.js,
+ .../tiny_mce/plugins/emotions/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/emotions.htm,
+ .../tiny_mce/plugins/emotions/img/smiley-cool.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-cry.gif,
+ .../plugins/emotions/img/smiley-embarassed.gif,
+ .../plugins/emotions/img/smiley-foot-in-mouth.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-frown.gif,
+ .../plugins/emotions/img/smiley-innocent.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-kiss.gif,
+ .../plugins/emotions/img/smiley-laughing.gif,
+ .../plugins/emotions/img/smiley-money-mouth.gif,
+ .../plugins/emotions/img/smiley-sealed.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-smile.gif,
+ .../plugins/emotions/img/smiley-surprised.gif,
+ .../plugins/emotions/img/smiley-tongue-out.gif,
+ .../plugins/emotions/img/smiley-undecided.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-wink.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-yell.gif,
+ .../tiny_mce/plugins/emotions/js/emotions.js,
+ .../tiny_mce/plugins/emotions/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/example/dialog.htm,
+ .../tiny_mce/plugins/example/editor_plugin.js,
+ .../tiny_mce/plugins/example/editor_plugin_src.js,
+ .../tiny_mce/plugins/example/img/example.gif,
+ .../jscripts/tiny_mce/plugins/example/js/dialog.js,
+ .../jscripts/tiny_mce/plugins/example/langs/en.js,
+ .../tiny_mce/plugins/example/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullpage/css/fullpage.css,
+ .../tiny_mce/plugins/fullpage/editor_plugin.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/fullpage.htm,
+ .../tiny_mce/plugins/fullpage/js/fullpage.js,
+ .../tiny_mce/plugins/fullpage/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullscreen/editor_plugin.js,
+ .../plugins/fullscreen/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullscreen/fullscreen.htm,
+ .../tiny_mce/plugins/iespell/editor_plugin.js,
+ .../tiny_mce/plugins/iespell/editor_plugin_src.js,
+ .../tiny_mce/plugins/inlinepopups/editor_plugin.js,
+ .../plugins/inlinepopups/editor_plugin_src.js,
+ .../inlinepopups/skins/clearlooks2/img/alert.gif,
+ .../inlinepopups/skins/clearlooks2/img/button.gif,
+ .../inlinepopups/skins/clearlooks2/img/buttons.gif,
+ .../inlinepopups/skins/clearlooks2/img/confirm.gif,
+ .../inlinepopups/skins/clearlooks2/img/corners.gif,
+ .../skins/clearlooks2/img/horizontal.gif,
+ .../skins/clearlooks2/img/vertical.gif,
+ .../inlinepopups/skins/clearlooks2/window.css,
+ .../tiny_mce/plugins/inlinepopups/template.htm,
+ .../plugins/insertdatetime/editor_plugin.js,
+ .../plugins/insertdatetime/editor_plugin_src.js,
+ .../tiny_mce/plugins/layer/editor_plugin.js,
+ .../tiny_mce/plugins/layer/editor_plugin_src.js,
+ .../tiny_mce/plugins/media/css/content.css,
+ .../jscripts/tiny_mce/plugins/media/css/media.css,
+ .../tiny_mce/plugins/media/editor_plugin.js,
+ .../tiny_mce/plugins/media/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/img/flash.gif,
+ .../tiny_mce/plugins/media/img/flv_player.swf,
+ .../tiny_mce/plugins/media/img/quicktime.gif,
+ .../tiny_mce/plugins/media/img/realmedia.gif,
+ .../tiny_mce/plugins/media/img/shockwave.gif,
+ .../jscripts/tiny_mce/plugins/media/img/trans.gif,
+ .../tiny_mce/plugins/media/img/windowsmedia.gif,
+ .../jscripts/tiny_mce/plugins/media/js/embed.js,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/media/media.htm,
+ .../tiny_mce/plugins/nonbreaking/editor_plugin.js,
+ .../plugins/nonbreaking/editor_plugin_src.js,
+ .../tiny_mce/plugins/noneditable/editor_plugin.js,
+ .../plugins/noneditable/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/css/content.css,
+ .../tiny_mce/plugins/pagebreak/editor_plugin.js,
+ .../plugins/pagebreak/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/img/pagebreak.gif,
+ .../tiny_mce/plugins/pagebreak/img/trans.gif,
+ .../jscripts/tiny_mce/plugins/paste/blank.htm,
+ .../jscripts/tiny_mce/plugins/paste/css/blank.css,
+ .../tiny_mce/plugins/paste/css/pasteword.css,
+ .../tiny_mce/plugins/paste/editor_plugin.js,
+ .../tiny_mce/plugins/paste/editor_plugin_src.js,
+ .../tiny_mce/plugins/paste/js/pastetext.js,
+ .../tiny_mce/plugins/paste/js/pasteword.js,
+ .../tiny_mce/plugins/paste/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/paste/pastetext.htm,
+ .../jscripts/tiny_mce/plugins/paste/pasteword.htm,
+ .../tiny_mce/plugins/preview/editor_plugin.js,
+ .../tiny_mce/plugins/preview/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/preview/example.html,
+ .../tiny_mce/plugins/preview/jscripts/embed.js,
+ .../tiny_mce/plugins/print/editor_plugin.js,
+ .../tiny_mce/plugins/print/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/safari/blank.htm,
+ .../tiny_mce/plugins/safari/editor_plugin.js,
+ .../tiny_mce/plugins/safari/editor_plugin_src.js,
+ .../tiny_mce/plugins/save/editor_plugin.js,
+ .../tiny_mce/plugins/save/editor_plugin_src.js,
+ .../plugins/searchreplace/css/searchreplace.css,
+ .../plugins/searchreplace/editor_plugin.js,
+ .../plugins/searchreplace/editor_plugin_src.js,
+ .../plugins/searchreplace/js/searchreplace.js,
+ .../tiny_mce/plugins/searchreplace/langs/en_dlg.js,
+ .../plugins/searchreplace/searchreplace.htm,
+ .../tiny_mce/plugins/spellchecker/css/content.css,
+ .../tiny_mce/plugins/spellchecker/editor_plugin.js,
+ .../plugins/spellchecker/editor_plugin_src.js,
+ .../tiny_mce/plugins/spellchecker/img/wline.gif,
+ .../jscripts/tiny_mce/plugins/style/css/props.css,
+ .../tiny_mce/plugins/style/editor_plugin.js,
+ .../tiny_mce/plugins/style/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/style/js/props.js,
+ .../tiny_mce/plugins/style/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/style/props.htm,
+ .../jscripts/tiny_mce/plugins/table/cell.htm,
+ .../jscripts/tiny_mce/plugins/table/css/cell.css,
+ .../jscripts/tiny_mce/plugins/table/css/row.css,
+ .../jscripts/tiny_mce/plugins/table/css/table.css,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/cell.js,
+ .../tiny_mce/plugins/table/js/merge_cells.js,
+ .../jscripts/tiny_mce/plugins/table/js/row.js,
+ .../jscripts/tiny_mce/plugins/table/js/table.js,
+ .../tiny_mce/plugins/table/langs/en_dlg.js,
+ .../tiny_mce/plugins/table/merge_cells.htm,
+ .../jscripts/tiny_mce/plugins/table/row.htm,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../jscripts/tiny_mce/plugins/template/blank.htm,
+ .../tiny_mce/plugins/template/css/template.css,
+ .../tiny_mce/plugins/template/editor_plugin.js,
+ .../tiny_mce/plugins/template/editor_plugin_src.js,
+ .../tiny_mce/plugins/template/js/template.js,
+ .../tiny_mce/plugins/template/langs/en_dlg.js,
+ .../tiny_mce/plugins/template/template.htm,
+ .../tiny_mce/plugins/visualchars/editor_plugin.js,
+ .../plugins/visualchars/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm,
+ .../tiny_mce/plugins/xhtmlxtras/acronym.htm,
+ .../tiny_mce/plugins/xhtmlxtras/attributes.htm,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm,
+ .../tiny_mce/plugins/xhtmlxtras/css/attributes.css,
+ .../tiny_mce/plugins/xhtmlxtras/css/popup.css,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/del.htm,
+ .../tiny_mce/plugins/xhtmlxtras/editor_plugin.js,
+ .../plugins/xhtmlxtras/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm,
+ .../tiny_mce/plugins/xhtmlxtras/js/abbr.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/acronym.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/attributes.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/cite.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js,
+ .../plugins/xhtmlxtras/js/element_common.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js,
+ .../tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/about.htm,
+ .../jscripts/tiny_mce/themes/advanced/anchor.htm,
+ .../jscripts/tiny_mce/themes/advanced/charmap.htm,
+ .../tiny_mce/themes/advanced/color_picker.htm,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/advanced/image.htm,
+ .../tiny_mce/themes/advanced/img/colorpicker.jpg,
+ .../tiny_mce/themes/advanced/img/icons.gif,
+ .../jscripts/tiny_mce/themes/advanced/js/about.js,
+ .../jscripts/tiny_mce/themes/advanced/js/anchor.js,
+ .../tiny_mce/themes/advanced/js/charmap.js,
+ .../tiny_mce/themes/advanced/js/color_picker.js,
+ .../jscripts/tiny_mce/themes/advanced/js/image.js,
+ .../jscripts/tiny_mce/themes/advanced/js/link.js,
+ .../tiny_mce/themes/advanced/js/source_editor.js,
+ .../jscripts/tiny_mce/themes/advanced/langs/en.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/link.htm,
+ .../themes/advanced/skins/default/content.css,
+ .../themes/advanced/skins/default/dialog.css,
+ .../themes/advanced/skins/default/img/buttons.png,
+ .../themes/advanced/skins/default/img/items.gif,
+ .../advanced/skins/default/img/menu_arrow.gif,
+ .../advanced/skins/default/img/menu_check.gif,
+ .../themes/advanced/skins/default/img/progress.gif,
+ .../themes/advanced/skins/default/img/tabs.gif,
+ .../tiny_mce/themes/advanced/skins/default/ui.css,
+ .../themes/advanced/skins/o2k7/content.css,
+ .../tiny_mce/themes/advanced/skins/o2k7/dialog.css,
+ .../themes/advanced/skins/o2k7/img/button_bg.png,
+ .../advanced/skins/o2k7/img/button_bg_black.png,
+ .../advanced/skins/o2k7/img/button_bg_silver.png,
+ .../tiny_mce/themes/advanced/skins/o2k7/ui.css,
+ .../themes/advanced/skins/o2k7/ui_black.css,
+ .../themes/advanced/skins/o2k7/ui_silver.css,
+ .../tiny_mce/themes/advanced/source_editor.htm,
+ .../tiny_mce/themes/simple/editor_template.js,
+ .../tiny_mce/themes/simple/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/simple/img/icons.gif,
+ .../jscripts/tiny_mce/themes/simple/langs/en.js,
+ .../themes/simple/skins/default/content.css,
+ .../tiny_mce/themes/simple/skins/default/ui.css,
+ .../tiny_mce/themes/simple/skins/o2k7/content.css,
+ .../themes/simple/skins/o2k7/img/button_bg.png,
+ .../tiny_mce/themes/simple/skins/o2k7/ui.css,
+ mod/tinymce/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_popup.js,
+ .../jscripts/tiny_mce/utils/editable_selects.js,
+ .../tinymce/jscripts/tiny_mce/utils/form_utils.js,
+ .../tinymce/jscripts/tiny_mce/utils/mctabs.js,
+ .../tinymce/jscripts/tiny_mce/utils/validate.js,
+ mod/tinymce/vendor/tinymce/changelog.txt,
+ .../vendor/tinymce/jscripts/tiny_mce/langs/en.js,
+ .../vendor/tinymce/jscripts/tiny_mce/license.txt,
+ .../jscripts/tiny_mce/plugins/advhr/css/advhr.css,
+ .../tiny_mce/plugins/advhr/editor_plugin.js,
+ .../tiny_mce/plugins/advhr/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advhr/js/rule.js,
+ .../tiny_mce/plugins/advhr/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advhr/rule.htm,
+ .../tiny_mce/plugins/advimage/css/advimage.css,
+ .../tiny_mce/plugins/advimage/editor_plugin.js,
+ .../tiny_mce/plugins/advimage/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advimage/image.htm,
+ .../tiny_mce/plugins/advimage/img/sample.gif,
+ .../jscripts/tiny_mce/plugins/advimage/js/image.js,
+ .../tiny_mce/plugins/advimage/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlink/css/advlink.css,
+ .../tiny_mce/plugins/advlink/editor_plugin.js,
+ .../tiny_mce/plugins/advlink/editor_plugin_src.js,
+ .../tiny_mce/plugins/advlink/js/advlink.js,
+ .../tiny_mce/plugins/advlink/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advlink/link.htm,
+ .../tiny_mce/plugins/advlist/editor_plugin.js,
+ .../tiny_mce/plugins/advlist/editor_plugin_src.js,
+ .../tiny_mce/plugins/autoresize/editor_plugin.js,
+ .../plugins/autoresize/editor_plugin_src.js,
+ .../tiny_mce/plugins/autosave/editor_plugin.js,
+ .../tiny_mce/plugins/autosave/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/autosave/langs/en.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin_src.js,
+ .../tiny_mce/plugins/contextmenu/editor_plugin.js,
+ .../plugins/contextmenu/editor_plugin_src.js,
+ .../plugins/directionality/editor_plugin.js,
+ .../plugins/directionality/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/editor_plugin.js,
+ .../tiny_mce/plugins/emotions/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/emotions.htm,
+ .../tiny_mce/plugins/emotions/img/smiley-cool.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-cry.gif,
+ .../plugins/emotions/img/smiley-embarassed.gif,
+ .../plugins/emotions/img/smiley-foot-in-mouth.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-frown.gif,
+ .../plugins/emotions/img/smiley-innocent.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-kiss.gif,
+ .../plugins/emotions/img/smiley-laughing.gif,
+ .../plugins/emotions/img/smiley-money-mouth.gif,
+ .../plugins/emotions/img/smiley-sealed.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-smile.gif,
+ .../plugins/emotions/img/smiley-surprised.gif,
+ .../plugins/emotions/img/smiley-tongue-out.gif,
+ .../plugins/emotions/img/smiley-undecided.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-wink.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-yell.gif,
+ .../tiny_mce/plugins/emotions/js/emotions.js,
+ .../tiny_mce/plugins/emotions/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/example/dialog.htm,
+ .../tiny_mce/plugins/example/editor_plugin.js,
+ .../tiny_mce/plugins/example/editor_plugin_src.js,
+ .../tiny_mce/plugins/example/img/example.gif,
+ .../jscripts/tiny_mce/plugins/example/js/dialog.js,
+ .../jscripts/tiny_mce/plugins/example/langs/en.js,
+ .../tiny_mce/plugins/example/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullpage/css/fullpage.css,
+ .../tiny_mce/plugins/fullpage/editor_plugin.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/fullpage.htm,
+ .../tiny_mce/plugins/fullpage/js/fullpage.js,
+ .../tiny_mce/plugins/fullpage/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullscreen/editor_plugin.js,
+ .../plugins/fullscreen/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullscreen/fullscreen.htm,
+ .../tiny_mce/plugins/iespell/editor_plugin.js,
+ .../tiny_mce/plugins/iespell/editor_plugin_src.js,
+ .../tiny_mce/plugins/inlinepopups/editor_plugin.js,
+ .../plugins/inlinepopups/editor_plugin_src.js,
+ .../inlinepopups/skins/clearlooks2/img/alert.gif,
+ .../inlinepopups/skins/clearlooks2/img/button.gif,
+ .../inlinepopups/skins/clearlooks2/img/buttons.gif,
+ .../inlinepopups/skins/clearlooks2/img/confirm.gif,
+ .../inlinepopups/skins/clearlooks2/img/corners.gif,
+ .../skins/clearlooks2/img/horizontal.gif,
+ .../skins/clearlooks2/img/vertical.gif,
+ .../inlinepopups/skins/clearlooks2/window.css,
+ .../tiny_mce/plugins/inlinepopups/template.htm,
+ .../plugins/insertdatetime/editor_plugin.js,
+ .../plugins/insertdatetime/editor_plugin_src.js,
+ .../tiny_mce/plugins/layer/editor_plugin.js,
+ .../tiny_mce/plugins/layer/editor_plugin_src.js,
+ .../tiny_mce/plugins/legacyoutput/editor_plugin.js,
+ .../plugins/legacyoutput/editor_plugin_src.js,
+ .../tiny_mce/plugins/media/css/content.css,
+ .../jscripts/tiny_mce/plugins/media/css/media.css,
+ .../tiny_mce/plugins/media/editor_plugin.js,
+ .../tiny_mce/plugins/media/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/img/flash.gif,
+ .../tiny_mce/plugins/media/img/flv_player.swf,
+ .../tiny_mce/plugins/media/img/quicktime.gif,
+ .../tiny_mce/plugins/media/img/realmedia.gif,
+ .../tiny_mce/plugins/media/img/shockwave.gif,
+ .../jscripts/tiny_mce/plugins/media/img/trans.gif,
+ .../tiny_mce/plugins/media/img/windowsmedia.gif,
+ .../jscripts/tiny_mce/plugins/media/js/embed.js,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/media/media.htm,
+ .../tiny_mce/plugins/nonbreaking/editor_plugin.js,
+ .../plugins/nonbreaking/editor_plugin_src.js,
+ .../tiny_mce/plugins/noneditable/editor_plugin.js,
+ .../plugins/noneditable/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/css/content.css,
+ .../tiny_mce/plugins/pagebreak/editor_plugin.js,
+ .../plugins/pagebreak/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/img/pagebreak.gif,
+ .../tiny_mce/plugins/pagebreak/img/trans.gif,
+ .../tiny_mce/plugins/paste/editor_plugin.js,
+ .../tiny_mce/plugins/paste/editor_plugin_src.js,
+ .../tiny_mce/plugins/paste/js/pastetext.js,
+ .../tiny_mce/plugins/paste/js/pasteword.js,
+ .../tiny_mce/plugins/paste/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/paste/pastetext.htm,
+ .../jscripts/tiny_mce/plugins/paste/pasteword.htm,
+ .../tiny_mce/plugins/preview/editor_plugin.js,
+ .../tiny_mce/plugins/preview/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/preview/example.html,
+ .../tiny_mce/plugins/preview/jscripts/embed.js,
+ .../jscripts/tiny_mce/plugins/preview/preview.html,
+ .../tiny_mce/plugins/print/editor_plugin.js,
+ .../tiny_mce/plugins/print/editor_plugin_src.js,
+ .../tiny_mce/plugins/save/editor_plugin.js,
+ .../tiny_mce/plugins/save/editor_plugin_src.js,
+ .../plugins/searchreplace/css/searchreplace.css,
+ .../plugins/searchreplace/editor_plugin.js,
+ .../plugins/searchreplace/editor_plugin_src.js,
+ .../plugins/searchreplace/js/searchreplace.js,
+ .../tiny_mce/plugins/searchreplace/langs/en_dlg.js,
+ .../plugins/searchreplace/searchreplace.htm,
+ .../tiny_mce/plugins/spellchecker/css/content.css,
+ .../tiny_mce/plugins/spellchecker/editor_plugin.js,
+ .../plugins/spellchecker/editor_plugin_src.js,
+ .../tiny_mce/plugins/spellchecker/img/wline.gif,
+ .../jscripts/tiny_mce/plugins/style/css/props.css,
+ .../tiny_mce/plugins/style/editor_plugin.js,
+ .../tiny_mce/plugins/style/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/style/js/props.js,
+ .../tiny_mce/plugins/style/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/style/props.htm,
+ .../tiny_mce/plugins/tabfocus/editor_plugin.js,
+ .../tiny_mce/plugins/tabfocus/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/cell.htm,
+ .../jscripts/tiny_mce/plugins/table/css/cell.css,
+ .../jscripts/tiny_mce/plugins/table/css/row.css,
+ .../jscripts/tiny_mce/plugins/table/css/table.css,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/cell.js,
+ .../tiny_mce/plugins/table/js/merge_cells.js,
+ .../jscripts/tiny_mce/plugins/table/js/row.js,
+ .../jscripts/tiny_mce/plugins/table/js/table.js,
+ .../tiny_mce/plugins/table/langs/en_dlg.js,
+ .../tiny_mce/plugins/table/merge_cells.htm,
+ .../jscripts/tiny_mce/plugins/table/row.htm,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../jscripts/tiny_mce/plugins/template/blank.htm,
+ .../tiny_mce/plugins/template/css/template.css,
+ .../tiny_mce/plugins/template/editor_plugin.js,
+ .../tiny_mce/plugins/template/editor_plugin_src.js,
+ .../tiny_mce/plugins/template/js/template.js,
+ .../tiny_mce/plugins/template/langs/en_dlg.js,
+ .../tiny_mce/plugins/template/template.htm,
+ .../tiny_mce/plugins/visualchars/editor_plugin.js,
+ .../plugins/visualchars/editor_plugin_src.js,
+ .../tiny_mce/plugins/wordcount/editor_plugin.js,
+ .../plugins/wordcount/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm,
+ .../tiny_mce/plugins/xhtmlxtras/acronym.htm,
+ .../tiny_mce/plugins/xhtmlxtras/attributes.htm,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm,
+ .../tiny_mce/plugins/xhtmlxtras/css/attributes.css,
+ .../tiny_mce/plugins/xhtmlxtras/css/popup.css,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/del.htm,
+ .../tiny_mce/plugins/xhtmlxtras/editor_plugin.js,
+ .../plugins/xhtmlxtras/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm,
+ .../tiny_mce/plugins/xhtmlxtras/js/abbr.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/acronym.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/attributes.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/cite.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js,
+ .../plugins/xhtmlxtras/js/element_common.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js,
+ .../tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/about.htm,
+ .../jscripts/tiny_mce/themes/advanced/anchor.htm,
+ .../jscripts/tiny_mce/themes/advanced/charmap.htm,
+ .../tiny_mce/themes/advanced/color_picker.htm,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/advanced/image.htm,
+ .../tiny_mce/themes/advanced/img/colorpicker.jpg,
+ .../tiny_mce/themes/advanced/img/icons.gif,
+ .../jscripts/tiny_mce/themes/advanced/js/about.js,
+ .../jscripts/tiny_mce/themes/advanced/js/anchor.js,
+ .../tiny_mce/themes/advanced/js/charmap.js,
+ .../tiny_mce/themes/advanced/js/color_picker.js,
+ .../jscripts/tiny_mce/themes/advanced/js/image.js,
+ .../jscripts/tiny_mce/themes/advanced/js/link.js,
+ .../tiny_mce/themes/advanced/js/source_editor.js,
+ .../jscripts/tiny_mce/themes/advanced/langs/en.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/link.htm,
+ .../themes/advanced/skins/default/content.css,
+ .../themes/advanced/skins/default/dialog.css,
+ .../themes/advanced/skins/default/img/buttons.png,
+ .../themes/advanced/skins/default/img/items.gif,
+ .../advanced/skins/default/img/menu_arrow.gif,
+ .../advanced/skins/default/img/menu_check.gif,
+ .../themes/advanced/skins/default/img/progress.gif,
+ .../themes/advanced/skins/default/img/tabs.gif,
+ .../tiny_mce/themes/advanced/skins/default/ui.css,
+ .../themes/advanced/skins/o2k7/content.css,
+ .../tiny_mce/themes/advanced/skins/o2k7/dialog.css,
+ .../themes/advanced/skins/o2k7/img/button_bg.png,
+ .../advanced/skins/o2k7/img/button_bg_black.png,
+ .../advanced/skins/o2k7/img/button_bg_silver.png,
+ .../tiny_mce/themes/advanced/skins/o2k7/ui.css,
+ .../themes/advanced/skins/o2k7/ui_black.css,
+ .../themes/advanced/skins/o2k7/ui_silver.css,
+ .../tiny_mce/themes/advanced/source_editor.htm,
+ .../tiny_mce/themes/simple/editor_template.js,
+ .../tiny_mce/themes/simple/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/simple/img/icons.gif,
+ .../jscripts/tiny_mce/themes/simple/langs/en.js,
+ .../themes/simple/skins/default/content.css,
+ .../tiny_mce/themes/simple/skins/default/ui.css,
+ .../tiny_mce/themes/simple/skins/o2k7/content.css,
+ .../themes/simple/skins/o2k7/img/button_bg.png,
+ .../tiny_mce/themes/simple/skins/o2k7/ui.css,
+ .../vendor/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_popup.js,
+ .../jscripts/tiny_mce/utils/editable_selects.js,
+ .../tinymce/jscripts/tiny_mce/utils/form_utils.js,
+ .../tinymce/jscripts/tiny_mce/utils/mctabs.js,
+ .../tinymce/jscripts/tiny_mce/utils/validate.js,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php: Upgraded TinyMCE to 3.3.6.
+
+2010-05-29 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/breadcrumbs.php: added a hint on breadcrumb usage
+
+ * views/default/page_elements/owner_block.php: removed some code made
+ unnecessary by the changes to layout in 1.8
+
+ * views/default/page_elements/elgg_sidebar.php: updated documentation on
+ optional parameters
+
+ * views/default/canvas/layouts/administration.php: updated administration
+ layout to work with new sidebar view
+
+2010-05-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/sidebar_menu.php,
+ views/default/page_elements/elgg_sidebar.php,
+ views/default/page_elements/owner_block.php: sidebar menu deserves its own
+ view
+
+2010-05-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php: Refs #2115: Added
+ elgg_is_valid_view_type(). Currently calculated at each load but will want to
+ cache like view paths. Cleaned up autoregister_views() and load_plugins()
+ code. Added spaces between function params in numerous places. C'mon
+ guys...spaces are free.
+
+2010-05-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/editdefaultprofileitems.php: Removed debug log to
+ console as it was preventing FF from executing the rest of the callback
+ function.
+
+2010-05-28 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php: when editing details, return to the details
+ tab when done.
+
+2010-05-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/appearance/menu_items.php,
+ views/default/canvas/layouts/administration.php: Updated interface for custom
+ menu items
+
+ * mod/profile/views/default/profile/css.php,
+ .../default/profile/editdefaultprofileitems.php: Updated interface for edit
+ profile fields
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/sidebar_menu.php: Updated archive list-style
+
+2010-05-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: Fixed mismatched <span></a> tags
+ in blog list status display.
+
+ * mod/blog/views/default/blog/sidebar_menu.php: Fixed typo in blog sidebar
+ menu that caused an extra LI item in archives.
+
+2010-05-27 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Registering user password request/reset as public
+ actions.
+
+2010-05-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: Fixing code for JS userpicker remove
+ function to cope with recent structure changes.
+
+2010-05-27 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cron.php, engine/lib/sites.php, mod/sitepages/start.php:
+ Updating walled garden to register public pages as regular expressions.
+
+2010-05-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php,
+ .../views/default/profile/profile_navigation.php: removed hard coded lang in
+ profile tabs
+
+2010-05-26 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/start.php, .../notifications/settings/usersettings.php:
+ Un-extending core notification view in favor of Notifications plugin.
+
+ * mod/sitepages/actions/add.php, mod/sitepages/actions/addfront.php,
+ mod/sitepages/actions/addfrontsimple.php, mod/sitepages/actions/addmeta.php,
+ mod/sitepages/actions/edit_settings.php,
+ mod/sitepages/sitepages_functions.php, mod/sitepages/start.php,
+ .../views/default/settings/sitepages/edit.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../views/default/sitepages/forms/editfront.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/menu.php: Updating Sitepages plugin
+ settings for new administration layout.
+
+2010-05-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php: Gatekeeper() added to blog edit/create pagehandler.
+
+ * engine/lib/entities.php: Fix problem rewriting type_subtype_pair ->
+ type_subtype_pairs in elgg_get_entities().
+
+2010-05-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/forums/addtopic.php: group discussion
+ access defaults to the group
+
+2010-05-26 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php, mod/groups/start.php: Ensuring Blogs and Forum links
+ display properly in the group ownerblock.
+
+2010-05-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/content_header.php: small tweak to header
+ contents
+
+ * mod/bookmarks/start.php: bookmark header bug fixed
+
+2010-05-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../page_elements/content_header_member.php: Updated content area title
+ when viewing a users objects
+
+ * .../views/default/profile/profile_ownerblock.php: Additional links to
+ tools added to profile pages ownerblock (hardcoded for phase1)
+
+2010-05-25 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/defaultwidgets/actions/update.php, mod/defaultwidgets/dashboard.php,
+ mod/defaultwidgets/profile.php, mod/defaultwidgets/start.php,
+ .../admin/appearance/default_dashboard_widgets.php,
+ .../admin/appearance/default_profile_widgets.php, mod/logbrowser/index.php,
+ mod/logbrowser/start.php, .../views/default/admin/overview/logbrowser.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/profile/defaultprofile.php, mod/profile/start.php,
+ .../default/admin/appearance/defaultprofile.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/index.php,
+ mod/reportedcontent/start.php,
+ .../default/admin/overview/reportedcontent.php: Updating administration
+ plugins with admin submenu views.
+
+2010-05-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/tabs.php: Navigation/tabs uses output/url for the
+ links.
+
+ * views/default/output/url.php: Added title to output/url. Fixed typo
+ breaking js support in output/url.
+
+ * CHANGES.txt: Added changes to CHANGES.txt.
+
+ * views/default/output/url.php: Fixed documentation for output/url view.
+
+ * views/default/output/url.php: Added title to url output.
+
+2010-05-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/start.php: change the bookmark header depending on whose
+ bookmarks are being viewed
+
+2010-05-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Updated documentation for register_plugin_hook().
+
+ * engine/lib/elgglib.php: Updated documentation and cleaned up code for
+ trigger_plugin_hook().
+
+2010-05-25 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/walled_garden_background_bottom.gif,
+ _graphics/walled_garden_background_extend.gif,
+ _graphics/walled_garden_background_top.gif, engine/lib/elgglib.php,
+ .../default/account/forms/login_walled_garden.php, views/default/css.php,
+ views/default/page_shells/walled_garden.php: Walled Garden login page is no
+ longer tied to the default page shell.
+
+2010-05-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: only display comment count if
+ there are comments
+
+ * mod/blog/blog_lib.php: check to see if comments are on or off
+
+ * mod/blog/views/default/blog/sidebar_revisions.php: blog revisions tweaked
+
+2010-05-25 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/defaultwidgets/dashboard.php, mod/defaultwidgets/profile.php,
+ mod/defaultwidgets/start.php, .../views/default/defaultwidgets/editor.php:
+ Updating Default Widgets administration to use new canvas layout.
+
+2010-05-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/css.php: Fix for blogs list view interface in
+ some browsers
+
+2010-05-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php: comment wall notification message tweaked
+
+2010-05-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_revisions.php: Updates to Blogs edit UI.
+
+2010-05-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../page_elements/content_header_member.php: content header added for use
+ when viewing another user
+
+ * mod/tagcloud/all.php, mod/tagcloud/tagcloud.php: added an all site
+ tagcloud view, tagcloud.php will be customised to run in the sidebar.
+
+2010-05-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php: UI update to avatar menu
+ list-style.
+
+2010-05-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../canvas/layouts/one_column_with_sidebar.php,
+ views/default/page_elements/elgg_sidebar.php: Refs #2114 - added elgg_sidebar
+ view
+
+2010-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/languages/en.php, mod/blog/views/default/object/blog.php: Added
+ blog author link by line on blog list.
+
+ * mod/blog/views/default/object/blog.php: Added access level in blog list.
+
+ * views/default/output/access.php: Added output/access view for displaying
+ entity access levels.
+
+2010-05-24 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/index.php, mod/logbrowser/start.php, mod/profile/start.php,
+ mod/reportedcontent/start.php, mod/sitepages/start.php: Updating multiple
+ plugins to no longer register admin menus with an event hook.
+
+2010-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/save.php, mod/blog/blog_lib.php,
+ mod/blog/views/default/object/blog.php: Blog uses elgg_make_excerpt() now
+ instead of its own.
+
+ * engine/lib/output.php: Replacing '...' with html elipse character (&#8230)
+ in elgg_make_excerpt().
+
+ * engine/lib/river.php: Copied explaination for weird str_replace() in
+ get_river_items() to the same call in elgg_get_river_items_new() so I stay
+ sane.
+
+ * mod/blog/actions/blog/save.php, mod/blog/blog_lib.php,
+ mod/blog/views/default/blog/forms/edit.php: Removing publish_date interface
+ for blogs pending better l10n for dates.
+
+ * mod/blog/start.php: Removing blogs from groups, part 2.
+
+ * mod/blog/start.php: Removing blog options from groups, part 1.
+
+2010-05-24 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php: Only notifying name change when it actually
+ changed.
+
+ * views/default/output/url.php: Ensuring text displays on URL view for both
+ "value" and "html" sent as property.
+
+2010-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php: Moved blog edit sidebar revisions to the top of the
+ sidebar.
+
+2010-05-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/object/blog/create.php,
+ .../default/river/object/bookmarks/create.php: you can no longer comment on
+ river item while logged out
+
+2010-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/forms/edit.php: Blog edit/create form displays
+ correct title.
+
+ * mod/blog/actions/blog/save.php: Blogs only show up in the river if in
+ published state.
+
+ * mod/riverdashboard/endpoint/ping.php: Added access controls to the
+ activity stream update count.
+
+ * mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/js.php: The activity stream's count uses the
+ river table instead of trying to combine entities + annotations based up on
+ time_created. Also brought small bits of code up to standards.
+
+2010-05-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php, views/default/css.php: UI
+ updates to users links and admin menu on profile pages
+
+2010-05-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/views/default/sitepages/menu.php: the correct tab now
+ highlights
+
+2010-05-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php: Saving a blog post no longer rewrites all entity
+ time_created and time_updated fields. Yikes.
+
+2010-05-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php, views/default/css.php:
+ Updated css for admin area/plugins and submenu list style
+
+ * mod/profile/views/default/profile/css.php, views/default/css.php: Added
+ missing formatting to user-generated content
+
+2010-05-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/start.php: messages now display the correct number unread
+
+2010-05-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Updated group forum link to only appear in group
+ ownerblock, and when group forum is enabled.
+
+ * mod/messages/views/default/messages/forms/send.php: Updated 'Send a
+ message to' form to display users display name rather than username.
+
+2010-05-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/invite.php: Small tweak to group
+ invite friends so it will show your friends correctly
+
+2010-05-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php: Group forum link added
+ to group ownerblock
+
+2010-05-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/index.php: sitepages river tweak
+
+ * mod/sitepages/index.php: sitepages now displays the correct river
+
+ * mod/riverdashboard/index.php,
+ .../views/default/settings/riverdashboard/edit.php: activity type toggle
+ removed as it was poorly thought out and implemented.
+
+ * mod/sitepages/actions/addfrontsimple.php, mod/sitepages/index.php,
+ mod/sitepages/languages/en.php, mod/sitepages/sitepages_functions.php,
+ mod/sitepages/start.php, .../views/default/canvas/layouts/frontpage.php,
+ mod/sitepages/views/default/sitepages/css.php,
+ .../default/sitepages/forms/editfrontsimple.php,
+ mod/sitepages/views/default/sitepages/members.php,
+ mod/sitepages/views/default/sitepages/sidebar.php,
+ mod/sitepages/views/default/sitepages/welcome.php: a simple version of the
+ sitepages index - we will need to turn this into a basic and advance
+ selection for admins.
+
+2010-05-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ views/default/page_elements/owner_block.php: Ownerblock links to users
+ objects interface updated.
+
+ * mod/groups/start.php: Group link to forum removed from sidebar submenu
+
+ * mod/blog/start.php, mod/bookmarks/start.php: Group blog and bookmarks
+ submenu removed from sidebar (links are now in the group ownerblock)
+
+2010-05-23 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/page_shells/default.php, views/foaf/pageshells/pageshell.php,
+ views/php/page_shells/default.php, views/php/pageshells/pageshell.php,
+ views/xml/page_shells/default.php, views/xml/pageshells/pageshell.php: fixed
+ page shells for xml, php, and foaf
+
+2010-05-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php,
+ .../views/default/reportedcontent/footer_link.php: added title attribute to
+ report this footer link
+
+ * mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/footer_link.php,
+ views/default/page_elements/elgg_footer.php: removing reported content
+ dependency from core code...again
+
+ * views/default/page_elements/elgg_footer.php: Fixes #2122 - footer
+ analytics view added
+
+2010-05-21 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: Using a lambda function to
+ sort the profile menu.
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ views/default/page_elements/owner_block.php: Registering new plugin hooks to
+ extend the owner block profile menu.
+
+ * views/default/page_elements/owner_block.php: Fixing a typo. Works this
+ time; no, really.
+
+ * mod/pages/start.php, mod/pages/views/default/pages/profile_extend.php:
+ Updating Pages plugin to extend profile owner block directly with
+ user-specific links.
+
+ * views/default/page_elements/owner_block.php: Cleaning up profile owner
+ blocks to allow for view extensions.
+
+2010-05-20 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/pages/start.php: Adding submenu items for standard plugins to owner
+ block.
+
+2010-05-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/entity_getter_functions.php: Fixes #2159: Updated entity
+ getter test to order by guid instead of time_created.
+
+ * engine/tests/objects/entities.php, engine/tests/objects/objects.php,
+ engine/tests/objects/sites.php, engine/tests/objects/users.php: Update unit
+ tests for last_action column.
+
+ * engine/lib/entities.php, engine/lib/river.php: create_entity() now adds a
+ default last_action set to the same as time_created. This solves a problem of
+ having to specify an order by of last_action desc, time_created desc on each
+ call. Standardized update_entity_last_action() and moved it from river.php to
+ entities.php.
+
+ * engine/lib/river.php: Properly merged old 1.8 river2.php with river.php to
+ fix last_action-based bubble ups.
+
+2010-05-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/content_header.php: small edit to header
+ contents, will need to find a better way to extend this view in the required
+ fashion.
+
+ * mod/bookmarks/start.php: small bookmark add bug fixed.
+
+2010-05-20 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/annotation/default.php, views/rss/object/creator.php,
+ views/rss/object/default.php, views/rss/object/georss.php: Updating RSS views
+ to allow for object creator and geolocation.
+
+2010-05-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/forgotten_password.php, account/register.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php: Updated Register and ForgottenLogin
+ forms to use default canvases.
+
+ * views/default/canvas/layouts/administration.php: Added a link to 'return
+ to network' from admin area.
+
+2010-05-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, languages/en.php,
+ views/default/admin/users/newest.php: Added "Newest Users" admin section.
+
+ * mod/groups/all.php, mod/groups/discussions.php, mod/groups/forum.php,
+ mod/groups/views/default/forum/topics.php: Removed legacy calls from groups.
+
+ * engine/lib/annotations.php: Refs #2165: Added
+ elgg_list_entities_from_annotations() to deprecate
+ list_entities_from_annotations().
+
+ * mod/groups/forum.php: Missed passing group_guid to forum topics.
+
+ * mod/groups/views/default/forum/topics.php: Fixed incorrect call for $vars
+ in group forum topics.
+
+ * mod/riverdashboard/manifest.xml: Riverdashboard enabled on default
+ installs.
+
+ * mod/custom_index/index.php, mod/custom_index/languages/en.php,
+ mod/custom_index/manifest.xml, mod/custom_index/start.php,
+ .../views/default/canvas/layouts/new_index.php,
+ .../views/default/custom_index/css.php: Custom index is deprecated by Site
+ pages. These two provide the same functionality but in different ways, so
+ just moving Custom Index to the plugins repo.
+
+ * mod/externalpages/actions/add.php, mod/externalpages/index.php,
+ mod/externalpages/languages/en.php, mod/externalpages/manifest.xml,
+ mod/externalpages/read.php, mod/externalpages/start.php,
+ .../views/default/expages/analytics.php,
+ mod/externalpages/views/default/expages/css.php,
+ .../views/default/expages/footer_menu.php,
+ .../views/default/expages/forms/edit.php,
+ mod/externalpages/views/default/expages/menu.php,
+ mod/externalpages/views/default/object/expages.php: The Externalpages plugin
+ is now Site Pages. Removing old plugin.
+
+2010-05-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/jquery/jquery-1.4.2.min.js, vendors/jquery/jquery-1.4.min.js,
+ views/default/page_elements/html_begin.php: jQuery updated to v1.4.2
+
+ * mod/groups/views/default/groups/css.php: Small UI update to Group activity
+ widget.
+
+ * views/default/annotation/annotatelike.php: Likes river entry timestamp
+ wrapped in span.
+
+2010-05-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Moved output.php into the pre-installation required lib
+ list to fix trunk installation.
+
+2010-05-18 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/graphics/background_bottom.gif,
+ mod/walledgarden/graphics/background_extend.gif,
+ mod/walledgarden/graphics/background_top.gif, mod/walledgarden/index.php,
+ mod/walledgarden/languages/en.php, mod/walledgarden/manifest.xml,
+ mod/walledgarden/readme.txt, mod/walledgarden/start.php,
+ .../views/default/account/forms/login.php,
+ .../default/page_shells/walled_garden_index.php,
+ .../views/default/walledgarden/css.php,
+ .../views/default/walledgarden/walledgarden.php: Removing Walled Garden
+ plugin from trunk.
+
+ * engine/lib/elgglib.php, engine/lib/sites.php: Ensuring the Walled Garden
+ hook properly exits before plugins can continue to extend view.
+
+ * views/json/canvas/default.php, views/json/page_shells/default.php,
+ views/json/pageshells/pageshell.php: Updating the core JSON views to allow
+ for proper object export.
+
+2010-05-18 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/members/index.php: browse members now working for 1.8
+
+ * languages/en.php, views/default/account/forms/login.php,
+ views/default/account/forms/login_dropdown.php: as you can login with either
+ username or email, reflect this in the lang.
+
+2010-05-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/components/plugin_settings.php,
+ views/default/canvas/layouts/administration.php: Interface updates to plugins
+ settings form.
+
+2010-05-18 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: small lang changes
+
+2010-05-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php: Admin area long-text
+ fields width updated.
+
+2010-05-17 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/river/item/list.php: Defaulting RSS view to use Elgg Entity
+ view.
+
+ * views/rss/object/default.php, views/rss/page_shells/default.php,
+ views/rss/pageshells/pageshell.php, views/rss/river/item/list.php: Updating
+ RSS feeds to use proper views called with page_shells.
+
+2010-05-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/css.php: Another UI update to individual blog
+ page.
+
+ * mod/blog/views/default/blog/css.php,
+ mod/profile/views/default/profile/css.php: ..a couple more ui tweaks.
+
+ * mod/messages/views/default/messages/forms/view.php,
+ mod/profile/graphics/speech_bubble_tail.gif,
+ mod/profile/graphics/twitter16px.png,
+ views/default/canvas/layouts/administration.php: A few UI updates.
+
+2010-05-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/css.php, views/default/css.php: Updates
+ to core css UI and riverdashboard mod.
+
+2010-05-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Fixed loading of activity and database files.
+
+ * engine/lib/actions.php, engine/lib/activity.php, engine/lib/api.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/input.php,
+ engine/lib/output.php, engine/lib/pagehandler.php, engine/lib/river.php,
+ engine/lib/river2.php, engine/lib/sessions.php, engine/start.php,
+ htaccess_dist, languages/en.php, mod/groups/invitations.php,
+ mod/groups/new.php, mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ .../views/default/river/object/page/create.php, mod/profile/actions/edit.php:
+ Merged 5928-6908 from 1.7 branch to trunk.
+
+ * actions/widgets/save.php, engine/lib/access.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/notification.php, engine/lib/river2.php,
+ engine/lib/sessions.php, engine/lib/system_log.php, engine/lib/tags.php,
+ engine/lib/users.php, mod/groups/forum.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/index.php,
+ mod/invitefriends/languages/en.php, mod/invitefriends/start.php,
+ .../views/default/invitefriends/form.php,
+ .../views/default/invitefriends/formitems.php, mod/profile/icon.php,
+ views/default/friends/river/create.php, views/rss/entities/entity_list.php:
+ merge -r5898:5928 (not excluding riverdashboard, notifications, and
+ messageboard) from 1.7 to trunk.
+
+2010-05-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php: Updated admin area css
+
+2010-05-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/actions.php, engine/lib/api.php,
+ engine/lib/elgglib.php, engine/lib/notification.php, engine/lib/river2.php,
+ mod/invitefriends/actions/invite.php, services/api/rest_api.php: merge
+ -r5832:5898 from 1.7 to trunk.
+
+ * views/foaf/pageshells/pageshell.php, views/foaf/user/default.php: merge
+ -r5822:5825 from 1.7 to trunk.
+
+ * engine/lib/xml.php, mod/file/actions/upload.php,
+ mod/groups/actions/forums/deletepost.php: Merge r5761:5788 from 1.7 to trunk.
+
+
+2010-05-14 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php: Moving login/extend view to call
+ after the login button (consistent with login dropdown).
+
+ * engine/lib/sites.php, languages/en.php: Updating language files for new
+ Walled Garden support.
+
+ * _css/css.php, _css/js.php, engine/handlers/action_handler.php,
+ engine/handlers/cron_handler.php, engine/handlers/pagehandler.php,
+ engine/handlers/service_handler.php, engine/handlers/xml-rpc_handler.php,
+ engine/lib/cron.php, engine/lib/sites.php, index.php,
+ mod/externalpages/read.php, upgrade.php: Updating core code to allow public
+ pages using new Walled Garden functionality.
+
+2010-05-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/sidebar_menu.php, mod/tagcloud/tagcloud.php,
+ mod/tagcloud/views/default/tagcloud/css.php, views/default/css.php,
+ views/default/output/tagcloud.php: Updated core tagcloud view markup/css.
+
+2010-05-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/views/default/output/tagcloud.php: Removing tagcloud output
+ view from tagcloud mod--it's in core now.
+
+2010-05-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/administration.php, views/default/css.php:
+ Update to submenu items css.
+
+ * mod/profile/defaultprofile.php, mod/reportedcontent/index.php,
+ mod/sitepages/sitepages_functions.php: Updated plugins to use new admin area
+ canvas.
+
+2010-05-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: To detect if a submenu item is selected, using
+ output from full_url() instead of $_SERVER['REQUEST_URI'] because the host
+ isn't set in REQUEST_URI.
+
+2010-05-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, views/default/canvas/layouts/administration.php,
+ views/default/css.php: Beginnings of a stand-alone admin area.
+
+ * mod/profile/views/default/profile/icon.php: Fix for @mentions mod creating
+ multiple hrefs in avatar submenu.
+
+ * views/default/admin/overview.php, views/default/admin/site/advanced.php,
+ views/default/admin/site/basic.php, views/default/admin/users/add.php,
+ views/default/admin/users/find.php, views/default/admin/users/online.php:
+ Added content titles to admin area pages.
+
+2010-05-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php: removed extra div from riverdashboard index
+ page
+
+ * mod/riverdashboard/start.php, .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php: merged [5959] from 1.7 branch into
+ trunk for riverdashboard plugin
+
+ * mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/ecml/activity.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/default/settings/riverdashboard/edit.php: attempting to standardize
+ riverdashboard plugin in similar manner as 1.7 branch revision [5943]
+
+ * mod/notifications/actions/groupsave.php,
+ mod/notifications/actions/save.php, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/notifications/languages/en.php,
+ mod/notifications/start.php, .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/jsfuncs.php,
+ .../notifications/subscriptions/personal.php: merged in notifications plugin
+ cleanup from 1.7 branch: [5962], [5978] - [5980], [6000]
+
+2010-05-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messageboard/actions/add.php, mod/messageboard/actions/delete.php,
+ mod/messageboard/ajax_endpoint/load.php, mod/messageboard/history.php,
+ mod/messageboard/index.php, mod/messageboard/languages/en.php,
+ mod/messageboard/readme.txt, mod/messageboard/start.php,
+ .../views/default/messageboard/css.php,
+ .../views/default/messageboard/forms/add.php,
+ .../default/messageboard/group_messageboard.php,
+ .../views/default/messageboard/messageboard.php,
+ .../default/messageboard/messageboard_content.php,
+ .../default/river/object/messageboard/create.php,
+ .../views/default/widgets/messageboard/edit.php,
+ .../views/default/widgets/messageboard/view.php: merging messageboard cleanup
+ from 1.7 branch [5908],[5909],[5917]
+
+2010-05-12 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/register.php, engine/lib/elgglib.php, engine/lib/sites.php,
+ mod/sitepages/start.php: Creating a hook for plugin authors to register
+ Walled Garden public sites.
+
+2010-05-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/languages/en.php: removed a duplicate lang string
+
+ * .../views/default/bookmarks/group_bookmarks.php: fix so group bookmarks
+ display on group frontpage
+
+2010-05-11 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_advanced.php,
+ actions/systemsettings/install.php, engine/lib/elgglib.php,
+ engine/lib/sites.php, engine/lib/upgrades/2010050701.php,
+ views/default/admin/site/advanced.php: Do not display site pages when in
+ Walled Garden mode, excepting system-defined whitelist.
+
+ * account/register.php: Not allowing new user registration to continue
+ action when disabled.
+
+2010-05-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Fixed a typo.
+
+ * engine/lib/admin.php, engine/lib/elgglib.php,
+ views/default/navigation/submenu_item.php: Fix admin area for overview and
+ appearance.
+
+2010-05-10 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/elgg_topbar_logout.php: Breaking logout link into
+ a separate view.
+
+2010-05-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/tests/ui/submenu.php,
+ .../default/admin/components/admin_page_layout.php,
+ views/default/admin/components/sidemenu.php,
+ views/default/navigation/submenu_item.php, views/default/output/url.php,
+ views/default/page_elements/owner_block.php: Admin area now uses standard
+ submenu tools.
+
+2010-05-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/basic_elements/welcome.php, views/default/welcome.php,
+ views/default/welcome/logged_in.php, views/default/welcome/logged_out.php:
+ removing more views that haven't been used/touched in almost 2 years
+
+ * views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php: removing some chuff that's been just sitting
+ there for a long time - these views ended up in the external pages/site pages
+ plugins
+
+2010-05-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Not setting $item->selected on a submenu item acts
+ the same as setting it to NULL for selected state guessing. Removed unused
+ code in submenu system.
+
+ * engine/lib/elgglib.php, engine/tests/ui/submenu.php,
+ views/default/canvas_header/submenu_group.php,
+ views/default/canvas_header/submenu_template.php, views/default/css.php,
+ views/default/navigation/submenu_group.php,
+ views/default/navigation/submenu_item.php,
+ views/default/navigation/submenu_js.php: Added new submenu system. Added
+ elgg_http_url_is_identical(). Moved canvas_header/submenu* to
+ navigation/submenu*. Added UI test for submenu.
+
+2010-05-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_advanced.php, actions/register.php,
+ actions/systemsettings/install.php, engine/lib/upgrades/2010050701.php,
+ version.php, views/default/account/forms/login.php,
+ views/default/account/forms/login_dropdown.php,
+ views/default/admin/site/advanced.php: Adding an option to restrict new user
+ registration in advanced site settings. This is the first step in fully
+ merging "Walled Garden" plugin into core Elgg engine.
+
+2010-05-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php,
+ actions/admin/plugins/simple_update_states.php,
+ actions/admin/site/update_advanced.php, actions/admin/site/update_basic.php,
+ actions/login.php, actions/plugins/settings/save.php, actions/register.php,
+ actions/systemsettings/install.php, admin/index.php, admin/menu_items.php,
+ admin/plugins.php, admin/site.php, admin/statistics.php, admin/user.php,
+ engine/lib/actions.php, engine/lib/admin.php, engine/lib/plugins.php,
+ engine/lib/sessions.php, languages/en.php, mod/blog/manifest.xml,
+ mod/blog/views/default/blog/forms/edit.php, mod/bookmarks/manifest.xml,
+ mod/captcha/manifest.xml, mod/categories/actions/save.php,
+ mod/categories/languages/en.php, mod/categories/manifest.xml,
+ mod/categories/settings.php, mod/categories/start.php,
+ mod/categories/views/default/categories/css.php,
+ .../views/default/categories/settings.php,
+ .../views/default/categories/settingsform.php,
+ .../views/default/settings/categories/edit.php, mod/crontrigger/manifest.xml,
+ mod/custom_index/manifest.xml, mod/defaultwidgets/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/ecml/manifest.xml, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/admin/ecml_admin.php,
+ mod/ecml/views/default/settings/ecml/edit.php, mod/embed/manifest.xml,
+ mod/externalpages/manifest.xml, mod/file/manifest.xml,
+ mod/friends/manifest.xml, mod/garbagecollector/manifest.xml,
+ mod/groups/manifest.xml, mod/htmlawed/manifest.xml,
+ mod/invitefriends/manifest.xml, mod/logbrowser/manifest.xml,
+ mod/logrotate/manifest.xml, mod/members/manifest.xml,
+ mod/messageboard/manifest.xml, mod/messages/manifest.xml,
+ mod/notifications/manifest.xml, mod/pages/manifest.xml,
+ mod/profile/manifest.xml, mod/reportedcontent/manifest.xml,
+ mod/riverdashboard/manifest.xml, mod/search/manifest.xml,
+ mod/sitepages/manifest.xml, mod/tagcloud/manifest.xml,
+ mod/thewire/manifest.xml, mod/tinymce/manifest.xml, mod/twitter/manifest.xml,
+ mod/uservalidationbyemail/manifest.xml, mod/walledgarden/manifest.xml,
+ mod/zaudio/manifest.xml, views/default/admin/appearance/menu_items.php,
+ .../default/admin/components/admin_page_layout.php,
+ views/default/admin/components/plugin.php,
+ views/default/admin/components/plugin_settings.php,
+ views/default/admin/components/sidemenu.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/menu_items.php,
+ views/default/admin/overview.php,
+ views/default/admin/overview/numentities.php,
+ views/default/admin/overview/online.php, views/default/admin/plugins.php,
+ views/default/admin/plugins/advanced.php,
+ views/default/admin/plugins/simple.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/site/advanced.php, views/default/admin/site/basic.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/search.php, views/default/admin/users/add.php,
+ views/default/admin/users/find.php, views/default/admin/users/online.php,
+ views/default/css.php, views/default/object/admin_notice.php: Merged
+ 18_new_admin branch to trunk.
+
+2010-05-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/usersettings/form.php: Added ID to submit button on user
+ settings form.
+
+ * views/default/canvas_header/submenu_group.php: Updated submenu with
+ missing groupname.
+
+ * mod/profile/views/default/profile/editicon.php: Addition of a wrapper on
+ edit avatar page for theming purposes.
+
+2010-05-04 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: Returning extended view to
+ original location in code (to preserve CSS rendering).
+
+2010-05-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php: Updated avatar sub-menu font
+ sizes.
+
+2010-05-04 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php, .../views/default/profile/topbar_extend.php:
+ Extending topbar view to include My Friends link.
+
+ * views/default/page_elements/elgg_topbar.php: Removing hard-coded plugin
+ extensions from core topbar.
+
+2010-05-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/views/default/bookmarks/form.php: Added id to bookmark edit
+ form (for use theming).
+
+ * .../default/profile/commentwall/commentwall.php: Minor update to the
+ comment wall wrapper div.
+
+2010-05-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: Fixes #1480 - not passing empty array element
+ from page_handler()
+
+2010-04-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/groupsform.php,
+ views/default/usersettings/plugins.php: Minor updates to User Settings
+ interface.
+
+ * mod/search/views/default/search/entity.php: Search results float cleared.
+
+2010-04-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/activity.php,
+ .../views/default/riverdashboard/css.php: Updated activity stream on users
+ Profile to include riverdashboard js. Added extra css rules for inline
+ comments and likes on profile activity.
+
+ * mod/profile/views/default/profile/edit.php, views/default/css_ie.php,
+ views/default/js/initialise_elgg.php: Updates to Profile edit, likes js, and
+ tools css for IE7 rendering.
+
+2010-04-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/tabs.php: Added navigation/tabs view for tabbed
+ navigation.
+
+2010-04-27 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/start.php: Restricting external user creation from
+ Facebook Services.
+
+2010-04-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: if the activity stream is enabled show on the frontpage, if
+ not, list entities.
+
+2010-04-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/css_ie.php: More fixes for IE
+ rendering (entity listings, private messages, topbar, profile, activity)
+
+2010-04-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/languages/en.php, mod/sitepages/start.php: Updated language
+ strings for site page ecml
+
+ * mod/ecml/languages/en.php, mod/ecml/start.php: Removed view and entity
+ ECML. Updated language strings.
+
+ * mod/sitepages/start.php, .../views/default/sitepages/forms/editfront.php:
+ Only admin users can view site pages. Corrected ECML default for site pages.
+ Moved view and entity ECML keywords to sitepages and restricted them.
+
+ * engine/lib/users.php, mod/blog/manifest.xml, mod/riverdashboard/index.php,
+ mod/riverdashboard/manifest.xml, mod/riverdashboard/start.php,
+ .../views/default/river/item/list.php,
+ views/default/account/forms/login_dropdown.php: Graceful degrading for non-JS
+ users on the dropdown login box.
+
+ * mod/ecml/views/default/ecml/admin/ecml_admin.php: Fixed admin area
+ language string.
+
+ * .../views/default/river/object/blog/create.php: Fixes #2098: River view
+ for blog pulls correct time.
+
+ * engine/lib/plugins.php: Plugins are *required* to have a manifest.xml
+ file.
+
+2010-04-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/item/wrapper.php, views/default/css_ie.php:
+ Updates to riverdashboard wrapper for IE rendering. Temporary IE rules for
+ riverdashboard added to css_ie.php.
+
+2010-04-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php, mod/groups/index.php, mod/groups/membership.php:
+ Updated calls to content_header to point to correct new link in groups.
+
+ * mod/bookmarks/add.php, mod/bookmarks/all.php, mod/bookmarks/friends.php,
+ mod/bookmarks/index.php, mod/bookmarks/start.php: Bookmarks work with groups
+ and use new style content header filter.
+
+2010-04-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login_dropdown.php, views/default/css.php:
+ Updates to homepage layout and drop-down login for IE.
+
+ * mod/groups/views/default/forms/groups/edit.php: Update to edit Groups page
+ for ECML and longtext controls positioning.
+
+ * .../views/default/sitepages/forms/editfront.php: Updated SitePages with
+ example homepage markup/ECML.
+
+ * .../views/default/sitepages/forms/editfront.php, views/default/css.php:
+ Update to SitePages and CSSEditor code input fields, code input (monospaced
+ style) added to base css file.
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/icon.php: Update to site user avatars to
+ use CSS3 rounding for modern browsers. Older browsers will display as square
+ avatars.
+
+2010-04-26 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Fixes #2084 - layout issue with front page
+
+2010-04-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/account/forms/login.php,
+ .../default/page_shells/walled_garden_index.php,
+ .../views/default/walledgarden/css.php: Updated WalledGarden login page for
+ correct rendering in IE.
+
+ * languages/en.php, .../views/default/account/forms/login.php,
+ .../default/page_shells/walled_garden_index.php: Updates to WalledGarden
+ login. Lost password text simplified/shortened, text spacing adjusted, rule
+ added to prevent custom css page background from showing on walledgarden
+ login page.
+
+2010-04-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/graphics/background_bottom.gif,
+ mod/walledgarden/graphics/background_extend.gif,
+ mod/walledgarden/graphics/background_top.gif,
+ .../views/default/account/forms/login.php,
+ .../default/page_shells/walled_garden_index.php,
+ .../views/default/walledgarden/css.php: Updated walledgarden login.
+
+ * mod/groups/views/default/forms/forums/addtopic.php: Completed breadcrumb
+ for addtopic (missed in 5855)
+
+ * mod/ecml/start.php, mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/input_ext.php, mod/embed/languages/en.php,
+ mod/embed/start.php, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/link.php,
+ .../views/default/expages/forms/edit.php,
+ mod/externalpages/views/default/expages/menu.php,
+ mod/file/views/default/file/upload.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/messages.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../views/default/reportedcontent/form.php, mod/tinymce/languages/en.php,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ views/default/comments/forms/edit.php, views/default/css.php,
+ views/default/upload/upload_form_content.php: Updated longtext/tinymce area
+ extra controls. Moved and updated ecml help link, 'edit/remove editor' link
+ and 'add media' links both moved and improved. Redundant css removed.
+
+2010-04-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/index.php, .../views/default/account/forms/login.php,
+ .../default/account/forms/login_walledgarden.php: small walled garden tweak
+
+ * mod/sitepages/start.php: frontpage creation respects walledgarden
+
+ * .../default/account/forms/login_walledgarden.php: included a view for
+ plugins to extend
+
+ * mod/walledgarden/index.php, mod/walledgarden/start.php,
+ .../default/account/forms/login_walledgarden.php,
+ .../default/page_shells/walled_garden_index.php: The start of a new walled
+ garden index page
+
+2010-04-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/forum.php, mod/groups/views/default/forum/viewposts.php:
+ Completed breadcrumbs for Groups Forums.
+
+2010-04-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/all.php, mod/bookmarks/index.php: Updated booksmarks to 1.7
+ API.
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/sharing/invite.php,
+ .../views/default/widgets/a_users_groups/view.php: Updated groups to 1.7 api.
+
+
+2010-04-22 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/object/groupforumtopic.php: group forum discussion view
+ updated to match the community
+
+ * .../views/default/object/groupforumtopic.php: a small tweak so latest
+ discussion shows the last user to comment.
+
+2010-04-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Cleaned up some comments about group acl hooks.
+
+ * mod/blog/views/default/blog/sidebar_revisions.php: Cleaned up code to show
+ revisions. Added ability to go to published revision.
+
+ * mod/blog/views/default/blog/forms/edit.php: Decoding html entities for
+ blog excerpts in edit form.
+
+ * mod/blog/blog_lib.php, mod/blog/views/default/object/blog.php: Blog
+ excerpts now work for MB strings and properly detect word breaks.
+
+ * mod/blog/blog_lib.php: Removing unneeded order by metadata.
+
+ * mod/blog/blog_lib.php: Rewriting time_created and time_updated instead of
+ trying to be tricky with metadata.
+
+2010-04-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/profile/profile_ownerblock.php: profile owner block can
+ now be viewed while logged out.
+
+ * mod/groups/start.php: a simple function which can be used to restrict
+ group access options
+
+ * .../default/river/object/bookmarks/create.php: bookmark activity view
+ altered to work with both the classic and new versions of activity.
+
+ * .../views/default/river/object/blog/create.php: remove likes and comments
+ from blog activity view if in classic mode
+
+ * engine/lib/river2.php, .../default/profile/profile_contents/activity.php,
+ mod/riverdashboard/index.php, mod/riverdashboard/languages/en.php,
+ .../views/default/river/item/wrapper_classic.php,
+ .../views/default/settings/riverdashboard/edit.php: let site admins toggle
+ between a classic activity stream or the new clustered version
+
+2010-04-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: cleaning up [5822] - putting elgg_format_url() in
+ the same location in elgglib.php
+
+2010-04-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/start.php,
+ .../views/default/settings/riverdashboard/edit.php: Removed toggle for
+ overriding river dashboard. If the plugin is enabled, the dashboard is
+ enabled.
+
+ * engine/lib/elgglib.php: Merge previous to trunk.
+
+2010-04-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_sprites.png, index.php,
+ views/default/account/forms/login_dropdown.php, views/default/css.php,
+ views/default/page_elements/elgg_header.php: Added the beginnings of a
+ drop-down login box for Elgg as an alternative to the front-page login box in
+ the homepage sidebar.
+
+2010-04-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/languages/en.php: Fixed missing language string in admin
+
+ * mod/ecml/views/default/ecml/admin/ecml_admin.php: Added smarter check all
+ checkboxes for ECML admin area.
+
+ * mod/search/index.php, mod/search/search_hooks.php: Merged previous to
+ trunk.
+
+2010-04-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/river/object/bookmarks/create.php: #2087 fixed
+
+2010-04-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Updated docs for types and subtypes in
+ elgg_get_entities().
+
+2010-04-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: pass the entity so other plugins
+ can extend properly
+
+ * mod/ecml/start.php: correct layout applied to ecml help page
+
+ * mod/sitepages/actions/addfront.php: missing ] added to the frontpage
+ action file
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Merged type_subtype_pair fix from 1.7 branch.
+
+2010-04-16 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/start.php: Removed attempt to hook into system index page
+ from Walled Garden. This is unnecessary at best, and conflicts entirely when
+ custom login Site Pages are used.
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Fixing a logged out problem with group access.
+
+2010-04-16 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/languages/en.php, mod/walledgarden/start.php: Registering
+ a Walled Garden hook which will not allow new user signup with Twitter
+ Services.
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Only showing group access levels within group
+ contexts. Not showing unrelated access levels within group contexts.
+
+2010-04-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/bookmarks/group_bookmarks.php,
+ mod/file/views/default/file/css.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/widgets/filerepo/view.php: Removed js drop-down
+ description on group profile tools widgets.
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/actions/save_permissions.php, mod/ecml/languages/en.php,
+ mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/admin/ecml_admin.php: ECML permissions frontend
+ presents a whitelist instead of a black list.
+
+2010-04-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_sprites.png, engine/lib/users.php, views/default/css.php,
+ views/default/page_elements/elgg_topbar.php: Friends link removed from
+ primary nav and added to top toolbar.
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/ecml/activity.php: Fixed activity stream
+ ecml view.
+
+ * mod/sitepages/languages/en.php, mod/sitepages/start.php: Removed some left
+ over code from decoupling ECML. Fixed help files for [[ -> [ transition.
+
+ * mod/ecml/README.txt, mod/ecml/languages/en.php, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/help.php: ECML now only requires a single square
+ bracket.
+
+ * mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/ecml/activity.php: Added activity ecml
+ keyword.
+
+ * mod/sitepages/actions/addfront.php: Correctly checking for logoutbox for
+ custom front pages.
+
+ * mod/thewire/actions/add.php: Fix the name of the input in the wire's add
+ action.
+
+2010-04-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/blog/views/default/blog/sidebar_menu.php: Tagcloud
+ localized and updated on blogs.
+
+ * views/default/css.php: Tweaked 'Likes' icon css.
+
+ * views/default/css.php: Updated tools menu spacing and added selected class
+ rule for tools submenu items.
+
+ * _graphics/indicator.gif: Removed unused indicator gif. Spinners across the
+ site have been updated to use elgg's ajax_loader gif, except Shared Access
+ mod which still uses indicator gif - which is now in the shared access plugin
+ bundle.
+
+2010-04-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/indicator.gif, engine/lib/elgglib.php,
+ mod/categories/actions/save.php, mod/categories/languages/en.php,
+ mod/categories/listing.php, mod/categories/settings.php,
+ mod/categories/start.php, mod/categories/views/default/categories.php,
+ mod/categories/views/default/categories/list.php,
+ .../views/default/categories/settings.php,
+ mod/categories/views/default/categories/view.php,
+ mod/profile/actions/cropicon.php, mod/profile/icondirect.php,
+ mod/profile/start.php, mod/search/search_hooks.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity.php,
+ mod/thewire/views/rss/object/thewire.php: Merged [5623]:head from 1.7 to
+ trunk.
+
+ * mod/ecml/start.php, mod/ecml/views/default/ecml/keywords/blip.tv.php,
+ .../views/default/ecml/keywords/dailymotion.php,
+ mod/ecml/views/default/ecml/keywords/livevideo.php,
+ mod/ecml/views/default/ecml/keywords/redlasso.php: Added more video sources.
+ Allowing the . character in keywords.
+
+2010-04-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/views/default/ecml/admin/ecml_admin.php: Added ability to check
+ all rows or columns in ecml permissions page.
+
+ * mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/admin/ecml_admin.php: Inverted the admin matrix
+ for ecml views / keywords.
+
+ * mod/sitepages/languages/en.php, mod/sitepages/start.php,
+ .../default/sitepages/keywords/site_stats.php,
+ .../views/default/sitepages/keywords/sitestats.php,
+ .../views/default/sitepages/keywords/user_list.php,
+ .../views/default/sitepages/keywords/userlist.php: Added usage to the
+ keywords. Restricting keywords to userlist, loginbox, and sitestats to custom
+ front page.
+
+ * mod/ecml/start.php: Correctly setting context to admin to pull in the
+ admin sidebar for ECML permissions page.
+
+ * mod/ecml/README.txt: Updated docs with a FAQ.
+
+2010-04-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/groups/activity_latest.php: Activity view added for
+ Groups profile page, based on code by Jon Maul.
+
+2010-04-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: Jon Maul added as a contributor with MITRE.
+
+ * mod/blog/blog_lib.php, mod/blog/views/default/object/blog.php: Separated
+ blog object view from comments.
+
+ * mod/ecml/ecml_functions.php,
+ mod/ecml/views/default/ecml/admin/ecml_admin.php: Added ability for ECML
+ keyword definitions to restrict themselves to specific views.
+
+2010-04-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/start.php, mod/ecml/views/default/ecml/admin/ecml_admin.php:
+ Small UI updates to ECML.
+
+ * mod/search/views/default/search/entity.php, views/default/css.php: Update
+ to search results view, and small entity list style updates.
+
+2010-04-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/README.txt, mod/ecml/actions/save_permissions.php,
+ mod/ecml/ecml_functions.php, mod/ecml/languages/en.php, mod/ecml/start.php,
+ mod/ecml/views/default/ecml/admin/css.php,
+ mod/ecml/views/default/ecml/admin/ecml_admin.php,
+ .../views/default/ecml/keywords/googlemaps.php: Added granular access for
+ views in ECML. Added 'usage' on keyword info. Updated docs.
+
+ * mod/ecml/start.php, .../views/default/ecml/keywords/googlemaps.php:
+ Googlemaps support added for ECML.
+
+ * mod/ecml/views/default/ecml/help.php: ECML keyword help page now properly
+ lists all registered keywords.
+
+ * mod/sitepages/start.php: Removed _ from Site Pages ECML keywords.
+
+ * mod/ecml/README.txt, mod/ecml/ecml_functions.php, mod/ecml/manifest.xml,
+ mod/ecml/start.php: Updated ECML docs. Removed the _ as a valid keyword
+ character (it looks funny). Added the media sites in start.php. Fixed bug
+ that prevented [[view]] from working. Consequently, [[view]] now requires a
+ src="" attribute.
+
+2010-04-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/start.php, mod/ecml/views/default/ecml/keywords/vimeo.php: Added
+ vimeo support to ECML.
+
+ * mod/ecml/ecml_functions.php, mod/ecml/start.php,
+ .../views/default/ecml/keywords/slideshare.php,
+ mod/ecml/views/default/ecml/keywords/youtube.php: Changed tokenizer for ECML
+ to support attribute quotes. Added core youtube and slideshare keywords.
+ Passing the full keyword and attribute string to views.
+
+ * mod/blog/start.php: Added ECML support in blogs.
+
+2010-04-13 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Creating a function to clear user-specific plugin
+ settings.
+
+2010-04-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/ecml/start.php: Remove unneeded check in ecml view hook.
+
+ * mod/ecml/start.php: ECML uses the brand new granular view hooks.
+
+ * mod/blog/languages/en.php: Added item:object:blog language key for stats.
+
+ * engine/lib/elgglib.php: Added granular view hook view:$view_name instead
+ of a monolithic display:view hook.
+
+ * mod/ecml/start.php: Update todo.
+
+ * mod/ecml/README.txt, mod/ecml/ecml_functions.php,
+ mod/ecml/graphics/ecml.png, mod/ecml/languages/en.php, mod/ecml/manifest.xml,
+ mod/ecml/start.php, mod/ecml/views/default/ecml/help.php,
+ mod/ecml/views/default/ecml/input_ext.php,
+ mod/ecml/views/default/ecml/keywords/user_list.php: First version of ecml.
+
+ * mod/sitepages/README.txt, mod/sitepages/languages/en.php,
+ mod/sitepages/manifest.xml, mod/sitepages/sitepages_functions.php,
+ mod/sitepages/start.php, mod/sitepages/views/default/sitepages/keywords.php,
+ .../views/default/sitepages/keywords/user_list.php: Removed ECML from Site
+ Pages.
+
+2010-04-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/bookmarks/group_bookmarks.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/groups/languages/en.php, mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/river/item/wrapper.php: Groups profile page tool widget
+ boxes updated.
+
+ * views/default/css.php, views/default/page_elements/elgg_header.php:
+ Updates to site header and css for Custom Logo mod.
+
+2010-04-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/README.txt, mod/sitepages/actions/addfront.php,
+ mod/sitepages/languages/en.php, mod/sitepages/sitepages_functions.php,
+ mod/sitepages/start.php, .../default/sitepages/keywords/site_stats.php,
+ .../views/default/sitepages/keywords/user_list.php: Updated site pages docs.
+ Added ability to pass arguments to custom keywords. Added user_list keyword.
+ Reject logged out front pages that don't have [[login_box]].
+
+ * mod/sitepages/manifest.xml, mod/sitepages/sitepages_functions.php: Added
+ 'customization' category to manifest. Cleaned up some comments.
+
+ * mod/sitepages/start.php: Checking if we need to pull in a view before
+ calling it.
+
+ * mod/sitepages/views/default/sitepages/menu.php: DRY'd up the edit code in
+ site pages.
+
+ * mod/sitepages/README.txt: Added docs for site pages.
+
+2010-04-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/defaultprofile.php, mod/profile/languages/en.php,
+ mod/profile/views/default/profile/css.php,
+ .../default/profile/editdefaultprofileitems.php: Updated custom profile
+ fields admin area / list re-ordering ui.
+
+ * _graphics/avatar_menu_arrows.gif, _graphics/elgg_sprites.png,
+ _graphics/elgg_toolbar_logout.gif, _graphics/friends_picker_arrows.gif,
+ _graphics/icon_bookmarkthis.gif, _graphics/icon_customise_drag.gif,
+ _graphics/icon_customise_info.gif, _graphics/icon_customise_remove.gif,
+ _graphics/icon_customise_remove.png, _graphics/icon_delete.png,
+ _graphics/icon_gallery.gif, _graphics/icon_like.png, _graphics/icon_odd.gif,
+ _graphics/icon_reportthis.gif, _graphics/icon_rss.gif,
+ _graphics/icon_rss.png, _graphics/icon_tag.gif, _graphics/icon_tag.png,
+ _graphics/more_sprite.png, _graphics/river_icons/river_icon_blog.gif,
+ _graphics/river_icons/river_icon_bookmarks.gif,
+ _graphics/river_icons/river_icon_comment.gif,
+ _graphics/river_icons/river_icon_feed.gif,
+ _graphics/river_icons/river_icon_files.gif,
+ _graphics/river_icons/river_icon_forum.gif,
+ _graphics/river_icons/river_icon_friends.gif,
+ _graphics/river_icons/river_icon_messageboard.gif,
+ _graphics/river_icons/river_icon_pages.gif,
+ _graphics/river_icons/river_icon_plugin.gif,
+ .../river_icons/river_icon_privatemessage.gif,
+ _graphics/river_icons/river_icon_profile.gif,
+ _graphics/river_icons/river_icon_status.gif,
+ _graphics/river_icons/river_icon_thewire.gif, _graphics/search.png,
+ _graphics/speech_bubble_tail.gif, _graphics/thewire_speech_bubble.gif,
+ _graphics/topbar_icons.png, _graphics/twitter16px.png,
+ mod/file/views/default/file/css.php,
+ mod/profile/views/default/profile/css.php, mod/twitter/graphics/twitter.png,
+ mod/twitter/graphics/twitter16px.png,
+ mod/twitter/views/default/twitter/css.php, views/default/css.php,
+ views/default/output/rss_view.php: Collected all core sprites into graphics
+ and updated css accordingly. Removed unused core graphics. Moved
+ plugin-specific graphics into respective plugins graphics directories.
+
+2010-04-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/html_begin.php: Removed custom-form-elements
+
+2010-04-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/toolbar_messages_icon.gif,
+ mod/messages/graphics/toolbar_messages_icon.gif,
+ mod/messages/views/default/messages/css.php: Messages icon removed form main
+ css and graphics and added to messages mod.
+
+ * _graphics/icon_like.png, languages/en.php, views/default/css.php,
+ views/default/js/initialise_elgg.php, views/default/likes/forms/edit.php:
+ Icon added to likes and interface tweaked. Likes list js fixed to correctly
+ get height of current list.
+
+ * languages/en.php, mod/blog/views/default/object/blog.php,
+ mod/profile/views/default/profile/css.php, views/default/css.php,
+ views/default/likes/forms/edit.php: Likes updated for plugins entity list
+ display (just icon remaining to add)
+
+2010-04-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php, views/default/page_elements/content_header.php:
+ create a new group button added
+
+ * .../views/default/bookmarks/group_bookmarks.php: change group bookmarks to
+ get from container guid
+
+2010-04-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: Updated Likes on Blog and
+ Videolist single entity pages
+
+ * .../views/default/riverdashboard/css.php, views/default/css.php,
+ views/default/js/initialise_elgg.php, views/default/likes/forms/edit.php:
+ Added a popup list of users for Likes.
+
+2010-04-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php: Allow login via email.
+
+2010-04-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_header.php: allow for a site logo
+
+2010-04-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/twitterservice/languages/en.php, mod/twitterservice/manifest.xml,
+ mod/twitterservice/start.php, mod/twitterservice/vendors/twitter/license.txt,
+ mod/twitterservice/vendors/twitter/load.php,
+ mod/twitterservice/vendors/twitter/readme.txt,
+ mod/twitterservice/vendors/twitter/send.php,
+ .../vendors/twitter/twitter.class.php,
+ .../default/usersettings/twitterservice/edit.php: Moving Twitter Service
+ plugin from core into the plugins directory.
+
+ * mod/blog/languages/en.php: Adding a language definition.
+
+2010-04-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/item/wrapper.php: conversations now use
+ generic_comments for replies so no need for the extra logic in the river
+ wrapper.
+
+2010-04-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/addcomment.php, mod/profile/actions/deletecomment.php,
+ mod/profile/actions/editfield.php, mod/profile/actions/reorder.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ .../default/profile/editdefaultprofileitems.php,
+ .../profile/profile_contents/commentwall.php: Removed windows line endings.
+
+ * mod/profile/actions/deletedefaultprofileitem.php,
+ .../default/profile/editdefaultprofileitems.php: Fixed incorrect casting to
+ int for profile ids. Fixed incorrect URL for reordering.
+
+ * mod/profile/start.php: Fixed displaying of custom profile fields on
+ profile page.
+
+ * mod/profile/start.php, .../default/profile/editdefaultprofileitems.php:
+ Fixed editable profile fields.
+
+ * mod/profile/vendor/jq.editable.min.js,
+ mod/profile/vendor/jquery.jeditable.mini.js,
+ .../default/profile/editdefaultprofileitems.php: Wrong jquery editable lib.
+
+ * mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/editdefault.php, mod/profile/actions/editfield.php,
+ mod/profile/actions/reorder.php, mod/profile/actions/resetdefaultprofile.php,
+ mod/profile/defaultprofile.php, mod/profile/graphics/drag_handle.png,
+ mod/profile/languages/en.php, mod/profile/manifest.xml,
+ mod/profile/start.php, mod/profile/vendor/jq.editable.min.js,
+ .../views/default/profile/editdefaultprofile.php,
+ .../default/profile/editdefaultprofileitems.php: First go at merging in
+ draggable profile fields. Added categories to profile plugin.
+
+ * engine/lib/elgglib.php: Added optional html_encode parameter to
+ elgg_add_action_tokens_to_url() so it can be used in ajax calls.
+
+2010-04-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php, mod/blog/languages/en.php, mod/blog/start.php:
+ Highlighting current tab in content header. Includes updates to language
+ strings.
+
+2010-04-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/index.php: mine tab selects correctly now
+
+2010-04-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php, mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/object/blog.php: Creating content for the blog posts
+ of user's friends.
+
+2010-04-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php: Fixed broken interface on
+ updated plugin list
+
+2010-04-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/views/default/blog/forms/edit.php: Updating autosave handler and
+ "Saved date" return values.
+
+ * engine/lib/metadata.php: Ensuring malformed offset/limit values are
+ ignored by elgg_list_entities_from_metadata(). Refs #2046
+
+2010-04-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, .../views/default/river/object/blog/create.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ views/default/annotation/annotate.php, views/default/annotation/likes.php,
+ views/default/css.php, views/default/js/initialise_elgg.php,
+ views/default/likes/forms/display.php, views/default/likes/forms/edit.php,
+ views/default/likes/forms/link.php: Riverdashboard refreshed, and updated
+ display of comments and likes (the loading of these needs to be moved to ajax
+ callbacks)
+
+2010-04-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/feeds.php,
+ .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php: profile feeds moved from
+ top tabs
+
+2010-04-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/settings/system.php: Removed installation usage settings.
+
+2010-04-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/css.php,
+ views/default/js/initialise_elgg.php: Added screenshots to plugins list.
+
+2010-04-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt:
+
+ * CONTRIBUTORS.txt: upon request
+
+2010-04-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Sanitise int on the offset.
+
+2010-04-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_footer.php: Footer float cleared for
+ theming purposes.
+
+2010-04-05 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/save.php, mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/input/datetime.php: Adding a datetime view for use
+ with blog publication.
+
+2010-04-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php, languages/en.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php: Added category and name as valid
+ plugin manifest keys/values.
+
+2010-04-05 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Metadata lists will default offset and limit to
+ existing url elements.
+
+2010-04-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: load_plugin_manifest() converts multiple keys with
+ the same name into assoc arrays.
+
+2010-04-05 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog.php: Ensuring generic text line breaks
+ are replaced by paragraph tags.
+
+ * engine/lib/metadata.php: Passing entity list options on to view.
+
+ * engine/lib/elgglib.php: Refs #1947: Do not require views to explicitly
+ pass in the offset.
+
+2010-04-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/input.php, engine/schema/mysql.sql,
+ mod/htmlawed/start.php, mod/messages/views/default/messages/css.php,
+ .../notifications/subscriptions/forminternals.php,
+ mod/profile/actions/edit.php, mod/search/languages/en.php,
+ mod/search/search_hooks.php, mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/rss/search/comments/entity.php,
+ views/default/account/forms/register.php, views/default/friends/picker.php,
+ views/default/output/friendlytitle.php: Merged 5605:5622 from 1.7 to trunk.
+
+ * CHANGES.txt, actions/admin/user/makeadmin.php,
+ actions/admin/user/removeadmin.php, actions/register.php,
+ actions/useradd.php, engine/lib/actions.php, engine/lib/annotations.php,
+ engine/lib/database.php, engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/lib/group.php, engine/lib/metadata.php, engine/lib/notification.php,
+ engine/lib/river2.php, engine/lib/sessions.php,
+ engine/lib/upgrades/2010033101.php, engine/lib/upgrades/2010040201.php,
+ engine/lib/users.php, engine/lib/widgets.php,
+ engine/schema/upgrades/2009100701.sql,
+ engine/tests/api/entity_getter_functions.php, engine/tests/objects/users.php,
+ languages/en.php, mod/bookmarks/index.php, mod/bookmarks/start.php,
+ .../views/default/widgets/bookmarks/edit.php, mod/file/index.php,
+ mod/file/start.php, mod/file/views/default/widgets/filerepo/edit.php,
+ mod/file/views/default/widgets/filerepo/view.php, mod/groups/discussions.php,
+ mod/pages/index.php, mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/profile/actions/edit.php,
+ mod/profile/icondirect.php, .../views/default/profile/menu/adminlinks.php,
+ mod/search/index.php, mod/thewire/actions/add.php, mod/thewire/everyone.php,
+ mod/thewire/languages/en.php, mod/thewire/start.php,
+ .../views/default/thewire/activity_view.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/widgets/thewire/edit.php,
+ mod/thewire/views/default/widgets/thewire/view.php,
+ .../views/rss/search/object/thewire/entity.php, version.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/output/friendlytime.php,
+ views/default/output/friendlytitle.php, views/default/output/url.php,
+ views/default/page_elements/elgg_topbar.php: Merged 5530:5604 from 1.7 to
+ trunk.
+
+ * engine/lib/entities.php, mod/bookmarks/actions/add.php,
+ mod/embed/views/default/embed/media.php,
+ mod/embed/views/default/embed/pagination.php, mod/file/actions/save.php,
+ mod/groups/actions/edit.php, mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/members/index.php,
+ mod/members/views/default/members/search.php, mod/messages/actions/send.php,
+ mod/pages/actions/pages/edit.php, views/default/output/url.php,
+ views/failsafe/messages/sanitisation/settings.php: Merged 5487:5525 from 1.7
+ to trunk.
+
+2010-04-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/feeds.php: count added
+
+ * mod/profile/profile_lib.php,
+ .../default/profile/profile_contents/feeds.php,
+ .../views/default/profile/profile_navigation.php: feeds options added to the
+ profile
+
+ * views/default/account/forms/login.php: return to referer added to the
+ login form
+
+2010-04-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/forminternals.php: merged [5526] - [5530]
+ into trunk from 1.7 branch - there are more changes before and after these
+ revisions to be merged
+
+ * views/default/admin/plugins.php: the disable button may be for disabling
+ plugins but it is not disabled itself
+
+ * CHANGES.txt, engine/lib/elgglib.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php: Fixes #1184 - added
+ elgg_format_url() for handling ampersands in urls
+
+ * views/default/page_elements/elgg_topbar.php: target is not allowed in
+ xhtml strict
+
+ * views/default/account/forms/login.php: fixed some markup issues with login
+ box
+
+ * views/default/navigation/site_nav.php: only display navigation if there
+ are registered nav items - cannot have ul element without li elements
+
+ * views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/html_begin.php: removed two elements not allowed
+ with xhtml strict and removed blank line at top of html sent to browser
+
+2010-04-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/site_nav.php: Fixed the empty nav item entries
+ when automatically building menu.
+
+2010-04-02 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php: Determining which content header to use based on
+ blog owner. Primary navigation tabs should not display on other users' blog
+ lists.
+
+ * mod/blog/blog_lib.php, mod/blog/languages/en.php: Allowing non-owners to
+ view published blog posts.
+
+ * mod/blog/blog_lib.php: Truncating lengthy blog excerpts on word breaks.
+
+ * mod/blog/blog_lib.php, mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/object/blog.php: Fixing breadcrumb navigation and
+ content header links for blogs.
+
+ * views/default/page_elements/content_header.php: Allowing default page
+ handler to be overridden. You can pass in full url overrides to the content
+ header view for all/mine/friend tabs.
+
+2010-04-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/activity.php: limit set for profile
+ river
+
+ * views/default/annotation/latest_comments.php: small lang tweak
+
+ * mod/groups/start.php: point the groups main nav link to the all groups
+ page
+
+ * mod/bookmarks/all.php, mod/bookmarks/languages/en.php,
+ mod/bookmarks/views/default/bookmarks/stats.php: bookmark stats now correct,
+ missing strings applied and a function call moved out of the view.
+
+ * mod/profile/start.php: hash out the profile menu option for now, this will
+ be moved to the topbar.
+
+2010-03-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/more_sprite.png, languages/en.php,
+ views/default/admin/menu_items.php, views/default/css.php,
+ views/default/css_ie.php, views/default/css_ie6.php,
+ views/default/navigation/site_nav.php: Updated site primary nav bar and
+ improved drop-down submenu and made IE compatible, also cleaned up / improved
+ menuitem admin area.
+
+2010-03-31 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/languages/en.php, .../views/default/river/object/blog/create.php:
+ blog river view altered to pull out some content
+
+2010-03-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css_ie.php, views/default/css_ie6.php,
+ views/default/page_elements/html_begin.php: Updated paths to IE specific css,
+ and triggered hasLayout for IE.
+
+2010-03-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/languages/en.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/group_bookmarks.php,
+ mod/groups/views/default/groups/css.php: Added the beginnings of a bookmark
+ view for group profile pages.
+
+ * mod/file/start.php, mod/file/views/default/file/groupprofile_files.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/profileitems.php: Added the beginnings of a
+ new method for displaying the latest content from each tool on a groups
+ profile page.
+
+ * mod/blog/views/default/blog/sidebar_menu.php: Changed blog archive header
+ tag.
+
+ * mod/profile/languages/en.php,
+ .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ mod/profile/views/default/profile/css.php: Updated UI for commentwall on
+ profile page.
+
+2010-03-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/addcomment.php, mod/profile/actions/deletecomment.php,
+ mod/profile/languages/en.php, mod/profile/profile_lib.php,
+ mod/profile/start.php, .../default/profile/commentwall/commentwall.php,
+ .../profile/commentwall/commentwall_content.php,
+ .../default/profile/commentwall/commentwalladd.php,
+ .../profile/profile_contents/commentwall.php,
+ .../views/default/profile/profile_navigation.php: simple comment wall added
+ to profiles
+
+ * .../views/default/profile/profile_navigation.php: inserted a view for
+ others to extend on profile navigation
+
+2010-03-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/object/blog/create.php: Added river item views to
+ blog.
+
+ * README.txt: Changed Ben's email addy in README.txt.
+
+2010-03-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/likes/forms/edit.php: Updated Likes link.
+
+ * languages/en.php, views/default/comments/forms/edit.php: Updated generic
+ comment submit button text.
+
+2010-03-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Bumped version in README.
+
+ * actions/likes/delete.php, mod/bookmarks/actions/edit.php,
+ mod/bookmarks/actions/reference.php, mod/bookmarks/actions/remove.php,
+ mod/bookmarks/views/default/bookmarks/stats.php,
+ .../views/default/members/members_navigation.php,
+ mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ .../views/default/riverdashboard/welcome.php,
+ mod/sitepages/actions/addmeta.php, mod/sitepages/sitepages_functions.php,
+ .../views/default/settings/sitepages/edit.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/keywords.php,
+ mod/sitepages/views/default/sitepages/metatags.php,
+ views/default/annotation/annotatelike.php,
+ views/default/annotation/likes.php, views/foaf/search/entity_list.php,
+ views/opendd/search/entity_list.php, views/rss/search/entity_list.php:
+ Converting all line endings to unix style.
+
+ * .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/rivercomment.php,
+ views/default/js/initialise_elgg.php, views/default/likes/forms/edit.php:
+ Fixed likes interface JS.
+
+ * mod/blog/actions/blog/save.php, mod/blog/blog_lib.php,
+ mod/blog/languages/en.php, mod/blog/start.php: Added river support to blog.
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php: Cleaned up the likes
+ interface a bit.
+
+ * mod/blog/blog_lib.php: Fixed weird login in blog for real.
+
+ * mod/blog/blog_lib.php: Added access controls to blog archive grabbing
+ function. Corrected weird logic for checking validity of blog entities while
+ displaying posts.
+
+2010-03-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/mpg.php: Small update to zaudio player
+ spacing for new layout.
+
+2010-03-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/search/comments/entity.php,
+ views/default/annotation/generic_comment.php: Added anchor names for
+ comments.
+
+ * actions/admin/menu_items.php, engine/lib/elgglib.php, languages/en.php,
+ views/default/admin/menu_items.php: Added ability to make arbitrary links for
+ the menu items.
+
+ * mod/blog/blog_lib.php, mod/blog/views/default/blog/sidebar_menu.php: Added
+ archive view for blogs.
+
+ * engine/lib/metadata.php: Added documentation for order_by_metadata.
+
+2010-03-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: tag cloud functions are deprecated in 1.8
+
+2010-03-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/blog_lib.php, mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/sidebar_menu.php: Added filtering by archive
+ date.
+
+ * views/default/input/datepicker.php: Corrected bug in datepicker for
+ passing in values.
+
+ * CHANGES.txt, engine/lib/entities.php: Added remove_subtype() and
+ update_subtype().
+
+ * engine/lib/elgglib.php: Added missing merge from Merge Monday.
+
+ * mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/save.php, mod/blog/blog_lib.php,
+ mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/object/blog.php: Added an ElggBlog class to override
+ the time_created field. Added extra language files.
+
+2010-03-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php, mod/riverdashboard/index.php: Minor update
+ to profile language strings, and corrected view on riverdashboard for views
+ to extend.
+
+ * views/default/input/userpicker.php: Updated userpicker to use generic
+ delete button
+
+ * views/default/page_elements/elgg_topbar.php: Reordered the top toolbar
+ items.
+
+ * views/default/css.php: Moved Shared Access css into plugin
+
+2010-03-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/site_nav.php: Added selected class in navbar
+ menu.
+
+2010-03-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/languages/en.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../views/default/sitepages/forms/editfront.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/keywords.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/sitepages/views/default/sitepages/metatags.php: Updated SitePages to new
+ code standards & UI.
+
+2010-03-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/settings/upgrading.php: Update to
+ ajax loader css and upgrade.php
+
+2010-03-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/configuration.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/input.php,
+ engine/lib/install.php, engine/lib/metadata.php, engine/lib/tags.php,
+ engine/lib/users.php, languages/en.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ mod/custom_index/languages/en.php, mod/externalpages/actions/add.php,
+ .../views/default/expages/forms/edit.php,
+ mod/groups/actions/groupskillinvitation.php, mod/groups/all.php,
+ mod/groups/languages/en.php, mod/groups/views/default/groups/find.php,
+ .../views/default/groups/invitationrequests.php,
+ mod/groups/views/rss/groups/profileitems.php,
+ mod/groups/views/rss/object/groupforumtopic.php, mod/messages/index.php,
+ mod/messages/sent.php, mod/search/views/rss/search/layout.php,
+ mod/thewire/start.php, mod/tinymce/views/default/input/longtext.php,
+ views/default/output/tagcloud.php,
+ .../messages/sanitisation/dbsettings_error.php: Merged 1.7 bugfixes back into
+ core. (5376:HEAD).
+
+2010-03-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/start.php, mod/file/views/default/file/menu.php,
+ mod/messages/start.php, mod/messages/views/default/messages/menu.php,
+ mod/pages/start.php, mod/pages/views/default/pages/menu.php,
+ mod/profile/languages/en.php, mod/profile/start.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminwrapper.php,
+ .../views/default/profile/menu/friendlinks.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ .../views/default/profile/profile_ownerblock.php,
+ mod/profile/views/default/profile/submenu.php,
+ .../views/default/reportedcontent/user_report.php: Updated avatar menu:
+ Removed links to tools, provided a view to extend menu, added @username to
+ menu, cleaned-up and simplified menu generation.
+
+ * mod/profile/index.php, mod/profile/profile_lib.php, mod/profile/start.php,
+ .../views/default/profile/profile_navigation.php: Removed widget view from
+ Profile.
+
+2010-03-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/rivercomment.php: hide the river comment
+ form - still need to add a handle to each one so the correct comment form
+ opens
+
+ * actions/comments/add.php, actions/comments/delete.php,
+ mod/riverdashboard/start.php, .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/rivercomment.php: the beginnings of a
+ mechanism to comment on river objects
+
+ * actions/likes/delete.php: after delete action, return to the correct
+ context
+
+ * views/default/annotation/likes.php: timestamp added to like action view
+
+ * .../views/default/river/item/wrapper.php,
+ views/default/likes/forms/edit.php: more tweaks to likes on the activity
+ stream
+
+ * .../views/default/river/item/wrapper.php: likes added to the activity
+ river
+
+ * mod/blog/views/default/object/blog.php: like display added to blog object
+
+ * mod/blog/views/default/object/blog.php: like added to blog posts
+
+ * actions/likes/add.php, actions/likes/delete.php,
+ engine/lib/annotations.php, engine/lib/elgglib.php, languages/en.php,
+ views/default/annotation/annotatelike.php,
+ views/default/annotation/likes.php, views/default/likes/forms/edit.php:
+ generic like this functionality added
+
+2010-03-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, languages/en.php,
+ views/default/admin/menu_items.php, views/default/css.php,
+ views/default/navigation/site_nav.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/page_elements/elgg_topbar.php: Moved toolbar dropdown menu to
+ main nav. Added CSS for main nav dropdown. Emptied navigation/topbar_tools
+ view.
+
+ * engine/start.php: Removed non-working "lightmode" option.
+
+ * engine/lib/elgglib.php, engine/start.php: Removed ui_page_setup() to fix
+ installation. Gave engine/start.php a bit of love.
+
+2010-03-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/start.php, mod/bookmarks/start.php, mod/file/start.php,
+ mod/groups/start.php, mod/riverdashboard/start.php,
+ mod/thewire/languages/en.php, mod/thewire/start.php: Default all tools' menu
+ items to "world" view. Removed "My" prefix.
+
+ * mod/tinymce/views/default/input/longtext.php: Added a space between the
+ word count colon and the number for tinymce.
+
+ * engine/lib/elgglib.php: Namespaces sticky forms. Requires more testing.
+
+2010-03-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/content_header_filter.gif,
+ vendors/jquery/custom-form-elements.js, views/default/css.php,
+ views/default/page_elements/content_header.php: Removed page content area
+ filter menu, in favor of simple tabs.
+
+ * languages/en.php, mod/blog/views/default/blog/sidebar_menu.php,
+ mod/file/friends.php, mod/file/index.php, mod/file/world.php,
+ views/default/annotation/latest_comments.php, views/default/css.php: Updated
+ latest comments to new UI and coding standards, and added to Blog and Files
+ sidebar.
+
+2010-03-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/blog/auto_save_revision.php,
+ mod/blog/actions/blog/save.php, mod/blog/actions/blog/save_draft.php,
+ mod/blog/blog_lib.php, mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/sidebar_edit.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/sidebar_revisions.php,
+ mod/blog/views/default/object/blog.php: Updated blog to support multiple
+ revisions and automatic saving of drafts.
+
+2010-03-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/object/blog.php, mod/bookmarks/add.php,
+ mod/bookmarks/all.php, mod/bookmarks/friends.php, mod/bookmarks/index.php,
+ mod/bookmarks/views/default/object/bookmarks.php: Included a view for plugins
+ to extend (on the new reworked Bookmarks and Blogs).
+
+2010-03-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/languages/en.php: Added blog languages.
+
+ * actions/admin/menu_items.php, admin/menu_items.php, engine/lib/admin.php,
+ engine/lib/elgglib.php, engine/lib/users.php, languages/en.php,
+ views/default/admin/menu_items.php, views/default/navigation/site_nav.php,
+ views/default/navigation/topbar_tools.php: Added config options for tabs and
+ menu items.
+
+2010-03-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/activity.php,
+ .../views/default/river/item/wrapper.php, views/default/css.php,
+ views/default/navigation/site_nav.php: Updates to: site nav (changed unused
+ id's to title tags), latest wire post in admin/user lists, riverdashboard
+ timestamps unified, and latest wire post on profile page.
+
+2010-03-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Updated documentation for set_config().
+ Removed unnecessary escaping of value before serializing, which broke arrays
+ anyway...
+
+ * views/default/input/pulldown.php: Documented pulldown quirks for NULL and
+ FALSE as values. Fixed bug when calling htmlentities() on the values before
+ testing them.
+
+ * views/default/input/pulldown.php: Refs #1362: Fixed a problem when
+ comparing int and string values to determin the pulldown's selected value.
+
+2010-03-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/messages/views/default/messages/css.php: Minor css update to new
+ message notification.
+
+ * views/default/navigation/site_nav.php: Addition of 'conversations' to
+ temporary site_nav.
+
+ * entities/list.php, mod/blog/start.php,
+ mod/bookmarks/views/default/bookmarks/stats.php,
+ .../views/default/widgets/bookmarks/view.php, mod/members/index.php: Replaced
+ more calls to deprecated functions.
+
+ * services/export/handler.php, views/default/export/entity.php,
+ views/default/export/metadata.php, views/default/export/relationship.php:
+ Updates to default entity views (within admin/log browser).
+
+ * mod/logbrowser/views/default/logbrowser/form.php: Minor update (form
+ spacing) to log browser.
+
+ * .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/form.php: Minor UI updates to reported
+ content.
+
+ * mod/file/views/default/widgets/filerepo/view.php,
+ views/default/navigation/viewtype.php: Minor updates to Files.
+
+ * mod/embed/embed.php, mod/embed/images/button_spacer.gif,
+ mod/embed/images/loading.gif, mod/embed/images/media_modal.png,
+ mod/embed/start.php, mod/embed/views/default/embed/css.php,
+ mod/embed/views/default/embed/js.php, mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/media.php,
+ mod/embed/views/default/embed/pagination.php,
+ mod/embed/views/default/embed/simpletype.php,
+ mod/embed/views/default/embed/tabs.php,
+ mod/embed/views/default/embed/upload.php,
+ mod/embed/views/default/group/default/embed.php,
+ mod/embed/views/default/object/default/embed.php,
+ mod/embed/views/default/object/file/embed.php,
+ mod/embed/views/default/object/file/embedlist.php,
+ mod/embed/views/default/site/default/embed.php,
+ mod/embed/views/default/user/default/embed.php: Updated Embed mod to new UI.
+
+ * views/default/css.php: Updates to generic comments
+
+2010-03-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/views/default/file/css.php,
+ mod/file/views/default/object/file.php: Further updates to files single
+ entity view.
+
+ * entities/index.php, mod/file/edit.php, mod/file/friends.php,
+ mod/file/index.php, mod/file/languages/en.php, mod/file/search.php,
+ mod/file/start.php, mod/file/upload.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/file/upload.php,
+ mod/file/views/default/object/file.php, mod/file/world.php,
+ mod/profile/views/default/profile/css.php,
+ mod/search/views/default/search/gallery.php,
+ mod/tinymce/views/default/tinymce/css.php, views/default/css.php,
+ views/default/entities/gallery.php, views/default/navigation/site_nav.php:
+ Updated File mod to new UI.
+
+ * mod/profile/defaultprofile.php: Corrected misspelt classname.
+
+2010-03-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tagcloud/start.php: Replaced extend_view() with elgg_extend_view().
+
+ * .../views/default/reportedcontent/listing.php, mod/sitepages/start.php,
+ views/default/output/confirmlink.php, views/default/output/url.php: Replaced
+ calls to deprecated elgg_validate_action_url() with
+ elgg_add_action_tokens_to_url().
+
+2010-03-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php, views/default/css.php: Update to
+ longtext/tintMCE input box ui.
+
+ * admin/plugins.php, mod/profile/defaultprofile.php,
+ mod/profile/views/default/profile/css.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../views/default/reportedcontent/listing.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ views/default/admin/plugins.php, views/default/admin/plugins_opt/plugin.php,
+ views/default/admin/site.php, views/default/admin/user.php,
+ views/default/css.php, views/default/settings/system.php: Updates to Admin
+ area UI.
+
+ * mod/captcha/captcha.php, mod/captcha/start.php,
+ mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php: Updated Captcha UI.
+
+ * mod/twitter/views/default/twitter/css.php,
+ mod/twitter/views/default/widgets/twitter/view.php,
+ mod/twitterservice/start.php,
+ .../default/usersettings/twitterservice/edit.php: Updates to Twitter and
+ TwitterService UI.
+
+ * views/default/usersettings/plugins.php: Small update to
+ user-settings/tools page.
+
+ * mod/thewire/everyone.php: …and doing it properly this time.
+
+ * mod/invitefriends/index.php, mod/invitefriends/manifest.xml,
+ mod/invitefriends/start.php, .../views/default/invitefriends/formitems.php:
+ Updated Invite Friends mod to new ui.
+
+ * .../graphics/icon_notifications_site.gif, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/notifications/languages/en.php,
+ .../views/default/notifications/css.php,
+ .../notifications/settings/usersettings.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/personal.php, views/default/css.php: Updated
+ Notifications to new UI.
+
+2010-03-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Trunk isn't 1.7.
+
+2010-03-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/search_box.php,
+ views/default/input/form.php: seems you need to wrap form inputs fields with
+ the fieldset tag for strict xhtml
+
+ * views/default/page_elements/html_begin.php: capitals not allow for strict
+ xhtml
+
+ * views/default/page_elements/html_begin.php: self close the favicon link
+
+2010-03-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/blog/sidebar_menu.php,
+ mod/tagcloud/languages/de.php, mod/tagcloud/languages/en.php,
+ mod/tagcloud/manifest.xml, mod/tagcloud/start.php, mod/tagcloud/tagcloud.php,
+ mod/tagcloud/views/default/output/tagcloud.php,
+ mod/tagcloud/views/default/tagcloud/css.php,
+ .../views/default/widgets/tagcloud/edit.php,
+ .../views/default/widgets/tagcloud/view.php, views/default/css.php: Added
+ updated tagcloud plugin and added to core mods.
+
+2010-03-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * UPGRADE.txt, admin/user.php, engine/lib/elgglib.php, index.php,
+ languages/en.php, mod/diagnostics/start.php, mod/file/friends.php,
+ mod/file/index.php, mod/file/search.php, mod/file/world.php,
+ mod/groups/all.php, mod/groups/index.php, mod/groups/membership.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/pages/actions/pages/edit.php, mod/pages/index.php,
+ mod/pages/languages/en.php, mod/pages/views/default/forms/pages/edit.php,
+ mod/pages/views/default/pages/welcome.php, mod/pages/world.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/search/search_hooks.php,
+ mod/thewire/everyone.php, mod/uservalidationbyemail/start.php: Merged Cash's
+ bugfixes from the 1.7 branch (3288:5377).
+
+2010-03-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/header_shadow.png, mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/object/blog.php,
+ views/default/annotation/annotate.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php, views/default/css.php:
+ Updated/cleaned-up generic comments with new UI.
+
+ * mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/object/blog.php,
+ views/default/annotation/generic_comment.php,
+ views/default/comments/forms/edit.php: Updated interface on new blog
+ (listings and edit/new blog pages).
+
+ * mod/bookmarks/views/default/object/bookmarks.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/groups/css.php,
+ mod/messages/views/default/messages/view.php,
+ mod/thewire/views/default/object/thewire.php, views/default/css.php: Updated
+ and simplified generic entity listings metadata block (edit, delete, access)
+ to not use tables.
+
+ * mod/blog/views/default/blog/sidebar_menu.php,
+ mod/groups/views/default/groups/side_menu.php, mod/members/index.php,
+ mod/profile/views/default/profile/submenu.php,
+ .../views/default/riverdashboard/menu.php,
+ views/default/canvas_header/submenu_group.php, views/default/css.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/title.php: Removed unneeded div from around
+ submenu lists.
+
+2010-03-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Added elgg_list_entities_from_metadata() and
+ deprecated list_entities_from_metadata().
+
+ * views/default/input/calendar.php, views/default/input/datepicker.php:
+ Added datepicker view and deprecated calendar view.
+
+ * mod/blog/actions/add.php, mod/blog/actions/blog/delete.php,
+ mod/blog/actions/blog/save.php, mod/blog/actions/blog/save_draft.php,
+ mod/blog/actions/delete.php, mod/blog/actions/edit.php, mod/blog/add.php,
+ mod/blog/all.php, mod/blog/archive.php, mod/blog/blog_lib.php,
+ mod/blog/edit.php, mod/blog/endpoint/index.php, mod/blog/everyone.php,
+ mod/blog/friends.php, mod/blog/index.php, mod/blog/languages/en.php,
+ mod/blog/manifest.xml, mod/blog/preview.php, mod/blog/read.php,
+ mod/blog/savedraft.php, mod/blog/shared.php, mod/blog/start.php,
+ mod/blog/views/default/blog/archive.php,
+ mod/blog/views/default/blog/categorylist.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/gallery.php,
+ mod/blog/views/default/blog/listing.php,
+ mod/blog/views/default/blog/menu.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/previewpane.php,
+ mod/blog/views/default/blog/sidebar_menu.php,
+ mod/blog/views/default/blog/stats.php, mod/blog/views/default/blog/view.php,
+ mod/blog/views/default/object/blog.php,
+ .../views/default/river/object/blog/annotate.php,
+ .../views/default/river/object/blog/create.php,
+ .../views/default/river/object/blog/update.php: Rough first version of a new
+ blog plugin.
+
+2010-03-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/css.php: Minor interface updates for
+ search results.
+
+2010-03-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/elgglib.php,
+ mod/tinymce/views/default/input/longtext.php, views/default/input/access.php,
+ views/default/input/calendar.php, views/default/input/checkboxes.php,
+ views/default/input/email.php, views/default/input/hidden.php,
+ views/default/input/longtext.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php, views/default/input/userpicker.php: Implemented
+ sticky forms.
+
+2010-03-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/search/comments/entity.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/listing.php, views/default/css.php,
+ views/default/entities/gallery_listing.php: Updated Search results UI.
+
+2010-03-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/elgglib.php, mod/bookmarks/add.php,
+ mod/bookmarks/index.php, mod/groups/forum.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/messages/views/default/messages/messages.php,
+ views/default/navigation/breadcrumbs.php,
+ views/default/page_elements/breadcrumbs.php,
+ views/default/page_elements/content_header.php: Added breadcrumb support and
+ updated the mods with old-style breadcrumbs.
+
+2010-03-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/user.php, mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/embed/views/default/embed/upload.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/invitefriends/formitems.php,
+ mod/tinymce/views/default/input/longtext.php, views/default/css.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php, views/failsafe/input/access.php,
+ views/failsafe/input/longtext.php, views/failsafe/input/text.php: Updates:
+ longtext editor default size added (and overridden in group/forums), more
+ updates to lists of members, remaining/previously-missed generic input
+ classes renamed to lowercase.
+
+ * friends/index.php, friends/of.php,
+ mod/members/views/default/members/css.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/thewire/views/default/thewire/css.php,
+ views/default/admin/statistics_opt/online.php, views/default/css.php: Updated
+ friends/members listings when there is a latest wire post to display.
+
+ * mod/blog/views/default/blog/menu.php,
+ mod/file/views/default/file/menu.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/pages/views/default/pages/menu.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminwrapper.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ .../views/default/reportedcontent/user_report.php: Updated avatar user menu
+ to generate an ordered list, reinstated the add/remove friend link, & cleaned
+ up css.
+
+ * .../default/river/object/bookmarks/create.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ mod/riverdashboard/endpoint/ping.php,
+ mod/riverdashboard/graphics/refresh.png,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/default/river/object/thewire/create.php,
+ mod/thewire/views/default/thewire/css.php,
+ views/default/annotation/annotate.php, views/default/css.php,
+ views/default/friends/river/create.php, views/default/river/item/wrapper.php,
+ views/default/river/wrapper.php: Riverdashboard updated to new UI. DOM
+ simplified a bit & css cleaned up.
+
+2010-03-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/tests/api/helpers.php: Added elgg_instanceof().
+
+2010-03-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/languages/en.php, mod/members/views/default/members/css.php,
+ .../views/default/notifications/css.php,
+ .../notifications/subscriptions/forminternals.php, views/default/css.php,
+ views/default/friends/collections.php, views/default/friends/picker.php,
+ views/default/js/friendsPickerv1.php: Updated Friends Picker UI and added to
+ core css.
+
+ * mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/css.php: Minor ui updates to group forms
+
+2010-03-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/profile/profile_contents/activity.php: profile activity
+ tweaked // it is still not working correctly but doesn't cause a wsod
+
+2010-03-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php, mod/groups/discussions.php, mod/groups/forum.php,
+ mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/group/group.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ .../views/default/groups/invitationrequests.php,
+ mod/groups/views/default/groups/members.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/rss/groups/profileitems.php: Updated Groups to the new
+ interface. Some view clean-up & simplification done.
+
+2010-03-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php: river time stamps added to
+ profile edits
+
+ * mod/bookmarks/views/default/object/bookmarks.php: bookmarks open in a new
+ window ticket #1965
+
+ * mod/riverdashboard/index.php: closing div applied. Note: this needs
+ cleaning up.
+
+ * mod/riverdashboard/endpoint/ping.php, mod/riverdashboard/index.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/manifest.xml,
+ mod/riverdashboard/start.php, .../views/default/river/dashboard.php,
+ .../views/default/river/item/list.php,
+ .../views/default/river/item/wrapper.php,
+ .../default/river/relationship/friend/create.php,
+ .../views/default/river/sitemessage/create.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/menu.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/default/settings/riverdashboard/edit.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php: the beginnings of a new
+ activity river with ajax notification and conversation clustering.
+
+ * engine/lib/river2.php: new activity river api functions
+
+2010-03-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed incorrect deprecated function rewrite for
+ list_entities().
+
+ * .../canvas/layouts/one_column_with_sidebar.php: Fixed documentation for
+ one_column_with_sidebar layout.
+
+2010-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/add.php, mod/blog/actions/delete.php,
+ mod/blog/actions/edit.php, mod/blog/add.php, mod/blog/edit.php,
+ mod/blog/endpoint/index.php, mod/blog/languages/en.php,
+ mod/blog/manifest.xml, mod/blog/savedraft.php, mod/blog/start.php,
+ mod/blog/views/default/blog/archive.php,
+ mod/blog/views/default/blog/categorylist.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/gallery.php,
+ mod/blog/views/default/blog/listing.php,
+ mod/blog/views/default/blog/menu.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/previewpane.php,
+ mod/blog/views/default/blog/stats.php, mod/blog/views/default/blog/view.php,
+ mod/blog/views/default/object/blog.php: Blogs updated to new UI (needs Brett
+ to look over first)
+
+ * mod/profile/profile_lib.php,
+ .../default/profile/profile_contents/sidebar.php,
+ .../views/default/profile/profile_ownerblock.php: Added large avatar to
+ Profile/details page.
+
+2010-03-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php: Forwarding to index.php after login instead of
+ pg/dashboard.
+
+2010-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/index.php, .../default/profile/profile_contents/details.php:
+ Full profile fields reinstated on profile/details page
+
+ * mod/profile/index.php, .../default/profile/profile_contents/activity.php:
+ Updated profile page calls to profile_contents.
+
+2010-03-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/sitepages_functions.php: Fixes #1956: Corrected typo for
+ filtering by owner=username.
+
+2010-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/languages/en.php, views/default/css.php,
+ views/default/navigation/main_nav.php, views/default/navigation/site_nav.php,
+ views/default/page_elements/elgg_header.php: Added basic (stage1) site-wide
+ navigation. Needs improving with a way for admin and plugin authors to decide
+ which mods display in the primary nav-bar, and which page within each tool
+ they point at.
+
+ * _graphics/icon_rss.png, languages/en.php,
+ mod/bookmarks/views/default/bookmarks/form.php, views/default/css.php,
+ views/default/page_elements/owner_block.php: Generic rss feed icon added
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/editicon.php: Edit profile icon ui fixed.
+
+2010-03-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/sitepages/forms/editmeta.php: add/edit metatags form bug
+ fixed
+
+2010-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/edit.php, mod/profile/editicon.php, mod/profile/start.php:
+ Fixed canvas layout for profile edit views
+
+2010-03-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/object/thewire.php: Ticket #1954 fixed
+
+2010-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/languages/en.php, mod/thewire/start.php: Updated 'my wire'
+ link in toolbar menu
+
+ * mod/bookmarks/all.php, mod/members/index.php: Removed users owner block
+ from 'all bookmarks', and 'all members' views.
+
+ * admin/plugins.php, admin/site.php, admin/statistics.php, admin/user.php,
+ dashboard/latest.php, friends/add.php, friends/collections.php,
+ friends/edit.php, friends/index.php, friends/of.php, index.php,
+ mod/blog/all.php, mod/blog/archive.php, mod/blog/everyone.php,
+ mod/blog/friends.php, mod/blog/index.php, mod/blog/preview.php,
+ mod/blog/read.php, mod/blog/shared.php, mod/bookmarks/add.php,
+ mod/bookmarks/all.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/friends.php, mod/bookmarks/index.php,
+ mod/diagnostics/index.php, mod/externalpages/index.php,
+ mod/externalpages/read.php, mod/groups/addtopic.php, mod/groups/all.php,
+ mod/groups/discussions.php, mod/groups/edit.php, mod/groups/edittopic.php,
+ mod/groups/forum.php, mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invitations.php, mod/groups/invite.php, mod/groups/membership.php,
+ mod/groups/membershipreq.php, mod/groups/new.php, mod/groups/topicposts.php,
+ mod/logbrowser/index.php, mod/members/index.php, mod/messages/index.php,
+ mod/messages/read.php, mod/messages/send.php, mod/messages/sent.php,
+ mod/profile/defaultprofile.php, mod/profile/edit.php,
+ mod/profile/editicon.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/index.php, mod/search/index.php,
+ mod/search/views/default/search/layout.php,
+ mod/sitepages/sitepages_functions.php, mod/thewire/add.php,
+ mod/thewire/everyone.php, mod/thewire/index.php, mod/walledgarden/index.php,
+ settings/plugins.php, settings/statistics.php, settings/user.php,
+ .../canvas/layouts/one_column_with_sidebar.php: Updated new page canvases
+ (and calls to elgg_view_layout) so that empty vars are not required.
+
+2010-03-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/actions/addfront.php, mod/sitepages/actions/addmeta.php,
+ mod/sitepages/languages/en.php, mod/sitepages/sitepages_functions.php,
+ mod/sitepages/start.php, .../views/default/settings/sitepages/edit.php,
+ .../views/default/sitepages/custom_frontpage.php,
+ .../views/default/sitepages/footer_menu.php,
+ .../views/default/sitepages/forms/editfront.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/keywords.php,
+ mod/sitepages/views/default/sitepages/metatags.php: Added dynamic keywords
+ for view and entity. Separated logged in and logged out front page views.
+ Fixed a problem with saving metatags. Added PHPDoc headers. Updated language
+ strings.
+
+ * mod/sitepages/actions/add.php, mod/sitepages/actions/addfront.php,
+ mod/sitepages/actions/addmeta.php, mod/sitepages/frontpage.php,
+ mod/sitepages/index.php, mod/sitepages/languages/en.php,
+ mod/sitepages/read.php, mod/sitepages/sitepages_functions.php,
+ mod/sitepages/start.php, .../views/default/sitepages/analytics.php,
+ mod/sitepages/views/default/sitepages/css.php,
+ .../views/default/sitepages/custom_frontpage.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../views/default/sitepages/forms/editfront.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/keywords.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/sitepages/views/default/sitepages/metatags.php: Brought sitepages up to
+ standards. Added basic static keyword/view substitution support.
+
+2010-03-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/start.php, .../views/default/page_elements/searchbox.php,
+ mod/search/views/default/search/search_box.php,
+ views/default/page_elements/elgg_header.php,
+ views/default/page_elements/html_begin.php: Removed hard-coded search box and
+ replaced with extended header/extend view from search page.
+
+2010-03-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php, mod/groups/edit.php, mod/groups/groupprofile.php,
+ mod/groups/views/default/groups/contentwrapper.php: Removed the superfluous
+ groups contentwrapper
+
+ * mod/groups/addtopic.php, mod/groups/all.php, mod/groups/discussions.php,
+ mod/groups/edit.php, mod/groups/edittopic.php, mod/groups/forum.php,
+ mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invitations.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/manifest.xml,
+ mod/groups/membership.php, mod/groups/membershipreq.php, mod/groups/new.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/css.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/side_menu.php: Beginnings of the refreshed
+ groups interface
+
+ * .../page_elements/content_header_member.php,
+ views/default/page_elements/title.php: updates to page_elements
+
+2010-03-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/html_begin.php: Commenting out old (hopefully
+ unneeded) jquery hack.
+
+2010-03-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/sitepages/actions/add.php, mod/sitepages/actions/addfront.php,
+ mod/sitepages/actions/addmeta.php, mod/sitepages/frontpage.php,
+ mod/sitepages/index.php, mod/sitepages/languages/en.php,
+ mod/sitepages/manifest.xml, mod/sitepages/read.php,
+ mod/sitepages/sitepages_functions.php, mod/sitepages/start.php,
+ .../views/default/settings/sitepages/edit.php,
+ .../views/default/sitepages/analytics.php,
+ mod/sitepages/views/default/sitepages/css.php,
+ .../views/default/sitepages/footer_menu.php,
+ .../views/default/sitepages/forms/edit.php,
+ .../views/default/sitepages/forms/editfront.php,
+ .../views/default/sitepages/forms/editmeta.php,
+ mod/sitepages/views/default/sitepages/keywords.php,
+ mod/sitepages/views/default/sitepages/menu.php,
+ mod/sitepages/views/default/sitepages/metatags.php: Site pages will
+ eventually replace the external pages and custom index plugins as well as
+ introduce a new keywords system to enable dynamic content to be displayed
+ without needing to know php or Elgg. This will be handy for frontpage
+ layout/design.
+
+2010-03-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php, mod/thewire/add.php,
+ mod/thewire/everyone.php, mod/thewire/graphics/thewire_speech_bubble.gif,
+ mod/thewire/index.php, mod/thewire/languages/en.php,
+ mod/thewire/manifest.xml, mod/thewire/views/default/object/thewire.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/thewire/scripts/counter.js: Updates to thewire interface
+
+ * mod/profile/views/default/profile/css.php, views/default/css.php,
+ views/default/page_elements/owner_block.php: Updates to Profile and
+ owner_block interface
+
+2010-03-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tinymce/graphics/ed-bg.gif, mod/tinymce/graphics/example.gif,
+ mod/tinymce/graphics/more.gif, mod/tinymce/manifest.xml,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php: Updated tinymce to new interface
+
+2010-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/profile_lib.php, mod/profile/start.php,
+ mod/profile/views/default/profile/css.php: Removed horizontal nav from avatar
+ edit view and debug string from sidebar. Added temp fix for large avatar
+ upload image scaling
+
+2010-03-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/profile_lib.php, mod/profile/start.php,
+ .../default/profile/profile_contents/activity.php,
+ .../default/profile/profile_contents/details.php,
+ .../default/profile/profile_contents/friends.php,
+ .../default/profile/profile_contents/sidebar.php,
+ .../default/profile/profile_contents/twitter.php: Pulled profile sidebar out
+ into separate view. Using one_column_with_sidebar layout for editing profile.
+
+
+ * mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/actions/resetdefaultprofile.php, mod/profile/defaultprofile.php,
+ mod/profile/edit.php, mod/profile/editicon.php, mod/profile/icon.php,
+ mod/profile/icondirect.php, mod/profile/index.php,
+ mod/profile/javascript.php, mod/profile/languages/en.php,
+ mod/profile/profile_lib.php, mod/profile/start.php,
+ mod/profile/views/default/profile/admin_menu.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/adminwrapper.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/metatags.php,
+ .../default/profile/profile_contents/activity.php,
+ .../default/profile/profile_contents/details.php,
+ .../default/profile/profile_contents/friends.php,
+ .../default/profile/profile_contents/twitter.php,
+ .../views/default/profile/profile_navigation.php,
+ .../views/default/profile/profile_ownerblock.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/userdetails.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php: Merged interface changes to
+ profile in.
+
+2010-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/bookmarks/add.php, mod/bookmarks/all.php,
+ mod/bookmarks/bookmarklet.php, mod/bookmarks/friends.php,
+ mod/bookmarks/index.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ .../default/bookmarks/bookmarklet_menu_option.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/object/bookmarks.php, views/default/css.php:
+ Updated Bookmarks interface (old sidebar nav removed, breadcrumbs fixed,
+ bookmarklet fixed & updated)
+
+ * .../default/bookmarks/bookmarklet_menu_option.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/messages/views/default/messages/messages.php,
+ .../views/default/reportedcontent/listing.php: Removed empty href in
+ elgg_slide_toggle calls to prevent page jump
+
+ * views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/register.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/input/form.php,
+ views/default/js/initialise_elgg.php: Interface updates to js, and login,
+ register, lost password
+
+ * languages/en.php: Merged EN language updates
+
+ * _graphics/favicon.ico: Added the default elgg favicon (linked from
+ html_begin)
+
+ * vendors/jquery/jquery-ui-1.7.2.custom.min.js: Removed jquery custom UI
+ package, we now provide/use the full 1.7.2 UI package
+
+ * mod/search/index.php, mod/search/views/default/search/layout.php,
+ mod/search/views/default/search/startblurb.php: Merged Search interface
+ updates
+
+ * mod/messages/graphics/icon_notifications_site.gif, mod/messages/sent.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php: Merged missing Messages
+ interface modifications
+
+ * mod/members/views/default/members/search.php: Added missing php closing
+ tag
+
+ * mod/bookmarks/add.php, mod/bookmarks/all.php, mod/bookmarks/index.php,
+ .../views/default/bookmarks/bookmarklet.php: Merged missing Bookmarks
+ interface modifications
+
+2010-03-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/walledgarden/index.php, .../views/default/account/forms/login.php,
+ .../views/default/canvas/layouts/new_index.php,
+ .../views/default/walledgarden/css.php: Merged walledgarden changes.
+
+ * mod/walledgarden/index.php, mod/walledgarden/manifest.xml,
+ mod/walledgarden/readme.txt, mod/walledgarden/start.php,
+ .../views/default/account/forms/login.php,
+ .../views/default/canvas/layouts/new_index.php,
+ .../views/default/walledgarden/css.php,
+ .../views/default/walledgarden/walledgarden.php: Moved walled garden into
+ trunk.
+
+ * mod/reportedcontent/add.php,
+ mod/reportedcontent/graphics/icon_reportthis.gif,
+ mod/reportedcontent/index.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/start.php, .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/reportedcontent/owner_block.php: Merged reported content
+ interface changes.
+
+ * mod/messages/actions/delete.php, mod/messages/actions/send.php,
+ mod/messages/index.php, mod/messages/languages/en.php, mod/messages/read.php,
+ mod/messages/readme.txt, mod/messages/send.php, mod/messages/sent.php,
+ mod/messages/start.php, mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/message.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/send.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php: Merged messages interface
+ changes.
+
+ * mod/members/index.php, mod/members/languages/en.php,
+ mod/members/start.php, mod/members/views/default/members/css.php,
+ .../views/default/members/members_navigation.php,
+ .../views/default/members/members_sort_menu.php,
+ mod/members/views/default/members/online.php,
+ mod/members/views/default/members/search.php: Merged members plugin's new
+ layout.
+
+ * mod/externalpages/actions/addfront.php, mod/externalpages/index.php,
+ mod/externalpages/read.php, mod/externalpages/start.php,
+ mod/externalpages/views/default/expages/css.php,
+ .../views/default/expages/footer_menu.php,
+ .../views/default/expages/forms/editfront.php,
+ .../views/default/expages/front_left.php,
+ .../views/default/expages/front_right.php,
+ mod/externalpages/views/default/expages/menu.php: Updated external pages to
+ new interface.
+
+2010-03-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/jquery/custom-form-elements.js,
+ vendors/jquery/jquery-1.3.2.min.js, vendors/jquery/jquery-1.4.min.js: Added
+ new version of jQuery and custom form elements.
+
+ * mod/bookmarks/actions/add.php, mod/bookmarks/actions/delete.php,
+ mod/bookmarks/actions/edit.php, mod/bookmarks/actions/reference.php,
+ mod/bookmarks/actions/remove.php, mod/bookmarks/add.php,
+ mod/bookmarks/all.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/everyone.php, mod/bookmarks/friends.php,
+ mod/bookmarks/inbox.php, mod/bookmarks/index.php,
+ mod/bookmarks/languages/en.php, mod/bookmarks/start.php,
+ .../views/default/bookmarks/bookmarklet.php,
+ .../default/bookmarks/bookmarklet_menu_option.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/owner_block.php,
+ mod/bookmarks/views/default/bookmarks/sharing.php,
+ mod/bookmarks/views/default/bookmarks/stats.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/river/object/bookmarks/annotate.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/edit.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/bookmarks/views/rss/object/bookmarks.php: Updated bookmarks with new
+ interface.
+
+ * index.php, languages/en.php, settings/plugins.php,
+ settings/statistics.php, settings/user.php: Pulling in MORE changes that
+ weren't in the patch. Apparently I fail at patching.
+
+ * _graphics/spacer.gif: Removing unneeded svn:executable properties on
+ files.
+
+ * views/default/page_shells/default.php: Merged in a lost change for the
+ interface.
+
+ * actions/systemsettings/install.php: Forward to the registration
+ pagehandler after installation.
+
+ * views/failsafe/page_shells/default.php,
+ views/failsafe/pageshells/pageshell.php: Installation uses new views system.
+
+2010-03-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/edit_layout.php,
+ views/default/canvas/layouts/sidebar_boxes.php,
+ .../canvas/layouts/two_column_right_sidebar.php: old canvases removed
+
+2010-03-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/users.php: Pulled in missing interface
+ modifications for the engine dir.
+
+2010-03-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/ajax_loader_bw.gif, _graphics/button_background.gif,
+ _graphics/button_graduation.png, _graphics/content_header_filter.gif,
+ _graphics/icon_delete.png, _graphics/icon_tag.png, _graphics/search.png,
+ _graphics/sidebar_background.gif, _graphics/speech_bubble_tail.gif,
+ _graphics/topbar_icons.png, _graphics/twitter16px.png, views/default/css.php:
+ new graphics added and css updated to reflect new location
+
+2010-03-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/forgotten_password.php, admin/plugins.php, admin/site.php,
+ admin/statistics.php, admin/user.php, dashboard/latest.php, friends/add.php,
+ friends/collections.php, friends/edit.php, friends/index.php, friends/of.php,
+ mod/blog/actions/add.php, mod/blog/actions/delete.php,
+ mod/blog/actions/edit.php, mod/blog/add.php, mod/blog/archive.php,
+ mod/blog/edit.php, mod/blog/everyone.php, mod/blog/friends.php,
+ mod/blog/index.php, mod/blog/languages/en.php, mod/blog/manifest.xml,
+ mod/blog/preview.php, mod/blog/read.php, mod/blog/savedraft.php,
+ mod/blog/start.php, mod/blog/views/default/blog/categorylist.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/gallery.php,
+ mod/blog/views/default/blog/listing.php,
+ mod/blog/views/default/blog/menu.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/previewpane.php,
+ mod/blog/views/default/blog/view.php, mod/blog/views/default/object/blog.php,
+ .../views/default/river/object/blog/annotate.php,
+ .../views/default/river/object/blog/create.php,
+ .../views/default/river/object/blog/update.php,
+ mod/bookmarks/actions/add.php, mod/bookmarks/actions/delete.php,
+ mod/bookmarks/add.php, mod/bookmarks/bookmarklet.php,
+ mod/bookmarks/everyone.php, mod/bookmarks/friends.php,
+ mod/bookmarks/inbox.php, mod/bookmarks/index.php,
+ mod/bookmarks/languages/en.php, mod/bookmarks/manifest.xml,
+ mod/bookmarks/start.php, .../views/default/bookmarks/bookmarklet.php,
+ mod/bookmarks/views/default/bookmarks/css.php,
+ mod/bookmarks/views/default/bookmarks/form.php,
+ .../views/default/bookmarks/owner_block.php,
+ mod/bookmarks/views/default/bookmarks/sharing.php,
+ mod/bookmarks/views/default/object/bookmarks.php,
+ .../default/river/object/bookmarks/annotate.php,
+ .../default/river/object/bookmarks/create.php,
+ .../views/default/widgets/bookmarks/edit.php,
+ .../views/default/widgets/bookmarks/view.php,
+ mod/bookmarks/views/rss/object/bookmarks.php,
+ mod/captcha/backgrounds/bg1.jpg, mod/captcha/backgrounds/bg2.jpg,
+ mod/captcha/backgrounds/bg3.jpg, mod/captcha/backgrounds/bg4.jpg,
+ mod/captcha/backgrounds/bg5.jpg, mod/captcha/captcha.php,
+ mod/captcha/fonts/1.ttf, mod/captcha/fonts/Liberation_serif_License.txt,
+ mod/captcha/languages/en.php, mod/captcha/manifest.xml,
+ mod/captcha/start.php, mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php, mod/categories/actions/save.php,
+ mod/categories/languages/en.php, mod/categories/manifest.xml,
+ mod/categories/readme.txt, mod/categories/settings.php,
+ mod/categories/start.php, mod/categories/views/default/categories.php,
+ mod/categories/views/default/categories/css.php,
+ mod/categories/views/default/categories/list.php,
+ .../views/default/categories/settings.php,
+ .../views/default/categories/settingsform.php,
+ mod/categories/views/default/categories/view.php, mod/custom_index/index.php,
+ mod/custom_index/languages/en.php, mod/custom_index/manifest.xml,
+ mod/custom_index/start.php, .../views/default/canvas/layouts/new_index.php,
+ .../views/default/custom_index/css.php,
+ mod/defaultwidgets/actions/update.php, mod/defaultwidgets/dashboard.php,
+ mod/defaultwidgets/languages/en.php, mod/defaultwidgets/manifest.xml,
+ mod/defaultwidgets/profile.php, mod/defaultwidgets/start.php,
+ .../views/default/defaultwidgets/editor.php, mod/diagnostics/index.php,
+ mod/diagnostics/languages/en.php, mod/embed/README.txt, mod/embed/embed.php,
+ mod/embed/images/button_spacer.gif, mod/embed/images/close_button.gif,
+ mod/embed/images/loading.gif, mod/embed/images/media_modal.png,
+ mod/embed/languages/en.php, mod/embed/manifest.xml, mod/embed/start.php,
+ mod/embed/upload.php, mod/embed/views/default/embed/addcontentjs.php,
+ mod/embed/views/default/embed/css.php, mod/embed/views/default/embed/js.php,
+ mod/embed/views/default/embed/link.php,
+ mod/embed/views/default/embed/media.php,
+ mod/embed/views/default/embed/metatags.php,
+ mod/embed/views/default/embed/pagination.php,
+ mod/embed/views/default/embed/simpletype.php,
+ mod/embed/views/default/embed/tabs.php,
+ mod/embed/views/default/embed/upload.php,
+ mod/embed/views/default/group/default/embed.php,
+ mod/embed/views/default/object/default/embed.php,
+ mod/embed/views/default/object/file/embed.php,
+ mod/embed/views/default/object/file/embedlist.php,
+ mod/embed/views/default/site/default/embed.php,
+ mod/embed/views/default/user/default/embed.php,
+ mod/externalpages/actions/add.php, mod/externalpages/actions/addfront.php,
+ mod/externalpages/index.php, mod/externalpages/languages/en.php,
+ mod/externalpages/manifest.xml, mod/externalpages/read.php,
+ mod/externalpages/start.php, .../views/default/expages/analytics.php,
+ mod/externalpages/views/default/expages/css.php,
+ .../views/default/expages/footer_menu.php,
+ .../views/default/expages/forms/edit.php,
+ .../views/default/expages/forms/editfront.php,
+ .../views/default/expages/front_left.php,
+ .../views/default/expages/front_right.php,
+ mod/externalpages/views/default/expages/menu.php,
+ mod/externalpages/views/default/object/expages.php,
+ mod/file/actions/delete.php, mod/file/actions/download.php,
+ mod/file/actions/save.php, mod/file/actions/upload.php,
+ mod/file/download.php, mod/file/edit.php, mod/file/friends.php,
+ mod/file/graphics/icons/application.gif,
+ mod/file/graphics/icons/application_lrg.gif,
+ mod/file/graphics/icons/archive.gif, mod/file/graphics/icons/archive_lrg.gif,
+ mod/file/graphics/icons/excel.gif, mod/file/graphics/icons/excel_lrg.gif,
+ mod/file/graphics/icons/general.gif, mod/file/graphics/icons/general_lrg.gif,
+ mod/file/graphics/icons/music.gif, mod/file/graphics/icons/music_lrg.gif,
+ mod/file/graphics/icons/openoffice.gif,
+ mod/file/graphics/icons/openoffice_lrg.gif,
+ mod/file/graphics/icons/pages.gif, mod/file/graphics/icons/pages_lrg.gif,
+ mod/file/graphics/icons/pdf.gif, mod/file/graphics/icons/pdf_lrg.gif,
+ mod/file/graphics/icons/ppt.gif, mod/file/graphics/icons/ppt_lrg.gif,
+ mod/file/graphics/icons/text.gif, mod/file/graphics/icons/text_lrg.gif,
+ mod/file/graphics/icons/vcard.gif, mod/file/graphics/icons/vcard_lrg.gif,
+ mod/file/graphics/icons/video.gif, mod/file/graphics/icons/video_lrg.gif,
+ mod/file/graphics/icons/word.gif, mod/file/graphics/icons/word_lrg.gif,
+ mod/file/index.php, mod/file/languages/en.php, mod/file/manifest.xml,
+ mod/file/search.php, mod/file/start.php, mod/file/thumbnail.php,
+ mod/file/upload.php, mod/file/views/default/file/css.php,
+ mod/file/views/default/file/groupprofile_files.php,
+ mod/file/views/default/file/icon.php,
+ .../default/file/icon/application/default.php,
+ .../views/default/file/icon/application/excel.php,
+ .../views/default/file/icon/application/msword.php,
+ .../views/default/file/icon/application/pdf.php,
+ .../default/file/icon/application/powerpoint.php,
+ .../default/file/icon/application/vnd.ms-excel.php,
+ .../file/icon/application/vnd.ms-powerpoint.php,
+ .../application/vnd.oasis.opendocument.text.php,
+ .../views/default/file/icon/application/x-gzip.php,
+ .../file/icon/application/x-rar-compressed.php,
+ .../default/file/icon/application/x-stuffit.php,
+ .../views/default/file/icon/application/zip.php,
+ mod/file/views/default/file/icon/archive.php,
+ mod/file/views/default/file/icon/audio.php,
+ mod/file/views/default/file/icon/audio/default.php,
+ mod/file/views/default/file/icon/default.php,
+ mod/file/views/default/file/icon/document.php,
+ mod/file/views/default/file/icon/text/default.php,
+ .../views/default/file/icon/text/directory.php,
+ mod/file/views/default/file/icon/text/v-card.php,
+ mod/file/views/default/file/icon/video.php,
+ mod/file/views/default/file/icon/video/default.php,
+ mod/file/views/default/file/menu.php,
+ .../default/file/specialcontent/audio/mid.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/x-wav.php,
+ .../default/file/specialcontent/image/default.php,
+ mod/file/views/default/file/typecloud.php,
+ mod/file/views/default/file/upload.php,
+ mod/file/views/default/object/file.php,
+ .../views/default/river/object/file/create.php,
+ mod/file/views/default/widgets/filerepo/edit.php,
+ mod/file/views/default/widgets/filerepo/view.php,
+ mod/file/views/rss/object/file.php, mod/file/world.php, mod/friends/add.php,
+ mod/friends/collections.php, mod/friends/edit.php,
+ mod/friends/languages/en.php, mod/friends/manifest.xml,
+ mod/friends/start.php, mod/friends/views/default/widgets/friends/edit.php,
+ mod/friends/views/default/widgets/friends/view.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/delete.php,
+ mod/groups/actions/edit.php, mod/groups/actions/featured.php,
+ mod/groups/actions/forums/addpost.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletepost.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/editpost.php,
+ mod/groups/actions/forums/edittopic.php,
+ mod/groups/actions/groupskillinvitation.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/addtopic.php, mod/groups/all.php,
+ mod/groups/discussions.php, mod/groups/edit.php, mod/groups/edittopic.php,
+ mod/groups/forum.php, mod/groups/graphics/defaultlarge.gif,
+ mod/groups/graphics/defaultmedium.gif, mod/groups/graphics/defaultsmall.gif,
+ mod/groups/graphics/defaulttiny.gif, mod/groups/graphics/icon.php,
+ mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invitations.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/manifest.xml,
+ mod/groups/membership.php, mod/groups/membershipreq.php, mod/groups/new.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/group/group.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/contentwrapper.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ .../views/default/groups/invitationrequests.php,
+ mod/groups/views/default/groups/members.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/groups/views/default/groups/profileitems.php,
+ mod/groups/views/default/groups/side_menu.php,
+ .../views/default/icon/group/default/large.php,
+ .../views/default/icon/group/default/medium.php,
+ .../views/default/icon/group/default/small.php,
+ .../views/default/icon/group/default/tiny.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../views/default/river/object/group/create.php,
+ .../river/object/groupforumtopic/annotate.php,
+ .../river/object/groupforumtopic/create.php,
+ .../river/object/groupforumtopic/update.php,
+ .../default/river/relationship/member/create.php,
+ mod/groups/views/default/settings/groups/edit.php,
+ mod/groups/views/default/sharing/invite.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ .../views/default/widgets/a_users_groups/view.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php,
+ mod/groups/views/rss/forum/topicposts.php,
+ mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/contentwrapper.php,
+ mod/groups/views/rss/groups/profileitems.php,
+ mod/invitefriends/actions/invite.php, mod/invitefriends/index.php,
+ mod/invitefriends/languages/en.php, mod/invitefriends/manifest.xml,
+ mod/invitefriends/start.php, .../views/default/invitefriends/form.php,
+ .../views/default/invitefriends/formitems.php, mod/logbrowser/index.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/logbrowser/form.php, mod/members/index.php,
+ mod/members/languages/en.php, mod/members/manifest.xml,
+ mod/members/start.php, mod/members/views/default/members/css.php,
+ .../views/default/members/members_sort_menu.php,
+ mod/members/views/default/members/online.php,
+ mod/members/views/default/members/search.php,
+ mod/messageboard/actions/add.php, mod/messageboard/actions/delete.php,
+ mod/messageboard/ajax_endpoint/load.php, mod/messageboard/history.php,
+ mod/messageboard/index.php, mod/messageboard/languages/en.php,
+ mod/messageboard/manifest.xml, mod/messageboard/readme.txt,
+ mod/messageboard/start.php, .../views/default/messageboard/css.php,
+ .../views/default/messageboard/forms/add.php,
+ .../default/messageboard/group_messageboard.php,
+ .../views/default/messageboard/messageboard.php,
+ .../default/messageboard/messageboard_content.php,
+ .../default/river/object/messageboard/create.php,
+ .../views/default/widgets/messageboard/edit.php,
+ .../views/default/widgets/messageboard/view.php,
+ mod/messages/actions/delete.php, mod/messages/actions/send.php,
+ mod/messages/graphics/icon_notifications_site.gif, mod/messages/index.php,
+ mod/messages/languages/en.php, mod/messages/manifest.xml,
+ mod/messages/read.php, mod/messages/readme.txt, mod/messages/send.php,
+ mod/messages/sent.php, mod/messages/start.php,
+ mod/messages/views/default/messages/css.php,
+ .../views/default/messages/forms/message.php,
+ .../views/default/messages/forms/reply.php,
+ mod/messages/views/default/messages/forms/view.php,
+ mod/messages/views/default/messages/menu.php,
+ mod/messages/views/default/messages/messages.php,
+ mod/messages/views/default/messages/topbar.php,
+ mod/messages/views/default/messages/view.php,
+ .../views/default/widgets/messages/view.php,
+ mod/notifications/actions/groupsave.php, mod/notifications/actions/save.php,
+ .../graphics/icon_notifications_email.gif, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/notifications/languages/en.php,
+ mod/notifications/manifest.xml, mod/notifications/start.php,
+ .../views/default/notifications/css.php,
+ .../notifications/settings/usersettings.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/jsfuncs.php,
+ .../notifications/subscriptions/personal.php,
+ mod/pages/actions/pages/delete.php, mod/pages/actions/pages/edit.php,
+ mod/pages/actions/pages/editwelcome.php, mod/pages/edit.php,
+ mod/pages/history.php, mod/pages/images/application.png,
+ mod/pages/images/code.png, mod/pages/images/css.png, mod/pages/images/db.png,
+ mod/pages/images/directory.png, mod/pages/images/doc.png,
+ mod/pages/images/file.gif, mod/pages/images/file.png,
+ mod/pages/images/film.png, mod/pages/images/flash.png,
+ mod/pages/images/folder-closed.gif, mod/pages/images/folder.gif,
+ mod/pages/images/folder_open.png, mod/pages/images/html.png,
+ mod/pages/images/java.png, mod/pages/images/linux.png,
+ mod/pages/images/minus.gif, mod/pages/images/music.png,
+ mod/pages/images/pages.gif, mod/pages/images/pages_lrg.gif,
+ mod/pages/images/pdf.png, mod/pages/images/php.png,
+ mod/pages/images/picture.png, mod/pages/images/plus.gif,
+ mod/pages/images/ppt.png, mod/pages/images/psd.png,
+ mod/pages/images/ruby.png, mod/pages/images/script.png,
+ mod/pages/images/spinner.gif, mod/pages/images/treeview-black-line.gif,
+ mod/pages/images/treeview-black.gif,
+ mod/pages/images/treeview-default-line.gif,
+ mod/pages/images/treeview-default.gif,
+ mod/pages/images/treeview-famfamfam-line.gif,
+ mod/pages/images/treeview-famfamfam.gif,
+ mod/pages/images/treeview-gray-line.gif, mod/pages/images/treeview-gray.gif,
+ mod/pages/images/treeview-red-line.gif, mod/pages/images/treeview-red.gif,
+ mod/pages/images/txt.png, mod/pages/images/xls.png, mod/pages/images/zip.png,
+ mod/pages/index.php, mod/pages/javascript/jquery.treeview.async.js,
+ mod/pages/javascript/jquery.treeview.js, mod/pages/languages/en.php,
+ mod/pages/manifest.xml, mod/pages/new.php, mod/pages/pagesTree.php,
+ mod/pages/start.php, mod/pages/view.php,
+ mod/pages/views/default/annotation/icon.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ .../views/default/icon/object/page/medium.php,
+ mod/pages/views/default/icon/object/page/small.php,
+ .../views/default/icon/object/page_top/medium.php,
+ .../views/default/icon/object/page_top/small.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/css.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/menu.php,
+ mod/pages/views/default/pages/metatags.php,
+ mod/pages/views/default/pages/pagegallery.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/pages/sidebar/sidebarthis.php,
+ mod/pages/views/default/pages/sidebar/starter.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/sidebar/wrapper.php,
+ mod/pages/views/default/pages/welcome.php,
+ .../views/default/river/object/page/annotate.php,
+ .../views/default/river/object/page/create.php,
+ .../views/default/river/object/page/update.php,
+ .../default/river/object/page_top/annotate.php,
+ .../views/default/river/object/page_top/create.php,
+ .../views/default/river/object/page_top/update.php,
+ mod/pages/views/default/widgets/pages/edit.php,
+ mod/pages/views/default/widgets/pages/view.php, mod/pages/welcome.php,
+ mod/pages/world.php, mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/actions/resetdefaultprofile.php, mod/profile/defaultprofile.php,
+ mod/profile/edit.php, mod/profile/editicon.php,
+ mod/profile/graphics/defaultlarge.gif,
+ mod/profile/graphics/defaultmaster.gif,
+ mod/profile/graphics/defaultmedium.gif,
+ mod/profile/graphics/defaultsmall.gif, mod/profile/graphics/defaulttiny.gif,
+ mod/profile/graphics/defaulttopbar.gif, mod/profile/icon.php,
+ mod/profile/icondirect.php, mod/profile/index.php,
+ mod/profile/javascript.php, mod/profile/languages/en.php,
+ mod/profile/manifest.xml, mod/profile/start.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ .../views/default/js/jquery.imgareaselect-0.8.js,
+ .../default/js/jquery.imgareaselect-0.8.min.js,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/adminwrapper.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/submenu.php,
+ mod/profile/views/default/profile/userdetails.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/index.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/manifest.xml, mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/reportedcontent/owner_block.php,
+ .../views/default/reportedcontent/user_report.php,
+ mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ mod/riverdashboard/graphics/follow_icon.png, mod/riverdashboard/index.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/manifest.xml,
+ mod/riverdashboard/start.php, .../views/default/river/sitemessage/create.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/default/settings/riverdashboard/edit.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../views/json/riverdashboard/container.php,
+ .../views/rss/riverdashboard/container.php,
+ mod/search/views/default/search/css.php, mod/thewire/actions/add.php,
+ mod/thewire/actions/delete.php, mod/thewire/add.php,
+ mod/thewire/everyone.php, mod/thewire/graphics/river_icon_thewire.gif,
+ mod/thewire/graphics/thewire_speech_bubble.gif, mod/thewire/index.php,
+ mod/thewire/languages/en.php, mod/thewire/manifest.xml,
+ mod/thewire/readme.txt, mod/thewire/start.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ .../views/default/thewire/activity_view.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/thewire/views/default/thewire/notfound.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/thewire/scripts/counter.js,
+ mod/thewire/views/default/thewire/view.php,
+ mod/thewire/views/default/widgets/thewire/edit.php,
+ mod/thewire/views/default/widgets/thewire/view.php,
+ mod/tinymce/languages/en.php, mod/tinymce/manifest.xml,
+ mod/tinymce/readme.txt, mod/tinymce/start.php,
+ mod/tinymce/tinymce/changelog.txt,
+ mod/tinymce/tinymce/jscripts/tiny_mce/langs/en.js,
+ mod/tinymce/tinymce/jscripts/tiny_mce/license.txt,
+ .../jscripts/tiny_mce/plugins/advhr/css/advhr.css,
+ .../tiny_mce/plugins/advhr/editor_plugin.js,
+ .../tiny_mce/plugins/advhr/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advhr/js/rule.js,
+ .../tiny_mce/plugins/advhr/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advhr/rule.htm,
+ .../tiny_mce/plugins/advimage/css/advimage.css,
+ .../tiny_mce/plugins/advimage/editor_plugin.js,
+ .../tiny_mce/plugins/advimage/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/advimage/image.htm,
+ .../tiny_mce/plugins/advimage/img/sample.gif,
+ .../jscripts/tiny_mce/plugins/advimage/js/image.js,
+ .../tiny_mce/plugins/advimage/langs/en_dlg.js,
+ .../tiny_mce/plugins/advlink/css/advlink.css,
+ .../tiny_mce/plugins/advlink/editor_plugin.js,
+ .../tiny_mce/plugins/advlink/editor_plugin_src.js,
+ .../tiny_mce/plugins/advlink/js/advlink.js,
+ .../tiny_mce/plugins/advlink/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/advlink/link.htm,
+ .../tiny_mce/plugins/autosave/editor_plugin.js,
+ .../tiny_mce/plugins/autosave/editor_plugin_src.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin.js,
+ .../tiny_mce/plugins/bbcode/editor_plugin_src.js,
+ .../tiny_mce/plugins/compat2x/editor_plugin.js,
+ .../tiny_mce/plugins/compat2x/editor_plugin_src.js,
+ .../tiny_mce/plugins/contextmenu/editor_plugin.js,
+ .../plugins/contextmenu/editor_plugin_src.js,
+ .../plugins/directionality/editor_plugin.js,
+ .../plugins/directionality/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/editor_plugin.js,
+ .../tiny_mce/plugins/emotions/editor_plugin_src.js,
+ .../tiny_mce/plugins/emotions/emotions.htm,
+ .../tiny_mce/plugins/emotions/img/smiley-cool.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-cry.gif,
+ .../plugins/emotions/img/smiley-embarassed.gif,
+ .../plugins/emotions/img/smiley-foot-in-mouth.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-frown.gif,
+ .../plugins/emotions/img/smiley-innocent.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-kiss.gif,
+ .../plugins/emotions/img/smiley-laughing.gif,
+ .../plugins/emotions/img/smiley-money-mouth.gif,
+ .../plugins/emotions/img/smiley-sealed.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-smile.gif,
+ .../plugins/emotions/img/smiley-surprised.gif,
+ .../plugins/emotions/img/smiley-tongue-out.gif,
+ .../plugins/emotions/img/smiley-undecided.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-wink.gif,
+ .../tiny_mce/plugins/emotions/img/smiley-yell.gif,
+ .../tiny_mce/plugins/emotions/js/emotions.js,
+ .../tiny_mce/plugins/emotions/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/example/dialog.htm,
+ .../tiny_mce/plugins/example/editor_plugin.js,
+ .../tiny_mce/plugins/example/editor_plugin_src.js,
+ .../tiny_mce/plugins/example/img/example.gif,
+ .../jscripts/tiny_mce/plugins/example/js/dialog.js,
+ .../jscripts/tiny_mce/plugins/example/langs/en.js,
+ .../tiny_mce/plugins/example/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullpage/css/fullpage.css,
+ .../tiny_mce/plugins/fullpage/editor_plugin.js,
+ .../tiny_mce/plugins/fullpage/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullpage/fullpage.htm,
+ .../tiny_mce/plugins/fullpage/js/fullpage.js,
+ .../tiny_mce/plugins/fullpage/langs/en_dlg.js,
+ .../tiny_mce/plugins/fullscreen/editor_plugin.js,
+ .../plugins/fullscreen/editor_plugin_src.js,
+ .../tiny_mce/plugins/fullscreen/fullscreen.htm,
+ .../tiny_mce/plugins/iespell/editor_plugin.js,
+ .../tiny_mce/plugins/iespell/editor_plugin_src.js,
+ .../tiny_mce/plugins/inlinepopups/editor_plugin.js,
+ .../plugins/inlinepopups/editor_plugin_src.js,
+ .../inlinepopups/skins/clearlooks2/img/alert.gif,
+ .../inlinepopups/skins/clearlooks2/img/button.gif,
+ .../inlinepopups/skins/clearlooks2/img/buttons.gif,
+ .../inlinepopups/skins/clearlooks2/img/confirm.gif,
+ .../inlinepopups/skins/clearlooks2/img/corners.gif,
+ .../skins/clearlooks2/img/horizontal.gif,
+ .../skins/clearlooks2/img/vertical.gif,
+ .../inlinepopups/skins/clearlooks2/window.css,
+ .../tiny_mce/plugins/inlinepopups/template.htm,
+ .../plugins/insertdatetime/editor_plugin.js,
+ .../plugins/insertdatetime/editor_plugin_src.js,
+ .../tiny_mce/plugins/layer/editor_plugin.js,
+ .../tiny_mce/plugins/layer/editor_plugin_src.js,
+ .../tiny_mce/plugins/media/css/content.css,
+ .../jscripts/tiny_mce/plugins/media/css/media.css,
+ .../tiny_mce/plugins/media/editor_plugin.js,
+ .../tiny_mce/plugins/media/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/media/img/flash.gif,
+ .../tiny_mce/plugins/media/img/flv_player.swf,
+ .../tiny_mce/plugins/media/img/quicktime.gif,
+ .../tiny_mce/plugins/media/img/realmedia.gif,
+ .../tiny_mce/plugins/media/img/shockwave.gif,
+ .../jscripts/tiny_mce/plugins/media/img/trans.gif,
+ .../tiny_mce/plugins/media/img/windowsmedia.gif,
+ .../jscripts/tiny_mce/plugins/media/js/embed.js,
+ .../jscripts/tiny_mce/plugins/media/js/media.js,
+ .../tiny_mce/plugins/media/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/media/media.htm,
+ .../tiny_mce/plugins/nonbreaking/editor_plugin.js,
+ .../plugins/nonbreaking/editor_plugin_src.js,
+ .../tiny_mce/plugins/noneditable/editor_plugin.js,
+ .../plugins/noneditable/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/css/content.css,
+ .../tiny_mce/plugins/pagebreak/editor_plugin.js,
+ .../plugins/pagebreak/editor_plugin_src.js,
+ .../tiny_mce/plugins/pagebreak/img/pagebreak.gif,
+ .../tiny_mce/plugins/pagebreak/img/trans.gif,
+ .../jscripts/tiny_mce/plugins/paste/blank.htm,
+ .../jscripts/tiny_mce/plugins/paste/css/blank.css,
+ .../tiny_mce/plugins/paste/css/pasteword.css,
+ .../tiny_mce/plugins/paste/editor_plugin.js,
+ .../tiny_mce/plugins/paste/editor_plugin_src.js,
+ .../tiny_mce/plugins/paste/js/pastetext.js,
+ .../tiny_mce/plugins/paste/js/pasteword.js,
+ .../tiny_mce/plugins/paste/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/paste/pastetext.htm,
+ .../jscripts/tiny_mce/plugins/paste/pasteword.htm,
+ .../tiny_mce/plugins/preview/editor_plugin.js,
+ .../tiny_mce/plugins/preview/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/preview/example.html,
+ .../tiny_mce/plugins/preview/jscripts/embed.js,
+ .../tiny_mce/plugins/print/editor_plugin.js,
+ .../tiny_mce/plugins/print/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/safari/blank.htm,
+ .../tiny_mce/plugins/safari/editor_plugin.js,
+ .../tiny_mce/plugins/safari/editor_plugin_src.js,
+ .../tiny_mce/plugins/save/editor_plugin.js,
+ .../tiny_mce/plugins/save/editor_plugin_src.js,
+ .../plugins/searchreplace/css/searchreplace.css,
+ .../plugins/searchreplace/editor_plugin.js,
+ .../plugins/searchreplace/editor_plugin_src.js,
+ .../plugins/searchreplace/js/searchreplace.js,
+ .../tiny_mce/plugins/searchreplace/langs/en_dlg.js,
+ .../plugins/searchreplace/searchreplace.htm,
+ .../tiny_mce/plugins/spellchecker/css/content.css,
+ .../tiny_mce/plugins/spellchecker/editor_plugin.js,
+ .../plugins/spellchecker/editor_plugin_src.js,
+ .../tiny_mce/plugins/spellchecker/img/wline.gif,
+ .../jscripts/tiny_mce/plugins/style/css/props.css,
+ .../tiny_mce/plugins/style/editor_plugin.js,
+ .../tiny_mce/plugins/style/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/style/js/props.js,
+ .../tiny_mce/plugins/style/langs/en_dlg.js,
+ .../jscripts/tiny_mce/plugins/style/props.htm,
+ .../jscripts/tiny_mce/plugins/table/cell.htm,
+ .../jscripts/tiny_mce/plugins/table/css/cell.css,
+ .../jscripts/tiny_mce/plugins/table/css/row.css,
+ .../jscripts/tiny_mce/plugins/table/css/table.css,
+ .../tiny_mce/plugins/table/editor_plugin.js,
+ .../tiny_mce/plugins/table/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/table/js/cell.js,
+ .../tiny_mce/plugins/table/js/merge_cells.js,
+ .../jscripts/tiny_mce/plugins/table/js/row.js,
+ .../jscripts/tiny_mce/plugins/table/js/table.js,
+ .../tiny_mce/plugins/table/langs/en_dlg.js,
+ .../tiny_mce/plugins/table/merge_cells.htm,
+ .../jscripts/tiny_mce/plugins/table/row.htm,
+ .../jscripts/tiny_mce/plugins/table/table.htm,
+ .../jscripts/tiny_mce/plugins/template/blank.htm,
+ .../tiny_mce/plugins/template/css/template.css,
+ .../tiny_mce/plugins/template/editor_plugin.js,
+ .../tiny_mce/plugins/template/editor_plugin_src.js,
+ .../tiny_mce/plugins/template/js/template.js,
+ .../tiny_mce/plugins/template/langs/en_dlg.js,
+ .../tiny_mce/plugins/template/template.htm,
+ .../tiny_mce/plugins/visualchars/editor_plugin.js,
+ .../plugins/visualchars/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm,
+ .../tiny_mce/plugins/xhtmlxtras/acronym.htm,
+ .../tiny_mce/plugins/xhtmlxtras/attributes.htm,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm,
+ .../tiny_mce/plugins/xhtmlxtras/css/attributes.css,
+ .../tiny_mce/plugins/xhtmlxtras/css/popup.css,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/del.htm,
+ .../tiny_mce/plugins/xhtmlxtras/editor_plugin.js,
+ .../plugins/xhtmlxtras/editor_plugin_src.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm,
+ .../tiny_mce/plugins/xhtmlxtras/js/abbr.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/acronym.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/attributes.js,
+ .../tiny_mce/plugins/xhtmlxtras/js/cite.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js,
+ .../plugins/xhtmlxtras/js/element_common.js,
+ .../jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js,
+ .../tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/about.htm,
+ .../jscripts/tiny_mce/themes/advanced/anchor.htm,
+ .../jscripts/tiny_mce/themes/advanced/charmap.htm,
+ .../tiny_mce/themes/advanced/color_picker.htm,
+ .../tiny_mce/themes/advanced/editor_template.js,
+ .../themes/advanced/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/advanced/image.htm,
+ .../tiny_mce/themes/advanced/img/colorpicker.jpg,
+ .../tiny_mce/themes/advanced/img/icons.gif,
+ .../jscripts/tiny_mce/themes/advanced/js/about.js,
+ .../jscripts/tiny_mce/themes/advanced/js/anchor.js,
+ .../tiny_mce/themes/advanced/js/charmap.js,
+ .../tiny_mce/themes/advanced/js/color_picker.js,
+ .../jscripts/tiny_mce/themes/advanced/js/image.js,
+ .../jscripts/tiny_mce/themes/advanced/js/link.js,
+ .../tiny_mce/themes/advanced/js/source_editor.js,
+ .../jscripts/tiny_mce/themes/advanced/langs/en.js,
+ .../tiny_mce/themes/advanced/langs/en_dlg.js,
+ .../jscripts/tiny_mce/themes/advanced/link.htm,
+ .../themes/advanced/skins/default/content.css,
+ .../themes/advanced/skins/default/dialog.css,
+ .../themes/advanced/skins/default/img/buttons.png,
+ .../themes/advanced/skins/default/img/items.gif,
+ .../advanced/skins/default/img/menu_arrow.gif,
+ .../advanced/skins/default/img/menu_check.gif,
+ .../themes/advanced/skins/default/img/progress.gif,
+ .../themes/advanced/skins/default/img/tabs.gif,
+ .../tiny_mce/themes/advanced/skins/default/ui.css,
+ .../themes/advanced/skins/o2k7/content.css,
+ .../tiny_mce/themes/advanced/skins/o2k7/dialog.css,
+ .../themes/advanced/skins/o2k7/img/button_bg.png,
+ .../advanced/skins/o2k7/img/button_bg_black.png,
+ .../advanced/skins/o2k7/img/button_bg_silver.png,
+ .../tiny_mce/themes/advanced/skins/o2k7/ui.css,
+ .../themes/advanced/skins/o2k7/ui_black.css,
+ .../themes/advanced/skins/o2k7/ui_silver.css,
+ .../tiny_mce/themes/advanced/source_editor.htm,
+ .../tiny_mce/themes/simple/editor_template.js,
+ .../tiny_mce/themes/simple/editor_template_src.js,
+ .../jscripts/tiny_mce/themes/simple/img/icons.gif,
+ .../jscripts/tiny_mce/themes/simple/langs/en.js,
+ .../themes/simple/skins/default/content.css,
+ .../tiny_mce/themes/simple/skins/default/ui.css,
+ .../tiny_mce/themes/simple/skins/o2k7/content.css,
+ .../themes/simple/skins/o2k7/img/button_bg.png,
+ .../tiny_mce/themes/simple/skins/o2k7/ui.css,
+ mod/tinymce/tinymce/jscripts/tiny_mce/tiny_mce.js,
+ .../tinymce/jscripts/tiny_mce/tiny_mce_popup.js,
+ .../jscripts/tiny_mce/utils/editable_selects.js,
+ .../tinymce/jscripts/tiny_mce/utils/form_utils.js,
+ .../tinymce/jscripts/tiny_mce/utils/mctabs.js,
+ .../tinymce/jscripts/tiny_mce/utils/validate.js,
+ mod/tinymce/views/default/embed/addcontentjs.php,
+ mod/tinymce/views/default/input/longtext.php,
+ mod/tinymce/views/default/tinymce/css.php,
+ mod/twitter/graphics/thewire_speech_bubble.gif,
+ mod/twitter/graphics/twitter.png, mod/twitter/languages/en.php,
+ mod/twitter/manifest.xml, mod/twitter/start.php,
+ mod/twitter/views/default/twitter/css.php,
+ mod/twitter/views/default/widgets/twitter/edit.php,
+ mod/twitter/views/default/widgets/twitter/view.php,
+ mod/twitterservice/languages/en.php, mod/twitterservice/manifest.xml,
+ mod/twitterservice/start.php, mod/twitterservice/vendors/twitter/license.txt,
+ mod/twitterservice/vendors/twitter/load.php,
+ mod/twitterservice/vendors/twitter/readme.txt,
+ mod/twitterservice/vendors/twitter/send.php,
+ .../vendors/twitter/twitter.class.php,
+ .../default/usersettings/twitterservice/edit.php,
+ mod/zaudio/audioplayer/audio-player.js, mod/zaudio/audioplayer/license.txt,
+ mod/zaudio/audioplayer/player.swf, mod/zaudio/manifest.xml,
+ mod/zaudio/readme.txt, mod/zaudio/start.php,
+ .../default/file/specialcontent/audio/mp3.php,
+ .../default/file/specialcontent/audio/mpeg.php,
+ .../default/file/specialcontent/audio/mpg.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php,
+ views/default/annotation/annotate.php,
+ views/default/annotation/generic_comment.php,
+ views/default/annotation/latest_comments.php,
+ views/default/canvas/default.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/one_column_with_sidebar.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/canvas_header/submenu_group.php,
+ views/default/comments/forms/edit.php, views/default/css.php,
+ views/default/css_ie.php, views/default/css_ie6.php,
+ views/default/entities/entity_list.php,
+ views/default/entities/entity_listing.php, views/default/friends/picker.php,
+ views/default/friends/river/create.php,
+ views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php, views/default/input/access.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php, views/default/js/initialise_elgg.php,
+ views/default/js/upload_js.php, views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/main_nav.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/topbar_tools.php,
+ .../notifications/settings/usersettings.php,
+ views/default/output/confirmlink.php, views/default/output/rss_view.php,
+ views/default/output/tags.php, views/default/output/url.php,
+ views/default/page_elements/breadcrumbs.php,
+ views/default/page_elements/content_header.php,
+ .../page_elements/content_header_member.php,
+ views/default/page_elements/contentwrapper.php,
+ views/default/page_elements/elgg_content.php,
+ views/default/page_elements/elgg_footer.php,
+ views/default/page_elements/elgg_header.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_contents.php,
+ views/default/page_elements/html_begin.php,
+ views/default/page_elements/html_end.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/spotlight.php,
+ views/default/page_elements/title.php, views/default/page_shells/default.php,
+ views/default/pageshells/pageshell.php, views/default/river/item/list.php,
+ views/default/river/item/wrapper.php, views/default/settings/system.php,
+ views/default/spotlight/default.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php, views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php: Pulled in the interface
+ changes.
+
+2010-03-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes file for 1.7 release.
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2010030101.sql,
+ version.php: Fixes #1562: Added a default value for entities.last_action in
+ the schema and as an upgraded. Bumped version number to 1.7 final.
+
+ * mod/search/search_hooks.php, mod/search/views/default/search/entity.php:
+ Updated the the default search entity view to check for users and groups and
+ properly display their profile icons.
+
+2010-03-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Fixing punctuation in upgrade strings.
+
+ * INSTALL.txt: Refs #1562: Updated requirements for Elgg.
+
+ * engine/lib/group.php: Fixes #1566: Rewriting calls to get_group_members()
+ to use 1.7's constant for site_guid.
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/tests/regression/trac_bugs.php: Fixes #1558: Applied Cash's patch.
+ Added unit tests to test for regressions for any bugs fixed in trac.
+
+ * engine/tests/objects/entities.php, engine/tests/objects/objects.php: Fixed
+ unit tests for exportable values after [3977].
+
+ * engine/lib/entities.php: Fixes #1563: Added time_updated and site_guid to
+ the export vals.
+
+ * mod/search/languages/en.php: Changed search language array variable name.
+
+2010-02-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Fixes #1540: Added site_guid to
+ get_user_access_collections().
+
+ * engine/lib/relationships.php: Refs #1553: Corrected profile link in
+ friending notification.
+
+ * engine/lib/tags.php: Fixes #1555: Added missing call to
+ elgg_get_registered_tag_metadata_names() and defined missing variable.
+
+ * engine/lib/actions.php: Added login to the list of actions not requiring a
+ security token.
+
+2010-02-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump.
+
+ * engine/lib/metadata.php, engine/tests/api/entity_getter_functions.php:
+ Fixes #1542: Pulled in Kevin's patch to add ability to sort by metadata.
+ Added unit tests for this.
+
+2010-02-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/tests/api/entity_getter_functions.php:
+ Refs #1543: Added support to have pass an array as a value in the
+ metadata_name_value_pair option of elgg_get_entities_from_metadata(). Added
+ unit tests for elgg_get_entities_from_metadata(). Cleaned up some
+ documentation for elgg_get_entities_from_metadata().
+
+2010-02-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/objects.php, engine/lib/users.php: Fixes
+ #1528: Correctly throwing exceptions for objects, groups, and users.
+
+2010-02-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: river plugin is defunct so does not
+ need to be enabled on install
+
+ * mod/diagnostics/actions/download.php, mod/diagnostics/start.php: Fixes
+ #1544: plugin hook for diagnostics now for entity "system"
+
+2010-02-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixes #1531: Correctly implemented dates for
+ friendly times. No more coding while watching the Olympics!
+
+2010-02-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/url.php: Fixes #1541: javascript now correctly
+ included in output/url view
+
+2010-02-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/xml/pageshells/pageshell.php: Fixes #1517 - let web server set
+ content length on xml files
+
+2010-02-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/elgglib.php, views/default/output/confirmlink.php,
+ views/default/output/url.php, views/default/page_elements/spotlight.php:
+ Deprecated elgg_validate_action_url() by elgg_add_action_tokens_to_url().
+ Updated elgg_deprecated_notice() to include the file & line of the caller.
+ Updated core to use elgg_add_action_tokens_to_url().
+
+2010-02-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/xml.php: Refs #1517: only encode <,>, and & for strings in xml
+
+2010-02-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, actions/admin/site/update_basic.php,
+ actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ actions/admin/user/resetpassword.php, actions/admin/user/unban.php,
+ actions/comments/add.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/remove.php,
+ actions/import/opendd.php, actions/login.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, actions/usersettings/save.php, actions/widgets/save.php:
+ Refs #1538: Removed action_gatekeeper() from action files in core.
+
+ * htaccess_dist: Fixes #1539: Removed line endings from htaccess_dist.
+
+2010-02-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, services/api/rest.php, services/api/rest_api.php:
+ Apache's MultiViews was matching the rest page handler incorrectly
+
+2010-02-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, languages/en.php: Refs #1531: Added full time and
+ dates to friendly time stamptes via acronym tags.
+
+ * mod/search/index.php, mod/search/search_hooks.php, mod/search/start.php:
+ Fixes #1523: Updated search to use ELGG_ENTITIES_NO_VALUE/ANY_VALUE and
+ removed some commented out code.
+
+2010-02-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixes #1421: Banning and unbanning users invalidates
+ the memcache entity.
+
+ * admin/user.php: Corrected fullview call in users admin section.
+
+ * views/default/js/initialise_elgg.php: Refs #1504: Removing revert option
+ from widget draggables to avoid fly away effect in IE 7.
+
+ * views/default/canvas/layouts/widgets.php: Fixed a bug in widget layouts
+ that caused the "edit page" link to not work if no widgets were defined.
+
+ * views/default/friends/picker.php: Fixes #1532: Added security tokens to
+ friend picker when in form mode.
+
+ * views/rss/pageshells/pageshell.php: Fixes #1535: Corrected double replace
+ for URL in RSS title view.
+
+ * engine/lib/access.php: Fixes #1519: Corrected site_guid in
+ create_access_collection().
+
+2010-02-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/entity_getter_functions.php: Getter API test: Moved the
+ setup and tear down into the construct and destruct methods. Fixed a few new
+ tests that were failing because of sorting by time.
+
+2010-02-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/user.php, dashboard/latest.php, engine/lib/activity.php,
+ engine/lib/admin.php, engine/lib/entities.php, engine/lib/export.php,
+ engine/lib/group.php, engine/lib/input.php, engine/lib/metadata.php,
+ engine/lib/notification.php, engine/lib/objects.php,
+ engine/lib/relationships.php, engine/lib/river2.php, engine/lib/sites.php,
+ engine/lib/users.php, index.php: Fixes #1488: Removed use of deprecated
+ functions in core.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/metadata.php,
+ engine/tests/api/entity_getter_functions.php: Refs #1523: elgg_get_entities()
+ uses the constants for defaults and conditionals. Added some tests to check
+ for no subtypes. Updated the documentation.
+
+ * engine/tests/api/entity_getter_functions.php, mod/diagnostics/index.php,
+ mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ mod/diagnostics/testreport.php, mod/diagnostics/unittester.php,
+ mod/diagnostics/views/default/diagnostics/test.php,
+ .../views/default/diagnostics/testresult.php: Fixes #1526: Big honking
+ warning added to unit tests. Getter test also deletes its subtypes now.
+
+ * mod/search/README.txt: Updated docs for search.
+
+ * engine/lib/actions.php: Fixes #1527: Logout doens't require an action
+ token. This is a temporary fix until #1509 is implemented.
+
+ * mod/search/search_hooks.php: Fixes #1499: User and group search default to
+ ignoring subtypes to return all entities.
+
+2010-02-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/index.php: Fixed incorrect variable calls in search.
+
+ * mod/search/search_hooks.php: Not using elgg_get_entities_from_metadata()
+ for tag search because of performance issues. Switched to custom WHERE /
+ JOINs with elgg_get_entities().
+
+ * engine/lib/elgglib.php: Removing embed extended view from core.
+
+2010-02-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, languages/en.php, mod/search/search_hooks.php,
+ views/default/output/tags.php: Cleaned up tag searching so you can search on
+ a specific tag. Useful in search so a tag in "Things I like" won't match a
+ tag in "Things I hate."
+
+2010-02-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Can't type hint for strings.
+
+ * CHANGES.txt, engine/lib/entities.php, engine/lib/tags.php,
+ mod/search/search_hooks.php: Closes #1506: Added
+ elgg_register_tag_metadata_name(), elgg_get_registered_tag_metadata_names(),
+ and ElggEntity::getTags(). Search on tags updated to use registered tag
+ names instead of hard-coded 'tags' metadata name.
+
+ * engine/lib/elgglib.php: Fixes #1510: Added elgg_get_file_list().
+ get_library_files() wraps to this function with a deprecation notice for any
+ plugin authors using it to auto-load files.
+
+ * engine/lib/api.php, engine/lib/elgglib.php, engine/lib/input.php,
+ engine/lib/mb_wrapper.php, engine/lib/pagehandler.php,
+ mod/search/views/default/search/listing.php: Fixes #1512: Using a helper
+ function for mb_parse_str() instead of wrapping it exactly.
+
+2010-02-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, languages/en.php: updated documentation on the REST
+ API user authentication
+
+2010-02-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/lib/elgglib.php, engine/lib/input.php,
+ engine/lib/mb_wrapper.php, engine/lib/pagehandler.php: Fixes #1501: Setting
+ ini for mbstring.internal_encoding to utf8 to work around a PHP bug. Replaced
+ calls to parse_str() with elgg_parse_str().
+
+ * views/default/navigation/pagination.php: Fixes #1507: $vars['baseurl']
+ used instead of undefined $baseurl in pagination view.
+
+2010-02-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: fixes #1505 - some lazy css was impacting opera for
+ checkboxes - overriding border and padding properties inherited from input
+ selector
+
+2010-02-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/url.php: Made the output/url view backward compatible
+ for the few plugins that used it.
+
+2010-02-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Remove version from default theme's css.
+
+2010-02-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/start.php: Fixes #1503, fixes #1474:
+ Library files are loaded using a hard-coded list to better deal with removed
+ files. Also, ~4% performance increase per page load on my server!
+
+ * mod/search/start.php: Correcting the corrected documentation.
+
+ * mod/search/start.php: Documentation correction in search.
+
+2010-02-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php, mod/crontrigger/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/garbagecollector/manifest.xml,
+ mod/htmlawed/manifest.xml, mod/logbrowser/manifest.xml,
+ mod/logrotate/manifest.xml, mod/search/manifest.xml,
+ mod/uservalidationbyemail/manifest.xml: Updated copyright for core plugin
+ manifests.
+
+ * engine/lib/access.php, engine/tests/api/entity_getter_functions.php: Fixes
+ #1496: delete_access_collection() invalidates the access collection cache
+ before attempting to delete. Removed a misplaced unset() in a unit test that
+ was causing test objects not to be properly deleted.
+
+2010-02-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/settings/system.php: finished the fix to #1492
+
+ * languages/en.php: more user friendly section title on user stats page
+
+ * languages/en.php: fixed punctuation issue on install instructions
+
+ * engine/lib/api.php, languages/en.php: tweaked some documentation on the
+ REST API
+
+2010-02-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Correcting documentation for
+ elgg_get_entities_from_metadata().
+
+2010-02-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/header.php: & replaced by &amp; in the header and
+ alt added to some header graphics
+
+ * CONTRIBUTORS.txt: updated
+
+2010-02-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/api/entity_getter_functions.php, engine/tests/suite.php: Refs
+ #1200: Added tests to test for false being returned with elgg_get_entities().
+ Disabled execution time during unit tests.
+
+ * actions/systemsettings/install.php, engine/lib/ping.php, languages/en.php,
+ views/failsafe/settings/system.php: Fixes #1492: Removed usage info
+ collecting from installation.
+
+ * engine/schema/mysql.sql: Fixes #1493: Updated schema to set auto_increment
+ IDs for access_collections to 3 to avoid overwriting default values with
+ group / shared access ACLs.
+
+ * views/default/css.php: Fixes #1491: Removed mistakingly assigned
+ input-password with input-textarea.
+
+2010-02-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/version.php: missing new on upgrade_details object creation
+
+ * engine/lib/elgglib.php: fixes #1486 - elgg_dump now works when sending to
+ server error log
+
+2010-02-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Fixes #1404: Added input-password rules in default
+ css.
+
+2010-02-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, languages/en.php: Fixes #1483: Reset password emails
+ forward to a confirmation page handler instead of directly to an action.
+
+ * engine/lib/pageowner.php: Fixes #1212: Removed unused code.
+
+ * engine/lib/elgglib.php: Fixes #1486: elgg_log() can now log arrays and
+ objects to error_log().
+
+ * engine/lib/xml-rpc.php: Fixes #1319: Applied patch for missing xml-rpc
+ <value> tag.
+
+ * CHANGES.txt, engine/lib/elgglib.php,
+ views/default/navigation/pagination.php, views/default/river/item/list.php:
+ Fixes #1481: Applie Mike's patch and created function
+ elgg_http_add_url_query_elements() to handle what the pagination view was
+ trying to do.
+
+2010-02-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: updated copyright to 2010
+
+2010-02-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/tests/api/entity_getter_functions.php: Refs #1200: Changed logic in
+ elgg_get_entity_type_subtype_where_sql() to return FALSE if there are no
+ valid subtypes passed. Ignores all invalid subtypes. Added (partial) tests
+ for elgg_get_entities() types and subtypes.
+
+2010-02-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * INSTALL.txt: updated install instructions to encourage more use of the
+ wiki instructions/troubleshooting and discourage setting data directory to
+ 777 as default
+
+ * views/rss/pageshells/pageshell.php: fixed a comment in rss pageshell
+
+2010-02-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: PHP complains about not casting the timestampt
+ to int for use in date().
+
+ * engine/lib/metadata.php: Added error checking to
+ clear_metadata_by_owner().
+
+ * engine/lib/entities.php: Fixed incorrect variable for subtype in
+ get_entity_dates().
+
+ * views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php: Fixes #1328: Removed rows and cols
+ from the installation textareas and added CSS to format width/height at 100%
+ to make it easier to read and select.
+
+ * engine/lib/elgglib.php: Fixes #340: add_menu() and make_register_object()
+ deprecated.
+
+ * engine/lib/languages.php: Fixes #1166. get_installed_translations() only
+ calculates completion if admin is logge din.
+
+ * CHANGES.txt, engine/lib/entities.php: Fixes #1406: get_entity_dates()
+ supports order by.
+
+ * engine/lib/database.php: Adding some \ns between the SQL error and the
+ query in the database exception.
+
+ * engine/lib/input.php: Fixes #1398: autop() doesn't call missing
+ clean_pre() function.
+
+ * CHANGES.txt, engine/lib/entities.php: Fixes #1376: added
+ ElggEntity::removeRelationship().
+
+ * engine/lib/elgglib.php: Fixes #1478: uh....how did that get in there?
+
+ * engine/lib/elgglib.php: Fixes: #1475. elgg_http_build_url() correctly
+ sets port number.
+
+ * engine/lib/filestore.php: Fixes #1314: Filestore opens read-only with rb
+ instead of r+b.
+
+ * actions/email/save.php: Refs #1290: Changed email addresses are checked in
+ action:email/save
+
+ * engine/lib/elgglib.php: Fixes #1261: Exceptions force an HTTP recache.
+
+ * CHANGES.txt, engine/lib/relationships.php: Fixes #1213:
+ delete_relationship() triggers delete:relationship hook.
+
+ * engine/lib/pageowner.php: Fixes #1211: page_owner() sets the page owner
+ after figuring it out.
+
+ * engine/lib/entities.php: Updated documentation for elgg_get_entities().
+
+ * CHANGES.txt, engine/lib/entities.php: Fixes #1325:
+ ElggEntities::countEntitiesFromRelationship() support inverse relationships.
+
+ * engine/lib/users.php, views/default/account/forms/login.php: Fixes #1473:
+ Simple patch to create a view for the registration page.
+
+ * engine/lib/annotations.php: Fixed incorrect deprecated warning.
+
+ * engine/lib/elgglib.php: Refs #1079: elgg_view() casts view to a string
+ before attempting to call views.
+
+ * engine/lib/users.php: Fixes #678. Friending appears in the river for
+ invited new users.
+
+ * engine/lib/entities.php: Put the can_write_to_container() plugin hook in
+ the right place after [3871].
+
+ * CHANGES.txt, engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/metadata.php, engine/lib/objects.php,
+ engine/lib/relationships.php, engine/lib/sites.php, engine/lib/users.php,
+ views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php: Add elgg_deprecated_notice() so we
+ don't have to re-write all the elgg_log() deprecated notices to
+ register_error()s. Updated current ones to use this.
+
+2010-01-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/listing.php: Removing var_dump().
+
+ * CHANGES.txt, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php,
+ mod/search/views/default/search/listing.php,
+ views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php: Deprecated old search functions and
+ views.
+
+ * CHANGES.txt, engine/lib/entities.php: Fixes #1164:
+ can_write_to_container() now sends default values through
+ container_permissions_check hook.
+
+ * mod/htmlawed/start.php: htmlawed no longer creates tags with extra spaces
+ (<p >).
+
+ * views/rss/pageshells/pageshell.php: Fixes #1289: Pragma: public header
+ added for RSS feeds.
+
+ * engine/lib/users.php: Fixes #804: A relationship is created between a new
+ user and the site it was created on.
+
+ * engine/lib/elgglib.php, views/default/navigation/pagination.php,
+ views/default/navigation/viewtype.php, views/default/river/item/list.php:
+ Fixes #959: Added elgg_http_remove_url_query_element() to remove a GET
+ element instead of using faulty regexp.
+
+2010-01-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Changed array_key_exists() to isset() in
+ elgg_validate_action_url().
+
+ * engine/lib/elgglib.php: Added checking for $query array in
+ elgg_validate_action_url().
+
+ * engine/lib/input.php: Setting a default value to avoid notices.
+
+ * mod/htmlawed/start.php, mod/htmlawed/vendors/htmLawed/htmLawed.php,
+ mod/htmlawed/vendors/htmLawed/htmLawedTest.php,
+ mod/htmlawed/vendors/htmLawed/htmLawed_README.htm,
+ mod/htmlawed/vendors/htmLawed/htmLawed_README.txt,
+ .../vendors/htmLawed/htmLawed_TESTCASE.txt: Fixes #1425, Fixes #1341:
+ Upgraded htmlawed to latest. Altered the htmlawed attribute filtering
+ function to return <attr="val"> for proper linking in parse_urls(). Added
+ background-color as a non-filtered style attribute.
+
+ * engine/lib/input.php: Refs #1425: Cleaned up regexp for parlse_urls().
+
+2010-01-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Fixes #1468: Cleaned up logic for enabling and
+ disabling plugins. Checking for arrays when metadata returns only a single
+ enabled plugin.
+
+ * admin/plugins.php, mod/diagnostics/index.php, mod/logbrowser/index.php:
+ Removed unneeded owner block icons from admin.
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2010012901.sql,
+ version.php: Added db migration 2010012901 that adds last_action column to
+ entities table. Bumped version number to 1.7b (2010012901).
+
+ * CHANGES.txt, engine/lib/relationships.php: Fixes #1472:
+ get_entity_relationships() supports inverse relationships.
+
+ * engine/lib/elgglib.php: Fixes #1470, Fixes #1471:
+ elgg_view_regenerate_simplecache() no longer triggers the pagesetup/system
+ hook. Fixes problems with creating the submenu.
+
+2010-01-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Corrected clear_plugin_setting() to only remove a
+ single plugin setting instead of all setting for a plugin. Added
+ clear_all_plugin_settings() to remove all settings for a plugin.
+
+2010-01-28 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: changed my email address to web site in contributors
+ file
+
+2010-01-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/useradd.php, engine/lib/users.php: Fixes #1049, Fixes #1435:
+ Admin-created users and first admin user are marked as validated to prevent
+ inaccurate "Please validate your account" messages and emails.
+
+2010-01-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/annotations.php, engine/lib/river2.php: Fixes
+ #1419: Added remove_from_river_by_annotation(). Deleting annotations now
+ deletes their river entry.
+
+ * CHANGES.txt: Updated changes.
+
+ * engine/lib/elgglib.php: Fixes #1465: Added unregister_event_handler() and
+ unregister_plugin_hook().
+
+ * engine/lib/sessions.php: Fixes #1464: A new session is created in logout()
+ after destorying the old session to display old $_SESSION['msg'] messages.
+
+2010-01-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes for the display name change.
+
+ * actions/user/name.php, languages/en.php,
+ views/default/user/settings/name.php: Display names are limited to 50 chars
+ and have HTML tags removed.
+
+ * README.txt: Bumped version number in README.
+
+ * views/default/css.php: Fixed a typo in css that broke everything in FF
+ 3.6.
+
+ * CHANGES.txt, engine/lib/plugins.php, languages/en.php: Fixes #1454:
+ Applied Cash's patch. Bad plugins are automatically disabled and a notice is
+ displayed instead of breaking the site.
+
+2010-01-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, engine/lib/input.php: Fixes #1450, Fixes #1461:
+ Using $_SERVER['REQUEST_URI'] to pull in GET params on apache servers.
+
+2010-01-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Correctly forwarding messages among multiple
+ forwards (action_gatekeeper() -> index -> dashboard would drop messages
+ generated in action_gatekeeper()).
+
+ * actions/systemsettings/install.php: Refs #1450, Refs #1461, Refs #1460:
+ Install now clears out views caches.
+
+ * mod/diagnostics/start.php: Masking dbpassword in dianostics file.
+
+ * engine/lib/actions.php: Fixes #1460, Fixes #1459: Tokens are not required
+ to disable a plugin or install. This allows users to disable plugins that
+ overwrite admin pages without tokens.
+
+ * views/failsafe/input/form.php, views/failsafe/input/securitytoken.php:
+ Refs #1459: Added missing security tokens for failsafe (installation) view.
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, actions/admin/user/ban.php,
+ actions/admin/user/delete.php, actions/admin/user/makeadmin.php,
+ actions/admin/user/removeadmin.php, actions/admin/user/resetpassword.php,
+ actions/admin/user/unban.php, actions/email/save.php,
+ actions/entities/delete.php, actions/register.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, actions/usersettings/save.php: Removing calls to
+ engine/start.php in action files.
+
+ * CODING.txt: Added best practices to CODING.txt.
+
+2010-01-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/object/default.php: Fixed missing ) causing a WSOD.
+
+ * views/default/admin/user_opt/search.php: Fixes #1455: Updated search URL
+ for admin user search. (The old one worked, but didn't limit to users.)
+
+2010-01-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../actions/email/confirm.php, mod/uservalidationbyemail/manifest.xml,
+ mod/uservalidationbyemail/start.php: Changed uservalidationbyemail to not use
+ an action and cleaned up some of its code.
+
+ * engine/lib/elgglib.php: Fixed a bug preventing messages and warnings from
+ passing during a forward().
+
+2010-01-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/basic_elements/welcome.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/welcome/logged_in.php: Updated views to use output/url with
+ action flag set.
+
+ * views/default/output/action_link.php, views/default/output/url.php:
+ Removed output/action_link view as it duplicated much of output/url. Improved
+ output/url view.
+
+ * engine/lib/metadata.php: Corrected a possible SQL insertion bug in
+ elgg_get_entity_metadata_where_sql().
+
+ * engine/lib/filestore.php: Fixing bug in resizing function that would
+ incorrectly attempt to crop a picture that was smaller than the target image.
+
+
+ * engine/lib/elgglib.php: Changed default declaration of $vars in
+ elgg_view() to array().
+
+ * views/default/object/default.php: Fixed a typo causing a WSOD.
+
+ * engine/lib/actions.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/basic_elements/welcome.php,
+ views/default/canvas/layouts/widgets.php, views/default/css.php,
+ views/default/object/default.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/spotlight.php,
+ views/default/welcome/logged_in.php: Fixes #750: All actions require
+ __elgg_ts and __elgg_token.
+
+ * engine/lib/elgglib.php: elgg_http_build_query() now supports ports.
+ Checking for __elgg_ts also in elgg_validate_action_url(). Fixed a spelling
+ mistake ;)
+
+ * views/default/output/action_link.php: Adding a view to generate action
+ links for single-click actions.
+
+2010-01-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/listing.php: Fixing bugs in search that
+ would break pagination.
+
+ * views/rss/navigation/pagination.php: Refs #1161: Added empty pagination
+ view for RSS feeds.
+
+ * engine/lib/filestore.php: Resetting cropping coords for images that can't
+ be cropped in filestore.
+
+ * engine/lib/filestore.php: Fixes #1445:
+ get_resized_image_from_existing_file() has an optional parameter to allow
+ upscaling if requested image is larger than original image.
+
+ * engine/lib/entities.php: Fixed documentation for time created and modified
+ params in elgg_get_entities().
+
+2010-01-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/search_hooks.php: Removing order by clause for now in search.
+
+ * CHANGES.txt: Updated CHANGES for #1414.
+
+2010-01-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/page_elements/searchbox.php: Stripping slashes on output
+ of original search query.
+
+ * mod/search/start.php: Allowing no table prefix in
+ search_get_search_where_sql()
+
+ * mod/search/start.php: Fixed incorrect order by for search sorting.
+
+ * mod/search/index.php, mod/search/search_hooks.php, mod/search/start.php:
+ Fixed an incorrect var name that caused a bug when hooking against a type but
+ not a subtype. Added first pass at results sorting.
+
+ * mod/search/README.txt, mod/search/index.php, mod/search/start.php,
+ mod/search/views/default/search/layout.php: Removed unnecessary view
+ directories. Added option of overriding the default layout for search
+ queries. Updated documentation reflecting those changes. Clarified some
+ points in the documentation.
+
+ * engine/lib/elgglib.php: Added checking and an ERROR log if elgg_view() is
+ passed a non-array $vars.
+
+2010-01-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: Updated contributors with entire MITRE team.
+
+2010-01-13 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Creating a helper function to return INI values in
+ bytes.
+
+2010-01-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixes #1414: Metadata set to a falsy value
+ (except NULL) returns TRUE for isset($obj->md).
+
+2010-01-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/metadata.php,
+ engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php,
+ engine/tests/objects/objects.php, engine/tests/objects/users.php: closes
+ #1145 - deprecated current "copy constructor" for all entities and
+ implemented a clone method. The clone copies over all metadata but not
+ annotations and private settings. It sets the guid to 0 so saving the cloned
+ entity creates a new database record. The ownership/access of metadata is set
+ during the save and will be the same as that of the entity.
+
+2010-01-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/rss/search/entity.php: Cleaned up RSS entity view for
+ search a bit.
+
+ * mod/search/index.php, mod/search/views/rss/search/entity.php,
+ mod/search/views/rss/search/listing.php: Added phpdoc header to index.php
+ Added RSS support to search. Nifty.
+
+2010-01-11 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/output/confirmlink.php: Always
+ generating action tokens with output/confirmlink. Includes a check for
+ actions already defining the tokens.
+
+2010-01-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/README.txt: Fixed a few spelling mistakes. Added descriptions
+ for the vars in 3.2
+
+ * engine/lib/relationships.php: Sanitising relationship in
+ elgg_get_entities_from_relationship();
+
+ * views/default/output/tags.php: Fixed tag output link for new search.
+
+ * mod/search/README.txt, mod/search/index.php, mod/search/start.php,
+ .../views/default/search/comments/entity.php,
+ .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/entity.php,
+ mod/search/views/default/search/listing.php: Pulling out entity views in
+ search. Adding dev documentation.
+
+2010-01-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fixes #1399: Case sensitivity was never in the
+ deprecated function, so no need to add it. Use the new functions if
+ required.
+
+ * engine/lib/metadata.php: Fixes #538. Applied Cash's patch. This is an old
+ one...jeepers.
+
+ * engine/lib/metadata.php: Fixes #1375: Metadata names and values are
+ properly escaped.
+
+2010-01-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #1400: Fixed a typo in checking the
+ site_guid. Can't duplicate #1400 now, so possible fix for that. Waiting for
+ other tests to close this one.
+
+ * languages/en.php: Updated language file to reflect default prefix change.
+
+ * views/failsafe/messages/sanitisation/settings.php: Changed default prefix
+ to 'elgg_' for table name readability.
+
+ * actions/systemsettings/install.php, engine/lib/input.php: Fixes #1172: URL
+ now checked for trailing slash upon installation.
+
+2010-01-06 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009102801.php: Fixing an upgrade issue relating from
+ invalid (non-existent) usernames
+
+2010-01-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2010010501.php, version.php: Added an upgrade to
+ enable the search plugin. Bumped internal version number.
+
+2010-01-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Set admin user's validation upon initial
+ registration. Fixes an incorrect error message if the first admin user enters
+ the wrong password.
+
+2009-12-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Closes #1424: Faulty database migrations will now
+ halt an upgrade.
+
+ * engine/lib/metadata.php: Removed debug data.
+
+ * engine/schema/upgrades/2009100701.sql: Removed lock tables from db utf8
+ migration because it fails on some (all?) servers.
+
+2009-12-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/access.php, views/default/input/button.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/tags.php, views/default/output/confirmlink.php,
+ views/default/page_elements/header.php: a little cleanup of documentation and
+ variable handling in input and output views
+
+ * entities/index.php: removed unused variable in entities index
+
+ * engine/lib/group.php: fixed #1087 - is_group_member() now returns boolean
+ values only
+
+ * engine/lib/entities.php: fixes #988 - subtype is now available on new
+ entities after being saved
+
+2009-12-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: fixed bug where array of messages passed to
+ system_messages caused execution to stop - also displaying only errors if
+ they exist rather than having success and error messages overlapping each
+ other
+
+ * engine/lib/users.php: fixes #1322 - "remember me" cookie code is cleared
+ when a user is banned
+
+ * views/default/page_elements/header.php,
+ views/failsafe/pageshells/pageshell.php: fixes #1193 - now specify charset in
+ both metatag and http header
+
+ * engine/lib/database.php: cleaned up logic on db query cache
+
+ * engine/lib/entities.php: fixed typo in list_entities()
+
+2009-12-18 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Clarified the documentation for
+ add_entity_relationship().
+
+2009-12-18 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/comments/add.php: add comment action now using get_loggedin_user()
+ rather than $_SESSION['user']
+
+ * views/default/input/form.php: added js to input/form
+
+ * engine/lib/actions.php, engine/lib/pagehandler.php: better parsing of
+ query for action and page handlers
+
+2009-12-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/mb_wrapper.php: perhaps this is what Brett intended with the
+ new mb_wrapper code
+
+ * views/default/input/button.php, views/default/input/form.php,
+ views/default/input/submit.php, views/default/input/text.php: fixed notices
+ caused by some input views
+
+ * engine/lib/database.php: fixed warning due to database query cache
+
+ * engine/lib/entities.php: when asking for a count of entities, we now
+ return an integer rather than a string
+
+ * engine/lib/elgglib.php: get_submenu was throwing out tons of notices -
+ this should be fixed now
+
+ * views/default/css.php: fixes #951 - using background-color rather than
+ background
+
+2009-12-16 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: better version of
+ get_resized_image_from_existing_file() - fixes #685 - more robust to errors,
+ and fixes a memory leak - tested with both profile photos and file plugin
+ photos - old installs will still have profile icons of the wrong size due to
+ #685
+
+ * engine/lib/input.php: added comments on get_input and set_input since they
+ do not handle nested arrays
+
+2009-12-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: Fixes #1413: New server test.
+
+2009-12-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: closes #1277 - display_tagcloud() now has same
+ parameters as get_tags()
+
+ * views/default/output/tagcloud.php: fixes #1197 - no division by zero
+ warning any longer
+
+ * views/default/account/forms/login.php,
+ views/default/account/forms/register.php: easier to extend login and
+ registration forms now
+
+ * CHANGES.txt: updated CHANGES.txt with info on river table
+
+ * engine/tests/services/api.php: fixed line endings on services api unit
+ tests
+
+ * languages/en.php: added some missing language strings
+
+2009-12-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: closes #1244 - checking whether file exists before
+ deleting it in cache
+
+ * views/default/friends/collectiontabs.php: closes #1226 - fixes eclipse
+ validation error
+
+ * languages/en.php, views/default/admin/user_opt/search.php: fixes #1230 -
+ spelling corrected
+
+ * engine/lib/access.php: using defines for ACCESS values - closes #1064
+
+ * mod/htmlawed/start.php: removes @ from include - closes #879
+
+ * actions/admin/user/ban.php: removes unused variables - closes #1129
+
+2009-12-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: minor tweak in comment - closes #1264
+
+ * views/default/css.php, views/default/page_elements/owner_block.php: fixes
+ #973 - pulls reported content and bookmark code out of core owner_block view
+ - left images in _graphics since themes probably depend on that and did not
+ want to break themes
+
+ * engine/lib/relationships.php: fixes #1323 and #1186 - PHP 5.3 requires
+ magic methods to be public
+
+2009-12-08 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/users.php,
+ engine/tests/objects/users.php: fixes #1305 - user and entity cache now
+ cleared on delete
+
+ * engine/lib/sessions.php, languages/en.php: gatekeeper functions now
+ display helpful messages - closes #1060
+
+ * engine/lib/group.php: fixes #1287 - users now removed from group acl when
+ leaving group - changed order of event and relationship removal
+
+ * .../canvas/layouts/two_column_right_sidebar.php, views/default/css.php:
+ fixes #537 - missing area3 added to two_column_right_sidebar - also added
+ enough css so that the login page works with right sidebar
+
+2009-12-07 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Adding alias ElggSession methods
+
+2009-12-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: fixes #1187
+
+ * actions/comments/add.php, languages/en.php: fixes #1018 - blank comments
+ are now rejected
+
+ * views/default/input/form.php, views/failsafe/input/form.php,
+ views/failsafe/messages/sanitisation/settings.php: fixes #1183 - correct case
+ for form method now
+
+ * engine/lib/elgglib.php: fixed issue where php notices were written to log
+ on any debug level and added a plugin hook so plugins can direct elgg_log
+ messages where they want
+
+ * actions/login.php: fixed warning on access of array index that did not
+ exist in session global
+
+ * engine/lib/access.php: removed code that wasn't doing anything in
+ access.php
+
+ * engine/lib/relationships.php: fixed typo in
+ get_entities_from_relationship()
+
+2009-12-05 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/start.php: adding more security to the user
+ validation by email code - before people could fake the validation with
+ knowledge of the code making it possible for bots to register and validate
+ without an email address
+
+ * engine/lib/annotations.php: get_entities_from_annotations was ignoring
+ group_guid - setting container_guid now
+
+ * mod/htmlawed/start.php: fixed trivial bug in htmlawed plugin. The ;
+ delimiter should only be used between sets of schemes (protocols). This is
+ due to some slightly lazy coding in htmlawed.
+
+ * engine/lib/sessions.php: if there is already a user in the session, we
+ don't need to set the code from the cookie
+
+ * engine/lib/plugins.php: fixed bug introduced in [3608]
+
+ * languages/en.php, views/default/annotation/annotate.php: fixed bug in
+ comment river view due to missing }
+
+2009-12-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: fixes #1273 - replaced previous hack with call to
+ getType
+
+ * engine/lib/api.php, engine/tests/services/api.php: fixes #1397 and updates
+ unit tests - comma was missing
+
+2009-12-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: fixes #1396 - thanks for reporting this
+
+2009-12-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/search_hooks.php: Stripping tags to remove HTML on title and
+ description for comment search.
+
+ * mod/search/search_hooks.php: Removed a line breaking description for
+ comments in search.
+
+ * mod/search/search_hooks.php: Comments' search hook now correctly trims
+ description and title.
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php: Removed pagination from top of
+ results.
+
+ * engine/lib/elgglib.php: Trimming the paths when detecting which nav item
+ to mark as selected.
+
+2009-12-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/listing.php: Search types without a
+ subtype now display properly.
+
+ * engine/lib/elgglib.php: Changed the way the sidebar nav "selected" class
+ is applied. Should yield more accurate results if the URIs aren't exactly
+ the same.
+
+ * CHANGES.txt: Removed duplicate changes entry.
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php: Changed avatar size to small in
+ search results. Fixed a bug so comment owners' avatars show up instead of
+ commented entity's owners' avatars.
+
+2009-12-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/usersettings.php, languages/en.php: closes #876 - profile
+ language strings moved to profile plugin
+
+2009-11-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/listing.php: Added pagination to comments
+ view.
+
+ * mod/search/search_hooks.php, mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/tags/listing.php: Removed tag search listing.
+ Added ability to provide extra info in searches as 'search_matched_extra'.
+ Allowing overrides for titles.
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php: If a search result returns a
+ user, make the icon be for the user and not the owner (which is no one)
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/tags/listing.php: Listings use profile/icon
+ view instead of calling icon directly.
+
+2009-11-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/entity_list.php: search results view
+ tweaked
+
+2009-11-24 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixing a bug resulting from get_loggedin_user()
+ return FALSE. This bug could throw a fatal error to non-loggedin users.
+
+ * engine/tests/test_skeleton.php: Adding documentation to the unit test
+ skeleton file.
+
+2009-11-24 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: entities can now have metadata of 0 and return
+ the correct type. Fixes #1192
+
+ * dashboard/latest.php: dashboard latest wasn't specifying fullview as false
+
+ * engine/lib/languages.php: fixes 1315 - language static now being set
+ correctly
+
+ * engine/lib/entities.php: fixes #935
+
+ * engine/lib/users.php: made the get user friends objects functions
+ consistent and added some missing documentation - no api usage changes
+
+2009-11-23 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, engine/lib/users.php,
+ engine/tests/objects/filestore.php: Deleting a user will remove all user
+ files. Fixes #607
+
+2009-11-22 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/remove.php: remove friend action, return user to the place
+ the action was triggered
+
+ * actions/friends/add.php: when friending another user, return to the page
+ you carried out the action
+
+2009-11-21 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/relationships.php: fixes #1374 - owner_guid wasn't being set
+ correctly in options array
+
+ * engine/lib/metadata.php: get_entities_from_metadata_multi() had bad option
+ keys - related to #1374.
+
+ * engine/lib/users.php: fixes #1380 - get_user_friends() was being called
+ with subtype of desired objects in get_user_friends_objects() - thanks for
+ the report
+
+2009-11-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed a bug with group by and order by in
+ elgg_get_entities. #ElggCampBA
+
+2009-11-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: updated some documentation on
+ register_page_handler(). This fixes #1373
+
+2009-11-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: updating the contributors file
+
+2009-11-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bump.
+
+2009-11-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/tags/listing.php: 'More' links on serarch
+ results moved, and link added to Tag results
+
+ * .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/tags/listing.php: Search UI cleaned up
+
+2009-11-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/views/default/search/listing.php: Fixed typo to display the
+ type of search.
+
+ * actions/systemsettings/install.php, views/default/site/default.php: Added
+ an INSTALLING constant when installing. Fixed a bug when trying to export a
+ site that causes the browser to redirect to the site's url, which caused the
+ installation process to skip past the "create your admin user" prompt when
+ "ping home" was checked.
+
+2009-11-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/start.php: Added a missing elgg_strlen() in
+ search_remove_ignored_words()
+
+ * CHANGES.txt: Updated changes file with search and user data storage info.
+
+
+2009-11-14 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: fixes #1169 as described on ticket
+
+ * CHANGES.txt, engine/lib/api.php: updated documentation of API functions -
+ perhaps ready for developer preview
+
+2009-11-13 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/jquery/jquery-ui-1.7.2.min.js: Including jQuery UI 1.7.2 in core.
+ The custom build did not contain all the features we would like to have.
+ Leaving the custom build in place for community additions.
+
+ * engine/lib/annotations.php: Properly ordering annotation objects returned
+ by Elgg methods.
+
+ * search/index.php: Creating a redirect page for legacy themes using search.
+
+
+2009-11-13 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/services/api.php: more test cases related to #1364.
+
+ * engine/lib/api.php, engine/tests/services/api.php: should fix #1364 and
+ added relevant unit test cases for this bug (yeah for unit tests)
+
+2009-11-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: fixed typo with handling web services request
+ parameters
+
+ * engine/lib/api.php: rest api parameters can now have default values
+
+2009-11-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/entities/entity_listing.php,
+ views/default/entities/gallery_listing.php: Fixes: #1356. Reverted
+ search_listing to entity_listing for theme support.
+
+2009-11-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, languages/en.php: added a nonce to hmac signature and
+ header so same call in same second does not get caught by replay check
+
+2009-11-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/mb_wrapper.php: Accidentally removed the eval with my debug
+ statements.
+
+ * engine/lib/mb_wrapper.php: Wrapped all multibyte functions that are
+ directly interchangable with non mb functions with elgg_*().
+
+2009-11-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: fixes #1286 - ElggPlugin get() wasn't handling "0"
+ and returning null instead
+
+2009-11-12 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009102801.php: Data migration: Disabled execution
+ time and clearing out caches to avoid OOM errors.
+
+2009-11-12 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river2.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2009091901.sql: fixes #1329 - schema for river is
+ fixed - was incomplete before
+
+2009-11-11 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: fixes #1339 - elgg_view_exists now handles view
+ extensions for non-default viewtypes (for one level of recursion)
+
+ * engine/lib/elgglib.php: get_views deprecated for elgg_get_views (just to
+ be consistent with views api)
+
+2009-11-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/page_elements/title.php, views/json/page_elements/title.php,
+ views/rss/page_elements/title.php: these viewtypes need an empty title view
+ or html shows up because they fallback on default view
+
+2009-11-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/start.php: Removing explicit MySQL 5.1-specific 'IN NATURAL
+ LANGUAGE MODE' option.
+
+2009-11-10 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009102801.php: Using php default functions instead of
+ ElggUser in upgrade script. Large Elgg sites could not handle the "select *
+ from users" query without hitting memory limit.
+
+2009-11-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/elgglib.php, engine/lib/usersettings.php,
+ mod/logbrowser/start.php, mod/search/start.php: elgg_extend_view() replaces
+ extend_view()
+
+ * engine/lib/elgglib.php: updated documentation of functions used in
+ creating the topbar tools dropdown menu
+
+2009-11-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/start.php, mod/search/views/default/search/css.php: Sorting
+ search contexts by longest related substring. Added more pretty highlight
+ colors.
+
+ * mod/search/start.php: Fixed displaying of ...s in search.
+
+ * mod/search/index.php: I hate you search.
+
+ * mod/search/index.php: Missed an htmlspecialchars().
+
+ * mod/search/index.php, mod/search/start.php: Removed unneeded url_encode()s
+ for links.
+
+ * mod/search/start.php: Underscores. grr.
+
+ * mod/search/start.php: Adjusted default context length to 500. Added url
+ decoding to needle string.
+
+ * mod/search/search_hooks.php, mod/search/start.php: Trying out the new
+ context grabbing function in search.
+
+2009-11-10 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/service_handler.php, engine/lib/api.php, htaccess_dist:
+ introducing a new web services handler
+
+ * engine/lib/notification.php: do not register notification rest api calls
+ by default since no other apis exposed not directly related to the api
+
+ * views/json/api/output.php: leaner json objects for web services api calls
+
+2009-11-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/search_hooks.php: For real this time.
+
+ * mod/search/search_hooks.php: Sanitising string on tag search.
+
+ * mod/search/search_hooks.php, mod/search/start.php: Sanitising strings to
+ avoid sql insertion hacks.
+
+ * mod/search/index.php, mod/search/search_hooks.php, mod/search/start.php,
+ .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php: Updated search to allow
+ filtering of results by clicking on submenu items. Fixes #1358: Using raw
+ mysql_query() / fetch() to get ft_min/max vars since they aren't set on some
+ versions of MySQL.
+
+ * engine/lib/entities.php: Ignoring empty owner_guids in elgg_get_entities.
+
+ * engine/lib/elgglib.php: Removed old code from get_submenu().
+
+ * CODING.txt: Added deprecation procedures to coding standards.
+
+2009-11-09 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: updated changes.txt
+
+ * engine/lib/api.php: REST api hmac signature encoding now compatible with
+ Amazon S3 and OAuth
+
+2009-11-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/search/comments/listing.php: Fixed the wrapper for
+ comment listing.
+
+ * mod/search/start.php: Uncommenting out the bulk of the search functions.
+
+ * mod/search/search_hooks.php, mod/search/start.php,
+ .../views/default/search/comments/listing.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/tags/listing.php: Added super-basic support
+ for searching comments.
+
+2009-11-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/lib/pam.php, engine/tests/services/api.php,
+ services/api/rest.php: combined the two different pams into one and fixed an
+ issue with hmac authentication
+
+2009-11-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/search/search_hooks.php: Reverted groups and users to LIKE instead of
+ MATCH AGAINST.
+
+ * engine/lib/group.php, engine/lib/objects.php, engine/lib/tags.php,
+ engine/lib/users.php, mod/search/index.php, mod/search/search_hooks.php,
+ mod/search/start.php, .../views/default/page_elements/searchbox.php,
+ mod/search/views/default/search/listing.php: Moved default search hooks into
+ search mod. Using MySQL's MATCH ... AGAINST instead of likes for most
+ searches. Changed 'tag' to 'q' while maintaining backward compatibility.
+
+2009-11-07 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: fixed bug in list_entities() wrapper function -
+ it was ignoring false values - there are probably similar problems in the
+ other new wrapper functions
+
+ * _graphics/icons/default/topbar.png: fixes #1324 - default topbar icon now
+ exists
+
+ * engine/lib/metastrings.php: fixes #1227 - this one has been causing nasty
+ problems for far too long
+
+2009-11-06 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: removed space which would break the schema
+ parsing routine for the next poor sucker who tried to add a table - not the
+ most robust code
+
+ * services/api/rest.php: strike previous - we need the password auth to get
+ the user token - will just need to document that pam_auth_pass does not work
+ with REST because the user credentials are not set
+
+ * engine/lib/pam.php, services/api/rest.php: removing username/password
+ authorization for REST by default - developers can add their own custom PAM
+ using the plugin hook if they require this
+
+2009-11-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Removed old group search hook.
+
+ * engine/lib/users.php: Removed old user search.
+
+ * engine/lib/group.php, engine/lib/tags.php, engine/lib/users.php: Added
+ search for group, tags, and users.
+
+ * engine/lib/entities.php: Added ability to pass 0 as a subtype meaning
+ "entities without a subtype".
+
+ * engine/lib/objects.php: Added default object search.
+
+ * engine/lib/metadata.php: Corrected documentation for
+ elgg_get_entities_from_metadata()
+
+ * actions/systemsettings/install.php: Enable search mod upon installation.
+
+ * mod/search/index.php, mod/search/start.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/startblurb.php,
+ mod/search/views/default/search/tags/listing.php: Updated search for FTS.
+
+2009-11-04 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/sessions.php: users now allowed to have multiple
+ sessions but not multiple remember me cookies (yet)
+
+2009-11-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/htmlawed/start.php: Updated htmlawed to allow the default TinyMCE
+ styles.
+
+2009-11-03 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php, engine/lib/plugins.php, engine/lib/xml-rpc.php,
+ engine/lib/xml.php: standardized xml.php and fixed output of booleans in xml
+ view
+
+2009-11-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes for deprecated functions.
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/metadata.php: Deprecated elgg_get_entities_from_annotations().
+
+ * engine/lib/access.php: Changed elgg_get_entities_from_access_id() to be
+ closer to how other functions work.
+
+ * mod/htmlawed/start.php: Updated htmlawed to disallow many style
+ attributes.
+
+2009-11-02 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/xml/pageshells/pageshell.php: setting xml version and encoding in
+ xml pageshell
+
+2009-10-30 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, engine/lib/access.php, engine/tests/objects/users.php:
+ Deprecating get_entities_from_access_id().
+
+2009-10-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: No longer using fullview for listing registered entities on
+ front page.
+
+2009-10-30 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Removing deprecated function call from
+ find_plugin_settings().
+
+2009-10-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/tests/objects/metadata.php: Namespaced
+ metadata keys for elgg_get_entities_from_metadata() so no clashes will happen
+ with annotations.
+
+2009-10-30 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updating 1.7 CHANGES file.
+
+2009-10-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes for the relationship functions.
+
+2009-10-30 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Cleaning up logic regarding view error notices.
+
+2009-10-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/lib/relationships.php: Deprecated
+ get_entities_from_relationships_and_meta().
+
+2009-10-29 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, engine/tests/objects/filestore.php: Fully
+ deprecating file matrix use with username. Plugins building the file matrix
+ with the username will still work, but a warning is logged.
+
+ * engine/tests/objects/metadata.php: Updating unit test to reflect
+ deprecated functions.
+
+2009-10-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Fixed incorrect wrapper for
+ get_entities_from_relationship() -> elgg_get_entities_from_relationship().
+
+2009-10-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Deprecated get_entities_from_relationship()
+
+ * engine/lib/metadata.php: Actually fixed the documentation for
+ elgg_get_entities_from_metadata().
+
+ * engine/lib/metadata.php: Cleaned up table prefix for
+ elgg_get_entity_metadata_where_sql(). Cleaned up some documentation.
+
+ * engine/lib/metadata.php: Updated documentation for
+ elgg_get_entity_metadata_where_sql()
+
+ * engine/schema/upgrades/2009100701.sql: Got rid of the silly conditional
+ comments in the db upgrade now that I know what they are.
+
+ * engine/schema/upgrades/2009100701.sql: Added table locking and disabling
+ keys for the UTF8 database upgrade.
+
+2009-10-28 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009102801.php, version.php: Creating an upgrade
+ script for new user filepath.
+
+2009-10-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/metadata.php: Deprecated
+ get_entities_from_metadata() and get_entities_from_metadata_multi().
+
+2009-10-27 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/objects/filestore.php: Removing local debug info from
+ filestore unit test.
+
+ * engine/lib/filestore.php, engine/tests/elgg_unit_test.php,
+ engine/tests/objects/filestore.php, engine/tests/objects/users.php: Modifying
+ user file locations to be based on guid. Previous implementations utilized
+ the owner's username to determine a file path matrix based on (up to) the
+ first five letters. To eliminate language and filesystem inconsistencies, the
+ matrix is now created from the entity's creation date and guid. This has the
+ added benefit of (potentially) allowing users to update their usernames.
+
+2009-10-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes for bug #1161 and deprecated
+ get_entities_from_metadata()
+
+ * engine/tests/objects/metadata.php: Fixed caching issue that caused
+ metadata test for get_entities_from_metadata() to fail.
+
+ * engine/lib/entities.php: Removed some commented out code.
+
+ * engine/lib/metadata.php: Fixed get_entities_from_metadata() wrapper when
+ passing case_sensitive = FALSE.
+
+ * engine/lib/elgglib.php: Fixes #1161: Views now default to 'default' if not
+ found.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/metadata.php:
+ Created elgg_get_entities_from_metadata() and made
+ get_entities_from_metadata(). Made elgg_get_entities() accept extra joins and
+ wheres in the options. Created a helper function
+ elgg_normalise_plural_options_array() to rewrite shortcut singular options to
+ plurals.
+
+2009-10-26 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php: Rewriting metastrings search query for
+ simplicity.
+
+2009-10-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updated changes to show deprecated get_entities().
+
+2009-10-25 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/tests/services/api.php, languages/en.php:
+ cleaned up the web services unit tests
+
+2009-10-25 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Corrected bug when passing container_guids or
+ owner_guids of 0. Changed the name of the $prefix to $table in sql helper
+ functions. Improved documentation.
+
+2009-10-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Created elgg_get_entities() and rewrote
+ get_entities() to pass to the new function. First go at removing
+ get_entities() calls in native functions.
+
+ * engine/lib/elgglib.php: Cleaned up some code in elgg_view().
+
+ * engine/lib/access.php: Slight code cleanup.
+
+2009-10-23 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, engine/tests/objects/users.php: Creating a unit test
+ for ElggUser
+
+2009-10-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/entities/entity_list.php,
+ views/default/entities/entity_listing.php: Standardized entity listing views.
+
+
+ * CODING.txt: Updated standards for method names.
+
+2009-10-22 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Refs #1330: Contributed autop() to Wordpress.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/search.php,
+ mod/search/index.php, mod/search/languages/en.php, mod/search/manifest.xml,
+ mod/search/start.php, .../views/default/page_elements/searchbox.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity_list.php,
+ mod/search/views/default/search/gallery.php,
+ .../views/default/search/gallery_listing.php,
+ mod/search/views/default/search/listing.php,
+ mod/search/views/default/search/startblurb.php, search/groups.php,
+ search/index.php, search/users.php, views/default/css.php,
+ views/default/entities/entity_list.php,
+ views/default/entities/entity_listing.php,
+ views/default/entities/gallery.php,
+ views/default/entities/gallery_listing.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/search/entity_list.php, views/default/search/gallery.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php,
+ views/default/search/startblurb.php: Pulling in MITRE's search core.
+ Fo'rizzle this time. Yo.
+
+2009-10-22 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt: Updating core changes file
+
+ * mod/diagnostics/index.php, mod/diagnostics/languages/en.php: Adding unit
+ testing to the GUI. Unit tests can be run from the core Diagnostics mod.
+
+2009-10-22 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/tests/services/api.php, languages/en.php: more
+ unit tests for REST api
+
+2009-10-21 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/tests/objects/metadata.php: Allowing entities to be retrieved by
+ case-insensitive search. Adding a new unit test for ElggMetadata.
+
+ * engine/lib/elgglib.php, engine/tests/suite.php: Reducing the output level
+ of log messages set to "DEBUG". Debug level messages will be logged at the
+ same level as warnings. Additionally, users will be notified when attempting
+ to run the test suite without first placing the site in debug mode.
+
+2009-10-20 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/tests/services/api.php, languages/en.php: more
+ unit tests for REST api
+
+ * CHANGES.txt: updated CHANGES.txt with services API changes
+
+2009-10-19 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Replacing a direct call to error_log() with new
+ elgg_log().
+
+ * CHANGES.txt, actions/admin/site/update_basic.php,
+ actions/systemsettings/install.php, engine/lib/elgglib.php, languages/en.php,
+ views/default/settings/system.php, views/failsafe/settings/system.php: Adding
+ debug options to admin site settings. Debugging errors and warnings to
+ screen. If notice level is enabled, output is sent to system log file.
+
+2009-10-19 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/tests/services/api.php, languages/en.php,
+ services/api/rest.php: first version of new REST api
+
+2009-10-17 cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pam.php: updated documentation on PAMs as I will be fixing some
+ API PAM issues
+
+2009-10-16 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/group.php, engine/lib/languages.php,
+ engine/lib/memcache.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php, engine/start.php, engine/tests/suite.php,
+ views/default/messages/exceptions/exception.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/xml/messages/exceptions/exception.php: Rewriting core debug messages to
+ be more informative. Introducing the concept of levels for Elgg debugging:
+ notices, warnings and errors are displayed when the appropriate debugging
+ level is enabled. An additional level of "debug" exists to differentiate from
+ errors.
+
+2009-10-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/canvas/default.php,
+ views/foaf/page_elements/contentwrapper.php,
+ views/foaf/pageshells/pageshell.php, views/foaf/search/entity_list.php,
+ views/foaf/user/default.php, views/ical/canvas/default.php,
+ views/ical/export/entity.php, views/ical/object/default.php,
+ views/ical/pageshells/pageshell.php, views/ical/search/entity_list.php,
+ views/js/object/default.php, views/js/pageshells/pageshell.php,
+ views/js/user/default.php, views/json/api/output.php,
+ views/json/canvas/default.php, views/json/export/entity.php,
+ views/json/export/metadata.php, views/json/export/relationship.php,
+ views/json/group/default.php, views/json/messages/exceptions/exception.php,
+ views/json/object/default.php, views/json/page_elements/contentwrapper.php,
+ views/json/pageshells/pageshell.php, views/json/river/item/list.php,
+ views/json/search/entity_list.php, views/json/site/default.php,
+ views/json/user/default.php, views/opendd/canvas/default.php,
+ views/opendd/export/entity.php, views/opendd/export/metadata.php,
+ views/opendd/export/relationship.php, views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/search/entity_list.php, views/opendd/site/default.php,
+ views/opendd/user/default.php, views/php/api/output.php,
+ views/php/canvas/default.php, views/php/export/entity.php,
+ views/php/export/metadata.php, views/php/export/relationship.php,
+ views/php/group/default.php, views/php/messages/exceptions/exception.php,
+ views/php/object/default.php, views/php/pageshells/pageshell.php,
+ views/php/search/entity_list.php, views/php/site/default.php,
+ views/php/user/default.php, views/rss/annotation/default.php,
+ views/rss/canvas/default.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/page_elements/contentwrapper.php,
+ views/rss/pageshells/pageshell.php, views/rss/river/item/list.php,
+ views/rss/search/entity_list.php, views/rss/user/default.php,
+ views/xml/api/output.php, views/xml/messages/exceptions/exception.php,
+ views/xml/pageshells/pageshell.php, views/xml/xml-rpc/output.php: Finished
+ standardizing seconday views.
+
+ * views/failsafe/canvas/default.php, views/failsafe/input/access.php,
+ views/failsafe/input/button.php, views/failsafe/input/checkboxes.php,
+ views/failsafe/input/form.php, views/failsafe/input/hidden.php,
+ views/failsafe/input/longtext.php, views/failsafe/input/pulldown.php,
+ views/failsafe/input/reset.php, views/failsafe/input/submit.php,
+ views/failsafe/input/text.php, views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/list.php, views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php, views/failsafe/settings/install.php,
+ views/failsafe/settings/system.php: Standardized views/failsafe/*
+
+ * views/default/css.php, views/default/settings/install.php,
+ views/default/settings/system.php, views/default/settings/upgrading.php,
+ views/default/site/default.php, views/default/spotlight/default.php,
+ views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php,
+ views/default/upload/upload_form_content.php, views/default/user/default.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php, views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/usersettings/user.php, views/default/welcome.php,
+ views/default/welcome/logged_in.php, views/default/welcome/logged_out.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php:
+ Finish up standardizing views/default/*
+
+ * views/default/page_elements/contentwrapper.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_contents.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/spotlight.php,
+ views/default/page_elements/title.php,
+ views/default/pageshells/pageshell.php, views/default/river/dashboard.php,
+ views/default/river/item/list.php, views/default/river/item/noaccess.php,
+ views/default/river/item/wrapper.php,
+ views/default/river/relationship/friend/create.php,
+ views/default/river/wrapper.php, views/default/search/entity_list.php,
+ views/default/search/gallery.php, views/default/search/gallery_listing.php,
+ views/default/search/listing.php, views/default/search/startblurb.php: More
+ views cleanup.
+
+ * views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php,
+ views/default/graphics/icon.php, views/default/group/default.php,
+ views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php, views/default/input/access.php,
+ views/default/input/autocomplete.php, views/default/input/button.php,
+ views/default/input/calendar.php, views/default/input/captcha.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/form.php,
+ views/default/input/hidden.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/reset.php, views/default/input/securitytoken.php,
+ views/default/input/submit.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/input/urlshortener.php, views/default/input/userpicker.php,
+ views/default/js/initialise_elgg.php,
+ views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/navigation/viewtype.php,
+ .../notifications/settings/usersettings.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/object/plugin.php, views/default/object/widget.php,
+ views/default/output/calendar.php, views/default/output/checkboxes.php,
+ views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/email.php, views/default/output/iframe.php,
+ views/default/output/longtext.php, views/default/output/pulldown.php,
+ views/default/output/radio.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php: Standardizing views.`
+
+ * views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php, views/default/ajax/loader.php,
+ views/default/annotation/annotate.php,
+ views/default/annotation/generic_comment.php, views/default/api/output.php,
+ views/default/basic_elements/welcome.php, views/default/canvas/default.php,
+ views/default/canvas/layouts/edit_layout.php,
+ views/default/canvas/layouts/one_column.php,
+ views/default/canvas/layouts/sidebar_boxes.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ .../canvas/layouts/two_column_right_sidebar.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/canvas_header/submenu_group.php,
+ views/default/canvas_header/submenu_template.php,
+ views/default/comments/forms/edit.php, views/default/dashboard/blurb.php,
+ views/default/export/entity.php, views/default/export/metadata.php,
+ views/default/export/relationship.php, views/default/friends/collection.php,
+ views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/list.php,
+ views/default/friends/picker.php, views/default/friends/river/create.php:
+ Standardized more files.
+
+ * engine/tests/objects/objects.php, engine/tests/suite.php,
+ friends/index.php, friends/of.php, friends/pickercallback.php, index.php,
+ install.php, languages/en.php, search/groups.php, search/index.php,
+ search/users.php, services/api/rest.php, services/export/handler.php,
+ settings/index.php, settings/plugins.php, settings/statistics.php,
+ settings/user.php, simplecache/view.php, upgrade.php, version.php:
+ Standardized files
+
+2009-10-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/admin.php: Merged admin access override
+ hook with ignore access system override hook. get_sql_access_prefix() now
+ correctly uses elgg_check_access_overrides() instead of
+ elgg_get_ignore_access().
+
+ * friends/add.php, friends/collections.php, friends/edit.php: Standardized
+ files.
+
+ * entities/index.php, entities/list.php: Standardized files.
+
+ * engine/lib/widgets.php, engine/settings.example.php, engine/start.php:
+ Standardized files.
+
+ * engine/lib/calendar.php, engine/lib/configuration.php,
+ engine/lib/cron.php, engine/lib/exceptions.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/filestore.php, engine/lib/group.php,
+ engine/lib/input.php, engine/lib/install.php, engine/lib/languages.php,
+ engine/lib/location.php, engine/lib/mb_wrapper.php, engine/lib/memcache.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/opendd.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/ping.php, engine/lib/plugins.php, engine/lib/query.php,
+ engine/lib/relationships.php, engine/lib/river2.php, engine/lib/search.php,
+ engine/lib/sites.php, engine/lib/social.php, engine/lib/statistics.php,
+ engine/lib/system_log.php, engine/lib/tags.php, engine/lib/users.php,
+ engine/lib/usersettings.php, engine/lib/version.php, engine/lib/widgets.php:
+ Standardized gobs of files.
+
+2009-10-14 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Standardized engine/lib/cache.php
+
+ * engine/lib/api.php: Standardized engine/lib/api.php
+
+ * engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/pagehandler.php, engine/handlers/xml-rpc_handler.php:
+ Standardized engine/handlers/*
+
+ * dashboard/index.php, dashboard/latest.php: Standardized dashboard/*
+
+ * admin/index.php, admin/plugins.php, admin/site.php, admin/statistics.php,
+ admin/user.php: Standardized admin/*
+
+ * actions/email/save.php, actions/entities/delete.php,
+ actions/friends/add.php, actions/friends/addcollection.php,
+ actions/friends/deletecollection.php, actions/friends/editcollection.php,
+ actions/friends/remove.php, actions/import/opendd.php, actions/login.php,
+ actions/logout.php, .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/systemsettings/install.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ actions/user/spotlight.php, actions/useradd.php,
+ actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php: Standardized actions/*
+
+
+ * actions/comments/add.php, actions/comments/delete.php: Standardized.
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, actions/admin/site/update_basic.php,
+ actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ actions/admin/user/resetpassword.php, actions/admin/user/unban.php:
+ Standardized actions/admin/*
+
+ * account/forgotten_password.php, account/register.php: Standardized
+ account/*
+
+ * _css/css.php, _css/js.php: Standardized _css/*
+
+ * CHANGES.txt: Updated changes file for $is_admin deprecation.
+
+2009-10-13 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/objects/entities.php, engine/tests/objects/objects.php,
+ engine/tests/test_skeleton.php: Swallowing all Elgg notices within unit
+ tests. By default, SimpleTest converts PHP errors into exceptions. This is
+ restricted by adding a call to swallowErrors() within the tearDown() methods.
+ This has also been noted within the unit test skeleton.
+
+ * engine/lib/sites.php, engine/tests/objects/sites.php: Creating a generic
+ ElggSite unit test.
+
+2009-10-13 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/admin.php, engine/lib/entities.php,
+ engine/lib/users.php: Standardized users and entities. Fleshed out
+ elgg_set_ignore_access() and elgg_get_ignore_access()
+
+ * engine/lib/elgglib.php: Standardize elgglib.php
+
+ * engine/tests/suite.php: Test suite now requires admin for web-based tests.
+ Uses access overrides for cli-based tests.
+
+ * engine/lib/entities.php: Standardized entities.php.
+
+ * engine/lib/access.php: Fix typo in ElggAccess:get_ignore_access().
+
+ * engine/lib/access.php, engine/lib/admin.php, engine/lib/sessions.php:
+ First pass at removing $is_admin global.
+
+2009-10-12 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/objects/entities.php, engine/tests/objects/objects.php,
+ engine/tests/suite.php: Adding unit tests for the ElggObject class.
+ Restricting testing suite to only be run as a logged-in user. This will not
+ allow the tests to be run from the command line, but this is already the case
+ due to debug static.
+
+2009-10-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CHANGES.txt, CODING.txt: Added coding styles and changes documents.
+
+2009-10-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Standardized annotations.php.
+
+ * engine/lib/admin.php: Standardized admin.php
+
+ * engine/lib/activity.php: Standardized activity.
+
+ * engine/lib/actions.php: Standardized actions.php
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/search.php,
+ engine/schema/upgrades/2009093001.sql, mod/search/index.php,
+ mod/search/languages/en.php, mod/search/manifest.xml, mod/search/start.php,
+ .../views/default/page_elements/searchbox.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity_list.php,
+ mod/search/views/default/search/gallery.php,
+ mod/search/views/default/search/listing.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/search/entity_list.php, views/default/search/gallery.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php,
+ views/default/search/startblurb.php: Reverted back to previous copy removing
+ Justin's search because of views problems in plugins.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/search.php,
+ engine/schema/upgrades/2009093001.sql, mod/search/index.php,
+ mod/search/languages/en.php, mod/search/manifest.xml, mod/search/start.php,
+ .../views/default/page_elements/searchbox.php,
+ mod/search/views/default/search/css.php,
+ mod/search/views/default/search/entity_list.php,
+ mod/search/views/default/search/gallery.php,
+ mod/search/views/default/search/listing.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/search/entity_list.php, views/default/search/gallery.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php,
+ views/default/search/startblurb.php: Pulled in Justin's search changes from
+ github.
+
+2009-10-09 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/objects.php,
+ engine/tests/objects/entities.php, engine/tests/objects/objects.php,
+ engine/tests/test_skeleton.php: Creating an ElggObject unit test. Fixing
+ issues with the unit test plugin hooks, as well as infinite looping bugs
+ introduced by the unit test skeleton.
+
+2009-10-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/objects/entities.php: Adding unit test for ElggEntity
+ annotations.
+
+2009-10-08 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/sessions.php: Brought access.php and
+ sesssion.php up to code standards.
+
+2009-10-08 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/tests/core/entities.php,
+ engine/tests/objects/entities.php: Adding generic unit tests for ElggEntity.
+
+2009-10-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: database.php now more closely matches coding
+ standards.
+
+ * engine/lib/database.php, engine/schema/upgrades/2009100701.sql: Fixes
+ #1181: UTF8 now correctly stored in database.
+
+ * engine/lib/entities.php, engine/lib/notification.php,
+ engine/lib/users.php, engine/lib/version.php: Fixes #790: Removing unneeded
+ @s.
+
+2009-10-06 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/tests/core/entities.php,
+ engine/tests/elgg_unit_test.php, engine/tests/test_skeleton.php: Adding unit
+ test methods to the new Entities test.
+
+2009-10-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/diagnostics/start.php: Removed elgg_test entries.
+
+2009-10-06 nickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fixing a spacing issue with constructed SQL
+ query. Closes #1295.
+
+2009-10-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/testing.php: Removing old testing.php lib.
+
+2009-10-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/core/entities.php, engine/tests/entities.php,
+ engine/tests/suite.php, engine/tests/test_skeleton.php: Moved core tests into
+ tests/core. Fixed typo in skeleton and entities tests. Only run tests in
+ debug mode.
+
+2009-10-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/tests/entities.php, engine/tests/test_skeleton.php: Added more info
+ to the test. Added a test skeleton.
+
+ * engine/lib/entities.php: Added unit tests for entities.
+
+ * engine/tests/entities.php, engine/tests/suite.php: Added unit tests.
+
+ * engine/tests/elgg_unit_test.php, engine/tests/suite.php,
+ vendors/simpletest/HELP_MY_TESTS_DONT_WORK_ANYMORE,
+ vendors/simpletest/LICENSE, vendors/simpletest/README,
+ vendors/simpletest/VERSION, vendors/simpletest/authentication.php,
+ vendors/simpletest/autorun.php, vendors/simpletest/browser.php,
+ vendors/simpletest/collector.php, vendors/simpletest/compatibility.php,
+ vendors/simpletest/cookies.php, vendors/simpletest/default_reporter.php,
+ vendors/simpletest/detached.php,
+ .../docs/en/authentication_documentation.html,
+ .../simpletest/docs/en/browser_documentation.html,
+ vendors/simpletest/docs/en/docs.css,
+ .../docs/en/expectation_documentation.html,
+ .../docs/en/form_testing_documentation.html,
+ .../docs/en/group_test_documentation.html,
+ vendors/simpletest/docs/en/index.html,
+ .../docs/en/mock_objects_documentation.html,
+ vendors/simpletest/docs/en/overview.html,
+ .../docs/en/partial_mocks_documentation.html,
+ .../simpletest/docs/en/reporter_documentation.html,
+ .../docs/en/unit_test_documentation.html,
+ .../docs/en/web_tester_documentation.html,
+ .../docs/fr/authentication_documentation.html,
+ .../simpletest/docs/fr/browser_documentation.html,
+ vendors/simpletest/docs/fr/docs.css,
+ .../docs/fr/expectation_documentation.html,
+ .../docs/fr/form_testing_documentation.html,
+ .../docs/fr/group_test_documentation.html,
+ vendors/simpletest/docs/fr/index.html,
+ .../docs/fr/mock_objects_documentation.html,
+ vendors/simpletest/docs/fr/overview.html,
+ .../docs/fr/partial_mocks_documentation.html,
+ .../simpletest/docs/fr/reporter_documentation.html,
+ .../docs/fr/unit_test_documentation.html,
+ .../docs/fr/web_tester_documentation.html, vendors/simpletest/dumper.php,
+ vendors/simpletest/eclipse.php, vendors/simpletest/encoding.php,
+ vendors/simpletest/errors.php, vendors/simpletest/exceptions.php,
+ vendors/simpletest/expectation.php,
+ vendors/simpletest/extensions/pear_test_case.php,
+ .../simpletest/extensions/phpunit_test_case.php,
+ vendors/simpletest/extensions/testdox.php,
+ vendors/simpletest/extensions/testdox/test.php, vendors/simpletest/form.php,
+ vendors/simpletest/frames.php, vendors/simpletest/http.php,
+ vendors/simpletest/invoker.php, vendors/simpletest/mock_objects.php,
+ vendors/simpletest/page.php, vendors/simpletest/parser.php,
+ vendors/simpletest/reflection_php4.php,
+ vendors/simpletest/reflection_php5.php, vendors/simpletest/remote.php,
+ vendors/simpletest/reporter.php, vendors/simpletest/scorer.php,
+ vendors/simpletest/selector.php, vendors/simpletest/shell_tester.php,
+ vendors/simpletest/simpletest.php, vendors/simpletest/socket.php,
+ vendors/simpletest/tag.php, vendors/simpletest/test/acceptance_test.php,
+ vendors/simpletest/test/adapter_test.php,
+ vendors/simpletest/test/all_tests.php,
+ vendors/simpletest/test/authentication_test.php,
+ vendors/simpletest/test/autorun_test.php,
+ vendors/simpletest/test/bad_test_suite.php,
+ vendors/simpletest/test/browser_test.php,
+ vendors/simpletest/test/collector_test.php,
+ vendors/simpletest/test/command_line_test.php,
+ vendors/simpletest/test/compatibility_test.php,
+ vendors/simpletest/test/cookies_test.php,
+ vendors/simpletest/test/detached_test.php,
+ vendors/simpletest/test/dumper_test.php,
+ vendors/simpletest/test/eclipse_test.php,
+ vendors/simpletest/test/encoding_test.php,
+ vendors/simpletest/test/errors_test.php,
+ vendors/simpletest/test/exceptions_test.php,
+ vendors/simpletest/test/expectation_test.php,
+ vendors/simpletest/test/form_test.php,
+ vendors/simpletest/test/frames_test.php,
+ vendors/simpletest/test/http_test.php,
+ vendors/simpletest/test/interfaces_test.php,
+ vendors/simpletest/test/live_test.php,
+ vendors/simpletest/test/mock_objects_test.php,
+ vendors/simpletest/test/page_test.php,
+ vendors/simpletest/test/parse_error_test.php,
+ vendors/simpletest/test/parser_test.php,
+ vendors/simpletest/test/reflection_php4_test.php,
+ vendors/simpletest/test/reflection_php5_test.php,
+ vendors/simpletest/test/remote_test.php,
+ vendors/simpletest/test/shell_test.php,
+ vendors/simpletest/test/shell_tester_test.php,
+ vendors/simpletest/test/simpletest_test.php,
+ vendors/simpletest/test/socket_test.php,
+ .../simpletest/test/support/empty_test_file.php,
+ vendors/simpletest/test/support/latin1_sample,
+ vendors/simpletest/test/support/spl_examples.php,
+ .../test/support/supplementary_upload_sample.txt,
+ vendors/simpletest/test/support/test1.php,
+ vendors/simpletest/test/support/upload_sample.txt,
+ vendors/simpletest/test/tag_test.php,
+ vendors/simpletest/test/test_with_parse_error.php,
+ vendors/simpletest/test/unit_tester_test.php,
+ vendors/simpletest/test/unit_tests.php, vendors/simpletest/test/url_test.php,
+ vendors/simpletest/test/user_agent_test.php,
+ vendors/simpletest/test/visual_test.php,
+ vendors/simpletest/test/web_tester_test.php,
+ vendors/simpletest/test/xml_test.php, vendors/simpletest/test_case.php,
+ vendors/simpletest/unit_tester.php, vendors/simpletest/url.php,
+ vendors/simpletest/user_agent.php, vendors/simpletest/web_tester.php,
+ vendors/simpletest/xml.php: Added simpletest and start of unit tests.
+
+2009-09-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php: Added autofocusing of the username
+ field on the login page.
+
+2009-09-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: new activity river - clipped overflow for long
+ urls/strings
+
+2009-09-23 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: Upped minChars to 2 for user picker.
+
+ * views/default/input/userpicker.php: Disabled matchContains in user picker.
+
+
+ * engine/lib/input.php: Updated the user picker to avoid possible mysql
+ injection attacks and to search only by leading chars.
+
+2009-09-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: collections picker - delete link given
+ classname and brackets removed from string
+
+2009-09-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/embed/addcontentjs.php, views/default/embed/js.php: Removing
+ embed view in favor of the correct views in the plugin.
+
+2009-09-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/comments/add.php, engine/lib/annotations.php,
+ engine/lib/river2.php, engine/schema/upgrades/2009091901.sql, version.php,
+ views/default/annotation/annotate.php: New river code added to allow user
+ comment to be pulled out and displayed
+
+2009-09-17 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: Updated user picker to return 25
+ results, text input to be 30 wide.
+
+2009-09-16 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Changed get_entities_from_access_collection() to
+ get_entities_from_access_id() to be more generic.
+
+ * engine/lib/extender.php: Fixes #1238: Added ElggExtender::getOwnerEntity()
+ and changed ElggExtender::getOwner() to return just the GUID. Also, this
+ fixes a bug with checking permissions on annotations.
+
+2009-09-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/index.php, friends/of.php: Fixes #1251: Correct strings applied.
+
+2009-09-10 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/sessions.php: Updated fixes for checking
+ for admin in get_access_sql_prefix()
+
+ * engine/lib/access.php: Checking against admin metadata instead of
+ $is_admin global in get_access_sql_suffix().
+
+ * engine/lib/access.php: Fixing a bug with when getting the sql suffix for
+ the non-loggedin user.
+
+2009-09-09 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Added "Only Friends" string for user picker.
+
+ * views/default/input/userpicker.php: Defaulted userpicker to all users.
+ Checkbox makes it only friends.
+
+2009-09-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: updating the version number in the readme
+
+2009-09-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/userpicker.php: Better jquery deleting of user entity
+ for user picker.
+
+ * languages/en.php, views/default/input/userpicker.php: Pulled out language
+ string to language file.
+
+ * views/default/css.php, views/default/input/userpicker.php: Added bolding
+ to term searc in user picker.
+
+ * engine/lib/input.php, views/default/css.php: Updated livesearch page
+ handler to use classes instead of hard coded css.
+
+ * views/default/css.php, views/default/input/userpicker.php: Added rough
+ version of a new user picker.
+
+ * admin/user.php, views/default/search/entity_list.php: Fixes #1207: Using
+ fullviews with proper list_entity params.
+
+2009-09-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt, version.php: Bumped version number.
+
+ * views/default/site/default.php: Fixed a potential security issue
+ concerning site views.
+
+2009-09-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Added strip_tags() to setting titles in
+ ElggEntity
+
+2009-09-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Patch submitted for ticket #886 rolled back
+ as it was causing #1205 -> #886 will need further investigating
+
+ * views/default/css.php, views/default/river/item/wrapper.php: activity
+ display toggle so site admins can choose avatars or the small icons
+
+2009-09-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/input.php: Adding additional hooks to
+ add/remove/update users for access_collections() Added autocomplete endpoint
+ in input_init()
+
+ * views/default/input/autocomplete.php: Cleaning up autocomplete view.
+
+ * vendors/jquery/jquery.autocomplete.min.js,
+ views/default/input/autocomplete.php: Added autocomplete view to core.
+
+2009-09-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: missing comma added
+
+ * views/default/search/entity_list.php: fullview hashed out for now as it
+ caused unexpected behaviour on admin user list view, needs more investigating
+
+2009-09-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: order by bug fixed in
+ get_entities_from_relationship
+
+2009-09-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: a simple function which returns a string version of
+ an entity's access level
+
+2009-08-31 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt, INSTALL.txt, README.txt, _css/css.php, _css/js.php,
+ account/register.php, actions/admin/plugins/disable.php,
+ actions/admin/plugins/disableall.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/reorder.php, actions/admin/site/update_basic.php,
+ actions/admin/user/ban.php, actions/comments/add.php,
+ actions/comments/delete.php, actions/email/save.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/editcollection.php, actions/friends/remove.php,
+ actions/login.php, actions/logout.php, actions/register.php,
+ actions/systemsettings/install.php, actions/user/default_access.php,
+ actions/user/requestnewpassword.php, actions/user/spotlight.php,
+ actions/useradd.php, actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php, admin/index.php,
+ admin/plugins.php, admin/site.php, admin/user.php, dashboard/index.php,
+ dashboard/latest.php, engine/handlers/action_handler.php,
+ engine/handlers/cron_handler.php, engine/handlers/pagehandler.php,
+ engine/handlers/xml-rpc_handler.php, engine/lib/access.php,
+ engine/lib/activity.php, engine/lib/admin.php, engine/lib/api.php,
+ engine/lib/configuration.php, engine/lib/database.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/extender.php,
+ engine/lib/input.php, engine/lib/install.php, engine/lib/languages.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/plugins.php, engine/lib/query.php, engine/lib/relationships.php,
+ engine/lib/river2.php, engine/lib/sessions.php, engine/lib/sites.php,
+ engine/lib/social.php, engine/lib/statistics.php, engine/lib/tags.php,
+ engine/lib/upgrades/2008101303.php, engine/lib/users.php,
+ engine/lib/version.php, engine/lib/widgets.php, engine/settings.example.php,
+ engine/start.php, entities/index.php, entities/list.php, friends/add.php,
+ friends/collections.php, friends/edit.php, friends/index.php, friends/of.php,
+ friends/pickercallback.php, index.php, install.php, languages/en.php,
+ mod/garbagecollector/languages/en.php, mod/logbrowser/index.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ .../views/default/logbrowser/adminlinks.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/object/logwrapper.php,
+ mod/uservalidationbyemail/start.php, settings/index.php,
+ simplecache/view.php, upgrade.php, vendors/calendarpopup/CalendarPopup.js,
+ vendors/jquery/jquery.form.js, version.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php, views/default/admin/main.php,
+ views/default/admin/plugins_opt/plugin.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php,
+ views/default/admin/user_opt/search.php, views/default/ajax/loader.php,
+ views/default/annotation/annotate.php,
+ views/default/annotation/generic_comment.php,
+ views/default/basic_elements/welcome.php, views/default/canvas/default.php,
+ views/default/canvas/layouts/edit_layout.php,
+ views/default/canvas/layouts/sidebar_boxes.php,
+ views/default/canvas_header/submenu_group.php,
+ views/default/canvas_header/submenu_template.php,
+ views/default/comments/forms/edit.php, views/default/dashboard/blurb.php,
+ views/default/embed/addcontentjs.php, views/default/embed/js.php,
+ views/default/friends/collection.php, views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/list.php,
+ views/default/friends/picker.php, views/default/friends/river/create.php,
+ views/default/friends/tablelistcountupdate.php,
+ views/default/input/access.php, views/default/input/calendar.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php, views/default/js/friendsPickerv1.php,
+ views/default/js/initialise_elgg.php, views/default/js/upload_js.php,
+ views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/viewtype.php,
+ .../notifications/settings/usersettings.php, views/default/object/widget.php,
+ views/default/output/calendar.php, views/default/output/checkboxes.php,
+ views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/email.php, views/default/output/longtext.php,
+ views/default/output/pulldown.php, views/default/output/radio.php,
+ views/default/output/tagcloud.php, views/default/output/tags.php,
+ views/default/output/text.php, views/default/output/url.php,
+ views/default/page_elements/contentwrapper.php,
+ views/default/page_elements/header_contents.php,
+ views/default/page_elements/owner_block.php,
+ views/default/river/item/list.php, views/default/river/item/noaccess.php,
+ views/default/river/item/wrapper.php, views/default/river/wrapper.php,
+ views/default/settings/install.php, views/default/settings/system.php,
+ views/default/settings/upgrading.php, views/default/spotlight/default.php,
+ views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php,
+ views/default/upload/upload_form_content.php, views/default/user/default.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php, views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ .../usersettings/statistics_opt/numentities.php, views/default/welcome.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php,
+ views/failsafe/canvas/default.php, views/failsafe/input/access.php,
+ views/failsafe/input/checkboxes.php, views/failsafe/input/longtext.php,
+ views/failsafe/input/pulldown.php, views/failsafe/input/text.php,
+ views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php, views/failsafe/messages/list.php,
+ views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/settings/install.php, views/failsafe/settings/system.php,
+ views/foaf/canvas/default.php, views/foaf/page_elements/contentwrapper.php,
+ views/foaf/pageshells/pageshell.php, views/foaf/user/default.php,
+ views/js/object/default.php, views/js/pageshells/pageshell.php,
+ views/js/user/default.php, views/json/api/output.php,
+ views/json/canvas/default.php, views/json/export/entity.php,
+ views/json/export/metadata.php, views/json/export/relationship.php,
+ views/json/messages/exceptions/exception.php,
+ views/json/page_elements/contentwrapper.php,
+ views/json/pageshells/pageshell.php, views/json/river/item/list.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/rss/annotation/default.php, views/rss/canvas/default.php,
+ views/rss/group/default.php, views/rss/object/default.php,
+ views/rss/page_elements/contentwrapper.php, views/rss/river/item/list.php,
+ views/rss/user/default.php, views/xml/messages/exceptions/exception.php: All
+ line endings are now Unix-style.
+
+2009-08-28 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/register.php, engine/lib/entities.php: Fixes #1196:
+ ElggEntity::disable() now accepts a 2nd arg for recursive. New users are not
+ recursively disabled for plugins that need to create entities owned by the
+ new user upon entity creation.
+
+2009-08-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/search.php: Fixes #1191: set_input() was never being called for
+ tag in search_page_handler().
+
+2009-08-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/annotation/annotate.php: a missing pipe added
+
+ * views/default/annotation/annotate.php: a snippet of a new comment on an
+ object will now appear in the activity river
+
+2009-08-26 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Added entity_owner_guid to get_annotations()
+
+2009-08-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: a simple solution to a css/js
+ loading bug. We need to come up with something better, long term.
+
+2009-08-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: new style added for page update action appearing in
+ the river
+
+2009-08-21 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Fixes #1180: Group join event triggered after
+ joining group. This trigger's return was never being tested so no overriding
+ could be done. If we decide to test the trigger to stop group joining,
+ groups_write_acl_plugin_hook() will need to be changed...
+
+2009-08-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/river/create.php: new friending river view applied
+
+2009-08-20 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump to 1.6.
+
+ * _css/css.php, _css/js.php, account/forgotten_password.php,
+ account/register.php, actions/admin/plugins/disable.php,
+ actions/admin/plugins/disableall.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/enableall.php, actions/admin/plugins/reorder.php,
+ actions/admin/site/update_basic.php, actions/admin/user/ban.php,
+ actions/admin/user/delete.php, actions/admin/user/makeadmin.php,
+ actions/admin/user/removeadmin.php, actions/admin/user/resetpassword.php,
+ actions/admin/user/unban.php, actions/comments/add.php,
+ actions/comments/delete.php, actions/email/save.php,
+ actions/entities/delete.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/editcollection.php, actions/friends/remove.php,
+ actions/import/opendd.php, actions/login.php, actions/logout.php,
+ .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/systemsettings/install.php,
+ actions/user/default_access.php, actions/user/language.php,
+ actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php, admin/index.php,
+ admin/plugins.php, admin/site.php, admin/statistics.php, admin/user.php,
+ dashboard/index.php, dashboard/latest.php,
+ engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/pagehandler.php, engine/handlers/xml-rpc_handler.php,
+ engine/lib/access.php, engine/lib/actions.php, engine/lib/activity.php,
+ engine/lib/admin.php, engine/lib/annotations.php, engine/lib/api.php,
+ engine/lib/cache.php, engine/lib/calendar.php, engine/lib/configuration.php,
+ engine/lib/cron.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/exceptions.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/filestore.php, engine/lib/group.php,
+ engine/lib/input.php, engine/lib/install.php, engine/lib/languages.php,
+ engine/lib/location.php, engine/lib/mb_wrapper.php, engine/lib/memcache.php,
+ engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/opendd.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/ping.php, engine/lib/plugins.php, engine/lib/query.php,
+ engine/lib/relationships.php, engine/lib/river2.php, engine/lib/search.php,
+ engine/lib/sessions.php, engine/lib/sites.php, engine/lib/social.php,
+ engine/lib/statistics.php, engine/lib/system_log.php, engine/lib/tags.php,
+ engine/lib/testing.php, engine/lib/users.php, engine/lib/usersettings.php,
+ engine/lib/version.php, engine/lib/widgets.php, engine/lib/xml-rpc.php,
+ engine/lib/xml.php, engine/schema/mysql.sql, engine/start.php,
+ entities/index.php, entities/list.php, friends/add.php,
+ friends/collections.php, friends/edit.php, friends/index.php, friends/of.php,
+ friends/pickercallback.php, index.php, install.php,
+ mod/crontrigger/start.php, mod/diagnostics/actions/download.php,
+ mod/diagnostics/index.php, mod/diagnostics/languages/en.php,
+ mod/diagnostics/start.php, mod/diagnostics/testreport.php,
+ mod/diagnostics/unittester.php,
+ .../views/default/diagnostics/forms/download.php,
+ .../views/default/diagnostics/runalltests.php,
+ mod/diagnostics/views/default/diagnostics/test.php,
+ .../views/default/diagnostics/testresult.php,
+ mod/garbagecollector/languages/en.php, mod/garbagecollector/start.php,
+ mod/htmlawed/start.php, mod/logbrowser/index.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/object/logwrapper.php,
+ mod/logrotate/languages/en.php, mod/logrotate/start.php,
+ .../actions/email/confirm.php, mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/start.php, search/groups.php, search/index.php,
+ search/users.php, services/api/rest.php, services/export/handler.php,
+ settings/index.php, settings/plugins.php, settings/statistics.php,
+ settings/user.php, simplecache/view.php, upgrade.php, version.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php, views/default/ajax/loader.php,
+ views/default/annotation/generic_comment.php, views/default/api/output.php,
+ views/default/basic_elements/welcome.php, views/default/canvas/default.php,
+ views/default/canvas/layouts/edit_layout.php,
+ views/default/canvas/layouts/one_column.php,
+ views/default/canvas/layouts/sidebar_boxes.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ .../canvas/layouts/two_column_right_sidebar.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/comments/forms/edit.php, views/default/css.php,
+ views/default/export/entity.php, views/default/export/metadata.php,
+ views/default/export/relationship.php, views/default/friends/collection.php,
+ views/default/friends/collections.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/list.php,
+ views/default/friends/picker.php, views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php,
+ views/default/graphics/icon.php, views/default/group/default.php,
+ views/default/input/access.php, views/default/input/button.php,
+ views/default/input/calendar.php, views/default/input/captcha.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/form.php,
+ views/default/input/hidden.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/plaintext.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/reset.php, views/default/input/securitytoken.php,
+ views/default/input/submit.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/input/urlshortener.php,
+ views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/navigation/viewtype.php,
+ .../notifications/settings/usersettings.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/object/plugin.php, views/default/object/widget.php,
+ views/default/output/calendar.php, views/default/output/checkboxes.php,
+ views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/email.php, views/default/output/iframe.php,
+ views/default/output/longtext.php, views/default/output/pulldown.php,
+ views/default/output/radio.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php, views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/page_elements/header_contents.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/spotlight.php,
+ views/default/page_elements/title.php,
+ views/default/pageshells/pageshell.php, views/default/river/dashboard.php,
+ views/default/river/item/wrapper.php,
+ views/default/river/relationship/friend/create.php,
+ views/default/river/wrapper.php, views/default/search/gallery.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php,
+ views/default/settings/install.php, views/default/settings/system.php,
+ views/default/site/default.php, views/default/spotlight/default.php,
+ views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php, views/default/user/default.php,
+ views/default/user/settings/default_access.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/welcome.php, views/default/welcome/logged_in.php,
+ views/default/welcome/logged_out.php, views/default/widgets/editwrapper.php,
+ views/default/widgets/wrapper.php, views/failsafe/canvas/default.php,
+ views/failsafe/input/access.php, views/failsafe/input/button.php,
+ views/failsafe/input/checkboxes.php, views/failsafe/input/form.php,
+ views/failsafe/input/hidden.php, views/failsafe/input/longtext.php,
+ views/failsafe/input/pulldown.php, views/failsafe/input/reset.php,
+ views/failsafe/input/submit.php, views/failsafe/input/text.php,
+ views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/list.php, views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php, views/failsafe/settings/install.php,
+ views/failsafe/settings/system.php, views/foaf/canvas/default.php,
+ views/foaf/pageshells/pageshell.php, views/foaf/user/default.php,
+ views/ical/canvas/default.php, views/ical/export/entity.php,
+ views/ical/object/default.php, views/ical/pageshells/pageshell.php,
+ views/ical/search/entity_list.php, views/js/object/default.php,
+ views/js/pageshells/pageshell.php, views/js/user/default.php,
+ views/json/api/output.php, views/json/canvas/default.php,
+ views/json/export/entity.php, views/json/export/metadata.php,
+ views/json/export/relationship.php, views/json/group/default.php,
+ views/json/messages/exceptions/exception.php, views/json/object/default.php,
+ views/json/pageshells/pageshell.php, views/json/search/entity_list.php,
+ views/json/site/default.php, views/json/user/default.php,
+ views/opendd/canvas/default.php, views/opendd/export/entity.php,
+ views/opendd/export/metadata.php, views/opendd/export/relationship.php,
+ views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/site/default.php, views/opendd/user/default.php,
+ views/php/api/output.php, views/php/canvas/default.php,
+ views/php/export/entity.php, views/php/export/metadata.php,
+ views/php/export/relationship.php, views/php/group/default.php,
+ views/php/messages/exceptions/exception.php, views/php/object/default.php,
+ views/php/pageshells/pageshell.php, views/php/search/entity_list.php,
+ views/php/site/default.php, views/php/user/default.php,
+ views/rss/annotation/default.php, views/rss/canvas/default.php,
+ views/rss/group/default.php, views/rss/object/default.php,
+ views/rss/pageshells/pageshell.php, views/rss/user/default.php,
+ views/xml/api/output.php, views/xml/messages/exceptions/exception.php,
+ views/xml/pageshells/pageshell.php, views/xml/xml-rpc/output.php: Whoa nelly
+ this is a big one: Removed license and copyright for files.
+
+2009-08-19 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * LICENCE.txt: Fixes #1176: Added date back to license.
+
+ * LICENCE.txt: Test
+
+2009-08-11 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixes #942: In register_user, replaced
+ sanitise_string() call with a simple trim(). Not a problem because all SQL
+ sanitation is handled elsewhere.
+
+ * engine/lib/annotations.php: Added timelower and timeupper to
+ get_annotations() and __get_annotations_calculate_x() and its helpers.
+
+2009-08-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/captcha/backgrounds/bg1.jpg, mod/captcha/backgrounds/bg2.jpg,
+ mod/captcha/backgrounds/bg3.jpg, mod/captcha/backgrounds/bg4.jpg,
+ mod/captcha/backgrounds/bg5.jpg, mod/captcha/captcha.php,
+ mod/captcha/fonts/1.ttf, mod/captcha/fonts/Liberation_serif_License.txt,
+ mod/captcha/languages/en.php, mod/captcha/manifest.xml,
+ mod/captcha/start.php, mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/delete.php,
+ mod/groups/actions/edit.php, mod/groups/actions/featured.php,
+ mod/groups/actions/forums/addpost.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletepost.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/editpost.php,
+ mod/groups/actions/forums/edittopic.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/actions/invite.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/addtopic.php, mod/groups/all.php,
+ mod/groups/discussions.php, mod/groups/edit.php, mod/groups/edittopic.php,
+ mod/groups/forum.php, mod/groups/graphics/defaultlarge.gif,
+ mod/groups/graphics/defaultmedium.gif, mod/groups/graphics/defaultsmall.gif,
+ mod/groups/graphics/defaulttiny.gif, mod/groups/graphics/icon.php,
+ mod/groups/groupprofile.php, mod/groups/index.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/manifest.xml,
+ mod/groups/membership.php, mod/groups/membershipreq.php, mod/groups/new.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/group/group.php,
+ .../views/default/groups/closedmembership.php,
+ mod/groups/views/default/groups/contentwrapper.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ mod/groups/views/default/groups/members.php,
+ .../views/default/groups/membershiprequests.php,
+ mod/groups/views/default/groups/profileitems.php,
+ mod/groups/views/default/groups/side_menu.php,
+ .../views/default/icon/group/default/large.php,
+ .../views/default/icon/group/default/medium.php,
+ .../views/default/icon/group/default/small.php,
+ .../views/default/icon/group/default/tiny.php,
+ .../views/default/object/groupforumtopic.php,
+ mod/groups/views/default/river/forum/create.php,
+ .../views/default/river/forum/topic/create.php,
+ mod/groups/views/default/river/group/create.php,
+ .../views/default/river/object/group/create.php,
+ .../river/object/groupforumtopic/annotate.php,
+ .../river/object/groupforumtopic/create.php,
+ .../river/object/groupforumtopic/update.php,
+ .../default/river/relationship/member/create.php,
+ mod/groups/views/default/settings/groups/edit.php,
+ mod/groups/views/default/sharing/invite.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ .../views/default/widgets/a_users_groups/view.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php,
+ mod/groups/views/rss/forum/topicposts.php,
+ mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/contentwrapper.php,
+ mod/groups/views/rss/groups/profileitems.php,
+ mod/notifications/actions/groupsave.php, mod/notifications/actions/save.php,
+ .../graphics/icon_notifications_email.gif, mod/notifications/groups.php,
+ mod/notifications/index.php, mod/notifications/languages/en.php,
+ mod/notifications/manifest.xml, mod/notifications/start.php,
+ .../views/default/notifications/css.php,
+ .../notifications/settings/usersettings.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/jsfuncs.php,
+ .../notifications/subscriptions/personal.php,
+ mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/actions/resetdefaultprofile.php, mod/profile/defaultprofile.php,
+ mod/profile/edit.php, mod/profile/editicon.php,
+ mod/profile/graphics/defaultlarge.gif,
+ mod/profile/graphics/defaultmaster.gif,
+ mod/profile/graphics/defaultmedium.gif,
+ mod/profile/graphics/defaultsmall.gif, mod/profile/graphics/defaulttiny.gif,
+ mod/profile/graphics/defaulttopbar.gif, mod/profile/icon.php,
+ mod/profile/icondirect.php, mod/profile/index.php,
+ mod/profile/javascript.php, mod/profile/manifest.xml, mod/profile/start.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ .../views/default/js/jquery.imgareaselect-0.8.js,
+ .../default/js/jquery.imgareaselect-0.8.min.js,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/adminwrapper.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/submenu.php,
+ mod/profile/views/default/profile/userdetails.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/index.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/manifest.xml, mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/reportedcontent/user_report.php,
+ mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ mod/riverdashboard/index.php, mod/riverdashboard/languages/en.php,
+ mod/riverdashboard/manifest.xml, mod/riverdashboard/start.php,
+ .../views/default/river/sitemessage/create.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php,
+ .../views/default/settings/riverdashboard/edit.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../views/json/riverdashboard/container.php,
+ .../views/rss/riverdashboard/container.php, mod/thewire/actions/add.php,
+ mod/thewire/actions/delete.php, mod/thewire/add.php,
+ mod/thewire/everyone.php, mod/thewire/graphics/river_icon_thewire.gif,
+ mod/thewire/graphics/thewire_speech_bubble.gif, mod/thewire/index.php,
+ mod/thewire/languages/en.php, mod/thewire/manifest.xml,
+ mod/thewire/readme.txt, mod/thewire/start.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ .../views/default/thewire/activity_view.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/thewire/views/default/thewire/notfound.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/thewire/scripts/counter.js,
+ mod/thewire/views/default/thewire/view.php,
+ mod/thewire/views/default/widgets/thewire/edit.php,
+ mod/thewire/views/default/widgets/thewire/view.php: removed all main plugins
+ from core - they now live in the plugins svn
+
+2009-08-05 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Added documentation to
+ list_entities_from_access_collection();
+
+2009-08-04 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed a security issues when simple cache is off.
+
+2009-08-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: small edit
+
+2009-08-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Added starttime and endtime for
+ get_entities_from_annotation().
+
+2009-07-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Refs #1089: Removed [B] flag from htaccess. This flag is
+ wildly inconsistent in functionality and support in Apache. Will have to
+ implement a solution in PHP.
+
+2009-07-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Added get/list_entities_from_access_collection().
+
+ * engine/lib/cache.php: Fixes #1151: Added is_dir() check before attempting
+ to create cache directory.
+
+2009-07-27 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Fixes #1148: Correctly comparing strings to
+ get OS.
+
+2009-07-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/css.php: small fix to force facebook and
+ twitter user icons to the right size in the recent members sidebar
+
+2009-07-24 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Fixes #1144: Added comma between order by fields.
+
+
+2009-07-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, version.php: Closes #1137: Setting a hidden variable
+ "returntoreferer" in a login form will now cause the action to use the
+ "referrer" address on a successful login. Version bump.
+
+ * mod/profile/views/default/profile/editicon.php: Minor bugfix on username
+
+2009-07-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * .../views/default/object/groupforumtopic.php: Closes #1131: htmlentities
+ in view around user text
+
+2009-07-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: readme tweak
+
+ * CONTRIBUTORS.txt: small tweak
+
+2009-07-15 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icondirect.php, simplecache/view.php: Forcing a new db connect
+ for simplecache/view.php and mod/profile/icondirect.php Will avoid bugs if a
+ previous connection has been created.
+
+2009-07-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Closes #1119: If post data not initially found then
+ input stream is used.
+
+2009-07-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: Removed #1100 hack
+
+2009-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: Closes #1100: Added a dummy
+ function to page shell to initialise jquery
+
+ * views/default/canvas/layouts/widgets.php: Closes #1113: Htmlentities made
+ UTF-8 and quotes safe.
+
+2009-07-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php, version.php: Closes #1111: Using substr
+ instead of parse_url.
+
+ * engine/lib/elgglib.php: Refs #427: Added $vars array to hook call.
+
+2009-07-07 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/htmlawed/start.php: Closes #956: Classes are removed by the HTML
+ filter.
+
+ * engine/lib/access.php, mod/groups/start.php: Refs #1099: Using write
+ access hook to allow group-only ACLs. Need to examine better solutions after
+ 1.7.
+
+2009-07-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/pulldown.php: Closes #1105: Value on input/pulldown
+ view now escaped.
+
+ * engine/lib/xml-rpc.php: Closes #1075: XML-RPC client behaving as per spec
+
+2009-07-06 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php, htaccess_dist: Refs #1089: Added [B] flag to
+ rewrite for tags. Won't work until apache 2.2.12. Cleaned up some query
+ code in pagehandler().
+
+2009-07-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/cropicon.php: Admin cropping of other user icons now
+ works as expected.
+
+ * mod/profile/start.php: Fixed doubling on icon edit (nb. this was not the
+ same issue as Refs #1100)
+
+ * mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php: Removed edit profile, added
+ links to own page.
+
+2009-07-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: small tweak to filestore
+
+2009-07-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/cropicon.php, mod/profile/actions/edit.php,
+ mod/profile/actions/iconupload.php, mod/profile/editicon.php,
+ mod/profile/manifest.xml, mod/profile/start.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/menu/links.php,
+ mod/profile/views/default/profile/userdetails.php, version.php: * Closes
+ #1104: Edit profile and edit icon links on pulldown menu for editable users.
+ * Closes #545: Admins are now able to edit profiles and icons of other users.
+ * CSRF protection added to icon upload and edit code. * Version bump.
+
+ * engine/lib/entities.php: Closes #742: Ability to retrieve master icon from
+ getIcon() interface.
+
+ * languages/en.php, mod/profile/views/default/profile/editicon.php: Closes
+ #1103: Profile text now has translation tag
+
+2009-07-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: added css rule for em tags to work properly with
+ htmlawed and tinyMCE editor
+
+2009-07-03 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/htmlawed/start.php: Allowing selected style attributes in htmlawed.
+
+2009-07-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Removing update client from initial
+ modules.
+
+ * actions/systemsettings/install.php: Refs #1086 & #1073: Filtering and
+ captcha have correct install defaults.
+
+2009-07-02 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Closes #859: Group forum thread-starters receive
+ same email as participants.
+
+2009-07-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: order by now works on get entities from metadata
+
+2009-07-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/htmlawed/start.php: Fixed a typo in htmlawed filtering.
+
+ * engine/lib/users.php: Refs #1058: Using validated metadata for new user
+ permission check. Correctly allows for enable() / disable(), but still not
+ ideal.
+
+2009-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009070101.php, mod/kses/manifest.xml,
+ mod/kses/start.php, mod/kses/vendors/kses/AUTHORS,
+ mod/kses/vendors/kses/COPYING, mod/kses/vendors/kses/ChangeLog,
+ mod/kses/vendors/kses/README, mod/kses/vendors/kses/TODO,
+ mod/kses/vendors/kses/docs/attribute-value-checks,
+ mod/kses/vendors/kses/docs/hooks,
+ mod/kses/vendors/kses/docs/stripping-everything,
+ mod/kses/vendors/kses/docs/supported-formats,
+ .../vendors/kses/docs/whitelisted-url-protocols,
+ mod/kses/vendors/kses/examples/filter.php,
+ mod/kses/vendors/kses/examples/test.php, mod/kses/vendors/kses/kses.php,
+ mod/kses/vendors/kses/oop/oop.kses.changelog.txt,
+ mod/kses/vendors/kses/oop/oop.simple.api.txt,
+ mod/kses/vendors/kses/oop/php4.class.kses.php,
+ mod/kses/vendors/kses/oop/php5.class.kses.php,
+ mod/kses/vendors/kses/oop/test.oop.kses.php, version.php: Refs #1086:
+ Deprecating kses and removing it from core. Version bump.
+
+2009-07-01 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/htmlawed/manifest.xml, mod/htmlawed/start.php,
+ mod/htmlawed/vendors/htmLawed/htmLawed.php,
+ mod/htmlawed/vendors/htmLawed/htmLawedTest.php,
+ mod/htmlawed/vendors/htmLawed/htmLawed_README.htm,
+ mod/htmlawed/vendors/htmLawed/htmLawed_README.txt,
+ .../vendors/htmLawed/htmLawed_TESTCASE.txt: Refs #1086: Added htmLawed plugin
+ as replacement for kses.
+
+2009-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Closes #1097: Results set by set_input are now also
+ filtered by get_input()
+
+ * engine/lib/annotations.php: Short circuit on delete annotations to avoid
+ error message
+
+ * engine/lib/metadata.php: Metadata delete now passing correct object, also
+ handles missing metadata entity.
+
+2009-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/jsfuncs.php,
+ .../views/default/js/jquery.imgareaselect-0.4.2.js,
+ .../default/js/jquery.imgareaselect-0.4.2.min.js,
+ .../views/default/js/jquery.imgareaselect-0.8.js,
+ .../default/js/jquery.imgareaselect-0.8.min.js,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/javascript.php,
+ vendors/jquery/jquery-1.2.6.pack.js, vendors/jquery/jquery-1.3.2.min.js,
+ vendors/jquery/jquery-ui-1.7.2.custom.min.js,
+ .../jquery/jquery-ui-personalized-1.5.3.packed.js,
+ vendors/jquery/jquery.form.js, views/default/embed/addcontentjs.php,
+ views/default/js/initialise_elgg.php, views/default/js/upload_js.php,
+ views/default/page_elements/header.php: update to jquery 1.3.2 and jqueryUI
+ 1.7.2 closes #941
+
+2009-06-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php: fixed wire reply button
+ (missing 'echo'), and tweaked river/dashboard reply link for the default
+ theme. Also fixed a typo in the admin area
+
+2009-06-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/groups.php, search/index.php, search/users.php: Refs #1086: Fixes
+ specific issues mentioned pending KSES fix / replacement
+
+2009-06-30 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, views/default/friends/collection.php,
+ views/default/output/confirmlink.php: Modified output/confirmlink view to
+ accept a class param. user_remove_friend() uses
+ remove_user_from_access_collection() instead of raw SQL. Deleting an access
+ collection prompts using output/confirmlink.
+
+2009-06-30 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/river/object/thewire/create.php: wire links will now
+ work in the activity river
+
+2009-06-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Fixed typo
+
+2009-06-29 brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php: Ref #1015: Correctly placed the end
+ div for access collection delete link.
+
+ * views/default/friends/collection.php: Closes #1015: Added a prompt before
+ deleting an access collection. Also cleaned up some hard vs soft tab issues.
+
+
+ * engine/lib/users.php: Closes #502: Removing unfriended users from access
+ lists upon unfriending.
+
+ * engine/lib/annotations.php: Closes #337: Added checking for metastrings in
+ __get_annotations_calculate_x()
+
+ * engine/lib/entities.php, engine/lib/relationships.php: Updated get_*()
+ functions ot return false if an invalid subtype is specified.
+
+2009-06-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009050801.php: Closes #1073: Captcha off by default
+
+2009-06-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river2.php: Access levels on add_to_river() will now respect
+ ACCESS_DEFAULT level.
+
+ * views/rss/pageshells/pageshell.php: Closes #1090: Removed xml:base from
+ RSS channel tag.
+
+2009-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/captcha/manifest.xml: Minor point of clarification
+
+2009-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: tweak to input box size
+
+2009-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * engine/lib/elgglib.php: Closes #427: Original view name passed to plugin
+ hook.
+
+ * engine/lib/filestore.php: Some tidying of file download manager functions.
+
+2009-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * actions/friends/add.php, actions/friends/remove.php,
+ mod/profile/views/default/profile/menu/actions.php: Action gatekeeper added
+ to add and remove friends.
+
+2009-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump.
+
+ * views/ical/canvas/default.php, views/ical/export/entity.php,
+ views/ical/object/default.php, views/ical/pageshells/pageshell.php,
+ views/ical/search/entity_list.php: Closes #581: First draft ICAL export views
+ for Notable calendar events.
+
+2009-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump.
+
+ * engine/lib/filestore.php: Closes #601: Provides default for new
+ ElggFilestore objects to remove warning message.
+
+2009-06-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php: * Translation 'reply'
+ fixed. * Now possible to reply to wire posts from within the river.
+
+ * engine/lib/annotations.php: Closes #719: More options on annotation count
+ functions.
+
+ * views/default/input/access.php, views/default/input/button.php,
+ views/default/input/checkboxes.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/hidden.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/plaintext.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Closes #540:
+ input/* views have internalid attribute.
+
+ * engine/lib/elgglib.php: Refs #964: Correct detection of type.
+
+ * version.php: Version bump
+
+ * engine/lib/system_log.php: Refs #328: Documentation tweak.
+
+ * engine/lib/elgglib.php: Refs #964: Tidied plugin hook into framework
+ function, changed hook to entity:annotate.
+
+2009-06-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, version.php: Marcus Povey 20090616: * Closes #964:
+ Introduces a plugin hook 'annotations:view', $entity_class
+ (object/user/group/site) called elgg_view_entity on FULL view. This lets you
+ return annotations to an entity and control the order in which they're
+ displayed. Existing views remain un-effected but should probably be
+ retrofitted. * Version bump.
+
+ * engine/lib/system_log.php: Bugfix to archive logs sql
+
+2009-06-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/urlshortener.php: URL shortener view.
+
+ * htaccess_dist: Actions rewrite rule will now match against numbers as well
+ as letters.
+
+ * version.php: Version bump
+
+ * mod/thewire/views/default/thewire/forms/add.php: Call out to a url
+ shortner if one is available, through the use of the input/urlshortner view.
+
+2009-06-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * engine/lib/filestore.php, engine/lib/users.php: Refs #1041: * Speculative
+ fix, extended blacklist of invalid characters for user signup * Mapping some
+ filestore matrix characters (notable '.') to a safe char
+
+ * engine/lib/filestore.php, languages/en.php: Refs #1041: Extra debug
+
+2009-06-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Block URL unsafe characters from username
+
+2009-06-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: File cache attempts to create directory if it is not
+ present.
+
+2009-06-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/mb_wrapper.php, mod/thewire/start.php: * Introducing substr
+ wrapper function * Wire strips tags (Closes #1045)
+
+2009-06-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/mb_wrapper.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, search/index.php, version.php: Closes #639: *
+ Metastrings can be searched either case sensitive or insensitive modes. *
+ Tags now have case lowered in a UTF8 safe way (requires mbstring support). *
+ Introducing mb_wrapper.php containing multibyte wrapper functions. * Version
+ bump. * Introduces #1043 for consideration.
+
+ * engine/lib/actions.php, engine/lib/pagehandler.php: Close #1040: Limited
+ explode on action and page handler.
+
+2009-06-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/checkboxes.php: Closes #1037: Removed double pasting
+
+2009-06-04 kevin <kevin@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/js/upload_js.php: Changed a variable name that IE did not
+ like.
+
+2009-06-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Closes #998 : Operator selection on get by
+ metadata multi
+
+2009-06-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Removed some error messages
+
+2009-05-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Option to suppress visible errors in token
+ validation code.
+
+2009-05-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/upload/upload_form_content.php: hashed out folders view
+
+2009-05-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: Closes #1035: Page handler now urldecodes
+ input, necessary as vars are extracted from request_uri and not $_REQUEST
+ (which is automatically decoded)
+
+ * engine/lib/group.php: Fixed some typos in group search
+
+ * languages/en.php: Group search language correction
+
+ * languages/en.php, search/groups.php: Group search language correction
+
+ * views/default/user/search/finishblurb.php: Refs #965: Correct some search
+ links.
+
+ * views/default/group/search/finishblurb.php,
+ views/default/user/search/finishblurb.php: Refs #965: Correct some search
+ links.
+
+ * engine/lib/entities.php, engine/lib/search.php, search/index.php,
+ version.php: Refs #965: Search now correctly using page handler to make it
+ easier to replace.
+
+ * views/default/page_elements/elgg_topbar.php: Refs #965: Topbar search now
+ pointing at correct url.
+
+ * languages/en.php, views/default/page_elements/elgg_topbar.php: Closes
+ #805: Top bar search now internationalised. Refs #965
+
+2009-05-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Delete event now
+ triggered on metadata and annotation delete
+
+ * version.php: Version bump
+
+ * engine/lib/sessions.php: Admin shortcut flag set on login as well as init
+
+2009-05-27 kevin <kevin@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Removed plugin-specific references from
+ file_display_thumbnail and file_add_to_folders.
+
+2009-05-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Refs #965: Allowing upgrades to be loaded from
+ other locations.
+
+ * engine/lib/group.php, engine/lib/users.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2009052201.sql, languages/en.php, search/groups.php,
+ version.php, views/default/group/search/finishblurb.php,
+ views/default/group/search/startblurb.php: Closes #1030: Group title and
+ description search added, refs #965
+
+ * engine/lib/users.php: Closes #1031: Restored wildcard as it didn't appear
+ that slow.
+
+2009-05-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/captcha/views/default/input/captcha.php: captcha layout tweak
+
+2009-05-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * engine/lib/database.php: Refs #1027: Introducing
+ $CONFIG->db_disable_query_cache which allows disabling of query cache for
+ implementation in CLI mode
+
+ * engine/lib/actions.php: Closes #1026: Removed "@" from include statement
+
+2009-05-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Closes #1025: Using the correct variable.
+
+2009-05-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * views/rss/annotation/default.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/pageshells/pageshell.php,
+ views/rss/user/default.php: Closes #646: GeoRSS support added to Locatable
+ objects with coordinates on RSS feeds
+
+ * views/rss/annotation/default.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/pageshells/pageshell.php,
+ views/rss/user/default.php: Closes #1024: Added call to views which allow
+ extensions to be made.
+
+ * views/rss/annotation/default.php, views/rss/group/default.php,
+ views/rss/object/default.php, views/rss/pageshells/pageshell.php: Making use
+ of the Dublin Core extensions to provide owner information in RSS feeds
+
+ * engine/lib/location.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2009051401.sql, version.php: Fixed geocode stuff +
+ version bump
+
+2009-05-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ mod/diagnostics/views/default/diagnostics/test.php,
+ .../views/default/diagnostics/testresult.php: Closes #1009: Diagnostics unit
+ test with example
+
+ * engine/lib/testing.php, mod/diagnostics/index.php,
+ mod/diagnostics/languages/en.php, mod/diagnostics/start.php,
+ mod/diagnostics/testreport.php, mod/diagnostics/unittester.php,
+ .../views/default/diagnostics/runalltests.php,
+ mod/diagnostics/views/default/diagnostics/test.php,
+ .../views/default/diagnostics/testresult.php: Refs #1009: Enhancements to
+ diagnostics tool to use the test framework.
+
+ * engine/lib/testing.php: Refs #1009: Changed the method tests are
+ performed.
+
+ * engine/lib/testing.php: Refs #1009: Simple test framework outline added.
+
+2009-05-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php: Closes #1003: Using more efficient query
+
+ * engine/lib/river.php, version.php: Removed deprecated river library +
+ version bump
+
+ * engine/lib/actions.php: Closes #749: Warning message on missing token.
+
+2009-05-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php: Closes #944: Changed owner check to a
+ canEdit check on the group.
+
+ * engine/lib/river.php: Deprecated old river code
+
+ * engine/lib/system_log.php, version.php: Closes #1010: Log event now called
+ on an event of its own, this permits plugins to add additional logging or
+ replace the logging method altogether. This is only possible now that the
+ old river code has been replaced.
+
+ * engine/lib/version.php: Refs #965 & #967: Event triggered on upgrade,
+ allowing easier integration with plugins.
+
+ * views/default/spotlight/default.php: Closes #1017: Div no longer closed
+ early.
+
+ * views/default/page_elements/elgg_topbar.php: Closes #1016: Image tag
+ closed
+
+ * version.php: Version bump
+
+ * mod/captcha/start.php: Captcha list can now be extended by other plugins
+
+2009-05-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/start.php: Hard limit to string lengths.
+
+ * mod/captcha/fonts/Liberation_serif_License.txt: Added font licence, refs
+ #1011
+
+ * actions/systemsettings/install.php, engine/lib/upgrades/2009050801.php,
+ mod/captcha/backgrounds/bg1.jpg, mod/captcha/backgrounds/bg2.jpg,
+ mod/captcha/backgrounds/bg3.jpg, mod/captcha/backgrounds/bg4.jpg,
+ mod/captcha/backgrounds/bg5.jpg, mod/captcha/captcha.php,
+ mod/captcha/fonts/1.ttf, mod/captcha/languages/en.php,
+ mod/captcha/manifest.xml, mod/captcha/start.php,
+ mod/captcha/views/default/captcha/css.php,
+ mod/captcha/views/default/input/captcha.php, version.php: Closes #1011: Added
+ basic captcha support.
+
+ * actions/systemsettings/install.php: System default plugins now accepts
+ array as well as CSV
+
+ * views/default/account/forms/forgotten_password.php: Refs #1011: Correctly
+ CSSed and now using captcha if available
+
+2009-05-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * views/default/account/forms/register.php, views/default/input/captcha.php:
+ Closes #983: Introducing input/captcha view, use wherever a captcha is
+ required - override with plugins and use the actions hook to do additional
+ validation!
+
+ * engine/lib/relationships.php: Refs #975: Get entities from metadata and
+ relationship now behaves as expected
+
+2009-05-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Closes #994: elgg_view_exists will now check to
+ see if a view exists by dint of being extended.
+
+ * engine/lib/access.php, engine/lib/elgglib.php: Removing spurious error log
+ messages
+
+ * mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php: Closes #725: Typo corrected.
+
+ * languages/en.php, mod/riverdashboard/languages/en.php,
+ .../views/default/riverdashboard/welcome.php,
+ views/default/basic_elements/welcome.php,
+ views/default/welcome/logged_in.php: Closes #950: Fixed missing translations.
+
+ * mod/riverdashboard/languages/en.php,
+ .../views/default/riverdashboard/welcome.php: Closes #1004: Welcome no longer
+ hard coded.
+
+ * version.php: Version bump
+
+ * engine/lib/entities.php: Closes #1007: Private data now removed on entity
+ deletion.
+
+ * engine/lib/users.php: Closes #1008: Fixed typo
+
+2009-05-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Closes #824: Test variable to prevent error
+ message in log.
+
+2009-05-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Closes #1002: Committed missing variable code
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: Test
+
+2009-04-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * UPGRADE.txt: Closes #1001: This is a test
+
+ * UPGRADE.txt: Refs #4: This is a test
+
+ * UPGRADE.txt:
+
+ * UPGRADE.txt:
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: TEst
+
+ * UPGRADE.txt: Test
+
+ * UPGRADE.txt: Removed test
+
+ * UPGRADE.txt: Test
+
+2009-04-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Closes #927: Minimum user length no longer hard
+ coded.
+
+ * engine/lib/relationships.php: Closes #975: Now possible to search by
+ metadata and relationship
+
+ * engine/lib/users.php: Closes #943: Event triggered when banning or
+ unbanning a user.
+
+2009-04-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * mod/groups/actions/edit.php,
+ mod/groups/views/default/forms/groups/edit.php: Added security token to group
+ edit form
+
+ * views/default/input/form.php, views/default/input/securitytoken.php:
+ Introducing input/securitytoken as an intermediate step for form conversion.
+
+ * mod/groups/actions/edit.php, mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/edit.php: Closes #969: Admin option to
+ allow the setting of certain access controls on a group
+
+ * actions/useradd.php, engine/lib/users.php: Closes #856: Admin created
+ users are no longer created as being owned by the admin
+
+2009-04-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: Refs #969: Added admin menu option for
+ enabling private groups
+
+ * mod/groups/views/default/settings/groups/edit.php: Refs #969: Added admin
+ menu option for enabling private groups
+
+ * engine/lib/group.php: Closes #980: group_gatekeeper() now has an admin
+ override if the admin is logged in
+
+ * simplecache/view.php: Closes #989: Forces regenerate on next refresh when
+ cache file is missing
+
+2009-04-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php, engine/lib/users.php:
+ Deleting correct data + using correct tables
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/metadata.php, engine/lib/users.php: Closes #957: Annotations and
+ metadata owned by a deleted user are now also deleted.
+
+ * languages/en.php, mod/groups/views/default/forum/topicposts.php,
+ .../views/default/object/groupforumtopic.php: Closes #957: Groups topics now
+ handle deleted users, I recommend that people look at what I've done and
+ handle deleted users in a similar way in their plugins.
+
+2009-04-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Belts and braces checking on isloggedin()
+
+2009-04-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/sidebar_boxes.php: an extra view to extend,
+ added to sidebar boxes
+
+2009-04-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/kses/manifest.xml: Refs #833: Added manifest
+
+ * actions/systemsettings/install.php, engine/lib/input.php,
+ engine/lib/upgrades/2009041701.php, mod/kses/start.php,
+ mod/kses/vendors/kses/AUTHORS, mod/kses/vendors/kses/COPYING,
+ mod/kses/vendors/kses/ChangeLog, mod/kses/vendors/kses/README,
+ mod/kses/vendors/kses/TODO,
+ mod/kses/vendors/kses/docs/attribute-value-checks,
+ mod/kses/vendors/kses/docs/hooks,
+ mod/kses/vendors/kses/docs/stripping-everything,
+ mod/kses/vendors/kses/docs/supported-formats,
+ .../vendors/kses/docs/whitelisted-url-protocols,
+ mod/kses/vendors/kses/examples/filter.php,
+ mod/kses/vendors/kses/examples/test.php, mod/kses/vendors/kses/kses.php,
+ mod/kses/vendors/kses/oop/oop.kses.changelog.txt,
+ mod/kses/vendors/kses/oop/oop.simple.api.txt,
+ mod/kses/vendors/kses/oop/php4.class.kses.php,
+ mod/kses/vendors/kses/oop/php5.class.kses.php,
+ mod/kses/vendors/kses/oop/test.oop.kses.php, vendors/kses/AUTHORS,
+ vendors/kses/COPYING, vendors/kses/ChangeLog, vendors/kses/README,
+ vendors/kses/TODO, vendors/kses/docs/attribute-value-checks,
+ vendors/kses/docs/hooks, vendors/kses/docs/stripping-everything,
+ vendors/kses/docs/supported-formats,
+ vendors/kses/docs/whitelisted-url-protocols,
+ vendors/kses/examples/filter.php, vendors/kses/examples/test.php,
+ vendors/kses/kses.php, vendors/kses/oop/oop.kses.changelog.txt,
+ vendors/kses/oop/oop.simple.api.txt, vendors/kses/oop/php4.class.kses.php,
+ vendors/kses/oop/php5.class.kses.php, vendors/kses/oop/test.oop.kses.php,
+ version.php: Closes #833: Kses now built as module
+
+ * engine/lib/input.php: Reverted last
+
+2009-04-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: small tweak to kses input, for now.
+
+2009-04-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Removed style on code
+
+ * engine/lib/input.php: Removed columns
+
+ * engine/lib/input.php: Slightly more draconian kses rules
+
+ * engine/lib/plugins.php: Closes #982: Object limit maximum raised.
+
+2009-04-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Moved old file mime type guesser back to files
+ plugin so that there are no conflicts
+
+2009-04-16 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Passed container_guid to any quota plugins and
+ removed duplicate function definition.
+
+ * engine/lib/filestore.php: Added file_get_general_file_type() function
+
+2009-04-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, version.php: Centralised mimetype function
+
+ * engine/lib/filestore.php, views/default/js/upload_js.php,
+ views/default/upload/upload_form_content.php: Rolled in Kevin's file store
+ enhancements and upload code.
+
+ * version.php: Version bump
+
+ * engine/lib/pageowner.php, languages/en.php: Error logged on page forward
+ due to missing page owner.
+
+2009-04-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/graphics/river_icon_thewire.gif,
+ .../views/default/thewire/activity_view.php: link to the wire added to bottom
+ of latest wire post box on riverdashboard page
+
+2009-04-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: small profile custom
+ fields tweak
+
+2009-04-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/start.php: The Wire incoming SMS now uses the default access
+ level.
+
+ * mod/thewire/start.php: Moving the wire to use $SESSION instead of
+ $_SESSION
+
+ * engine/lib/elgglib.php: Removing viewtype autoforward, because it broke
+ installs.
+
+2009-04-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/actionurl.php, views/default/output/confirmlink.php,
+ views/default/output/url.php: Rolled token into url and confirmlink
+
+ * engine/lib/tags.php: Closes #977: get_tags now functional for entities
+ without subtypes.
+
+2009-04-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/actionurl.php: Introducing actionurl.php (Refs #749)
+
+ * engine/lib/pageowner.php: Forward user if a page owner is inaccessible
+ (Refs #969)
+
+ * engine/lib/elgglib.php: Non-default view types now preserved when
+ forwarding.
+
+ * engine/lib/metadata.php: Closes #974: Owner_guid may now be an array
+
+2009-04-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, engine/lib/configuration.php,
+ engine/lib/elgglib.php, languages/en.php, views/default/settings/system.php:
+ Close #968: View path cache can now be turned on and off
+
+ * engine/lib/elgglib.php: Removed unused experimental cache functions
+
+ * actions/admin/plugins/reorder.php, engine/lib/plugins.php: Refs #946:
+ Improved documentation on enable/disable/reorder plugin commands
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, engine/lib/elgglib.php,
+ engine/lib/plugins.php, upgrade.php: Refs #968 & #946: Tidied filepath cache
+ stuff by placing them in function calls.
+
+ * mod/profile/views/default/profile/userdetails.php,
+ views/default/admin/main.php, views/default/admin/plugins.php,
+ views/default/admin/site.php, views/default/admin/user.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/messages/errors/error.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/messages/message.php,
+ views/default/usersettings/main.php, views/default/usersettings/plugins.php:
+ Refs #963: Autop changed to longtext on standard views
+
+ * engine/lib/database.php, version.php: Added callback support to
+ get_data_row()
+
+2009-04-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Closes #937: Added time constraints to the tag
+ retrieval query.
+
+2009-04-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: The inclusion of a new library merits a new internal version
+ number.
+
+2009-04-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php,
+ .../views/default/riverdashboard/newestmembers.php: Closes #932: Recent
+ members string no longer hard coded
+
+2009-04-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/jquery/jquery.form.js, views/default/page_elements/header.php:
+ jQuery Form plugin, welcome to Elgg Core.
+
+2009-04-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/object/thewire.php: Closes #949: Method in "via
+ {{Method}}" now wrapped in an elgg_echo
+
+ * engine/lib/plugins.php: Closes #945: enable/disable_plugin now updates
+ $ENABLED_PLUGINS_CACHE
+
+2009-03-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/manifest.xml, version.php: Version bump
+
+ * engine/lib/metadata.php, engine/lib/users.php,
+ mod/uservalidationbyemail/start.php: Closes #896: Error thrown if user not
+ validate. Metadata physically removed rather than simply blanked when
+ validation is requested. Note: update_metadata no longer seems to support
+ anonymous metadata which is likely to have knock on issues elsewhere...
+
+2009-03-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icondirect.php: Closes #916: Icondirect now using multibyte
+ safe str_split code from filestore.php
+
+ * version.php: Version bump
+
+ * engine/lib/database.php: Closes #875: Using db link
+
+ * engine/lib/notification.php: Closes #889: Decoding html entities from
+ messages before stripping tags
+
+ * engine/lib/elgglib.php: Closes #897: Memcache datalists correctly saved on
+ first load
+
+ * views/default/css.php: Closes #903: Large <pre> and <code> blocks no
+ longer break page shell
+
+ * mod/riverdashboard/index.php: Closes #899: River dash ajax now UTF-8
+
+ * views/default/page_elements/owner_block.php: Closes #914: Removed odd line
+
+2009-03-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php: Context can now be assigned by defining a
+ constant in the page.
+
+2009-03-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php: Refs #926: Private wire posts get bumped to
+ 'logged in'
+
+2009-03-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: small lang tweak
+
+ * languages/en.php, .../views/default/profile/editdefaultprofile.php: small
+ lang tweak
+
+2009-03-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/edittopic.php: Closes #930: addtopic -> edittopic
+
+2009-03-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/river_widget/view.php: small tweak
+
+ * .../views/default/river/object/thewire/create.php: river view tweak for
+ the wire
+
+2009-03-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Different assignment.
+
+ * engine/lib/users.php: Disposed of unnecessary $result variables.
+
+ * engine/lib/api.php: Closes #844: API parameter test logic improved
+
+ * engine/lib/languages.php: Closes #883: Using different operator logic so
+ that plugins can replace existing translation entries.
+
+ * mod/groups/actions/addtogroup.php: Closes #893: Using ->join() method
+ instead to ensure that event is triggered.
+
+2009-03-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt, version.php: Oh hai Elgg 1.5
+
+ * actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ .../actions/email/confirm.php, version.php: Closes #873: Mail/password
+ reset/confirm actions forward to wwwroot rather than ref. Version bump.
+
+ * engine/lib/elgglib.php: Fixes #877: Minor typo addressed. Note: This
+ function is currently not used.
+
+2009-03-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, version.php: Fixed typo in default
+ plugins init + version bump
+
+2009-03-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * engine/lib/notification.php: Provide a From email address workaround for
+ those with windows servers. See issue http://bugs.php.net/bug.php?id=28038
+
+2009-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Profile user icon URL fix.
+
+2009-03-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/objects.php,
+ engine/lib/sites.php, engine/lib/users.php, languages/en.php, version.php:
+ Closes 868: Fixes regression introduced in [3119]. Version number bumped.
+
+2009-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Added a clause that will detect if insert_data
+ returned 0 rather than false, and returns 'true' in this case. Fixes #867
+
+ * views/default/page_elements/header.php: Javascript loaded using a safer
+ URL scheme. Fixes #862
+
+2009-03-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, .../views/default/groups/group_sort_menu.php:
+ missing lang strings fixed
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/groups/grouplisting.php: missing strings added
+
+2009-03-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: left column sidebar background color changed for
+ consistency with other pages (props to Cash for spotting it)
+
+2009-03-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Minor api tweak
+
+2009-03-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Changing version number
+
+ * version.php: Elgg 1.5 RC2. Hi!
+
+2009-03-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Closes #823: Root cause was that the Headers decl requires
+ mod_headers to be installed (and Apache had a very unhelpful failure mode for
+ instances when it wasn't). The Header def has now been IfModuled out.
+ mod_headers is still recommended for correct functioning across proxies.
+
+2009-03-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: openID river rules removed
+
+2009-03-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Refs #823: Mod_deflate htaccess def now disabled by
+ default.
+
+ * mod/groups/actions/edit.php: Admins can now change group profile picture.
+
+2009-03-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Banned users always have default icons.
+
+ * mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php: Some
+ tweaks to river dashboard, including proper language usage.
+
+ * engine/lib/notification.php: Banned users no longer get notifications
+
+ * actions/register.php, engine/lib/users.php: User validation no longer
+ occurs on first install
+
+ * engine/lib/filestore.php: Icons are now correctly resized
+
+2009-03-09 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php, mod/groups/start.php,
+ mod/groups/views/default/forms/groups/edit.php: Groups now support
+ add_group_tool_option so that any group tool can be toggled on or off via the
+ group's edit form.
+
+ * engine/lib/group.php: Introducing the add_group_tool_option function.
+
+2009-03-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/crontrigger/manifest.xml, mod/diagnostics/manifest.xml,
+ mod/garbagecollector/manifest.xml, mod/groups/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/notifications/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/riverdashboard/manifest.xml,
+ mod/thewire/manifest.xml, mod/uservalidationbyemail/manifest.xml: Bumped
+ version numbers on bundled plugins
+
+2009-03-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: css river rule added for openID user updating
+ profile
+
+2009-03-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version bump
+
+ * mod/profile/views/default/profile/userdetails.php: Closes #851: Fixed
+ regression. It is now possible for an admin to edit another user's profile
+ consistent with 1.2
+
+ * _css/css.php, _css/js.php: Closes #844 & #845: Override is now no longer
+ forced on and so will now obey view cache settings.
+
+ * mod/groups/actions/invite.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/views/default/forms/groups/invite.php:
+ Closes #843: Introducing intermediary invite action to establish invite
+ relationship but ask a user to join
+
+ * version.php: Version bump
+
+ * engine/lib/users.php: Closes #841: User request for password changes now
+ functional.
+
+2009-03-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: one column canvas padding adding
+
+2009-03-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Very minor comment tweak
+
+ * engine/lib/group.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Reversed delete procedure on entities, parent now
+ checked first before sub deleted. Any stubs left over will be handled by the
+ garbage collector.
+
+2009-03-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: river icon added for openID friend, blockquote
+ style tweaked, elgg horizontal nav bar improved
+
+2009-03-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bumped version number corresponding to the change
+
+ * engine/lib/entities.php: Added garbage collector hook to clear up orphaned
+ sub table entities.
+
+ * mod/garbagecollector/start.php: Changed 'system','gc' to 'gc','system'
+
+2009-03-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Fixed icon overrides
+
+ * engine/lib/river2.php: If you don't have any friends, the river no longer
+ returns all on the 'friends' view. Fixes #839
+
+ * mod/profile/views/default/profile/listing.php: Removed banned listing
+
+ * mod/profile/index.php: Banned profiles are now hidden
+
+ * mod/profile/views/default/profile/userdetails.php: Fixed user profile ban
+ message
+
+2009-03-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version number bump
+
+ * engine/lib/languages.php: Closes #838: Missing set from static var.
+
+2009-03-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/json/riverdashboard/container.php,
+ views/json/river/item/list.php: Improved JSON version of the dashboard
+
+2009-03-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: missing river entry style added
+
+2009-03-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php: Online users list works properly
+
+ * languages/en.php, views/default/annotation/annotate.php: Fixed generic
+ river comment view
+
+ * mod/riverdashboard/languages/en.php: Corrected a poorly formatted text
+ string
+
+ * mod/thewire/manifest.xml: New manifest description for the wire.
+
+ * version.php: Elgg 1.5 RC1 is gearing up to leave the building.
+
+ * mod/apiadmin/actions/generate.php, mod/apiadmin/actions/revokekey.php,
+ mod/apiadmin/index.php, mod/apiadmin/languages/en.php,
+ mod/apiadmin/manifest.xml, mod/apiadmin/start.php,
+ .../views/default/apiadmin/forms/add_key.php,
+ mod/apiadmin/views/default/object/api_key.php,
+ mod/guidtool/actions/delete.php, mod/guidtool/export.php,
+ mod/guidtool/format_picker.php, mod/guidtool/import.php,
+ mod/guidtool/index.php, mod/guidtool/languages/en.php,
+ mod/guidtool/manifest.xml, mod/guidtool/start.php, mod/guidtool/view.php,
+ .../views/default/forms/guidtool/export.php,
+ .../views/default/forms/guidtool/format.php,
+ .../views/default/forms/guidtool/import.php,
+ mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php,
+ mod/guidtool/views/default/guidtool/profile.php,
+ .../views/default/object/guidtoolwrapper.php: Farewell APIadmin, farewell
+ GUIDtool. We'll see you over in the plugins repo.
+
+ * mod/thewire/actions/add.php: Wire posts now save as default access level
+
+ * mod/thewire/actions/add.php: Wire posts are now default access
+
+ * UPGRADE.txt: Improved upgrade text
+
+ * engine/lib/entities.php: Error in subtype detection
+
+2009-03-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/newestmembers.php: a small layout tweak
+
+2009-03-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, htaccess_dist: Fixed search RSS
+
+2009-03-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bumped version
+
+ * mod/crontrigger/start.php: Surpressing cron output
+
+2009-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: tiny rule added to make widget layout consistent
+ across all widgets
+
+2009-03-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Private items never trigger notifications
+
+ * engine/lib/entities.php: Access fix
+
+ * engine/lib/entities.php: Let's go with the most obvious application of
+ this.
+
+ * engine/lib/entities.php, engine/lib/river2.php: River access issues
+
+ * engine/lib/river2.php, languages/en.php,
+ views/default/river/item/noaccess.php: Stopgap for when you can no longer
+ view river items.
+
+ * views/default/input/button.php: Button src isn't always required.
+
+ * mod/notifications/languages/en.php: Text changes to hopefully make friends
+ notification settings a little less confusing
+
+ * CONTRIBUTORS.txt: Addition to the contributors file
+
+2009-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/thewire/css.php: css tweak
+
+2009-03-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/forms/guidtool/export.php,
+ .../views/default/forms/guidtool/import.php: GUIDtool now uses
+ input/plaintext
+
+ * engine/lib/access.php: Access modification - owners can always see their
+ own content
+
+ * views/foaf/user/default.php: Correction to FOAF URL
+
+ * views/foaf/user/default.php: FOAF URL fix
+
+ * views/foaf/page_elements/contentwrapper.php: FOAF contentwrapper
+
+2009-03-04 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Changed notification to use
+ has_access_to_entity to move all access control checks to a single mechanism
+
+2009-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/thewire/css.php: added rule to prevent character
+ remaing field focus on thewire individual page
+
+2009-03-04 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Added has_access_to_entity function
+
+ * engine/lib/access.php: Added the ability to optionally specify the user to
+ get_access_sql_suffix
+
+2009-03-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/group/default.php, views/rss/object/default.php,
+ views/rss/river/item/list.php: URL sanitation for RSS feeds
+
+ * mod/groups/views/default/groups/contentwrapper.php: Removing extra quotes
+
+ * views/json/page_elements/contentwrapper.php: JSON contentwrapper view
+
+ * engine/lib/elgglib.php, mod/groups/all.php, mod/groups/edit.php,
+ mod/groups/groupprofile.php,
+ mod/groups/views/default/groups/contentwrapper.php,
+ mod/groups/views/rss/groups/contentwrapper.php,
+ views/default/page_elements/contentwrapper.php,
+ views/rss/page_elements/contentwrapper.php: Added contentWrapper view
+
+2009-03-04 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/query.php: AccessControlQueryComponent::__toString changed to
+ use get_access_sql_suffix
+
+2009-03-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidtool/export.php, mod/guidtool/format_picker.php,
+ mod/guidtool/import.php, mod/guidtool/index.php,
+ mod/guidtool/languages/en.php, mod/guidtool/start.php: Moved GUID tool to
+ admin menu.
+
+2009-03-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/css.php: added a rule to prevent
+ characters remaining field on thewire receiving focus/highlighting
+
+2009-03-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/river/item/list.php: Title fix.
+
+ * engine/lib/elgglib.php, views/rss/river/item/list.php: Fixed river RSS
+ views
+
+2009-03-04 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Commented out a no longer needed line of code
+
+ * engine/lib/tags.php: get_tags now uses get_access_sql_suffix for access
+ control.
+
+2009-03-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/river/item/list.php: Ampersand fix
+
+ * engine/lib/elgglib.php, .../views/rss/riverdashboard/container.php,
+ views/rss/river/item/list.php: Improvements to elgg_view, plus river
+ dashboard RSS feed
+
+ * mod/groups/start.php: The 'manage join requests' link doesn't show up if
+ the current group doesn't have public membership.
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, mod/profile/icon.php, mod/profile/icondirect.php,
+ simplecache/view.php: Moving to a smaller chunk size.
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bumping version number
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icon.php: Profile icons come in chunks.
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, simplecache/view.php: Echoing the large output
+ buffer in chunks
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icon.php, mod/profile/icondirect.php, simplecache/view.php:
+ Splitting output into chunks.
+
+ * htaccess_dist: Improved .htaccess
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Stub for experimental view caching (disabled)
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, _css/js.php: Far future expires header
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Using faster array concatination
+
+ * views/default/input/button.php: Closes #832: Internal name now handled
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: $vars is once again populated with session data
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Removed utterly pointless lines
+
+ * engine/lib/languages.php: Current language now cached per process in
+ elgg_echo.
+
+ * engine/lib/plugins.php: Minor tweaks
+
+ * engine/lib/elgglib.php: Minor tweaks
+
+ * engine/lib/languages.php: Removed directory test to languages since it's
+ probably fair to assume that this isn't going to be the case
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * simplecache/view.php: Content length on the simplecache.
+
+2009-03-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: tiny amendment to owner-block icon spacing
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/js.php: JS override.
+
+ * simplecache/view.php: Fix for previous.
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Removing the stupidly slow array_merge from lang
+ load code
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, simplecache/view.php: A quiet little CSS override update.
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Made get_library_files non-recursive and removed
+ is_dir test... makes the func <1% of total execution time
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/objects.php,
+ engine/lib/sites.php, engine/lib/users.php: Removed calls to the deprecated
+ entity cache
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/crontrigger/start.php: Suppressing output on cron trigger
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: Getting rid of needless double-trimming.
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/disableall.php,
+ actions/admin/plugins/enable.php, actions/admin/plugins/enableall.php,
+ actions/admin/plugins/reorder.php, engine/lib/elgglib.php,
+ engine/lib/plugins.php, upgrade.php: Closes #831: Plugin view location is now
+ cached in a file in dataroot and is invalidated on upgrade and plugin
+ enable/disable/reorder. This means that views no longer have to be discovered
+ on boot - reducing file IO from crazy amounts to 1. This also helps make
+ adding new plugins a linear event.
+
+2009-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * simplecache/view.php: Eliminating the content-length header
+
+2009-03-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Refs #830: Minor tweak
+
+ * engine/lib/cache.php: Cache delete now functional
+
+2009-03-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Limitless queries now supported
+
+2009-03-02 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php, mod/groups/views/default/groups/forum_latest.php:
+ Changed group forums to default to enabled.
+
+ * engine/lib/access.php: Changed the order of the access dropdown so that it
+ is in order of increasing restriction (private, friends, logged-in, public).
+
+2009-03-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ .../views/default/object/groupforumtopic.php: discussion list updated for
+ long usernames, and clearing issues fixed for pc
+
+2009-03-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Corrected unnecessarily patriotic comments.
+
+2009-03-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Removing duplicate deletion code.
+
+2009-03-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php: Minor change to previous.
+
+ * engine/lib/install.php: A different table to check db existence against.
+
+2009-03-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/object/groupforumtopic.php: small tweak to change from
+ username to name on discussion
+
+2009-03-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: mac alignment fixed on delete
+ button
+
+ * mod/groups/views/default/groups/css.php,
+ .../views/default/object/groupforumtopic.php: delete discussion button layout
+ tweaked
+
+2009-03-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bump
+
+ * engine/lib/input.php, views/default/output/longtext.php: Closes #828:
+ Quite correct - rather tired - arrays are individually trimmed - non-arrays
+ are not. Closes #714: Input filtering now triggers on a plugin hook, this
+ allows plugins to provide other filtering methods than kses (Refs #561).
+
+2009-03-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/object/groupforumtopic.php: deleting discussions added
+
+2009-03-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Closes #828: Array input values now trimmed
+ individually.
+
+2009-03-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/languages/en.php: Wire lang string tweaked
+
+2009-03-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/icon_bookmarkthis.gif, _graphics/icon_reportthis.gif: owner
+ block icons background color corrected for new theme
+
+ * .../views/default/riverdashboard/css.php: reply and delete button removed
+ on latest post on riverdashboard
+
+ * mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forum/topicposts.php,
+ .../views/default/reportedcontent/form.php,
+ views/default/comments/forms/edit.php, views/default/css.php: input/longtext
+ and remove editor link layout improved
+
+2009-02-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Closes #665: Using a bit of preg callback magic to
+ do <wbr> encoding and href encoding in one pass.
+
+ * engine/lib/languages.php: Closes #824: $language is initialised
+
+2009-02-28 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/river_widget/edit.php: activity widget default
+ tweaked
+
+ * mod/thewire/languages/en.php: the wire lang tweaked
+
+ * mod/thewire/views/default/object/thewire.php: the wire now uses name
+ rather than username
+
+2009-02-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2009022701.php: Disabling updateclient on installs as
+ part of upgrade, this is because it is no longer included and can cause
+ problems.
+
+2009-02-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/object/groupforumtopic.php: autop removed on fetching
+ group description for list view (to remove extraneous <br />)
+
+ * mod/groups/views/default/groups/forum_latest.php: clearfloat fixed
+
+ * mod/groups/views/default/groups/css.php,
+ .../views/default/object/groupforumtopic.php: groups latest discussion list
+ view timestamp moved/formatted
+
+2009-02-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php: Removed email force from notification
+ emails
+
+2009-02-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: groups widgets layout made
+ consistent
+
+2009-02-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: enable/disable mods buttons layout tweaked
+
+2009-02-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php: Corrected capitalisation, added
+ better description to 'add message' link
+
+2009-02-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/footer_back.gif, _graphics/friends_picker_arrows.gif,
+ _graphics/icons/default/topbar.png, _graphics/owner_block_back.jpg,
+ _graphics/owner_block_menu_arrow.gif, _graphics/owner_block_menu_dot.gif,
+ _graphics/page_back_linen.gif, _graphics/page_back_linen_shadow.gif,
+ _graphics/skyscraper.gif, _graphics/spotlight_back.gif,
+ _graphics/thewire_speech_bubble.gif, _graphics/toolbar_arrow.png,
+ _graphics/toolbar_arrow_ie.gif, _graphics/tools_over.png,
+ mod/groups/graphics/defaultlarge.gif, mod/groups/graphics/defaultmedium.gif,
+ mod/groups/graphics/defaultsmall.gif, mod/groups/graphics/defaulttiny.gif,
+ mod/groups/views/default/groups/css.php,
+ mod/logbrowser/views/default/logbrowser/css.php,
+ .../views/default/notifications/css.php,
+ mod/profile/graphics/defaultlarge.gif, mod/profile/graphics/defaultlarge.jpg,
+ mod/profile/graphics/defaultmaster.gif,
+ mod/profile/graphics/defaultmaster.jpg,
+ mod/profile/graphics/defaultmedium.gif,
+ mod/profile/graphics/defaultmedium.jpg,
+ mod/profile/graphics/defaultsmall.gif, mod/profile/graphics/defaultsmall.jpg,
+ mod/profile/graphics/defaulttiny.gif, mod/profile/graphics/defaulttiny.jpg,
+ mod/profile/graphics/defaulttopbar.gif,
+ mod/profile/graphics/defaulttopbar.jpg,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php,
+ mod/profile/views/default/profile/css.php,
+ .../views/default/reportedcontent/css.php,
+ .../views/default/riverdashboard/css.php,
+ mod/thewire/graphics/thewire_speech_bubble.gif,
+ mod/thewire/views/default/thewire/css.php, views/default/css.php,
+ views/default/js/friendsPickerv1.php, views/default/js/initialise_elgg.php:
+ default theme changed
+
+2009-02-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Bumped version number
+
+2009-02-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/editpost.php,
+ mod/groups/views/default/forum/topicposts.php: forum post edit bug fixed
+
+2009-02-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Deflation is now turned off by default because a version of
+ a certain majority-share browser really doesn't like it.
+
+2009-02-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins.php: buttons moved
+
+ * views/default/admin/plugins.php: class names added to enable/disable
+ buttons
+
+2009-02-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disableall.php, actions/admin/plugins/enableall.php,
+ engine/lib/plugins.php, languages/en.php, views/default/admin/plugins.php:
+ Enable all / disable all functionality added
+
+2009-02-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/widgets/thewire/view.php: set a default num of
+ wire posts to appear on a widget
+
+2009-02-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php,
+ mod/groups/actions/groupskillrequest.php, mod/groups/languages/en.php,
+ mod/groups/membershipreq.php, mod/groups/start.php,
+ .../views/default/groups/membershiprequests.php: Join request management
+ added.
+
+2009-02-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/forms/guidtool/export.php,
+ mod/profile/views/default/profile/icon.php, views/default/input/access.php,
+ views/default/input/button.php, views/default/input/checkboxes.php,
+ views/default/input/email.php, views/default/input/hidden.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/plaintext.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/output/calendar.php, views/default/output/confirmlink.php,
+ views/default/output/email.php, views/default/output/pulldown.php,
+ views/default/output/tagcloud.php, views/default/output/tags.php,
+ views/default/output/text.php, views/default/output/url.php,
+ views/failsafe/input/button.php, views/failsafe/input/checkboxes.php,
+ views/failsafe/input/hidden.php, views/failsafe/input/text.php,
+ views/failsafe/messages/exceptions/exception.php: Closes #651: I agree,
+ changed to convert both quotes.
+
+2009-02-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Added 'accept' to the language list
+
+2009-02-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topicposts.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/riverdashboard/sitemessage.php, views/default/css.php,
+ views/default/js/initialise_elgg.php: generic reusable collapsible div added
+ (replacing manifest_file which is solely for admin plugins page)
+
+2009-02-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/jsfuncs.php,
+ .../notifications/subscriptions/personal.php: Fixed checkboxes on the
+ notification screen.
+
+ * views/default/admin/plugins_opt/plugin.php: Plugin descriptions are now
+ displayed on the tool menu, for better ease of use.
+
+2009-02-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, languages/en.php: Redirect to tools on first admin
+ login.
+
+2009-02-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/newestmembers.php: members box fixed for
+ IE6&7
+
+ * mod/thewire/views/default/object/thewire.php: thewire user icon layout
+ fixed for IE / cross-browser consistency
+
+2009-02-26 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/uservalidationbyemail/start.php: Event functions should return true to
+ prevent an event from being halted. Now this one does.
+
+2009-02-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/members.php,
+ .../views/default/object/groupforumtopic.php,
+ views/default/canvas/layouts/sidebar_boxes.php: markup fixing / cleanup / ie6
+ fixes
+
+2009-02-26 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/widgets.php: Fixes to container
+ permissions and widgets to allow default widgets to work with the Elgg
+ permissions system.
+
+2009-02-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: The search endpoint can now be told to go fetch a users'
+ friends.
+
+2009-02-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php:
+ enable/disable plugin actions now support arrays as parameters
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/join.php,
+ mod/groups/actions/joinrequest.php: Closes #801, Refs #277: Group
+ join/request logic altered.
+
+2009-02-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/thewire/profile_status.php: broken wire link fixed
+
+2009-02-26 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topicposts.php: Gave each edit box a unique
+ ID
+
+2009-02-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Small access tweak for sending notifications.
+
+ * mod/groups/start.php: Fixed duplicate notifications.
+
+ * mod/groups/start.php: Fixed the first-post forum topic notification error.
+ Fixes #816
+
+2009-02-26 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Added "enemies" code to get_access_sql_suffix. This
+ implements two features: a. a user can prevent another user from seeing any
+ of his content and b. a user can filter out all the content created by
+ another user. There is no interface for this yet, but adding one should be
+ easy with this core support.
+
+2009-02-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/object/thewire.php,
+ views/default/navigation/pagination.php: markup fixed for cross-browser
+ rendering consistency
+
+2009-02-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php: Fixed pagination when filtering.
+
+2009-02-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php: Closes #822: Action file existed however the action
+ was not registered (previously called directly)
+
+ * account/forgotten_password.php, account/register.php,
+ dashboard/latest.php, engine/lib/elgglib.php, entities/list.php,
+ friends/add.php, friends/collections.php, friends/edit.php,
+ friends/index.php, friends/of.php, index.php, install.php,
+ mod/notifications/groups.php, mod/notifications/index.php,
+ mod/reportedcontent/add.php, mod/riverdashboard/index.php: Closes #807:
+ Removed echo on page_draw()
+
+2009-02-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/views/default/groups/find.php:
+ Corrected bad form action for group tag and made search label a little more
+ specific.
+
+2009-02-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Refs #808: Bug was actually fixed by not using
+ empty... register_translations has to be in the wild otherwise install won't
+ load translation.
+
+ * engine/lib/languages.php: Closes #808: Removed register_translation from
+ the wild, now called on boot so that it is always after configuration_init
+
+2009-02-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/longtext.php: output/longtext now parses URLs.
+
+2009-02-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: small lang tweak
+
+2009-02-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/js.php: Fixed river pagination issue
+
+2009-02-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/languages/en.php: lang file replaced
+
+ * mod/riverdashboard/languages/en.php: missing lang string
+
+2009-02-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Architectural version number change
+
+2009-02-25 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/elgglib.php, languages/en.php: Added
+ friends access level
+
+ * actions/admin/site/update_basic.php, engine/lib/access.php,
+ engine/lib/users.php, languages/en.php, views/default/settings/system.php:
+ Introduces user default access.
+
+2009-02-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Closes #800: Fixes typo
+
+2009-02-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/forminternals.php,
+ views/default/friends/picker.php: Unicode character fix for friends picker.
+ Fixes #281
+
+ * mod/thewire/languages/en.php: SPG fix
+
+ * .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/groupsform.php,
+ .../notifications/subscriptions/personal.php: Removing the jumps on the
+ notification pickers.
+
+ * mod/groups/start.php: Removing the membership requests link for now.
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php,
+ mod/groups/views/default/groups/groupprofile.php: Removing an infinite loop
+ in groups.
+
+ * mod/groups/views/default/forms/groups/invite.php: The group invite friends
+ picker now correctly highlights friends' tabs
+
+ * engine/lib/metadata.php: Syntax improvements for the get_metadata
+ functions
+
+ * engine/lib/relationships.php: Fix for previous, including a change to
+ check_entity_relationships that actually returns the relationship object.
+
+ * engine/lib/relationships.php: Introducing the 'delete relationship' event.
+ Fixes #779
+
+ * mod/groups/languages/en.php: Defining grouptopic:blank; fixes #809
+
+ * engine/lib/notification.php: Notifications with nonexistent handlers no
+ longer throw an exception; they now write to the error log. Refs #754
+
+ * engine/lib/sessions.php: The session initialisation order is slightly
+ altered to allow for language setup on the index page. Fixes #803
+
+ * mod/groups/start.php: Group topics now have a friendlier URL. This will
+ help a lot for notifications.
+
+ * engine/lib/notification.php: Fixed error in notification procedure
+
+ * .../graphics/icon_notifications_web.gif: Removing web notification
+ graphic; will sit elsewhere.
+
+2009-02-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../graphics/icon_notifications_web.gif: web notification icon added
+
+2009-02-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/find.php: all groups search form
+
+2009-02-24 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/user/requestnewpassword.php,
+ mod/uservalidationbyemail/languages/en.php: Attempts by unvalidated users to
+ login or request new passwords now trigger plugin hooks (if available) or
+ trigger the user validation event by default. Thus, in the default case, the
+ user will be remailed a validation link. Addresses part of
+ http://trac.elgg.org/elgg/ticket/759 .
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icondirect.php: Removing a minor simplecache debug message
+ that accidentally made it in.
+
+ * mod/profile/icon.php, mod/profile/icondirect.php: Default icons are
+ preserved.
+
+2009-02-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/settings/riverdashboard/edit.php: you can now replace the
+ default dashboard with the new activity river, if required.
+
+2009-02-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/search/startblurb.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php: search results formatted
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, _css/js.php, upgrade.php: CSS, JS, upgrade are marked as
+ external pages.
+
+2009-02-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/groupprofile.php: groups:notfound:details
+ text string formatted
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/discussions.php, mod/groups/forum.php,
+ mod/groups/membership.php, mod/groups/topicposts.php: Group gatekeeper on
+ internal group pages.
+
+ * engine/lib/xml-rpc.php: Minor variable fix. Fixes #811
+
+2009-02-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/delete.php: when deleting a group you now go back to
+ your groups
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: A further architecture update version increment.
+
+2009-02-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/invite.php: invite friends to group
+ page modified
+
+2009-02-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/widgets.php: Added fixes to
+ create_entity and add_widgets to correctly handle containers.
+
+2009-02-24 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/thewire/profile_status.php: profile update wire tweaked
+
+2009-02-24 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, engine/lib/elgglib.php,
+ mod/profile/icondirect.php: Made icon views work properly for non-default
+ icons, and introduced elgg_view_enable_simplecache and
+ elgg_view_disable_simplecache functions.
+
+2009-02-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/thewire/profile_status.php: profile status update link
+ formatted
+
+2009-02-23 kevinjardine <kevinjardine@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, engine/lib/configuration.php,
+ languages/en.php, mod/profile/icondirect.php, simplecache/view.php,
+ views/default/settings/system.php: Added the ability to turn simplecache on
+ and off.
+
+2009-02-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/thewire/forms/add.php: post to wire from thewire
+ page styled
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: You should no longer get notified of your own topic
+ posts.
+
+ * engine/lib/elgglib.php: ACCESS_DEFAULT is now defined.
+
+2009-02-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/views/default/thewire/forms/add.php: a tweak to the wire
+
+ * mod/thewire/actions/add.php, mod/thewire/everyone.php,
+ mod/thewire/index.php, mod/thewire/languages/en.php, mod/thewire/start.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ .../views/default/thewire/profile_status.php: new wire work
+
+2009-02-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/profileitems.php: right_column changed from
+ class to id to match left_column
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php, mod/groups/views/rss/groups/profileitems.php:
+ Group RSS feed.
+
+ * mod/groups/views/rss/forum/topics.php: RSS fix for groups.
+
+ * engine/handlers/pagehandler.php: Removing the external definition from the
+ page handler again.
+
+ * engine/lib/annotations.php, mod/groups/start.php,
+ mod/groups/topicposts.php, mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/rss/forum/topicposts.php,
+ mod/groups/views/rss/forum/viewposts.php, views/rss/object/default.php: RSS
+ for group topics, including fixes for annotation getURL() override
+
+2009-02-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/page_elements/elgg_topbar.php: top toolbar menu id changed to
+ class. messages div slide action in some browsers removed.
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/pagehandler.php: Further external marker on the
+ pagehandler for walledgarden
+
+2009-02-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/editpost.php, mod/groups/start.php,
+ mod/groups/views/default/forum/topicposts.php: new group edit options on
+ discussion
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/xml-rpc_handler.php, index.php: Hook for better walled garden
+
+2009-02-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/editpost.php,
+ mod/groups/views/default/forum/topicposts.php: a couple more group comment
+ edit tweaks
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topicposts.php: Translating untranslated
+ string
+
+2009-02-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/editpost.php,
+ mod/groups/views/default/forum/topicposts.php: small edit comment bug fixed
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Slight version change to represent architectural changes.
+
+2009-02-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topics.php,
+ .../views/default/object/groupforumtopic.php: groups interface details
+ cleanup
+
+2009-02-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, mod/groups/groupprofile.php: Introducing
+ group_gatekeeper()
+
+ * mod/thewire/languages/en.php: New post wire string
+
+ * views/failsafe/input/access.php: Introducing the access control to the
+ failsafe view.
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/access.php, engine/lib/widgets.php, languages/en.php,
+ mod/profile/actions/edit.php, mod/profile/views/default/profile/edit.php,
+ views/default/input/access.php, views/default/settings/system.php,
+ views/failsafe/settings/system.php: Added site default access permissions.
+ Refs #744
+
+2009-02-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topicposts.php: superfluous <p> tags
+ removed
+
+2009-02-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: missing lang tweak
+
+ * mod/groups/views/default/forum/topics.php: new group discussion layout
+ tweaked to actually work
+
+ * mod/groups/actions/forums/addtopic.php, mod/groups/languages/en.php,
+ .../views/default/river/forum/topic/create.php: topic starting included in
+ river
+
+2009-02-22 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/forum.php, mod/groups/languages/en.php,
+ .../views/default/object/groupforumtopic.php: new group discussion layout
+
+ * mod/groups/languages/en.php: tweaks to the group discussion lang
+
+ * mod/groups/forum.php: group forum posts are now displayed based on last
+ action
+
+ * mod/groups/actions/forums/deletepost.php,
+ mod/groups/actions/forums/editpost.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/views/default/forum/topicposts.php: users
+ can now edit and delete their forum comments
+
+ * mod/groups/actions/join.php, mod/groups/languages/en.php,
+ mod/groups/views/default/river/group/create.php: new join group river view
+ added
+
+ * mod/groups/actions/forums/addpost.php,
+ mod/groups/views/default/river/forum/create.php: new river view added for
+ group forum posts
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php,
+ .../views/default/riverdashboard/container.php,
+ .../views/default/riverdashboard/js.php,
+ .../views/default/riverdashboard/nav.php: Riverdashboard now loads tabs via
+ jQuery AJAX.
+
+ * .../notifications/subscriptions/forminternals.php,
+ views/default/friends/forms/edit.php, views/default/friends/picker.php: The
+ friends picker now highlights tabs when creating a collection if a user is
+ present there. Also, the separate friends picker in the notification plugin
+ is also now internationalised.
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/a_users_groups/view.php: groups widget class
+ added
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Correction for previous.
+
+ * mod/groups/start.php: Forum topic notifications fix.
+
+ * engine/lib/notification.php: Notification messages can be suppressed
+ programmatically.
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/a_users_groups/view.php: group widget tweaked
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fixes an annoying problem in countAnnotations.
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php: group email tweak to
+ include lang
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/defaultprofile.php: custom profile fields admin panel
+ formatted
+
+ * .../views/default/thewire/profile_status.php: brackets added around
+ timestamp
+
+2009-02-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: isFriend() now retrieving userid correctly
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/thewire/profile_status.php: profile status view tweaked
+
+2009-02-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php: Closes #784: Action now checks that the
+ user is the logged in user's friend before invite.
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/usersettings/plugins_opt/plugin.php: configure tools page -
+ individual tools formatted
+
+ * .../views/default/widgets/river_widget/view.php: activity widget interface
+
+ * views/default/spotlight/default.php: formatted spotlight footer
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/listing.php: status moved on member
+ listings
+
+2009-02-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/membershipreq.php,
+ mod/groups/start.php: Placeholder for future work (refs #277)
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php: tweak to the add to wire action to make sure
+ forward takes the user to the correct place
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/grouplisting.php: group details
+ containerised
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Removing unnecessary mod_rewrite rule
+
+ * languages/en.php, views/default/friends/picker.php: The friends picker can
+ now be internationalized, also allows you to view users whose usernames don't
+ begin with a letter in the char array.
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/river_widget/edit.php: riverdash activity widget
+ edit panel formatted
+
+ * mod/thewire/views/default/widgets/thewire/view.php: empty <p> tags causing
+ issues removed
+
+ * mod/groups/views/default/forms/groups/edit.php: button floated and cleared
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/spotlight/default.php: Went in to decapitalise "intranet",
+ ended up making the text hopefully more immediate.
+
+2009-02-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/edit.php: delete group button moved
+ into own area
+
+ * mod/groups/views/default/forms/forums/addtopic.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/side_menu.php: group areas interfacing
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/plugins.php, admin/site.php, admin/statistics.php, admin/user.php,
+ views/default/page_elements/owner_block.php: Removed unnecessary owner
+ blocks.
+
+2009-02-20 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/spotlight/default.php: new spotlight contents
+
+2009-02-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/messages/exceptions/exception.php: Minor improvement to
+ exception message
+
+ * views/default/messages/exceptions/exception.php: Minor improvement to
+ exception message
+
+ * engine/lib/elgglib.php, views/default/messages/exceptions/exception.php:
+ Closes #487: Removed superfluous page_draw from exception view.
+
+2009-02-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, engine/lib/river2.php: Added some documentation to
+ the river functions.
+
+2009-02-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apiadmin/manifest.xml, mod/crontrigger/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/garbagecollector/manifest.xml,
+ mod/groups/manifest.xml, mod/guidtool/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/notifications/manifest.xml, mod/profile/manifest.xml,
+ mod/reportedcontent/manifest.xml, mod/thewire/manifest.xml,
+ mod/uservalidationbyemail/manifest.xml: Updated core module manifests to
+ contain today's build number. Refs #394
+
+ * mod/riverdashboard/manifest.xml: Closes #795: Added manifest to
+ riverdashboard
+
+ * mod/groups/languages/en.php: Closes #798: Fixing language definition which
+ somehow got clobbered. Nice spot!
+
+ * engine/lib/entities.php: Fixes warning messages on disable or delete for
+ times when an entity has no sub items.
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river2.php, .../views/default/widgets/river_widget/view.php,
+ views/default/river/item/list.php: Pagination is now optional on river lists;
+ is removed on the river widget
+
+ * engine/lib/river2.php: Friends river no longer shows your own stuff.
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/edit.php: missing wrapper added
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/forum.php: Added a title to group forum topics. Fixes #603
+
+ * mod/groups/membership.php: For now, the group membership page is
+ protected, although eventually this should get its own profile dropdown menu.
+ Fixes #605
+
+2009-02-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/profileitems.php: groups interface updated
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: An alternative template handler will now be sought
+ by elgg_view by default. Fixes #768
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/find.php,
+ mod/groups/views/default/groups/side_menu.php: all groups submenu tweaked
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php: A lighter way to detect if the db has been
+ installed. Fixes #791
+
+2009-02-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/featured.php: featured groups sidebar styled
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixed parameter errors in site-related functions.
+ Fixes #793
+
+ * mod/profile/icondirect.php: Better unicode patching for icons. Fixes #789
+
+2009-02-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Updated version number to today's build
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php: small tweak to popular groups
+
+ * mod/groups/all.php: it is now possible to list groups by most popular
+
+ * views/default/page_elements/header.php,
+ views/default/page_elements/header_contents.php,
+ views/default/pageshells/pageshell.php: the header has been split out so that
+ theme authors can target the header output without worrying about overwriting
+ the whole header file.
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Introduced get / list entities by
+ relationship count
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/thewire/actions/add.php, mod/thewire/actions/delete.php,
+ mod/thewire/add.php, mod/thewire/everyone.php,
+ mod/thewire/graphics/thewire_speech_bubble.gif, mod/thewire/index.php,
+ mod/thewire/languages/en.php, mod/thewire/manifest.xml,
+ mod/thewire/readme.txt, mod/thewire/start.php,
+ mod/thewire/views/default/object/thewire.php,
+ .../views/default/river/object/thewire/create.php,
+ .../views/default/thewire/activity_view.php,
+ mod/thewire/views/default/thewire/css.php,
+ mod/thewire/views/default/thewire/forms/add.php,
+ mod/thewire/views/default/thewire/notfound.php,
+ .../views/default/thewire/profile_status.php,
+ .../views/default/thewire/scripts/counter.js,
+ mod/thewire/views/default/thewire/view.php,
+ mod/thewire/views/default/widgets/thewire/edit.php,
+ mod/thewire/views/default/widgets/thewire/view.php: the wire has been moved
+ to core as it now powers profile status and status on member search
+
+ * mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php, mod/activity/manifest.xml,
+ mod/activity/opendd.php, mod/activity/start.php,
+ mod/activity/views/default/activity/css.php,
+ mod/activity/views/default/activity/dashboard.php,
+ mod/activity/views/default/activity/offset.php,
+ mod/activity/views/default/activity/wrapper.php,
+ .../views/default/settings/activity/edit.php,
+ mod/activity/views/opendd/activity/dashboard.php, mod/river/languages/en.php,
+ mod/river/manifest.xml, mod/river/start.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/edit.php,
+ .../default/widgets/river_widget_friends/view.php: old activity and river
+ removed
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist, .../views/default/apiadmin/forms/add_key.php,
+ mod/apiadmin/views/default/object/api_key.php,
+ .../views/default/diagnostics/forms/download.php,
+ mod/groups/actions/join.php, mod/profile/defaultprofile.php,
+ .../views/default/profile/editdefaultprofile.php,
+ .../views/default/profile/menu/adminlinks.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/object/default.php: Repointed actions/ to action/ in all views
+ and removed actions/* from the action handler.
+
+2009-02-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php: Removed some bad links on
+ actions
+
+ * engine/lib/languages.php: Fixed strange infinite loop on language loading.
+
+ * engine/lib/languages.php: Removed @ from register translation include_once
+
+ * engine/lib/plugins.php, languages/en.php,
+ views/default/admin/plugins_opt/plugin.php: Closes #394: May now specify
+ elgg_version in the manifest to specify a minimum version of elgg required.
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/canvas_header/submenu_template.php:
+ delete confirmation added to delete pages
+
+ * .../views/default/riverdashboard/sitemessage.php: input view changed on
+ site messages
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/edit.php: warning applied to group
+ deletion
+
+ * mod/groups/edit.php: title tweaked
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fix for user object counting with upper and lower
+ time limits.
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: missing lang file
+
+ * views/default/page_elements/owner_block.php: ownerblock tweak
+
+2009-02-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/users.php, languages/en.php:
+ Introducing archive functionality.
+
+2009-02-19 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/river/sitemessage/create.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php: new river widget
+
+2009-02-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_toolbar_logo.gif: updated elgg toolbar logo
+
+2009-02-18 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/featured.php: missing id applied
+
+ * mod/groups/actions/featured.php, mod/groups/all.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/grouplisting.php: admins can highlight
+ featured groups
+
+2009-02-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/find.php: sidebar forms styled
+
+2009-02-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/start.php: Closes #790: Removed @ before
+ include statements.
+
+2009-02-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/item/list.php: forward and back text added
+
+ * mod/profile/defaultprofile.php: reset button wrapped
+
+ * .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ views/default/river/item/list.php: pagination on river fixed / styled, and
+ site message styled
+
+2009-02-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Helping plugin developers by no longer suppressing
+ parsing errors in plugins.
+
+2009-02-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/start.php: Fix for previous
+
+ * mod/riverdashboard/start.php: Riverdashboard registers an init event
+ handler now .....
+
+2009-02-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php, mod/groups/views/default/groups/find.php: style
+ applied
+
+2009-02-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/all.php, mod/groups/views/default/groups/side_menu.php: more
+ more all groups tweak
+
+ * mod/groups/all.php, mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/groups/featured.php,
+ mod/groups/views/default/groups/find.php,
+ .../views/default/groups/group_sort_menu.php,
+ mod/groups/views/default/groups/grouplisting.php: new all groups view
+
+ * mod/profile/views/default/profile/userdetails.php: bug fixed in profile
+ status
+
+ * views/default/river/item/wrapper.php: river view altered
+
+2009-02-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/widgets/wrapper.php: Closes #763: A
+ message is now displayed for widgets belonging to disabled plugins explaining
+ what has happened.
+
+2009-02-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/css.php: css added to sep file
+
+2009-02-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/riverdashboard/welcome.php: welcome message tweaked
+
+ * mod/riverdashboard/actions/add.php, mod/riverdashboard/actions/delete.php,
+ mod/riverdashboard/languages/en.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/sitemessage.php: simple site message added
+
+ * mod/groups/views/default/groups/profileitems.php: removed a redundant view
+
+2009-02-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php, mod/groups/languages/en.php,
+ .../views/default/groups/closedmembership.php: Closes #786: Only basic
+ profile information provided to non-joined users of closed groups.
+
+2009-02-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/listing.php: entity passed to status
+ view
+
+2009-02-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/css.php,
+ .../views/default/riverdashboard/nav.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php, views/default/css.php,
+ views/default/friends/collectiontabs.php: interface updated, markup tweaked
+ etc
+
+2009-02-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/listing.php: new status view created
+ that can be extended
+
+2009-02-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/start.php: Added some very basic page load
+ profiling.
+
+ * engine/lib/elgglib.php: Closes #785: datalists now pulls all settings on
+ first item load.
+
+ * engine/start.php: Closes #783: Initial cache write on start now checks
+ whether elgg has been fully installed before proceeding.
+
+2009-02-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: new view added to allow
+ status plugins to extend and display as part of the profile block
+
+2009-02-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icondirect.php: Icondirect now falls back on the cached
+ default view
+
+ * mod/profile/start.php: Icon default views are now registered as cached
+
+ * views/default/input/plaintext.php: Introducing input/plaintext.
+
+2009-02-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/viewtype.php: loose page elements wrapped in
+ container div
+
+2009-02-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/start.php, upgrade.php: A little more
+ flexibility for the simplecache.
+
+2009-02-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Short circuit get entity on impossible values,
+ saving two db queries per page
+
+2009-02-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, _css/js.php, engine/lib/elgglib.php, engine/start.php,
+ simplecache/view.php, views/default/page_elements/header.php: Views
+ simplecache improvements.
+
+2009-02-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/footer.php: another view added for analytics
+ which plugins can extend
+
+ * views/default/page_elements/footer.php: footer links replaced by a view
+ which plugins can extend
+
+2009-02-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Removed select_default_memcache as this was not
+ used.
+
+ * engine/lib/languages.php, engine/lib/sessions.php, engine/start.php,
+ version.php: Closes #429: Language loading now no longer loads all possible
+ translations - only english + user's preferred language/site preference
+
+2009-02-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/usersettings.php, languages/en.php,
+ mod/profile/views/default/profile/userdetails.php,
+ views/default/friends/collections.php, views/default/friends/forms/edit.php,
+ views/default/friends/tablelist.php: theme updates
+
+2009-02-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/reorder.php: Simplecache improvements.
+
+ * _css/css.php, _css/js.php, engine/lib/elgglib.php, engine/start.php,
+ mod/profile/start.php, mod/profile/views/default/profile/metatags.php,
+ simplecache/view.php, upgrade.php, views/default/page_elements/header.php:
+ Committing the simplecache for views.
+
+2009-02-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collections.php: removed broken expand all link and
+ js
+
+2009-02-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/admin/plugins_opt/plugin.php: Closes #777:
+ Plugin version now displayed under "more info" link in plugin admin settings.
+
+2009-02-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: latest activity link removed as it will be
+ replaced by a full activity stream
+
+ * views/default/admin/statistics.php: removed redundant stats info
+
+2009-02-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/usersettings/form.php: user settings style brought in line
+ with other settings pages
+
+2009-02-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/forum_latest.php: removed the dropdown
+ menu from forum latest view on group profiles
+
+ * mod/groups/start.php: allow users to put a widget of their groups on their
+ dashboard as well as profile.
+
+ * mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/profileitems.php: group homepage forum view
+ tweaked
+
+2009-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Fixes #778. Thanks!
+
+2009-02-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/apiadmin/forms/add_key.php,
+ mod/apiadmin/views/default/object/api_key.php, mod/diagnostics/index.php,
+ .../views/default/diagnostics/forms/download.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/groupsform.php,
+ mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ views/default/admin/plugins.php, views/default/admin/site.php,
+ views/default/admin/statistics.php, views/default/admin/user.php,
+ views/default/usersettings/form.php, views/default/usersettings/plugins.php:
+ css classname cleanup, prep for v1.5 default theme
+
+2009-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river2.php, views/default/river/item/list.php: Simple river
+ pagination.
+
+2009-02-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php,
+ .../views/default/riverdashboard/newestmembers.php,
+ .../views/default/riverdashboard/sitemessage.php,
+ .../views/default/riverdashboard/welcome.php: new views for riverdashboard
+
+2009-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php, views/default/css.php,
+ views/default/js/initialise_elgg.php: Moved plugin settings so they're more
+ obvious.
+
+2009-02-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Fixed logic bug in login()
+
+ * engine/schema/upgrades/2009021301.sql, mod/groups/actions/edit.php,
+ mod/groups/languages/en.php, mod/groups/views/default/forms/groups/edit.php,
+ version.php: Closes #761, #718: Group permissions now made much much simpler.
+
+2009-02-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/comments/add.php, views/default/annotation/annotate.php: new
+ annotations activity view
+
+2009-02-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/edit.php,
+ .../views/default/forms/guidtool/format.php,
+ .../views/default/forms/guidtool/import.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/comments/forms/edit.php, views/default/export/entity.php: loose
+ text strings cleaned up, extra container divs added
+
+2009-02-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/index.php: changed the activity view
+
+2009-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/riverdashboard/languages/en.php,
+ .../views/default/riverdashboard/nav.php: Language updates to river dashboard
+
+ * mod/riverdashboard/index.php, .../views/default/riverdashboard/nav.php:
+ Added better content filtering for dashboard
+
+ * mod/riverdashboard/index.php, mod/riverdashboard/start.php,
+ .../views/default/riverdashboard/nav.php: New river dashboard.
+
+ * engine/lib/river2.php: Removing an erroneous system_message call.
+
+ * engine/lib/river2.php: Data sanitisation fix.
+
+2009-02-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/sidebar_boxes.php, views/default/css.php: new
+ layout canvas
+
+2009-02-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Added lazy database connections to delay
+ establishing the db link until actually required - will allow for future
+ lite/static content endpoints that bypass db connections and session
+ creation.
+
+ * engine/lib/elgglib.php: Closes #769: Added short circuit to quit function
+ if entity is null.
+
+ * engine/lib/elgglib.php: Closes #772: $value no longer being incorrectly
+ set when memcache is enabled.
+
+2009-02-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: A correction to the way attributes are set for
+ extenders.
+
+ * languages/en.php: New base translation word: publish
+
+ * engine/schema/mysql.sql: Schema fix
+
+ * engine/lib/entities.php: Clear river items on entity delete
+
+ * engine/lib/river2.php: A minor stabilisation change for river2
+
+ * engine/lib/river2.php: A minor stabilisation change for river2
+
+2009-02-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/kses/kses.php: Refs #561: Removed &amp encoding from kses but
+ retaining script input and entities.
+
+2009-02-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river2.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2009021201.sql, version.php,
+ views/default/river/item/list.php, views/default/river/item/wrapper.php:
+ Alternative river system trial. This is a test.
+
+2009-02-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Avoiding wsod for deleted users
+
+2009-02-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/views/default/activity/offset.php: div cleared after
+ pagination for theme compatability
+
+2009-02-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/activity.php:
+
+ * mod/groups/languages/en.php: Added some missing translations
+
+ * crontab.example: Added links to better documentation
+
+ * engine/lib/input.php: Closes #684: Scratching a particular itch of mine by
+ no longer hiding urls when converting them to active links. This issue has
+ caused many a headache. The url is now preserved but with a <wbr /> inserted
+ after every /, this lets long urls be wrapped without breaking the url.
+
+2009-02-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Removing wildcard from the beginning of 'like'
+ search for user/username
+
+2009-02-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/activity.php: Filtering on type,subtype and event
+
+ * engine/lib/activity.php, engine/lib/river.php, mod/activity/start.php:
+ Relocation of activity database queries to the core.
+
+2009-02-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/plugins.php, admin/plugins/index.php, admin/site.php,
+ admin/site/index.php, admin/statistics.php, admin/statistics/index.php,
+ admin/user.php, admin/user/index.php, engine/lib/admin.php: Cleaned up the
+ admin directory using a pagehandler.
+
+ * languages/en.php, settings/plugins.php: Minor confusion clearups
+
+ * views/default/output/calendar.php, views/default/output/confirmlink.php,
+ views/default/output/email.php, views/default/output/longtext.php,
+ views/default/output/pulldown.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php: Closes #756: htmlentities on all output forms
+
+ * mod/profile/views/default/profile/userdetails.php: XSS filtering on output
+
+ * engine/lib/input.php: Refs #561: Split filtering into separate function
+
+2009-02-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icondirect.php, mod/profile/start.php: Speedy icon bypass.
+
+2009-02-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/views/default/activity/dashboard.php: add a view to site wide
+ activity that can be extended by the wire
+
+2009-02-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Further changes to the notification
+ mechanism.
+
+2009-02-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Closes #757: Removed strtolower as it is not UTF8
+ safe. See http://www.phpwact.org/php/i18n/utf-8 for further discussion.
+
+ * views/default/input/access.php, views/default/input/email.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/pulldown.php: Refs
+ #756: htmlentities on all input views
+
+ * mod/activity/all.php, mod/activity/index.php: Marcus Povey
+ <marcus@elgg.com> * Pagination not displayed when no activity present *
+ OpenDD link for your activity now functioning
+
+2009-02-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/collections.php: Fixed 'all friends'
+ button.
+
+2009-02-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/edit_layout.php: new edit canvas layout
+
+2009-02-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php, mod/groups/views/default/forms/groups/edit.php:
+ Closes #752: Delete move to edit, making it less fatal. Probably needs
+ skinning.
+
+2009-02-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/notification.php,
+ mod/groups/start.php: A single notification is now sent out on forum topic
+ creation. This also contains an update to $entity->countAnnotations, which
+ no longer requires you to specify the annotation type.
+
+ * engine/lib/notification.php: Notification fix: you no longer get
+ notifications on your own content.
+
+ * mod/groups/languages/en.php, mod/groups/start.php: Introducing group forum
+ notifications
+
+2009-02-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #640: Entity disable now recursive
+
+ * mod/groups/actions/delete.php, mod/groups/languages/en.php,
+ mod/groups/start.php: Closes #282, Refs #640: Group deletion enabled. TODO:
+ Suggested enhancement #752
+
+2009-02-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Added the 'annotate' event on entities.
+
+ * .../notifications/subscriptions/collections.php: Minor display fix.
+
+ * mod/notifications/actions/save.php: Group notification settings now save
+ properly
+
+ * engine/lib/relationships.php: Added a new filter to delete relationship
+ functions
+
+2009-02-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #640, #282: Recursive deletion of owned and
+ contained entities.
+
+ * .../views/default/profile/menu/adminlinks.php: Closes #223: Admin options
+ now use output/confirmlink
+
+ * mod/guidtool/actions/delete.php, mod/guidtool/languages/en.php,
+ mod/guidtool/start.php, mod/guidtool/views/default/guidtool/listing.php: Refs
+ #492: Export and delete links next to entity
+
+2009-02-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Extra security for object notifications.
+
+ * mod/notifications/actions/groupsave.php,
+ mod/notifications/actions/save.php, mod/notifications/groups.php,
+ mod/notifications/languages/en.php, mod/notifications/start.php,
+ .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/groupsform.php: Group notifications, all
+ friends notification option
+
+2009-02-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Couple of extra words
+
+ * languages/en.php, views/default/output/confirmlink.php: Added default to
+ confirm link.
+
+2009-02-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/views/default/activity/css.php,
+ mod/activity/views/default/activity/offset.php: pagination on activity stream
+ added
+
+2009-02-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Closes #584: Removed exception, get_user will now
+ return false if GUID exists but is not a user. This probably makes more sense
+ as Exceptions should probably be reserved for major Ooopses. The error in
+ this bug was caused by this exception being thrown and not caught in the
+ access group handler. This may have been the cause of a number of group
+ related / permission related errors.
+
+ * engine/lib/users.php: Refs #584: Fixed error message.
+
+ * engine/lib/entities.php: Closes #720: setCalendarTimeAndDuration() now
+ saves end time correctly.
+
+2009-02-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/members.php: drop down menu removed from
+ members avatars on the group home page. You can change this back by removing
+ 'override' => 'true'
+
+ * mod/groups/languages/en.php,
+ .../views/default/river/object/group/create.php,
+ .../river/object/groupforumtopic/annotate.php,
+ .../river/object/groupforumtopic/create.php,
+ .../river/object/groupforumtopic/update.php,
+ .../default/river/relationship/member/create.php: new river views added to
+ groups
+
+ * mod/activity/views/default/activity/css.php,
+ .../river/user/default/profileiconupdate.php: profile icon added to change
+ river view and css added to activity
+
+ * mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php,
+ mod/activity/views/default/activity/offset.php: small additions to the
+ activity view
+
+ * mod/notifications/manifest.xml: manifest file added to notifications
+
+2009-02-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/languages/en.php,
+ .../notifications/subscriptions/collections.php: Language and UI changes for
+ the notifications plugin.
+
+2009-02-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/notifications/css.php: styles for notifications
+
+2009-02-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../notifications/subscriptions/collections.php: Javascript just about
+ beaten into submission. Viewers of the public SVN, I apologise for clogging
+ up the history view. Here's a joke by way of penance:
+
+ * mod/notifications/actions/save.php: Save action corrections
+
+ * .../notifications/subscriptions/collections.php: An attempt at fixing the
+ toggle issue
+
+ * .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/personal.php: Notification settings. Still
+ not right though ..
+
+ * .../notifications/subscriptions/collections.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/personal.php: More notification settings
+ work.
+
+ * .../notifications/subscriptions/collections.php: Notification icons work
+ properly when selecting / deselecting a friends collection.
+
+ * mod/notifications/languages/en.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/personal.php: Friends collections work
+
+2009-02-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/river_icons/river_icon_pages.gif,
+ _graphics/river_icons/river_icon_thewire.gif: icons for river added
+
+ * mod/activity/views/default/activity/css.php: updated activity css
+
+2009-02-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Added digits to pagehandler rewrite rule. Fixes #741
+
+ * mod/notifications/actions/save.php,
+ .../notifications/subscriptions/collections.php: Friends collections
+ preferences are saved
+
+ * mod/notifications/languages/en.php,
+ .../notifications/subscriptions/collections.php: Collections titles
+
+ * .../views/default/notifications/css.php,
+ .../notifications/subscriptions/collections.php: Access collections toggle
+ beginnings
+
+ * mod/notifications/actions/save.php, mod/notifications/languages/en.php,
+ mod/notifications/start.php, .../views/default/notifications/css.php,
+ .../notifications/settings/usersettings.php,
+ .../notifications/subscriptions/collections.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php,
+ .../notifications/subscriptions/personal.php: Further notification settings
+ changes.
+
+ * mod/notifications/actions/save.php,
+ .../graphics/icon_notifications_email.gif,
+ mod/notifications/languages/en.php, mod/notifications/start.php,
+ .../views/default/notifications/css.php,
+ .../default/notifications/subscriptions/form.php,
+ .../notifications/subscriptions/forminternals.php: Fitter, happier, more
+ productive notifications plugin.
+
+ * engine/lib/notification.php: Belts and braces with notifications
+
+ * engine/lib/access.php: Minor change to access SQL. Fixes #687
+
+ * htaccess_dist: Further htaccess change
+
+ * htaccess_dist: htaccess update
+
+ * mod/profile/start.php: Added profile updates to the notification handler
+
+2009-02-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/json/api/output.php: API results now JSON export properly. Refs #716
+
+ * views/json/canvas/default.php, views/json/export/entity.php,
+ views/json/export/metadata.php, views/json/export/relationship.php,
+ views/json/group/default.php, views/json/messages/exceptions/exception.php,
+ views/json/object/default.php, views/json/pageshells/pageshell.php,
+ views/json/search/entity_list.php, views/json/site/default.php,
+ views/json/user/default.php: JSON feeds now work. Fixes #716
+
+ * engine/lib/access.php, engine/lib/notification.php: Access improvements on
+ granular notifications
+
+ * languages/en.php: DB credentials are no longer unnecessarily revealed on
+ failure to connect. Fixes #723
+
+ * CONTRIBUTORS.txt: Contributors patch
+
+ * mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/languages/en.php:
+ Added plugin hook triggers to reportedcontent plugin. Fixes #725
+
+ * views/default/input/button.php: Added class to input/button. Fixes #618
+
+ * mod/groups/views/default/forum/viewposts.php: Added pagination to group
+ topic posts. Fixes #704
+
+ * entities/index.php: Added unique title tags to the entity browser. Fixes
+ #722
+
+ * CONTRIBUTORS.txt, htaccess_dist, views/default/output/tags.php: Tag URLs
+ now conform to the microformats specification. Fixes #729
+
+ * CONTRIBUTORS.txt: Minor changes to contrib file
+
+2009-02-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: tweaks to the contributors file
+
+2009-02-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/entities.php, engine/lib/group.php,
+ engine/lib/metadata.php, engine/lib/plugins.php, engine/lib/system_log.php,
+ engine/lib/tags.php, engine/lib/users.php, engine/lib/widgets.php,
+ engine/start.php, languages/en.php, mod/apiadmin/actions/generate.php,
+ mod/groups/actions/edit.php, mod/groups/views/default/forms/groups/edit.php,
+ mod/profile/actions/edit.php, mod/profile/views/default/profile/edit.php,
+ mod/reportedcontent/actions/add.php,
+ .../views/default/reportedcontent/form.php: Moves access permissions
+ references over to using the ACCESS_* constants defined in access.php. Refs
+ #687
+
+ * engine/lib/access.php, engine/lib/elgglib.php: Moved the access constant
+ definitions from access.php to elgglib.php, so they'll be loaded initially.
+
+ * engine/lib/users.php: When a new password is generated, the salt is now
+ regenerated first. Fixes #726.
+
+2009-02-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Corrected pagination limit error.
+
+ * engine/lib/elgglib.php, views/default/embed/addcontentjs.php,
+ views/default/embed/js.php: Elgg Javascript update content function
+
+2009-02-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: ticket #728 dealt with
+
+ * mod/groups/views/default/groups/members.php: changed the number of group
+ members to display on group frontpages from 9999 to 10 (This should become
+ configurable)
+
+ * engine/lib/entities.php: patch number #724 applied
+
+2009-02-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/useradd.php, languages/en.php: Users are now notified when an
+ account has been created for them on a site.
+
+2009-02-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed bug in get_entities allowing for multiple
+ subtypes.
+
+2009-02-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/forums/addtopic.php: removed redundant post
+ options
+
+2009-01-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Moving over to use file_exists to check for
+ default entity icons, which should be lighter to load and produce fewer
+ errors.
+
+2009-01-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php: Tentatively downgraded version requirement.
+
+2009-01-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: notify_user now traps exceptions and logs
+ them.
+
+2009-01-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Change to notification object registration
+ function.
+
+2009-01-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/friends/picker.php: friendspicker /
+ collections updated to work with more than 12+ friends per pane
+
+2009-01-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: tweak to banned user
+
+ * views/default/admin/statistics.php: small admin tweak
+
+2009-01-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Added container_guid to ElggEntity->save() and
+ update_entity() functions. Fixes #711
+
+ * engine/lib/elgglib.php: Moving actions into the boot event.
+
+2009-01-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Moved actions out of init files
+
+ * engine/lib/notification.php: Added object notifications plugin hook
+ override.
+
+ * engine/lib/annotations.php: Fixed pagination issue with count annotations
+ function.
+
+2009-01-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Fixes #709: get_language() now fails correctly.
+ @ben Why is this introduced? Surely this is the same as
+ get_current_language()?
+
+2009-01-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Fixing access controls on multi-metadata
+
+2009-01-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Refs #706: Copyright in readme
+
+ * views/default/admin/plugins_opt/plugin.php: Support for people who can't
+ spell
+
+ * _css/css.php, account/forgotten_password.php, account/register.php,
+ actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ actions/admin/plugins/reorder.php, actions/admin/site/update_basic.php,
+ actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ actions/admin/user/resetpassword.php, actions/admin/user/unban.php,
+ actions/comments/add.php, actions/comments/delete.php,
+ actions/email/save.php, actions/entities/delete.php, actions/friends/add.php,
+ actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/editcollection.php, actions/friends/remove.php,
+ actions/import/opendd.php, actions/login.php, actions/logout.php,
+ .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/systemsettings/install.php,
+ actions/user/language.php, actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, actions/usersettings/save.php, actions/widgets/add.php,
+ actions/widgets/reorder.php, actions/widgets/save.php, admin/index.php,
+ admin/plugins/index.php, admin/site/index.php, admin/statistics/index.php,
+ admin/user/index.php, dashboard/index.php, dashboard/latest.php,
+ engine/handlers/action_handler.php, engine/handlers/cron_handler.php,
+ engine/handlers/pagehandler.php, engine/handlers/xml-rpc_handler.php,
+ engine/lib/access.php, engine/lib/actions.php, engine/lib/admin.php,
+ engine/lib/annotations.php, engine/lib/api.php, engine/lib/cache.php,
+ engine/lib/calendar.php, engine/lib/configuration.php, engine/lib/cron.php,
+ engine/lib/database.php, engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/lib/exceptions.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/filestore.php, engine/lib/group.php, engine/lib/input.php,
+ engine/lib/install.php, engine/lib/languages.php, engine/lib/location.php,
+ engine/lib/memcache.php, engine/lib/metadata.php, engine/lib/metastrings.php,
+ engine/lib/notification.php, engine/lib/objects.php, engine/lib/opendd.php,
+ engine/lib/pagehandler.php, engine/lib/pageowner.php, engine/lib/pam.php,
+ engine/lib/ping.php, engine/lib/plugins.php, engine/lib/query.php,
+ engine/lib/relationships.php, engine/lib/river.php, engine/lib/sessions.php,
+ engine/lib/sites.php, engine/lib/social.php, engine/lib/statistics.php,
+ engine/lib/system_log.php, engine/lib/tags.php, engine/lib/users.php,
+ engine/lib/usersettings.php, engine/lib/version.php, engine/lib/widgets.php,
+ engine/lib/xml-rpc.php, engine/lib/xml.php, engine/schema/mysql.sql,
+ engine/start.php, entities/index.php, entities/list.php, friends/add.php,
+ friends/collections.php, friends/edit.php, friends/index.php, friends/of.php,
+ friends/pickercallback.php, htaccess_dist, index.php, install.php,
+ mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php, mod/activity/manifest.xml,
+ mod/activity/opendd.php, mod/activity/start.php,
+ mod/activity/views/default/activity/css.php,
+ mod/activity/views/default/activity/wrapper.php, mod/apiadmin/index.php,
+ mod/apiadmin/languages/en.php, mod/apiadmin/manifest.xml,
+ mod/apiadmin/start.php, mod/crontrigger/manifest.xml,
+ mod/crontrigger/start.php, mod/diagnostics/actions/download.php,
+ mod/diagnostics/index.php, mod/diagnostics/languages/en.php,
+ mod/diagnostics/manifest.xml, mod/diagnostics/start.php,
+ .../views/default/diagnostics/forms/download.php,
+ mod/garbagecollector/languages/en.php, mod/garbagecollector/manifest.xml,
+ mod/garbagecollector/start.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/edit.php, mod/groups/actions/forums/addpost.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletepost.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/actions/join.php,
+ mod/groups/actions/joinrequest.php, mod/groups/actions/leave.php,
+ mod/groups/addtopic.php, mod/groups/all.php, mod/groups/discussions.php,
+ mod/groups/edit.php, mod/groups/edittopic.php, mod/groups/forum.php,
+ mod/groups/graphics/icon.php, mod/groups/groupprofile.php,
+ mod/groups/index.php, mod/groups/invite.php, mod/groups/languages/en.php,
+ mod/groups/manifest.xml, mod/groups/membership.php, mod/groups/new.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/group/group.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ mod/groups/views/default/groups/members.php,
+ mod/groups/views/default/groups/profileitems.php,
+ .../views/default/object/groupforumtopic.php,
+ .../default/river/relationship/member/create.php,
+ mod/groups/views/default/sharing/invite.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php,
+ mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/profileitems.php, mod/guidtool/export.php,
+ mod/guidtool/format_picker.php, mod/guidtool/import.php,
+ mod/guidtool/index.php, mod/guidtool/languages/en.php,
+ mod/guidtool/manifest.xml, mod/guidtool/start.php, mod/guidtool/view.php,
+ .../views/default/forms/guidtool/export.php,
+ .../views/default/forms/guidtool/format.php,
+ .../views/default/forms/guidtool/import.php,
+ mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php,
+ mod/guidtool/views/default/guidtool/profile.php,
+ .../views/default/object/guidtoolwrapper.php, mod/logbrowser/index.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/manifest.xml,
+ mod/logbrowser/start.php, mod/logbrowser/views/default/object/logwrapper.php,
+ mod/logrotate/languages/en.php, mod/logrotate/manifest.xml,
+ mod/logrotate/start.php, mod/profile/actions/cropicon.php,
+ mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/edit.php, mod/profile/actions/editdefault.php,
+ mod/profile/actions/iconupload.php,
+ mod/profile/actions/resetdefaultprofile.php, mod/profile/defaultprofile.php,
+ mod/profile/edit.php, mod/profile/editicon.php, mod/profile/icon.php,
+ mod/profile/index.php, mod/profile/javascript.php, mod/profile/manifest.xml,
+ mod/profile/start.php, mod/profile/views/default/profile/edit.php,
+ .../views/default/profile/editdefaultprofile.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/submenu.php,
+ mod/profile/views/default/profile/userdetails.php,
+ mod/reportedcontent/actions/add.php, mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/index.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/manifest.xml, mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/form.php, mod/river/manifest.xml,
+ mod/river/start.php, .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/edit.php,
+ .../default/widgets/river_widget_friends/view.php,
+ .../actions/email/confirm.php, mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/manifest.xml, mod/uservalidationbyemail/start.php,
+ search/index.php, search/users.php, services/api/rest.php,
+ services/export/handler.php, settings/index.php, settings/plugins.php,
+ settings/statistics.php, settings/user.php, upgrade.php, version.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php, views/default/ajax/loader.php,
+ views/default/annotation/generic_comment.php, views/default/api/output.php,
+ views/default/basic_elements/welcome.php, views/default/canvas/default.php,
+ views/default/canvas/layouts/one_column.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ .../canvas/layouts/two_column_right_sidebar.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/comments/forms/edit.php, views/default/css.php,
+ views/default/export/entity.php, views/default/export/metadata.php,
+ views/default/export/relationship.php, views/default/friends/collection.php,
+ views/default/friends/collections.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/list.php,
+ views/default/friends/picker.php, views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php,
+ views/default/graphics/icon.php, views/default/group/default.php,
+ views/default/input/access.php, views/default/input/button.php,
+ views/default/input/calendar.php, views/default/input/checkboxes.php,
+ views/default/input/email.php, views/default/input/file.php,
+ views/default/input/form.php, views/default/input/hidden.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/reset.php, views/default/input/submit.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php, views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php,
+ views/default/navigation/pagination.php,
+ views/default/navigation/topbar_tools.php,
+ views/default/navigation/viewtype.php,
+ .../notifications/settings/usersettings.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/object/plugin.php, views/default/object/widget.php,
+ views/default/output/calendar.php, views/default/output/checkboxes.php,
+ views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/email.php, views/default/output/iframe.php,
+ views/default/output/longtext.php, views/default/output/pulldown.php,
+ views/default/output/radio.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/url.php, views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/owner_block.php,
+ views/default/page_elements/spotlight.php,
+ views/default/page_elements/title.php,
+ views/default/pageshells/pageshell.php, views/default/river/dashboard.php,
+ views/default/river/relationship/friend/create.php,
+ views/default/river/wrapper.php, views/default/search/gallery.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php,
+ views/default/settings/install.php, views/default/settings/system.php,
+ views/default/site/default.php, views/default/spotlight/default.php,
+ views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php, views/default/user/default.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/default/welcome.php, views/default/welcome/logged_in.php,
+ views/default/welcome/logged_out.php, views/default/widgets/editwrapper.php,
+ views/default/widgets/wrapper.php, views/failsafe/canvas/default.php,
+ views/failsafe/input/button.php, views/failsafe/input/checkboxes.php,
+ views/failsafe/input/form.php, views/failsafe/input/hidden.php,
+ views/failsafe/input/longtext.php, views/failsafe/input/pulldown.php,
+ views/failsafe/input/reset.php, views/failsafe/input/submit.php,
+ views/failsafe/input/text.php, views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/list.php, views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php, views/failsafe/settings/install.php,
+ views/failsafe/settings/system.php, views/foaf/canvas/default.php,
+ views/foaf/pageshells/pageshell.php, views/foaf/user/default.php,
+ views/js/object/default.php, views/js/pageshells/pageshell.php,
+ views/js/user/default.php, views/json/api/output.php,
+ views/json/canvas/default.php, views/json/export/entity.php,
+ views/json/export/metadata.php, views/json/export/relationship.php,
+ views/json/group/default.php, views/json/messages/exceptions/exception.php,
+ views/json/object/default.php, views/json/pageshells/pageshell.php,
+ views/json/search/entity_list.php, views/json/site/default.php,
+ views/json/user/default.php, views/opendd/canvas/default.php,
+ views/opendd/export/entity.php, views/opendd/export/metadata.php,
+ views/opendd/export/relationship.php, views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/site/default.php, views/opendd/user/default.php,
+ views/php/api/output.php, views/php/canvas/default.php,
+ views/php/export/entity.php, views/php/export/metadata.php,
+ views/php/export/relationship.php, views/php/group/default.php,
+ views/php/messages/exceptions/exception.php, views/php/object/default.php,
+ views/php/pageshells/pageshell.php, views/php/search/entity_list.php,
+ views/php/site/default.php, views/php/user/default.php,
+ views/rss/annotation/default.php, views/rss/canvas/default.php,
+ views/rss/group/default.php, views/rss/object/default.php,
+ views/rss/pageshells/pageshell.php, views/rss/user/default.php,
+ views/xml/api/output.php, views/xml/messages/exceptions/exception.php,
+ views/xml/pageshells/pageshell.php, views/xml/xml-rpc/output.php: Refs #706
+
+2009-01-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/notifications/languages/en.php, mod/notifications/start.php: Menu
+ heading changes
+
+ * mod/notifications/actions/save.php: Added save action for the notification
+ subscriptions.
+
+ * mod/notifications/index.php, mod/notifications/languages/en.php,
+ mod/notifications/start.php,
+ .../default/notifications/subscriptions/form.php: Added notification
+ subscriptions page.
+
+ * engine/lib/languages.php: Moved current language detection out into the
+ function get_language();
+
+2009-01-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/js/initialise_elgg.php,
+ views/default/navigation/topbar_tools.php: new cross-browser js toolbar menu
+
+2009-01-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Refs #562: Configuration flag to disable database
+ sessions.
+
+ * languages/en.php: Fixes missing translations
+
+ * version.php: Bumped version to today
+
+2009-01-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../default/usersettings/statistics_opt/online.php: Closes #702: Correct
+ parameters fed to get_system_log
+
+2009-01-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ .../jquery/jquery-easing-compatibility.1.2.pack.js,
+ vendors/jquery/jquery-easing.1.2.pack.js,
+ .../jquery/jquery-ui-personalized-1.5.3.packed.js,
+ .../jquery/jquery-ui-personalized-1.5.packed.js,
+ vendors/jquery/jquery.easing.1.3.packed.js,
+ views/default/js/friendsPickerv1.php, views/default/js/initialise_elgg.php,
+ views/default/page_elements/header.php: jquery framework and avatar menu
+ updated
+
+2009-01-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: A further change to ensure notification
+ messages don't get changed for every method if one method needs to make a
+ change.
+
+ * engine/lib/notification.php: Slight change to notifications.
+
+ * engine/lib/notification.php: Added more granular notification hook
+
+2009-01-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/metadata.php: Closes #701: Blank tags
+ not returned by string_to_tag_array
+
+2009-01-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Granular notification: a start
+
+2009-01-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Relationships no longer double added
+
+2009-01-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Closes #700: If a plugin doesn't physically exist
+ then it is deleted.
+
+ * views/default/usersettings/plugins_opt/plugin.php: User settings
+ translated
+
+ * views/default/admin/plugins_opt/plugin.php,
+ views/default/usersettings/plugins_opt/plugin.php: Reverted.
+
+ * views/default/admin/plugins_opt/plugin.php,
+ views/default/usersettings/plugins_opt/plugin.php: Tools menus now elgg_echo
+ folder name
+
+2009-01-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Introducing a function that orders by sums of
+ an annotation AND limits by a metadata value
+
+2009-01-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php, mod/activity/manifest.xml,
+ mod/activity/opendd.php, mod/activity/start.php,
+ mod/activity/views/default/activity/css.php,
+ mod/activity/views/default/activity/dashboard.php,
+ mod/activity/views/default/activity/wrapper.php,
+ .../views/default/settings/activity/edit.php,
+ mod/activity/views/opendd/activity/dashboard.php: Added Activity stream back
+ in
+
+ * engine/lib/users.php: Closes #699: get_user_by_username now using access
+ controls. Will no longer throw exception when accessing disabled users.
+
+2009-01-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Added toggling for the annotation sum list
+ functions.
+
+ * engine/lib/annotations.php: Added to and fixed the list by annotation
+ count functions.
+
+ * engine/lib/annotations.php: Fix for previous
+
+ * engine/lib/annotations.php: Added the missing 'group by' clause to the get
+ annotations by sum SQL query.
+
+2009-01-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Added user to user settings
+
+ * engine/lib/plugins.php: Refs #697: Now using plugin hook so one can do
+ live validation of values
+
+ * engine/lib/widgets.php: Closes #698: Typo corrected - nice spot!
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ engine/lib/plugins.php: Closes #697: Events triggered when plugin settings
+ are updated.
+
+2009-01-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fix for previous.
+
+ * engine/lib/annotations.php: Added annotation sum functions
+
+2009-01-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php: Closes #691: Should have been
+ is_memcache_available()
+
+2009-01-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/save.php, actions/user/language.php, actions/user/name.php:
+ Closes #689: Email now only changed if it is different than the one
+ registered, also a number of other settings changed in this way.
+
+ * actions/widgets/add.php, actions/widgets/reorder.php: Widget save errors
+ now use correct message box
+
+2009-01-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: Elgg version info now present in
+ headers.
+
+ * mod/crontrigger/manifest.xml, mod/crontrigger/start.php: Closes #672: Poor
+ mans cron plugin enabled. This triggers events according to page load.
+
+ * engine/lib/elgglib.php:
+
+ * engine/lib/elgglib.php: Added shutdown, system event. Refs #672
+
+ * mod/groups/actions/forums/edittopic.php: Editing post no longer takes
+ ownership
+
+ * actions/email/save.php: Refs #641: Email changer now prevents changing to
+ the same as another user.
+
+2009-01-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php, languages/en.php: Closes #669: Logins rate
+ limited. Accounts are limited to 5 fails in a 5 minute period, meaning an
+ attacker can try one password per minute.
+
+2009-01-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php: Comment correction.
+
+ * engine/lib/elgglib.php: Fix for template handler override.
+
+2009-01-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Closes #676: Entity subtables now deleted on failed
+ connections.
+
+2009-01-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Better trigger_plugin_hook documentation.
+
+2009-01-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/resetpassword.php, engine/lib/users.php: Closes #675:
+ Salt changed during password reset
+
+ * engine/lib/sessions.php:
+
+2009-01-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Tag updates.
+
+2009-01-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: Added rel="nofollow" rss and
+ opendd links in ownerblock
+
+2009-01-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/makeadmin.php, actions/admin/user/removeadmin.php,
+ languages/en.php, .../views/default/profile/menu/adminlinks.php: Closes #240:
+ It is now possible to downgrade an admin user.
+
+ * engine/lib/users.php: Closes #560: Pagination parameters added.
+
+ * mod/groups/languages/en.php, .../views/default/object/groupforumtopic.php:
+ Closes #544: Logged out view now shows correct dates, also tidied up some
+ translation issues.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php: Minor variable name and
+ comment change.
+
+ * actions/admin/user/unban.php, engine/lib/api.php, engine/lib/sessions.php,
+ engine/lib/users.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2009010901.sql, languages/en.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/listing.php,
+ .../views/default/profile/menu/adminlinks.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/userdetails.php, version.php: Closes #668:
+ Banning now works through a flag in the users_entity table. Database upgrade
+ required. * Added ElggUser::isBanned(); * Added 'banned' column to
+ users_entity * Modified ban() and unban() * Modified pam functions to check
+ $user->isBanned() * Modified login() to check $user->isBanned() * Modified
+ sessions_init() to check isBanned() and destroy session accordingly *
+ Modified profile views to highlight banned users and prevent menus for
+ non-admin users.
+
+2009-01-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php: Closes #588: Don't remember adding this
+ check... but anyway, double entries regression fixed.
+
+ * engine/lib/entities.php: Minor error message improvement
+
+ * engine/lib/entities.php: Added extra belts and braces check (minor)
+
+ * engine/lib/entities.php: Added extra belts and braces check (minor)
+
+ * engine/lib/users.php: Refs #668: Building on [2546] and providing ban and
+ unban functions. Later these will be replaced with "banning" functions.
+
+ * mod/groups/views/default/forms/groups/edit.php: Closes #664: Defaults
+ added to radio buttons
+
+ * engine/lib/statistics.php: Limit max display of active users to 10.
+
+ * actions/admin/user/ban.php, engine/lib/users.php: Refs #668, #640: Cleaner
+ interface provided for banning.
+
+ * actions/admin/user/ban.php, engine/lib/entities.php, engine/lib/users.php:
+ Refs #640: Renamed and moved entities.php:disable_entities to
+ user.php:disable_user_entities
+
+ * engine/lib/entities.php: Delete replaced by disable in disable_entity
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2009010801.sql,
+ version.php: Closes #666: Added some extra indexes
+
+ * languages/en.php, mod/uservalidationbyemail/languages/en.php: Closes #546:
+ Translation moved
+
+ * engine/lib/annotations.php: Closes #663: Added access checks on entity on
+ get_entities_from_annotation and count functions.
+
+ * engine/lib/metadata.php: Closes #667: Minor tweak, an e should be an m
+
+2009-01-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php,
+ .../default/widgets/group_members_widget/view.php: Closes #410: Pagination
+ parameter now passed in relationship list view.
+
+ * engine/lib/access.php, mod/groups/groupprofile.php,
+ mod/groups/languages/en.php: Closes #286: Group access restrictions issue
+ fixed, modified from patch supplied with #315
+
+ * views/failsafe/settings/system.php: Refs #622: Missing command from
+ failsafe view
+
+ * mod/groups/views/default/groups/forum_latest.php: Closes #660: Minor text
+ tweak
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ languages/en.php, views/default/account/forms/login.php,
+ views/default/settings/system.php: Closes #662: https on login.
+
+2009-01-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Closes #587: The area of code in
+ question hasn't been coded as defencively as it could have been.
+
+ * engine/lib/annotations.php: Fixes #648: Copy and paste error corrected.
+
+2009-01-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: * Added addRelationship to ElggEntity... bit of
+ an omission!
+
+ * htaccess_dist: Closes #656: Disabled mod_deflate for all actions so that
+ active downloads will no longer be double compressed.
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php,
+ engine/lib/sites.php: Fixes #655, Refs #628: Install now working with correct
+ event chain (#628).
+
+2009-01-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/add.php: Closes #649: Added checking to report when friend
+ add fails.
+
+2009-01-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: bug #634 fixed
+
+ * mod/groups/views/default/groups/forum_latest.php: lang tweak in group
+ forums
+
+ * mod/groups/actions/edit.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/forum_latest.php: groups owners can choose if
+ they want pages/files/forum enabled or not. Still a little more to do, this
+ is just the beginning code.
+
+ * mod/groups/languages/en.php: missing group lang items added
+
+2008-12-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php, engine/settings.example.php: Closes #579:
+ Allows configurable option $CONFIG->broken_mta = true. If set, this uses "\n"
+ instead of "\r\n" in email headers.
+
+2008-12-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Closes #643: Confirmed bug, applied fix as
+ suggested.
+
+ * views/default/page_elements/owner_block.php: Closes #633: User name in
+ owner block is now link. This may require additional skinning.
+
+ * engine/lib/plugins.php: Closes #608: Placing a file called "disabled" in
+ mod now disables all plugins, allowing easier recovery of an elgg site with
+ screwed up modules.
+
+ * views/default/input/button.php: Closes #519: Typo. Well spotted.
+
+ * languages/en.php: Closes #500
+
+ * mod/reportedcontent/languages/en.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php: Closes #504
+
+2008-12-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Closes #396: Form should probably not be permitted
+ on input.
+
+2008-12-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Closes #628: Event change now terminates on false.
+ Nice spot :)
+
+2008-12-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/updateclient/index.php, mod/updateclient/languages/en.php,
+ mod/updateclient/manifest.xml, mod/updateclient/start.php,
+ .../views/default/settings/updateclient/edit.php: Removed upgrade client
+ since it doesn't really matter.
+
+ * README.txt, version.php: Ticked up version number
+
+2008-12-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008120501.sql: Fixes #615
+
+2008-12-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php: Fixes to user banning (action side).
+
+ * engine/lib/elgglib.php: Fixes to user banning.
+
+2008-12-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Prototype view caching
+
+ * engine/lib/notification.php: Closes #597: GUID must now be non-zero for
+ messages to be sent
+
+2008-12-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: unused rule removed #583
+
+2008-12-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008111901.sql,
+ engine/schema/upgrades/2008120501.sql, version.php: Closes #611: Made name
+ field longer
+
+2008-12-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Closes #421 : Catches the DB Exception, so
+ hopefully this will prevent the error from showing up in the future :)
+
+ * languages/en.php, views/default/friends/collectiontabs.php: Closes #501
+
+ * engine/lib/users.php, mod/uservalidationbyemail/start.php: Closes #609
+
+ * engine/schema/upgrades/2008112002.sql: Fixed update script
+
+ * htaccess_dist: ETag support
+
+2008-12-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/forum_latest.php: latest group discussion
+ bug fixed
+
+2008-12-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/location.php: Some location tweaks
+
+ * engine/lib/users.php: Closes #550: Code metadata now moved to private
+ storage
+
+ * mod/groups/membership.php: Closes #604
+
+2008-11-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/radio.php: Improved radio button value retention
+
+ * views/default/input/checkboxes.php: Improved checkbox value retention
+
+2008-11-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/metatags.php: FOAF header added to
+ profile
+
+ * views/foaf/user/default.php: Foaf ident on mailbox for friends
+
+ * engine/schema/upgrades/2008112601.sql: Closes #571: Widgets now use
+ private store for settings
+
+ * engine/lib/entities.php, engine/lib/widgets.php: Closes #571: Widgets now
+ use private store for settings
+
+ * engine/lib/opendd.php:
+
+2008-11-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/location.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008112501.sql, version.php: Hook for future geocoding
+ library added.
+
+ * engine/schema/mysql.sql:
+
+2008-11-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Closes #580: Fixed tagging trim and strtolower
+
+2008-11-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/calendar.php: Refs #452: Basic entity listing functions. Needs
+ canvas.
+
+ * engine/lib/users.php: Closes #554: Validation procedure now correctly
+ screening for ascii space
+
+2008-11-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php:
+
+ * engine/lib/sessions.php: Added site secret to fingerprint to make it
+ harder to guess
+
+ * engine/lib/sessions.php, engine/lib/users.php: Fixes #548: Introducing
+ set_last_login($user_guid). Called from login(), but call from any
+ authentication code where appropriate.
+
+ * engine/lib/calendar.php, engine/lib/entities.php: Refs #452: Calendar
+ interface on entities
+
+ * engine/lib/entities.php: Introducing get_entities_from_private_setting();
+
+2008-11-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php, mod/groups/topicposts.php, upgrade.php: No need to
+ trigger the init event on upgrade.
+
+2008-11-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/upgrades/2008112001.sql,
+ engine/schema/upgrades/2008112002.sql, version.php: Refs #569, #570, #571:
+ Update script for both users and plugins plugin settings
+
+ * engine/schema/upgrades/2008111901.sql,
+ engine/schema/upgrades/2008112001.sql, version.php: Migrate plugin settings
+ from plugin to new settigns store.
+
+ * engine/lib/entities.php, engine/lib/plugins.php: Refs #571. Fixes #569,
+ #570: * Plugin functions set to use private data store. * Fixed some db
+ queries * Modified plugin class overriding get/set functions
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008111901.sql: Refs #569,
+ #570, #571: Minor database schema errors corrected
+
+ * engine/lib/entities.php: Refs #569, #570, #571: Corrected and optimised
+ insert query
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008111901.sql: Refs #569,
+ #570, #571: Minor database schema errors corrected
+
+ * engine/lib/entities.php: Refs #569, #570, #571: dbprefix not prefix;
+
+ * engine/lib/entities.php: Refs #569, #570, #571: Added
+ remove_all_private_settings()
+
+ * engine/lib/entities.php: Refs #569, #570, #571: Added
+ get_all_private_settings();
+
+ * engine/lib/metadata.php: Fixes #531: Access permissions enforced
+
+2008-11-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/group.php, engine/lib/objects.php, engine/lib/relationships.php,
+ engine/lib/sites.php, engine/lib/users.php, views/default/export/entity.php,
+ views/json/export/entity.php, views/json/export/metadata.php,
+ views/json/export/relationship.php, views/php/export/entity.php,
+ views/php/export/metadata.php, views/php/export/relationship.php: Fixes #568:
+ Exportable code now inclusive not exclusive. * Added extra function
+ Exportable interface * OpenDD export modified * PHP & JSON export views
+ modified * Default export view will still show all data if you are logged in
+ as admin (since this view is used by the guidtool)
+
+2008-11-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/upgrades/2008111901.sql: Introducing the new private
+ settings table.
+
+2008-11-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/calendar.php: Added get notable enities on relationship
+
+ * engine/lib/calendar.php: Added get notable enities on metadata
+
+ * engine/lib/calendar.php: Added get notable enities
+
+2008-11-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Closes #557
+
+2008-11-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * dashboard/index.php, engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/entities.php, engine/lib/extender.php, engine/lib/filestore.php,
+ engine/lib/group.php, engine/lib/languages.php, engine/lib/metadata.php,
+ engine/lib/notification.php, engine/lib/plugins.php, engine/lib/sessions.php,
+ engine/lib/tags.php, engine/lib/users.php, engine/lib/usersettings.php: *
+ Introducing get_loggedin_user() and get_loggedin_userid() * ACLs now using
+ get_loggedin_user* * Some logic cleaned up * Some "Undefined..." messages
+ cleaned up
+
+ * views/default/search/entity_list.php:
+
+ * views/default/search/entity_list.php: Removed some "Undefined" messages
+
+ * engine/lib/elgglib.php: Removed some "Undefined" messages
+
+ * views/default/input/access.php, views/default/input/button.php,
+ views/default/input/submit.php: Removed some "Undefined" messages
+
+ * mod/profile/views/default/profile/userdetails.php: Removed some
+ "Undefined" messages
+
+ * views/default/canvas/layouts/widgets.php: Removed some "Undefined"
+ messages
+
+ * engine/lib/elgglib.php: "Undefined" messages tidied up
+
+ * engine/lib/metastrings.php: "Undefined" messages tidied up
+
+ * engine/lib/river.php: "Undefined" messages tidied up
+
+ * engine/lib/sessions.php:
+
+ * engine/lib/sessions.php: * Candidate for initial ElggSession magic class *
+ Session now properly cleared on init and logout - this has knock on effect
+ that you can no longer assume that $_SESSION['id'] or 'guid' will be integer,
+ making it necessary to cast.
+
+ * engine/lib/admin.php: Minor tidying of code
+
+2008-11-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Experimental ElggCache
+
+2008-11-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php:
+
+ * engine/lib/cache.php: No longer blanks all caches when clearing
+
+ * engine/lib/cache.php: Closes #543
+
+2008-11-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Ifdef expires
+
+ * htaccess_dist: Minor tweaks to mod_gzip config. Note that gzip can't
+ compress some things due to the way that the apache 1.3 stack works
+
+ * htaccess_dist: Simplified GZIP
+
+ * htaccess_dist: Mod deflate support added
+
+ * htaccess_dist: Turned on mod_gzip if available
+
+ * htaccess_dist: Added default expiry
+
+ * mod/groups/graphics/icon.php: Expires header added to group icons
+
+2008-11-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icon.php: Content length on images
+
+ * mod/groups/graphics/icon.php: Content length on images
+
+ * _css/css.php, engine/lib/elgglib.php: Content length headers on JS and css
+
+ * engine/lib/elgglib.php: Javascript now correctly marked as cacheable
+
+ * _css/css.php: Fixes #541: CSS Now not being cached. Error is being caused
+ somewhere in the elgg framework which prevents pragma caching from working...
+ not sure what
+
+ * languages/en.php: Refs #520
+
+ * languages/en.php, views/default/friends/collections.php: Closes #501
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/groups/forum_latest.php: Closes #507
+
+ * engine/lib/memcache.php: Tidied.
+
+2008-11-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Profiling now showing queries executed before
+ debug flag being set
+
+ * engine/lib/metadata.php: Refs #529: Experimental memcaching for metadata
+
+ * engine/lib/elgglib.php: Fixed datalists error
+
+ * engine/lib/elgglib.php: Refs #529: Experimental memcaching on datalists
+
+ * engine/start.php: Removing unnecessary call to datalists
+
+ * index.php: Fixes #530
+
+ * engine/lib/metastrings.php: Refs #529: Experimental caching of metastrings
+
+ * engine/lib/entities.php: Refs #529: Experimental object level caching
+
+2008-11-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Reverted limited caching back to array since
+ caching objects don't work so well for these.
+
+ * engine/lib/elgglib.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008110601.sql, version.php: datalists now has primary
+ key, datalist set function optimised
+
+ * engine/lib/elgglib.php: Not possible to get any more, so tell them so
+
+ * engine/lib/users.php: Last action query update delayed to avoid
+ invalidating query cache unnecessarily.
+
+ * engine/lib/database.php: * Database functions optimised and centralised a
+ bit * Caching now caches queries which return no data * Introducing
+ execute_delayed_query family for executing queries AFTER the page has loaded.
+
+ * engine/lib/cache.php: isset fixes
+
+ * engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/relationships.php: Some tidying of objects and opendd export
+
+ * engine/lib/cache.php, engine/lib/memcache.php: Added test to see if
+ memcache is available.
+
+ * engine/lib/cache.php, engine/lib/memcache.php: Class hierachy changed to
+ separate shared memory caching
+
+2008-11-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php:
+
+ * engine/lib/river.php: Minor extension to river
+
+ * engine/lib/memcache.php: Minor tweak
+
+ * engine/lib/river.php: Slight rejig in the way the river works
+
+ * engine/lib/elgglib.php: Extends elgg_view_tree to support other view
+ types.
+
+ * engine/lib/cache.php: Added "add" method to cache only if it doesn't exist
+ already.
+
+ * engine/lib/database.php: Revert use of memcache for database query cache
+
+ * engine/lib/memcache.php: Changed default timeout
+
+2008-11-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/memcache.php: Removed cache clearing for now.
+
+ * engine/lib/database.php, engine/lib/memcache.php: More tweaks
+
+ * engine/lib/memcache.php: Experimental memcache support
+
+ * engine/lib/memcache.php, languages/en.php: Closes #516: Experimental
+ memcache support
+
+ * engine/settings.example.php: Installation notes
+
+ * languages/en.php: Refs #514: Memcache error messages
+
+ * engine/settings.example.php: Refs #514: Memcache settings
+
+ * engine/lib/cache.php: Refs #514 : Using memcache if available
+
+ * engine/settings.example.php: Refs #514
+
+ * engine/lib/memcache.php: First draft memcache object. No testing yet
+ carried out, submitted 'cos I'm moving computers.
+
+ * engine/lib/cache.php:
+
+ * engine/lib/cache.php, engine/lib/database.php, engine/lib/entities.php:
+ Moved caching to function so it can be easily replaced
+
+2008-11-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Refs #514: Entity and subtype caching
+
+ * engine/lib/cache.php: Minor tweaks
+
+ * engine/lib/cache.php: back to private
+
+ * engine/lib/cache.php: Initialisation correct
+
+ * engine/lib/database.php: Database using new memory cache object
+
+ * engine/lib/api.php, engine/lib/cache.php: * ElggCache interface improved *
+ ElggStaticVariableCache introduced as a placeholder for more advanced
+ caching.
+
+ * engine/lib/database.php: Experimental database query caching, please
+ report problems asap.
+
+ * engine/lib/calendar.php: Stub added refs #452
+
+ * engine/lib/database.php: Experimental database query caching, please
+ report problems asap.
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008110301.sql,
+ version.php: Some missing keys added.
+
+ * engine/lib/access.php, engine/lib/annotations.php,
+ engine/lib/configuration.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/group.php, engine/lib/objects.php,
+ engine/lib/query.php, engine/lib/relationships.php, engine/lib/sites.php,
+ engine/lib/users.php: Minor tweaks 'cos case does matter...
+
+2008-11-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/object/groupforumtopic.php: Minor style fix.
+
+ * mod/groups/discussions.php, .../views/default/object/groupforumtopic.php:
+ Latest discussion fix
+
+2008-10-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Closes #378: Fixed incorrect relationship direction.
+
+ * engine/lib/notification.php: Closes #446: * Errant \r\n and \r chars
+ coverted to \n. * newlines stripped from subject headers. * Lines starting
+ with From are changed to >From
+
+ * engine/handlers/cron_handler.php, mod/garbagecollector/start.php: Changed
+ cron to use output buffering (letting you simply echo rather than needing to
+ pass variables around)
+
+ * mod/groups/views/default/forms/groups/edit.php: Closes #461: Localisations
+ added
+
+ * mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php: Refs #494: GUID listed
+
+ * mod/garbagecollector/start.php: Added system, gc plugin hook to garbage
+ collector
+
+ * engine/lib/notification.php: Closes #488: This is indeed a typo... well
+ spotted :)
+
+ * engine/lib/database.php, engine/lib/metastrings.php,
+ mod/garbagecollector/start.php: Closes #493: Moved database queries out of
+ module and in to core in line with best practice.
+
+2008-10-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/groupprofile.php: Closes #486
+
+2008-10-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * README.txt: Version number fail.
+
+ * version.php: Elgg 1.1 final.
+
+ * version.php: Further version update
+
+ * README.txt: Version number change in the readme file.
+
+2008-10-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: profile block layout issue in IE7 fixed
+
+2008-10-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Version number change
+
+ * languages/en.php: A better description of the RESTful API
+
+2008-10-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Reverted database access permission caching.
+
+2008-10-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: Group topic error message
+
+ * _graphics/upgrader.gif, upgrade.php, views/default/settings/upgrading.php:
+ Replacement upgrade notifier
+
+ * INSTALL.txt, UPGRADE.txt: Slight update to crontab instructions
+
+ * mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php, mod/activity/manifest.xml,
+ mod/activity/start.php, mod/activity/views/default/activity/dashboard.php,
+ mod/activity/views/default/activity/wrapper.php,
+ .../views/default/settings/activity/edit.php: Farewell, activity, we hardly
+ knew ye.
+
+2008-10-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * INSTALL.txt, UPGRADE.txt: Modification to install and upgrade text files
+ to include details about the crontab
+
+2008-10-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/settings/upgrading.php: Added upgrading screen
+
+ * _graphics/upgrader.gif, languages/en.php, upgrade.php: Visual upgrader.
+
+2008-10-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/manifest.xml, mod/apiadmin/manifest.xml,
+ mod/diagnostics/manifest.xml, mod/garbagecollector/manifest.xml,
+ mod/groups/manifest.xml, mod/guidtool/manifest.xml,
+ mod/logbrowser/manifest.xml, mod/logrotate/manifest.xml,
+ mod/profile/manifest.xml, mod/river/manifest.xml,
+ mod/updateclient/manifest.xml, mod/uservalidationbyemail/manifest.xml:
+ manifest files sync'ed
+
+2008-10-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php, views/default/css.php: persistent
+ login checkbox styled
+
+2008-10-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Menu link text change, to be more descriptive
+
+2008-10-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php, mod/profile/views/default/profile/userdetails.php:
+ Hide 'about me' on custom profiles
+
+2008-10-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Annotation pagination is now corrected where more
+ than 10 items are being displayed at once.
+
+2008-10-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js, javascript/initialise_elgg.js: remove js,
+ moved into views
+
+ * javascript/initialise_elgg.js, views/default/css.php,
+ views/default/js/initialise_elgg.php: updates for v1.1, css cleanup, removal
+ of redundant classes, redundant js removed
+
+2008-10-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php, mod/logrotate/start.php: Logrotate and archive
+ containing offset. Table still created as $now but containing < $now-period.
+
+2008-10-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/garbagecollector/languages/en.php, mod/garbagecollector/manifest.xml,
+ mod/garbagecollector/start.php,
+ .../default/settings/garbagecollector/edit.php: Introducing the Elgg garbage
+ collector.
+
+2008-10-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: layout bug when not group owner
+
+2008-10-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/toolbox.php: Removed the toolbox.
+
+ * views/default/page_elements/header.php: Removed needless comment
+
+2008-10-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: added additional styles for code, pre, blockquote,
+ dl, dt etc
+
+2008-10-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php: Views are now more
+ granular.
+
+2008-10-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, languages/en.php,
+ views/default/account/forms/login.php: Closes #306
+
+2008-10-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/messages/list.php: messages in failsafe mode moved to
+ inline ones - so they don't obscure text below
+
+2008-10-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../river/annotation/generic_comment/create.php: Hoiking out the generic
+ comment view again. Needs to be rethought.
+
+ * languages/en.php, .../river/annotation/generic_comment/create.php:
+ Committed a generic comment view.
+
+2008-10-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/social.php, languages/en.php: Closes #440
+
+ * engine/lib/access.php: Flags to prevent queries being run multiple times.
+
+ * engine/lib/access.php: Removed spurious notice
+
+ * languages/en.php, views/default/admin/plugins_opt/plugin.php: Closes #476:
+ Well spotted.
+
+2008-10-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: additional dicv added to
+ owner block for theme purposes
+
+2008-10-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * crontab.example:
+
+ * mod/groups/languages/fr.php, mod/groups/languages/it.php,
+ mod/groups/languages/ru.php, mod/groups/languages/th.php,
+ mod/groups/languages/zh.php: REMOVED LANGUAGE FILES FROM CORE. This is due to
+ a stupid and frustrating legal reason.
+
+ * languages/de.php, languages/es.php, languages/fr.php, languages/it.php,
+ languages/ru.php, languages/th.php, languages/zh.php,
+ mod/activity/languages/ru.php, mod/apiadmin/languages/ru.php,
+ mod/diagnostics/languages/fr.php, mod/diagnostics/languages/it.php,
+ mod/diagnostics/languages/ru.php, mod/diagnostics/languages/th.php,
+ mod/diagnostics/languages/zh.php, mod/guidtool/languages/it.php,
+ mod/guidtool/languages/ru.php, mod/guidtool/languages/th.php,
+ mod/guidtool/languages/zh.php, mod/logbrowser/languages/fr.php,
+ mod/logbrowser/languages/it.php, mod/logbrowser/languages/ru.php,
+ mod/logbrowser/languages/th.php, mod/logbrowser/languages/zh.php,
+ mod/reportedcontent/languages/fr.php, mod/reportedcontent/languages/it.php,
+ mod/reportedcontent/languages/ru.php, mod/reportedcontent/languages/th.php,
+ mod/reportedcontent/languages/zh.php, mod/river/languages/fr.php,
+ mod/river/languages/it.php, mod/river/languages/ru.php,
+ mod/river/languages/th.php, mod/river/languages/zh.php,
+ mod/updateclient/languages/fr.php, mod/updateclient/languages/it.php,
+ mod/updateclient/languages/ru.php, mod/updateclient/languages/th.php,
+ mod/updateclient/languages/zh.php,
+ mod/uservalidationbyemail/languages/ru.php: REMOVED LANGUAGE FILES FROM CORE.
+ This is due to a stupid and tedious legal reason.
+
+ * mod/logrotate/languages/en.php, mod/logrotate/manifest.xml,
+ mod/logrotate/start.php, .../views/default/settings/logrotate/edit.php:
+ Closes #215: Log rotation added.
+
+2008-10-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/leave.php, mod/groups/start.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ .../views/default/object/groupforumtopic.php: Removing WSOD errors in groups
+
+2008-10-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php: Refs #215: Minor tweak to logic
+
+2008-10-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Hopefully slightly friendlier token mismatch errors.
+
+2008-10-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php: Refs #215: System hook for archiving log. Cron
+ yet to be added.
+
+ * .../views/default/profile/menu/adminlinks.php: Closes #448: Functionality
+ was present, but was lacking interface. Interface provided.
+
+ * views/default/object/default.php: Closes #460: Good spot, thanks for the
+ contribution!
+
+ * languages/en.php: Closes #473: Good spot
+
+2008-10-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/register.php, actions/register.php, engine/lib/users.php,
+ views/default/account/forms/register.php: The friend invite infrastructure is
+ now secure.
+
+2008-10-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/languages/ru.php:
+
+ * mod/activity/languages/ru.php: Closes #469: Thankyou for the translation!
+
+2008-10-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/register.php, register.php: Further additions to the registration
+ form.
+
+ * views/default/account/forms/register.php: Added friend guid handling to
+ the registration form.
+
+ * engine/lib/users.php: Added the ability to add a user to a user's friends
+ list on registration.
+
+ * actions/register.php: Added the ability to add a user to a user's friends
+ list on registration.
+
+ * engine/lib/entities.php: Revert.
+
+ * engine/lib/entities.php: Improvements for container overrides.
+
+2008-10-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/radio.php: Fix for input/radio where keys aren't
+ specified
+
+2008-10-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/usersettings/plugins_opt/plugin.php: Minor tweaks to tools
+ settings
+
+ * languages/en.php: Added reply
+
+2008-10-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Small language additions for open and close.
+
+2008-10-22 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/shout_speech_bubble.gif: removed and added to thewire plugin
+
+2008-10-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cron.php: Better default forward
+
+2008-10-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: Fixed typo! Well spotted,
+ @notomodungwa
+
+2008-10-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * crontab.example, engine/lib/cron.php: Increasing sub-hour cron granularity
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008102101.sql: Removed
+ unnecessary column
+
+ * engine/lib/sessions.php: Closes #453 and #463: Completed work. Sessions
+ now stored in database.
+
+ * engine/lib/sessions.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008102101.sql: Semi-working session code. Still won't
+ permit logging in, commented out until there is time to fix. Problem seems
+ to be based around the action_gatekeeper() and the values set for the
+ __elgg_session. Removing this component from the key causes the token to be
+ valid. My feeling is that the session is not being saved or loaded
+ correctly.
+
+2008-10-21 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php: #458 fixed - IE7 conditional
+ statement bug
+
+2008-10-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008102101.sql, version.php: Database session code.
+ IMPORTANT NOTE: The trigger for this is commented out, so old session code
+ is used. There are serious problems with using the new code since it causes a
+ chicken and egg problem with the upgrade script.
+
+ * engine/lib/group.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Closes #457: Now returns $guid on success, false on
+ fail
+
+ * engine/lib/sites.php, languages/en.php: Added safety rail to prevent
+ disabling/deleting of currently viewed site.
+
+2008-10-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/checkboxes.php: Output/checkboxes now defers to
+ output/tags rather than output/text; much more sensible.
+
+ * engine/lib/input.php: The input filter now deals with two-dimensional
+ input arrays.
+
+2008-10-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apiadmin/views/default/object/api_key.php:
+
+ * mod/apiadmin/views/default/object/api_key.php: Minor tweaks to avoid
+ breaking non-admin css
+
+2008-10-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Important fix for deleted plugins.
+
+2008-10-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/checkboxes.php, views/default/output/radio.php:
+ Default output fields for radio and checkboxes
+
+ * search/users.php: Fixed double layout issue
+
+2008-10-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/usersettings.php, languages/en.php, settings/index.php,
+ settings/plugins.php, settings/statistics.php, settings/statistics/index.php,
+ settings/user.php, settings/user/index.php, views/default/object/plugin.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php: Closes #335: Marcus Povey
+ : * Per user tools settings now present again (only displays if there are
+ settings present AND the plugin is enabled - needs skinning accordingly) *
+ Re-jigged the settings code to behave like a proper page handler. * Minor
+ tweak to language
+
+ * engine/lib/system_log.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008101701.sql, version.php: Changes to access any
+ system log code. Introducing owner guid on items which is necessary for
+ access control. Requires upgrade.php to be run
+
+2008-10-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php, views/default/css.php:
+ activity stream basic style applied, and plugin reorder links adjusted
+
+2008-10-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: widget gallery more info spacing fixed
+
+2008-10-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Minor language tweak.
+
+ * actions/admin/plugins/reorder.php, admin/plugins/index.php,
+ engine/lib/plugins.php, languages/en.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php: You can now reorder plugins.
+
+2008-10-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php: gap in user menu removed
+
+2008-10-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/activity/all.php, mod/activity/friends.php, mod/activity/index.php,
+ mod/activity/languages/en.php, mod/activity/manifest.xml,
+ mod/activity/start.php, mod/activity/views/default/activity/dashboard.php,
+ mod/activity/views/default/activity/wrapper.php,
+ .../views/default/settings/activity/edit.php: Initial activity view. Missing
+ functionality: comments, tabs and drill down ability.
+
+2008-10-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php: Improved online users stats so that more than
+ 10 get displayed
+
+2008-10-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Moving internal function out of elgg_view_tree()
+ since this caused problems
+
+ * engine/lib/configuration.php: Closes #438
+
+ * engine/lib/river.php:
+
+ * engine/lib/river.php, engine/lib/system_log.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008101601.sql, version.php: Closes #442: Requires
+ schema upgrade. Side effect - friends activity rivers will be blanked.
+
+ * engine/lib/river.php: River performance tweak
+
+2008-10-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/ru.php: Committing groups translation
+
+ * .../notifications/settings/usersettings.php: Notification methods now
+ better translated
+
+ * languages/ru.php: Closes #433: Merged changes from trac and email
+ submissions. Thanks for all submissions!
+
+ * languages/ru.php: Initial core russian translation
+
+ * mod/apiadmin/languages/ru.php, mod/diagnostics/languages/ru.php,
+ mod/guidtool/languages/ru.php, mod/logbrowser/languages/ru.php,
+ mod/reportedcontent/languages/ru.php, mod/river/languages/ru.php,
+ mod/updateclient/languages/ru.php,
+ mod/uservalidationbyemail/languages/ru.php: Refs #433: Russian translations
+ for core plugins
+
+2008-10-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: view link added to en.php
+
+2008-10-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/social.php: Removed an annoying variable cast that was
+ destroying everything.
+
+ * engine/lib/social.php: The word blacklist for filter_string is now loaded
+ on init.
+
+2008-10-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Edit profile form modified
+
+2008-10-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php:
+
+ * mod/profile/actions/deletedefaultprofileitem.php,
+ mod/profile/actions/editdefault.php,
+ mod/profile/actions/resetdefaultprofile.php, mod/profile/defaultprofile.php,
+ mod/profile/start.php, .../views/default/profile/editdefaultprofile.php:
+ Closes #235: Simple profile editor in place
+
+2008-10-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/friends_picker_arrow_left.gif,
+ _graphics/friends_picker_arrow_right.gif,
+ _graphics/friends_picker_arrows.gif, _graphics/gallery_back_icon.gif,
+ _graphics/gallery_back_icon_on.gif, views/default/css.php: Friends picker
+ arrows combined into one resource, and updated with hover effect. Redundant
+ image gallery icons removed.
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php:
+
+ * engine/lib/elgglib.php: Catching error on datalists
+
+2008-10-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/avatar_menu_arrow.gif, _graphics/avatar_menu_arrow_hover.gif,
+ _graphics/avatar_menu_arrow_open.gif, _graphics/avatar_menu_arrows.gif,
+ mod/profile/views/default/profile/css.php: Avatar user menu arrows updated to
+ use one image rather than 3
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Closes #412
+
+ * engine/lib/river.php: Refs #431: Belts and braces added to river view
+
+2008-10-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/useradd.php: Adjusted spacing on add user form
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Refs #432: Typo
+
+ * mod/groups/start.php: Closes #432: Hook added as profile
+
+ * mod/profile/start.php: Minor commenting
+
+2008-10-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * INSTALL.txt, UPGRADE.txt: Updated the install and upgrade text.
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/zh.php: Refs #424: reportedcontent
+
+ * mod/groups/languages/zh.php, mod/guidtool/languages/zh.php,
+ mod/river/languages/zh.php: Refs #424: guidtool, groups, river
+
+ * mod/diagnostics/languages/zh.php, mod/logbrowser/languages/zh.php,
+ mod/updateclient/languages/zh.php: Refs #424: Diagnostics, logbrowser,
+ updateclient
+
+ * languages/zh.php: Refs #424: Core translations added.
+
+ * UPGRADE.txt, engine/lib/version.php, upgrade.php: Closes #430
+
+2008-10-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/graphics/defaultlarge.gif,
+ mod/groups/graphics/defaultmedium.gif, mod/groups/graphics/defaultsmall.gif,
+ mod/groups/graphics/defaulttiny.gif,
+ .../views/default/icon/group/default/large.php,
+ .../views/default/icon/group/default/medium.php,
+ .../views/default/icon/group/default/small.php,
+ .../views/default/icon/group/default/tiny.php,
+ mod/profile/graphics/defaultlarge.jpg,
+ mod/profile/graphics/defaultmedium.jpg,
+ mod/profile/graphics/defaultsmall.jpg, mod/profile/graphics/defaulttiny.jpg,
+ mod/profile/graphics/defaulttopbar.jpg: Groups updated to use new icon method
+ and new groups icons added. Profile updated with new default avatars
+
+2008-10-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2008101303.php, version.php: Fixed the previous user
+ login issue.
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Introducing get_current_language(). Refs #235
+
+ * mod/profile/start.php: Refs #235: Added hooks for future admin interface
+
+ * mod/profile/start.php:
+
+2008-10-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/annotation/generic_comment.php: default message styled
+
+2008-10-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Refs #235: Now possible for plugins to change
+ default profile (plugin hook 'profile:fields', 'profile'.
+
+2008-10-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: widget more info tooltip improvements
+
+ * views/default/canvas/layouts/widgets.php: further fixes to the widget
+ gallery to use css-based images
+
+ * views/default/canvas/layouts/widgets.php, views/default/css.php: Updated
+ widget picker gallery to use classes for images rather than hard-coded
+ resources.
+
+2008-10-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php: user avatar menu method
+ adjusted to avoid hard-coded image resources
+
+2008-10-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php: system message strings moved to
+ elgg_echo
+
+2008-10-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, mod/profile/icon.php,
+ .../views/default/icon/user/default/large.php,
+ .../views/default/icon/user/default/master.php,
+ .../views/default/icon/user/default/medium.php,
+ .../views/default/icon/user/default/small.php,
+ .../views/default/icon/user/default/tiny.php,
+ .../views/default/icon/user/default/topbar.php: Default icon overrides.
+
+ * engine/lib/entities.php, mod/profile/icon.php: Simple hook to allow for
+ default user and entity icons.
+
+2008-10-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php:
+
+ * engine/lib/entities.php, mod/groups/graphics/defaultlarge.jpg,
+ mod/groups/graphics/defaultmedium.jpg, mod/groups/graphics/defaultsmall.jpg,
+ mod/groups/graphics/defaulttiny.jpg, mod/groups/start.php,
+ mod/groups/views/default/groups/icon.php: Closes #417 & #418
+
+ * engine/lib/filestore.php, mod/profile/start.php: Minor optimisations.
+ Introducing exists() on filestores
+
+ * _graphics/icons/default/topbar.png, engine/lib/entities.php,
+ mod/profile/icon.php, mod/profile/start.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/icon.php,
+ views/default/page_elements/elgg_topbar.php: Closes #301: Profile icons now
+ use getIcon() API. Overrides now possible: For themes to override, create a
+ plugin hook listening to 'entity:icon:url' and object 'user'. In the hook
+ return a different url. To replace default user icons in a plugin one might
+ create a hook: function profile_usericon_hook($hook, $entity_type,
+ $returnvalue, $params) { if ((!$returnvalue) && ($params['entity'] instanceof
+ ElggUser)) { // return your default graphic here. } } And set it to priority
+ 900 (lower priority than the code that displays a pretty icon for users but
+ higher than the default object display code in entities.php)
+
+ * engine/lib/users.php: Allowing '.' in username, refs #415
+
+ * views/rss/pageshells/pageshell.php: Fixes #413: Rss feeds with GET query
+ strings now functioning. Thanks for your patch, nice spot!
+
+ * languages/en.php: Fixes #415
+
+2008-10-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/ajax/loader.php, views/default/css.php: ajax loader updated
+ to use an image from _graphics rather than a hard-coded image resource (to
+ make theming possible).
+
+2008-10-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php: Removing pagination from online users.
+
+2008-10-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Removed debug
+
+ * engine/lib/entities.php: Minor tweaks to the getIcon code: * Default now
+ running on priority 1000 * Renamed default hook to a better name Marcus Povey
+
+2008-10-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php,
+ .../views/default/widgets/a_users_groups/view.php: Removed pagination for the
+ groups widget
+
+2008-10-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql, engine/schema/upgrades/2008100601.sql: Bugfixes
+ to river script
+
+ * engine/schema/mysql.sql: Added river key to main schema
+
+2008-10-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/messages/list.php: updated failsafe message divs
+ dimensions
+
+2008-10-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/upgrades/2008100601.php, engine/lib/upgrades/2008100701.php:
+ Changed the name. Refs #409
+
+ * engine/lib/database.php, engine/lib/upgrades/2008100601.php,
+ engine/lib/version.php, languages/en.php, version.php: Closes #409: PHP
+ update script to update core added
+
+ * mod/uservalidationbyemail/start.php: removed debug
+
+ * mod/groups/languages/th.php: Removing BOM
+
+ * mod/updateclient/languages/th.php: Thai language pack
+
+ * mod/river/languages/th.php: Thai language pack
+
+ * mod/reportedcontent/languages/th.php: Thai language pack
+
+ * mod/logbrowser/languages/th.php: Thai language pack
+
+ * mod/guidtool/languages/th.php: Thai language pack
+
+ * mod/groups/languages/th.php: Thai language pack
+
+ * mod/diagnostics/languages/th.php: Thai language pack
+
+ * languages/th.php: Closes #406: Thanks for your submission
+
+2008-10-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, mod/profile/start.php: Introduced a way to either
+ tether metadata access to entities, or to make them independent - in either
+ case, explicitly.
+
+2008-10-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php:
+
+ * engine/lib/river.php: Deleted old gumpf refs #402 and #407
+
+ * engine/lib/river.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008100601.sql,
+ .../default/river/ElggRelationship/create.php,
+ .../default/river/relationship/member/create.php,
+ .../default/river/ElggUser/profileiconupdate.php,
+ .../views/default/river/ElggUser/profileupdate.php,
+ .../river/user/default/profileiconupdate.php,
+ .../default/river/user/default/profileupdate.php,
+ views/default/river/ElggRelationship/create.php,
+ views/default/river/relationship/friend/create.php: Closes #402 and #407 :
+ Right! Finally nailed this fscking issue to the wall (hopefully). Modified
+ system log to hold extra information about the class being stored, this lets
+ us pull only the required rows from the event log. This drastically
+ simplifies and speeds up the query. Requires: Database upgrade. Outstanding
+ issues: Query is using filesort despite using correct index. Still much
+ faster than the last method!
+
+ * engine/lib/elgglib.php: Removed unnecessary debug
+
+2008-10-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/metadata.php,
+ views/default/search/entity_list.php: You can now remove pagination from a
+ list
+
+ * search/users.php: User browsing is revamped.
+
+ * engine/lib/users.php: List_user_friends_objects now lets you hide the
+ toggle to gallery view
+
+2008-10-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/index.php: Refs #402 and #407: Extra fields added to
+ system_log
+
+ * engine/lib/extender.php, engine/lib/relationships.php,
+ engine/lib/system_log.php, engine/schema/mysql.sql,
+ engine/schema/upgrades/2008100601.sql, version.php: Refs #402 and #407: Extra
+ fields added to system_log
+
+2008-10-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Minor fix for previous.
+
+ * engine/lib/elgglib.php: Introducing elgg_view_tree, for getting an array
+ of views
+
+ * engine/lib/elgglib.php, views/default/js/friendsPickerv1.php,
+ views/default/js/initialise_elgg.php, views/default/page_elements/header.php:
+ Elgg Javascript now goes through the views system
+
+ * engine/lib/access.php: A massive speed increase for access permissions. :)
+
+2008-10-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Closes #405: If -> else if. Nice spot.
+
+2008-10-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/comments/forms/edit.php: removed ratings hook from comments.
+ It will now go into plugins.
+
+2008-10-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php: updated messaging system with
+ 'click to dismiss' and moved it's position to not overlap the top toolbar
+
+2008-10-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Closes #399
+
+ * engine/lib/version.php: Fixes #401
+
+ * languages/en.php, mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/start.php: Refs #311: Modified message slightly
+
+ * actions/register.php, engine/lib/users.php, .../actions/email/confirm.php,
+ mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/start.php: Fixes #311, closes #345: Validation now
+ called via event 'user', 'validate'. Email validation now a plugin.
+
+2008-10-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/messages/errors/list.php,
+ views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/messages/list.php: updated messages system
+
+2008-10-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Removed old validation code
+
+ * languages/en.php: Refs #311 : Removing old email confirmation code.
+
+ * actions/email/confirm.php: Refs #311 : Removing old email confirmation
+ code.
+
+ * engine/lib/install.php: Fixing whitescreen on settings file creation
+
+ * mod/uservalidationbyemail/languages/en.php,
+ mod/uservalidationbyemail/manifest.xml, mod/uservalidationbyemail/start.php:
+ Refs #311: Saving stub prior to relocation...
+
+ * actions/systemsettings/install.php: Refs #311: Enable email validation
+ module by default
+
+ * engine/lib/users.php: Refs #311
+
+ * engine/lib/sessions.php: Refs #311
+
+ * actions/register.php: Refs #311
+
+ * actions/email/save.php: Refs #311
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php:
+ Closes #398
+
+ * engine/lib/install.php, engine/settings.example.php: Fixing installer
+ issue.
+
+2008-10-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Fitter, happier group links
+
+ * engine/lib/admin.php: Added an admin override for container permissions
+ checking.
+
+ * mod/groups/start.php: Improved group menu items.
+
+2008-10-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * crontab.example, engine/handlers/cron_handler.php, engine/lib/cron.php,
+ htaccess_dist, languages/en.php: Improved cron support
+
+ * engine/lib/metadata.php: Closes #379
+
+ * engine/lib/metadata.php: Closes #389
+
+ * engine/lib/database.php, engine/lib/install.php: Fixes #395
+
+2008-09-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Minor tweaks
+
+ * engine/lib/actions.php: Changed to plugin hook
+
+ * engine/lib/actions.php: Closes #390: Triggers an event 'action', $action
+ before action is included. This is rather kludgy and we need to rethink this
+ a bit.
+
+ * engine/lib/plugins.php: Actually, bad idea...
+
+ * engine/lib/plugins.php: Events now triggered on plugin enable/disable
+
+ * actions/friends/remove.php, engine/lib/configuration.php,
+ engine/lib/users.php: Closes #388: Additionally the site check in
+ configuration_init() should be instanceof. Nice spot, thanks.
+
+2008-09-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php: Messages/error notification system
+ updated with dismiss button, longer delay, and sticky/fixed position (at top
+ of viewport).
+
+2008-09-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/version.php: Install now works again
+
+2008-09-30 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/comments/forms/edit.php: ratings hook added to comments
+ block
+
+2008-09-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added IP address tools, todo check licence.
+
+ * engine/lib/notification.php, languages/en.php: Set the notification
+ settings
+
+ * engine/lib/notification.php, languages/en.php: Notifications get
+ notification stuff in API form.
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ languages/en.php, views/default/settings/system.php,
+ views/failsafe/settings/system.php: Closes #383 & #384
+
+ * engine/lib/notification.php: Closes #369: For entities which are not users
+ the ->email field is used, failing that it tries to work out an address from
+ ->url and lastly from $CONFIG->site_guid. Closes #382: Fix applied as
+ suggested.
+
+2008-09-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: get_input can now be properly overridden by
+ set_input. Fixes #324
+
+2008-09-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php:
+
+ * engine/lib/api.php:
+
+ * engine/lib/api.php: Debug
+
+ * engine/lib/api.php, engine/lib/sessions.php, services/api/rest.php:
+ Committing what I have at the end of the day, api still not 100%
+
+ * engine/lib/cache.php: Caching support fixed.
+
+ * engine/lib/api.php: Fixing auth_token code
+
+ * engine/lib/pam.php: Fixed issue with pam handler, now if required method
+ throws an exception the authentication short circuits with false.
+
+2008-09-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Clear annotations now clears annotations
+ properly when no name is specified. Fixes #357
+
+ * engine/lib/annotations.php: Count annotations now fails properly if a
+ metastring is not found. Fixes #377
+
+2008-09-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Make statisics nicer
+
+ * mod/apiadmin/languages/en.php: Make statisics nicer
+
+ * engine/lib/api.php: view now set by endpoint
+
+ * engine/lib/widgets.php: Closes #326: add_widget uses the specified
+ $user_guid as $widget->owner_guid
+
+2008-09-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php:
+
+ * languages/en.php: Closes #360: Will now install on 5.1.6 or greater with a
+ warning, 5.2 with now warning.
+
+ * engine/lib/install.php: Closes #360: Will now install on 5.1.6 or greater
+ with a warning, 5.2 with now warning.
+
+ * mod/updateclient/start.php: Modified pinger to use new style endpoint
+ format. Note, this will require ping.elgg.org to be upgraded come next
+ release!
+
+ * engine/lib/ping.php: Modified pinger to use new style endpoint format.
+ Note, this will require ping.elgg.org to be upgraded come next release!
+
+ * engine/lib/ping.php, mod/diagnostics/start.php,
+ mod/updateclient/start.php, views/default/admin/statistics_opt/basic.php:
+ Closes 374: Using get_version function instead of including the version file.
+
+ * engine/lib/api.php, languages/en.php: Minor improvements to failure mode.
+
+ * engine/lib/api.php: auth_token api call now functional
+
+ * services/api/rest.php: Addapted to be called from pagehandler
+
+ * engine/lib/api.php:
+
+2008-09-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Returning cache control back to access permissions.
+
+2008-09-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apiadmin/actions/generate.php, mod/apiadmin/actions/revokekey.php,
+ mod/apiadmin/views/default/object/api_key.php: Added action_gatekeeper() code
+
+ * engine/lib/api.php:
+
+ * engine/lib/api.php: Added endpoint page handler.
+
+ * mod/apiadmin/actions/generate.php, mod/apiadmin/actions/revokekey.php,
+ mod/apiadmin/index.php, mod/apiadmin/languages/en.php,
+ mod/apiadmin/manifest.xml, mod/apiadmin/start.php,
+ .../views/default/apiadmin/forms/add_key.php,
+ mod/apiadmin/views/default/object/api_key.php: Introducing API key
+ administration panel
+
+ * engine/lib/api.php: Create keypair code added
+
+ * engine/lib/api.php: Added create_api_user
+
+ * engine/lib/api.php: Added remove_api_user function
+
+ * engine/lib/api.php: Will now handle banned users
+
+2008-09-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/metadata.php: Metadata permissions now
+ work as advertised, but had to remove caching in the process. Will attempt to
+ re-enable it shortly.
+
+2008-09-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/user/settings/name.php: Closes #362: Nice spot. Cause was
+ an omission of the user being edited being passed. No security issues
+ introduced by having this user set, since editing user must still pass a
+ canEdit() in the action itself.
+
+2008-09-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, engine/lib/version.php,
+ engine/schema/upgrades/2008092301.sql, languages/en.php, version.php: The
+ database schema will now automatically update itself on upgrade.
+
+ * engine/lib/api.php, engine/start.php: The cache library is now loaded
+ before the main library boot.
+
+2008-09-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Belts and braces
+
+2008-09-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/upgrades/2008092301.sql: Database upgrade script from 1.0 to
+ latest schema.
+
+2008-09-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: API improvement. Authentication via token now logs
+ user in for that session.
+
+ * mod/profile/index.php: Closes #367: Widgets only displayed for found
+ profiles.
+
+2008-09-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Apparently non-p connections are better in many
+ cases, see http://www.slideshare.net/techdude/how-to-kill-mysql-performance
+
+ * languages/it.php: Closes #363
+
+2008-09-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/index.php, friends/of.php: Closes #358 and #359. Well spotted.
+
+ * languages/fr.php: Closes #356: Thanks for the contribution!
+
+2008-09-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: API explanations added to language file
+
+ * engine/lib/access.php: Access permissions now cached correctly.
+
+ * engine/lib/plugins.php: Optimised plugin query.
+
+ * engine/lib/metadata.php: Short circuit added for missing values.
+
+ * engine/lib/plugins.php: Removed old gunk
+
+ * engine/lib/api.php: Load cache php
+
+ * engine/lib/api.php: Changed caching to memory.
+
+ * engine/schema/mysql.sql: Added hmac cache of hmacs we have seen before
+ (MEMORY TABLE)
+
+ * engine/schema/mysql.sql: Added hmac cache of hmacs we have seen before
+ (MEMORY TABLE)
+
+ * engine/lib/api.php: Some api improvements: * User tokens setable * List
+ api no longer requires token
+
+ * engine/schema/mysql.sql: Changed users_apisessions to use memory, since
+ there is no reason to store this forever.
+
+ * languages/de.php: Added german core from Elgg development group
+
+ * engine/lib/system_log.php: System log now using delayed writes.
+
+2008-09-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Marcus Povey: * Some missing indexes added to
+ database. * Removed privileged path table since this is no longer used.
+
+ * engine/lib/elgglib.php: Removed privileged path code since this is no
+ longer used
+
+ * engine/lib/entities.php: Closes #346: More granularity on enable/disable.
+
+ * mod/reportedcontent/languages/it.php: Italian language patch
+
+ * mod/updateclient/languages/it.php: Italian language patch
+
+ * mod/river/languages/it.php: Italian language patch
+
+ * mod/logbrowser/languages/it.php: Italian language patch
+
+ * mod/guidtool/languages/it.php: Italian language patch
+
+ * mod/groups/languages/it.php: Italian language patch
+
+ * mod/diagnostics/languages/it.php: Italian language patch
+
+2008-09-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/userdetails.php: Basic XFN support
+
+2008-09-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php: Added missing translation
+
+2008-09-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: Closes #349: We need to improve
+ detect_extender_valuetype
+
+ * languages/it.php: Closes #348: Thanks for the patch!
+
+ * languages/it.php: Closes #339 : Italian alpha core language pack applied.
+ Thanks for the contribution!
+
+ * engine/lib/languages.php: Improved language completeness algorithm.
+
+2008-09-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/fr.php: Closes #342: Thanks for the updates!
+
+ * engine/lib/languages.php: Minor tweak: Only shows percentage on things
+ less than 100% complete
+
+ * engine/lib/languages.php: Some language helper tools.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Closes #338: You're
+ quite right, this is was an error on our part. Nice spot!
+
+ * engine/lib/languages.php, languages/en.php: Introducing: Admin only
+ translation "completeness" helper.
+
+2008-09-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/es.php: Preliminary spanish translation
+
+ * engine/lib/xml-rpc.php: Refs #172: Removed line endings on spec.
+
+ * mod/diagnostics/languages/fr.php, mod/groups/languages/fr.php,
+ mod/logbrowser/languages/fr.php, mod/reportedcontent/languages/fr.php,
+ mod/river/languages/fr.php, mod/updateclient/languages/fr.php: Closes #298:
+ Thankyou for your contribution!
+
+ * languages/fr.php: Closes #300: Thanks for the translation!
+
+ * languages/en.php, mod/groups/actions/forums/edittopic.php,
+ mod/groups/languages/en.php: Closes #320: Filled in missing translations
+
+2008-09-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/checkboxes.php, views/default/input/radio.php,
+ .../notifications/settings/usersettings.php: Fixes 334: Radio buttons were
+ part of the problem, label and option were the wrong way round (compare with
+ input/checkboxes). Second part of the problem was actually with
+ views/default/notifications/settings/usersettings.php, where the value of the
+ field was incorrectly being extracted from the settings array. Thanks for
+ the spot!
+
+2008-09-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ views/default/admin/plugins_opt/plugin.php: Closes #327: Thanks for the
+ pointer. In the end I modified the fix from the patch you sent, it still uses
+ get but the generated token should make a CSRF attack much harder.
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/resetpassword.php,
+ actions/admin/user/unban.php, .../views/default/profile/menu/adminlinks.php:
+ Fixes #332: Added tokens and action_gatekeeper()
+
+ * engine/lib/database.php: Fixes #330: I implemented the changes you
+ suggested (except for quotes around the table name). What problems did you
+ encounter?
+
+ * mod/reportedcontent/languages/en.php: Refs #331: Trying this again...
+
+ * mod/reportedcontent/languages/en.php,
+ views/default/page_elements/owner_block.php: Closes 331: Removed fixed string
+ in translation. Thanks for the spot!
+
+2008-09-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Set default db to UTF 8... for what it's worth.
+
+2008-09-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Closes #305
+
+ * actions/admin/site/update_basic.php: Fixes #244
+
+ * views/default/settings/system.php: Fixes the regression introduced by
+ [2023]
+
+ * engine/lib/actions.php, engine/lib/sessions.php: Additional per-session
+ random token, additional randomness protection against CSRF. Report problems.
+
+2008-08-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, engine/lib/sessions.php: Some session
+ fingerprinting code. Requires user agent to be consistent across requests.
+
+ * engine/lib/sessions.php: Regenerates session ID on user login. This helps
+ prevent some hijacking attacks.
+
+ * engine/lib/sessions.php: Minor tweak, logout now calls session_destroy()
+
+2008-08-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php, engine/start.php: Closes #313, Fixes #274:
+ Resolved strange OSX language file browsing, including speculative windows
+ fix. Thanks for the patch!
+
+2008-08-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/canvas/layouts/widgets.php,
+ views/default/navigation/toolbox.php,
+ views/default/navigation/topbar_tools.php: Closes #304: Thanks for the patch!
+
+ * languages/en.php: Fixes #275: Thanks for the report!
+
+ * engine/lib/statistics.php, languages/en.php,
+ views/default/admin/statistics_opt/basic.php: Minor tweak to basic stats to
+ clarify number of users in the system.
+
+2008-08-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, engine/lib/users.php, languages/en.php: Closes
+ #254: If mb_string is installed then internationalised usernames are
+ supported in file system. Because of this I have raised mbstring from
+ recommended to a (non-fatal) core requirement. Because of the lack of a
+ unicode ctype_alnum function the validation occurs at username input. Because
+ of this I have improved the user registration code: This code now validates
+ for special chars etc in the username. I have also introduced the following
+ new plugin hooks (which are run after primary validation) which provide
+ plugins with the ability to add other requirements (extra security etc).
+ 'registeruser:validate:password' 'registeruser:validate:username'
+ 'registeruser:validate:email' Marcus Povey 25/8/08
+
+2008-08-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php: Committing kses fix
+
+2008-08-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Fixed ping error. Fixes #269
+
+ * engine/lib/elgglib.php, engine/lib/input.php: Fixed input for people with
+ magic quotes on.
+
+2008-08-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Actually fixes #269
+
+ * actions/systemsettings/install.php: Fixes #269
+
+2008-08-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added plugin hook to elgg_view.
+
+2008-08-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Prelude to release
+
+ * engine/lib/elgglib.php: Fixes #280
+
+ * engine/lib/sessions.php: Blanking session code on initialisation fail
+
+2008-08-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/dashboard.php: Closes #253: Patch provided by
+ edfactor. Thanks for your contribution!
+
+2008-08-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/failsafe/pageshells/pageshell.php: install process password box
+ added
+
+ * views/failsafe/messages/errors/list.php,
+ views/failsafe/pageshells/pageshell.php: increased the size of the input
+ boxes on the install pages to faciliate url checking
+
+2008-08-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Making it case insensitive...
+
+2008-08-20 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/avatar_mini.gif: removed unused image
+
+2008-08-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/input.php, languages/en.php: Refs #273: Extra sanity checking on
+ install
+
+2008-08-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Language change
+
+ * languages/en.php, views/default/settings/system.php,
+ views/failsafe/settings/system.php: Installation clarity fixes
+
+2008-08-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Refs #272: Speculative fix. Added PORT support to
+ current_page_url(). Please test to see if this solves your problem...
+
+ * version.php: Oopsy, wrong package number
+
+ * version.php: Raising point number pre-package
+
+2008-08-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Revised rewrite rules.
+
+2008-08-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Refs #266: Error given if no database has been
+ set up.
+
+ * engine/lib/database.php, engine/lib/elgglib.php, engine/lib/install.php,
+ install.php, languages/en.php,
+ views/failsafe/messages/exceptions/exception.php: Refs #256: Basic
+ installation parameters checked. Fixes #266: If the install flag isn't set
+ then elgg_view will no longer attempt to load data from the database.
+
+ * engine/lib/elgglib.php: Refs #265: If $CONFIG->view not blank then it
+ overrides the session even if the session is set.
+
+ * engine/schema/mysql.sql: Fixes #260: Done. Nice spot.
+
+2008-08-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Small access fix
+
+ * CONTRIBUTORS.txt: And again.
+
+ * CONTRIBUTORS.txt: Minor contributor file fix.
+
+ * engine/lib/access.php: Corrected minor friend collection issue
+
+2008-08-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * CONTRIBUTORS.txt: changed bens twitter account url
+
+2008-08-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php: Moving the disable_entities call
+
+ * engine/lib/elgglib.php: More submenu corrections
+
+ * actions/admin/user/ban.php: Banning a user disables their entities
+
+ * engine/lib/entities.php, engine/lib/users.php: Removing a user disables
+ their entities
+
+2008-08-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Updated for release
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed the submenu
+
+2008-08-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/graphics/defaultmaster.jpg: default image for cropper tool
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php: The top tool menu is now
+ alphabetically sorted.
+
+ * engine/lib/elgglib.php: Submenu items are now sorted.
+
+ * mod/groups/start.php: Renamed groups submenus
+
+ * mod/groups/languages/en.php: Added a missing translation string to groups.
+
+ * mod/groups/start.php: Corrected the 'your groups' link
+
+2008-08-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/spotlight/default.php: spotlight tweaks
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/picker.php: Removed the context menu in the friends
+ picker.
+
+2008-08-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: force tinyMCE editor initial width for safari
+
+ * views/default/page_elements/footer.php: footer updated to fit more links
+
+ * _graphics/spotlight_back.gif, views/default/css.php: Opera fixes and new
+ spotlight back
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * dashboard/index.php, dashboard/latest.php, engine/lib/elgglib.php,
+ languages/en.php, views/default/dashboard/blurb.php: Wired in latest
+ activity, so new users aren't as lonely as they otherwise might be.
+
+2008-08-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ .../views/default/object/groupforumtopic.php: groups listing icon changed
+ from tiny to small latest discussion listing info block styled up
+
+2008-08-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/footer.php: footer tweak
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php: Ensuring that tags are saved correctly in
+ profile
+
+2008-08-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php, views/default/css.php: avatar
+ menu fixes for IE
+
+ * mod/groups/views/default/groups/css.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/javascript.php: avatar menu fix for IE
+ groups and profile pages
+
+2008-08-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * INSTALL.txt: Updated installation instructions
+
+2008-08-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/javascript.php: avatar menu in IE, z-index
+ bug work-around
+
+ * mod/profile/views/default/profile/javascript.php, views/default/css.php:
+ tools menu removed dynamic z-index
+
+2008-08-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/userdetails.php: Removed avatar context
+ menu from large profile picture
+
+ * mod/logbrowser/start.php, .../views/default/logbrowser/adminlinks.php,
+ mod/profile/start.php, .../views/default/profile/menu/adminlinks.php,
+ .../views/default/profile/menu/adminwrapper.php: Admin links are now
+ consolidated
+
+ * engine/lib/users.php: Removing gallery on search user list function
+
+2008-08-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: menu selected item ie6 fix
+
+2008-08-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/spotlight/default.php: a little content added to the
+ spotlight
+
+ * .../views/default/reportedcontent/listing.php: reported content tweak
+
+2008-08-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php, mod/profile/start.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/metatags.php: Individual profile items can
+ now have access restrictions; also made the profile JS more cache friendly
+
+2008-08-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/listing.php, views/default/css.php:
+ reported content updates
+
+ * views/default/css.php: tools settings updated
+
+2008-08-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: lang string missing
+
+2008-08-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: groups widget fixed for ie6
+
+2008-08-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/diagnostics/languages/en.php, mod/diagnostics/start.php: Globals and
+ PHP info added to diagnostics
+
+2008-08-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php: further tweaks on admin
+ settings
+
+ * views/default/admin/plugins_opt/plugin.php: plugin settings moved to
+ hidden dropdown
+
+2008-08-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Code also useless
+
+ * engine/lib/entities.php: Salt free diet
+
+2008-08-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php, views/default/css.php: avatar
+ menu fixed in admin area, admin area h3's fixed
+
+2008-08-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/owner_block_menu_dot.gif, views/default/css.php: owner block
+ menu
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Correction for the search list users by name
+ function.
+
+ * mod/reportedcontent/languages/en.php: A rookie error.
+
+2008-08-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/joinrequest.php:
+ Closes #234: Please use brackets defensively; The statement: if ($user =
+ get_entity($foo) && $group = get_entity($bar)) Will not do what you expect
+ it to do!
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, languages/en.php, search/users.php,
+ views/default/user/search/finishblurb.php: Added proper search for users by
+ name
+
+ * mod/groups/views/rss/forum/topics.php,
+ mod/groups/views/rss/forum/viewposts.php,
+ mod/groups/views/rss/groups/profileitems.php: RSS views for forums
+
+ * views/rss/group/default.php: Group default RSS view
+
+2008-08-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: sidebar arrow position fixed for ie 6 & 7
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, mod/profile/icon.php, mod/profile/javascript.php,
+ views/default/friends/picker.php, views/default/page_elements/header.php:
+ Caching enhancements
+
+2008-08-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: screwed up profile page on ie6 fixed
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php: Added a language entry for reported
+ items (again)
+
+2008-08-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/membership.php: gallery view removed from group lists
+
+ * mod/reportedcontent/index.php: reportedcontent bug sorted
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forms/groups/invite.php: Ensured that all friends
+ come through for group invite
+
+ * mod/groups/views/default/forms/groups/invite.php: Ensured that all friends
+ come through for group invite
+
+ * views/default/page_elements/owner_block.php: Owner block defaults to
+ current logged in user.
+
+ * engine/lib/input.php: Improved the kses whitelist
+
+2008-08-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install.php, views/failsafe/canvas/default.php,
+ views/failsafe/input/button.php, views/failsafe/input/checkboxes.php,
+ views/failsafe/input/form.php, views/failsafe/input/hidden.php,
+ views/failsafe/input/longtext.php, views/failsafe/input/pulldown.php,
+ views/failsafe/input/reset.php, views/failsafe/input/submit.php,
+ views/failsafe/input/text.php, views/failsafe/messages/messages/list.php,
+ views/failsafe/messages/messages/message.php,
+ views/failsafe/pageshells/pageshell.php, views/failsafe/settings/install.php,
+ views/failsafe/settings/system.php: Closes #224: Install now using failsafe
+ views. Please test from scratch (including blanking setup) and make sure it
+ works for you!
+
+2008-08-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/membership.php: groups view tweaked
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php, views/default/navigation/pagination.php,
+ views/default/widgets/wrapper.php: Removed pagination in widgets
+
+ * engine/lib/relationships.php: Added the ability to hide the gallery view
+ on list_entities_from_relationships
+
+ * languages/en.php: Language addition to make it clearer that you need to
+ validate before you can log in.
+
+2008-08-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: group lang bug fixed
+
+ * mod/reportedcontent/actions/add.php,
+ mod/reportedcontent/actions/archive.php,
+ mod/reportedcontent/actions/delete.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/start.php, .../views/default/reportedcontent/css.php,
+ .../views/default/reportedcontent/listing.php: reported content updated
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php: Added a language entry for reported
+ items
+
+2008-08-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: owner block head - divider
+ line method changed to work in ie6
+
+ * views/default/css.php: owner block fixes and blog post tweaks
+
+2008-08-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php, mod/profile/views/default/profile/listing.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/input/checkboxes.php, views/default/search/entity_list.php:
+ Refs #249
+
+2008-08-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, index.php: The front page now only shows content
+ and groups.
+
+2008-08-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/edit.php, views/default/page_elements/owner_block.php: Refs
+ #249
+
+2008-08-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/reportedcontent/languages/en.php,
+ .../views/default/reportedcontent/listing.php: reported content tweaks
+
+2008-08-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/userdetails.php, views/default/css.php: IE
+ 6 & 7 profile page avatar menu and submenu fixed, toolbar new msg icon
+ position,
+
+2008-08-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: owner block changes
+
+2008-08-14 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/reportedcontent/listing.php: reportedcontent list tweaks
+
+2008-08-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed an issue with the submenu.
+
+2008-08-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Fixes #245: Tags now stripped from email
+ messages.
+
+2008-08-14 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/diagnostics/index.php, mod/logbrowser/index.php,
+ mod/reportedcontent/index.php: more owner blocks added
+
+ * admin/plugins/index.php, admin/site/index.php, admin/statistics/index.php,
+ admin/user/index.php: owner block added to admin pages
+
+2008-08-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: collections, friends picker, status, search items
+ updated for IE6
+
+ * views/default/friends/picker.php, views/default/friends/tablelist.php:
+ friends picker table bug fixed and spacing adjusted on collections
+
+2008-08-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Redefined the default submenu item group to 'a',
+ so most usually it will appear on top
+
+ * mod/groups/start.php, views/default/canvas_header/submenu_group.php,
+ views/default/page_elements/owner_block.php: Further submenu clustering
+
+ * engine/lib/elgglib.php, views/default/canvas_header/submenu_group.php:
+ Added the facility to group submenus
+
+2008-08-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js, views/default/css.php: friends picker
+ modified for IE 6
+
+ * _graphics/friends_picker_arrow_left.gif,
+ _graphics/friends_picker_arrow_right.gif: new picker arrows
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/confirm.php, actions/register.php, engine/lib/entities.php,
+ engine/lib/users.php: Closes #227 and #243: Hopefully this has the fscking
+ thing nailed to the wall. Please report any problems, especially is they
+ relate to access permissions (granted when you shouldn't or denied when you
+ should)
+
+ * mod/diagnostics/languages/en.php, mod/diagnostics/start.php: Added session
+ to diagnostics.
+
+ * engine/lib/sessions.php: Fixing some session blanking problems.
+
+ * actions/email/confirm.php, actions/register.php, engine/lib/entities.php,
+ engine/lib/users.php: Reverted changes so users can now register again.
+ There are critical issues with enable/disable. Primarily: 1) A number of
+ functions do not use the access controls, these throw an exception when
+ accessing a disabled entity. 2) #243 does not seem possible.
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: owner block fixed for safari
+ and ie6
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, languages/en.php: Correct menus being used
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/members.php, views/default/css.php: numerous
+ polishing and rendering fixes to groups
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php:
+
+ * actions/admin/user/unban.php, engine/lib/admin.php,
+ engine/lib/entities.php, languages/en.php,
+ .../views/default/profile/menu/adminlinks.php: Refs #237: Added option, now
+ just needs a search listing banned users. Depends #243
+
+ * actions/email/confirm.php, actions/register.php, engine/lib/entities.php:
+ Closes #227. Depends on #243 to work.
+
+ * engine/lib/access.php: Refs #237, #46 and #227: Added override code.
+
+ * engine/lib/entities.php: Actually closes #46
+
+ * views/default/admin/plugins_opt/plugin.php: placeholder for settings
+ toggle
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: login and register boxes fixed
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: Now only displays 'report
+ this' when plugin is enabled.
+
+2008-08-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: Sturdier enhancement for the
+ owner block.
+
+ * index.php, languages/en.php, mod/pages/actions/pages/delete.php,
+ mod/pages/actions/pages/edit.php, mod/pages/actions/pages/editwelcome.php,
+ mod/pages/edit.php, mod/pages/history.php, mod/pages/images/application.png,
+ mod/pages/images/code.png, mod/pages/images/css.png, mod/pages/images/db.png,
+ mod/pages/images/directory.png, mod/pages/images/doc.png,
+ mod/pages/images/file.gif, mod/pages/images/file.png,
+ mod/pages/images/film.png, mod/pages/images/flash.png,
+ mod/pages/images/folder-closed.gif, mod/pages/images/folder.gif,
+ mod/pages/images/folder_open.png, mod/pages/images/html.png,
+ mod/pages/images/java.png, mod/pages/images/linux.png,
+ mod/pages/images/minus.gif, mod/pages/images/music.png,
+ mod/pages/images/pdf.png, mod/pages/images/php.png,
+ mod/pages/images/picture.png, mod/pages/images/plus.gif,
+ mod/pages/images/ppt.png, mod/pages/images/psd.png,
+ mod/pages/images/ruby.png, mod/pages/images/script.png,
+ mod/pages/images/spinner.gif, mod/pages/images/treeview-black-line.gif,
+ mod/pages/images/treeview-black.gif,
+ mod/pages/images/treeview-default-line.gif,
+ mod/pages/images/treeview-default.gif,
+ mod/pages/images/treeview-famfamfam-line.gif,
+ mod/pages/images/treeview-famfamfam.gif,
+ mod/pages/images/treeview-gray-line.gif, mod/pages/images/treeview-gray.gif,
+ mod/pages/images/treeview-red-line.gif, mod/pages/images/treeview-red.gif,
+ mod/pages/images/txt.png, mod/pages/images/xls.png, mod/pages/images/zip.png,
+ mod/pages/index.php, mod/pages/javascript/jquery.treeview.async.js,
+ mod/pages/javascript/jquery.treeview.js, mod/pages/languages/en.php,
+ mod/pages/manifest.xml, mod/pages/new.php, mod/pages/pagesTree.php,
+ mod/pages/start.php, mod/pages/view.php,
+ mod/pages/views/default/annotation/icon.php,
+ mod/pages/views/default/annotation/page.php,
+ mod/pages/views/default/forms/pages/edit.php,
+ .../views/default/forms/pages/editwelcome.php,
+ mod/pages/views/default/object/page.php,
+ mod/pages/views/default/object/page_top.php,
+ mod/pages/views/default/pages/breadcrumbs.php,
+ mod/pages/views/default/pages/css.php,
+ .../views/default/pages/groupprofile_pages.php,
+ mod/pages/views/default/pages/menu.php,
+ mod/pages/views/default/pages/metatags.php,
+ mod/pages/views/default/pages/pagegallery.php,
+ mod/pages/views/default/pages/pagelisting.php,
+ mod/pages/views/default/pages/pageprofile.php,
+ .../views/default/pages/sidebar/sidebarthis.php,
+ mod/pages/views/default/pages/sidebar/starter.php,
+ mod/pages/views/default/pages/sidebar/tree.php,
+ mod/pages/views/default/pages/sidebar/wrapper.php,
+ mod/pages/views/default/pages/welcome.php, mod/pages/welcome.php,
+ mod/pages/world.php: Added a new latest activity title to the front page
+
+ * views/default/page_elements/owner_block.php: The owner block now doesn't
+ display at all if there's no page owner
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php, views/default/css.php: front page
+ login box
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php: Banned now gives a reason why user disabled.
+
+ * engine/lib/entities.php: Added a reason for disabled objects.
+
+ * engine/lib/entities.php: Closes #46: Method for activating an entity. No
+ hookup yet.
+
+ * engine/lib/access.php: Refs #237, #46 and #227: Added active only override
+ to get_access_sql_suffix
+
+2008-08-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/add.php, mod/blog/actions/delete.php,
+ mod/blog/actions/edit.php, mod/blog/add.php, mod/blog/edit.php,
+ mod/blog/everyone.php, mod/blog/friends.php, mod/blog/index.php,
+ mod/blog/languages/en.php, mod/blog/manifest.xml, mod/blog/read.php,
+ mod/blog/start.php, mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/gallery.php,
+ mod/blog/views/default/blog/listing.php,
+ mod/blog/views/default/blog/menu.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/view.php, mod/blog/views/default/object/blog.php,
+ mod/blog/views/default/river/blog/annotate.php,
+ mod/blog/views/default/river/blog/create.php,
+ mod/blog/views/default/river/blog/update.php: This shouldn't be here!
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/delete.php, engine/lib/group.php,
+ engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php: Fixes
+ #241: Changed order, delete user using object's delete method rather than the
+ low level function
+
+2008-08-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: Removed page handler default errors
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: widget boxes fixed for IE
+
+2008-08-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Added a page handler for the dashboard
+
+2008-08-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/useradd.php, engine/lib/sessions.php: Fixes #238: Problem was
+ caused by authenticate not having the user email validated flag set.
+ Introduced new flag ->admin_created to distinguish between the two types.
+
+2008-08-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php: A warning fix for the dashboard
+ layout.
+
+ * views/default/input/button.php, views/default/input/form.php: Some safety
+ fixes for the new form views
+
+ * engine/lib/elgglib.php: Only log warnings in debug mode.
+
+ * mod/blog/actions/add.php, mod/blog/actions/delete.php,
+ mod/blog/actions/edit.php, mod/blog/add.php, mod/blog/edit.php,
+ mod/blog/everyone.php, mod/blog/friends.php, mod/blog/index.php,
+ mod/blog/languages/en.php, mod/blog/manifest.xml, mod/blog/read.php,
+ mod/blog/start.php, mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/gallery.php,
+ mod/blog/views/default/blog/listing.php,
+ mod/blog/views/default/blog/menu.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/view.php, mod/blog/views/default/object/blog.php,
+ mod/blog/views/default/river/blog/annotate.php,
+ mod/blog/views/default/river/blog/create.php,
+ mod/blog/views/default/river/blog/update.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ .../canvas/layouts/two_column_right_sidebar.php,
+ views/default/input/form.php: Removing some messages
+
+ * engine/lib/pagehandler.php: Removing an error log entry in the page
+ handler function
+
+ * engine/lib/elgglib.php: Fixed select class issue for submenus
+
+ * search/index.php: Reinstated search label.
+
+ * mod/logbrowser/start.php, mod/profile/start.php: Admin links on profile
+ pages and in user context menus appear at the bottom.
+
+ * mod/profile/views/default/profile/userdetails.php: The profile edit button
+ is now wired up so that admins can edit any user.
+
+ * engine/lib/access.php, engine/lib/admin.php: Admins now see all!
+
+2008-08-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: extra float clear for ie6
+
+ * _graphics/icon_gallery.gif: new gallery icon
+
+ * _graphics/blockquote.png, _graphics/dummy_river_icon.gif,
+ _graphics/footer_logo.gif: removed images not used
+
+ * _graphics/icon_bookmarkthis.gif, _graphics/icon_reportthis.gif,
+ views/default/css.php: owner block additional icons
+
+2008-08-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/reportedcontent/listing.php: small tweak to reported
+ content
+
+ * mod/reportedcontent/actions/add.php, mod/reportedcontent/add.php,
+ mod/reportedcontent/index.php, mod/reportedcontent/languages/en.php,
+ mod/reportedcontent/manifest.xml, mod/reportedcontent/start.php,
+ .../views/default/reportedcontent/form.php,
+ .../views/default/reportedcontent/listing.php,
+ .../views/default/reportedcontent/user_report.php: report content added as a
+ core plugin. Still needs a couple of bits wired up.
+
+ * views/default/page_elements/owner_block.php: owner block tweaked to add
+ report this
+
+2008-08-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Removed superadmin access controls. You can't call
+ get_entity from within get_access_sql_suffix and get_access_array as it
+ causes an infinite loop. The only safe way to do this is via a plugin hook.
+
+ * actions/systemsettings/install.php: Refs #232: Diagnostics now on by
+ default on new installs.
+
+ * mod/diagnostics/actions/download.php, mod/diagnostics/index.php,
+ mod/diagnostics/languages/en.php, mod/diagnostics/manifest.xml,
+ mod/diagnostics/start.php, .../views/default/diagnostics/forms/download.php:
+ Closes #232: Produces a basic report plus checksums of all files in md5sum
+ format. To add extra information to this report add a plugin hook listening
+ to: 'diagnostics:report' And append to $returnvalue which is a simple text
+ buffer.
+
+2008-08-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: sidebar menu additions
+
+ * _graphics/icons/default/large.png, _graphics/icons/default/medium.png,
+ _graphics/icons/default/small.png, _graphics/icons/default/tiny.png: new
+ default entity icons
+
+2008-08-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Further access additions for admins.
+
+ * engine/lib/access.php: Admins can now see private data.
+
+ * mod/groups/views/default/forms/groups/invite.php: Group invites now uses
+ the friends picker.
+
+2008-08-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/owner_block.php: bookmark this and report this
+ (still to be wired up) added to the owner block
+
+2008-08-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/register.php, actions/useradd.php, engine/lib/users.php: Closes
+ #229: Admin signup now using different view + no password validation for
+ admin signup
+
+ * actions/register.php, engine/lib/exceptions.php, engine/lib/users.php,
+ languages/en.php, views/default/account/forms/register.php: Refs #229 :
+ Register now has more granular messages, dupe email checkiong, sanitisation +
+ fill in the blanks failure mode! (yay)
+
+2008-08-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/members.php, views/default/css.php: groups
+ pages interface fixes/cleanup
+
+2008-08-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Improved front page.
+
+ * mod/groups/start.php: Groups now links to a better place when you're
+ logged out.
+
+2008-08-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Slight tweak to rewrite rules.
+
+ * actions/systemsettings/install.php: Forward not gatekeeper
+
+2008-08-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: pagination display tweaked
+
+2008-08-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/views/default/logbrowser/css.php, views/default/css.php:
+ settings and admin pages cleaned
+
+2008-08-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, index.php, views/default/welcome/logged_out.php:
+ Added latest content to the front page
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/form.php: Logic error
+
+ * actions/friends/deletecollection.php: Refs #228: Will now error if
+ collection can not be deleted
+
+2008-08-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php:
+
+ * javascript/initialise_elgg.js: toggle more info button for admin panel
+ added
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/form.php: Added ability to disable security
+ enhancements on form (for certain cases)
+
+2008-08-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, search/index.php: Clearer titles for search
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/forms/edit.php:
+
+ * actions/friends/addcollection.php, views/default/friends/forms/edit.php:
+ Refs #210 & #211: Friends form moved to action_gatekeeper code.
+
+2008-08-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: Improved search submenu items
+
+ * languages/en.php: A clearer registration message.
+
+ * engine/lib/notification.php: Downgraded UTF support in the email
+ notification function to optional
+
+2008-08-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins_opt/plugin.php: plugin admin layout tweaks
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, languages/en.php: Minor bugfix to
+ actions_gatekeeper()
+
+ * engine/schema/mysql.sql: Usernames now unique
+
+2008-08-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/settings/system.php: further admin layout tweak
+
+ * views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php: further admin layout tweaks
+
+ * .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php: user settings tweaks
+
+ * .../notifications/settings/usersettings.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php: user settings tweaked
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/comments/add.php, views/default/comments/forms/edit.php: Refs #210
+ & #211 : Updated comments form
+
+ * actions/widgets/save.php, views/default/widgets/editwrapper.php: Refs #210
+ & #211 : Widgets edit now using action_gatekeeper
+
+ * views/default/input/form.php: Minor modifications to form.
+
+2008-08-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/grouplisting.php,
+ mod/profile/views/default/profile/listing.php: Added class to user and group
+ details
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ actions/usersettings/save.php, views/default/settings/system.php,
+ views/default/usersettings/form.php: Refs #210 & #211 : Some more core
+ settings / admin pages moved to use admin_gatekeeper. Install script action
+ now also refuses to be run if the site has already been installed.
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ views/default/object/plugin.php: Refs #210 & #211 : Plugins settings
+ converted.
+
+2008-08-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/toolbar_messages_icon.gif, views/default/css.php,
+ views/default/welcome/logged_in.php, views/default/welcome/logged_out.php:
+ toolbar messages icon rollover state added. Logged in/out front page wrapped
+ in paragraph tags
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/basic_elements/login.php: Removed basic_elements/login ...
+ didn't seem to be used and is duped by main login.
+
+ * actions/register.php, actions/useradd.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php: Refs #210 & #211
+
+2008-08-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/users.php,
+ search/index.php: Added a search submenu.
+
+2008-08-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/user/requestnewpassword.php, languages/en.php:
+ Refs #210 & #211
+
+2008-08-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/widgets/a_users_groups/view.php: group profile widget
+ tweaked
+
+2008-08-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Closes #223
+
+2008-08-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: top toolbar elements fixed for ie
+
+ * views/default/css.php, views/default/navigation/pagination.php: pagination
+ overlap in ie fixed
+
+ * javascript/friendsPickerv1.js, views/default/css.php:
+
+ * views/default/css.php:
+
+2008-08-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php,
+ .../views/default/widgets/a_users_groups/edit.php,
+ .../views/default/widgets/a_users_groups/view.php: a simple widget that
+ displays a users groups on their profile
+
+ * mod/groups/views/default/groups/grouplisting.php: group listings now
+ include the brief description
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/users.php,
+ mod/groups/actions/forums/addtopic.php, mod/groups/addtopic.php,
+ mod/groups/topicposts.php: Major access fix.
+
+ * engine/lib/entities.php, engine/lib/group.php: Solved write issues in
+ groups for non-admin users.
+
+ * README.txt: Slight readme update.
+
+ * CONTRIBUTORS.txt, account/forgotten_password.php,
+ actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ actions/admin/site/update_basic.php, actions/admin/user/ban.php,
+ actions/admin/user/delete.php, actions/admin/user/makeadmin.php,
+ actions/admin/user/resetpassword.php, actions/email/save.php,
+ actions/entities/delete.php, actions/import/opendd.php,
+ .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/user/language.php, actions/user/name.php, actions/user/password.php,
+ actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ actions/useradd.php, admin/plugins/index.php, admin/site/index.php,
+ admin/statistics/index.php, admin/user/index.php,
+ engine/handlers/cron_handler.php, engine/handlers/xml-rpc_handler.php,
+ engine/lib/admin.php, engine/lib/annotations.php, engine/lib/api.php,
+ engine/lib/cache.php, engine/lib/entities.php, engine/lib/exceptions.php,
+ engine/lib/export.php, engine/lib/extender.php, engine/lib/filestore.php,
+ engine/lib/group.php, engine/lib/input.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, engine/lib/notification.php,
+ engine/lib/opendd.php, engine/lib/pam.php, engine/lib/ping.php,
+ engine/lib/plugins.php, engine/lib/query.php, engine/lib/relationships.php,
+ engine/lib/river.php, engine/lib/sites.php, engine/lib/statistics.php,
+ engine/lib/system_log.php, engine/lib/tags.php, engine/lib/usersettings.php,
+ engine/lib/xml-rpc.php, engine/lib/xml.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/edit.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/groups/all.php, mod/groups/discussions.php,
+ mod/groups/edit.php, mod/groups/graphics/icon.php,
+ mod/groups/groupprofile.php, mod/groups/index.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/membership.php, mod/groups/new.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/group/group.php,
+ mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/icon.php,
+ .../default/river/ElggRelationship/create.php,
+ mod/groups/views/default/sharing/invite.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php, mod/guidtool/export.php,
+ mod/guidtool/format_picker.php, mod/guidtool/import.php,
+ mod/guidtool/index.php, mod/guidtool/languages/en.php,
+ mod/guidtool/start.php, mod/guidtool/view.php,
+ .../views/default/forms/guidtool/export.php,
+ .../views/default/forms/guidtool/format.php,
+ .../views/default/forms/guidtool/import.php,
+ mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php,
+ mod/guidtool/views/default/guidtool/profile.php,
+ .../views/default/object/guidtoolwrapper.php, mod/logbrowser/index.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ mod/logbrowser/views/default/object/logwrapper.php,
+ mod/profile/actions/cropicon.php, mod/profile/actions/edit.php,
+ mod/profile/actions/iconupload.php, mod/profile/edit.php,
+ mod/profile/editicon.php, mod/profile/icon.php, mod/profile/index.php,
+ mod/profile/javascript.php, mod/profile/start.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/userdetails.php, mod/river/start.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/edit.php,
+ .../default/widgets/river_widget_friends/view.php,
+ mod/updateclient/languages/en.php, mod/updateclient/start.php,
+ .../views/default/settings/updateclient/edit.php, services/api/rest.php,
+ services/export/handler.php, settings/statistics/index.php,
+ settings/user/index.php, views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/useradd.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/admin/plugins.php,
+ views/default/admin/plugins_opt/plugin.php, views/default/admin/site.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php, views/default/api/output.php,
+ views/default/comments/forms/edit.php, views/default/export/entity.php,
+ views/default/export/metadata.php, views/default/export/relationship.php,
+ views/default/graphics/icon.php, views/default/group/default.php,
+ views/default/input/button.php, views/default/input/form.php,
+ views/default/input/hidden.php, views/default/input/reset.php,
+ views/default/input/submit.php, .../notifications/settings/usersettings.php,
+ views/default/object/default.php, views/default/object/object.php,
+ views/default/object/plugin.php, views/default/output/iframe.php,
+ views/default/river/ElggRelationship/create.php,
+ views/default/river/dashboard.php, views/default/site/default.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php,
+ views/failsafe/pageshells/pageshell.php, views/foaf/pageshells/pageshell.php,
+ views/json/api/output.php, views/json/canvas/default.php,
+ views/json/export/entity.php, views/json/export/metadata.php,
+ views/json/export/relationship.php, views/json/group/default.php,
+ views/json/messages/exceptions/exception.php, views/json/object/default.php,
+ views/json/pageshells/pageshell.php, views/json/search/entity_list.php,
+ views/json/site/default.php, views/json/user/default.php,
+ views/opendd/canvas/default.php, views/opendd/export/entity.php,
+ views/opendd/export/metadata.php, views/opendd/export/relationship.php,
+ views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/site/default.php, views/opendd/user/default.php,
+ views/php/api/output.php, views/php/canvas/default.php,
+ views/php/export/entity.php, views/php/export/metadata.php,
+ views/php/export/relationship.php, views/php/group/default.php,
+ views/php/messages/exceptions/exception.php, views/php/object/default.php,
+ views/php/pageshells/pageshell.php, views/php/search/entity_list.php,
+ views/php/site/default.php, views/php/user/default.php,
+ views/xml/api/output.php, views/xml/messages/exceptions/exception.php,
+ views/xml/pageshells/pageshell.php, views/xml/xml-rpc/output.php: Adjusted
+ contributors file.
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/forms/guidtool/export.php,
+ mod/profile/views/default/profile/icon.php,
+ views/default/canvas/layouts/widgets.php, views/default/input/button.php,
+ views/default/messages/exceptions/exception.php,
+ views/failsafe/messages/exceptions/exception.php: Remaining htmlentities
+ calls converted to utf-8
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * INSTALL.txt: Small formatting correction to the install file.
+
+ * CONTRIBUTORS.txt, INSTALL.txt, README.txt: Added content to stub files
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/confirm.php, engine/lib/notification.php,
+ engine/lib/users.php, languages/en.php: Closes #221: Body and subject now
+ internationalised.
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: The title no longer causes a WSOD
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/checkboxes.php, views/default/input/hidden.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Refs #206:
+ Hopefully the last of it. Please remember to use htmlentities($foo, null,
+ 'UTF-8'); whenever using htmlentities!
+
+2008-08-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php:
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/icon.php: Refs #206: A better solution
+
+ * mod/profile/views/default/profile/icon.php: Refs #206; Icons title now
+ displayed correctly
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/canvas/layouts/widgets.php: Added extra
+ translation strings to the widget canvas
+
+2008-08-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/navigation/pagination.php: pagination
+ "..." fixed
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/addtopic.php, mod/groups/discussions.php,
+ mod/groups/edittopic.php, mod/groups/topicposts.php: Removing some wsod
+ issues
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php, views/default/page_elements/header.php,
+ views/default/pageshells/pageshell.php: Refs #206: Character encoding on both
+ widget and main page now UTF-8
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Group forums should work
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, views/default/input/form.php: Closes #220: Removed
+ action from hash. Timestamp should make this unpredictable enough.
+
+ * views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php, views/default/input/access.php,
+ views/default/input/button.php, views/default/input/checkboxes.php,
+ views/default/input/email.php, views/default/input/file.php,
+ views/default/input/longtext.php, views/default/input/password.php,
+ views/default/input/pulldown.php, views/default/input/radio.php,
+ views/default/input/reset.php, views/default/input/submit.php,
+ views/default/input/tags.php, views/default/input/text.php,
+ views/default/input/url.php: Refs #211: Two forms converted + extra
+ functionality to input views
+
+ * engine/lib/dummy.php: Removed dummy
+
+2008-08-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/css.php: continuation of cleanup on groups
+
+2008-08-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Friendly titles no longer have more than one
+ hyphen in a row
+
+2008-08-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php,
+ mod/groups/views/default/groups/forum_latest.php: latest discussions widget
+
+2008-08-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: Put minor fix back
+
+2008-08-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: lang tweak on groups
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php, engine/lib/sessions.php: Removed ElggDummy live
+ code for now.
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/css.php: groups css added
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/statistics.php: Elgg.org -> elgg.com
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/members.php: Group forum additions
+
+ * mod/groups/languages/en.php: Small grammar correction
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/deletepost.php, mod/groups/start.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/groups/forum_latest.php: more group tweaks
+
+2008-08-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js: updated, cleaned-up, credited, and tweaked
+ friends picker
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/group.php, engine/lib/objects.php,
+ engine/lib/sites.php, engine/lib/users.php: Centralised set and get magic
+ functions to the tlc. Added isset and unset magic methods. Report any
+ problems!
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php: Slight change to group vocabulary.
+
+ * mod/groups/topicposts.php,
+ mod/groups/views/default/groups/groupprofile.php: Wired up group member count
+ and fixed topic page title
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/addpost.php: group tweak
+
+ * .../views/default/object/groupforumtopic.php: changed the latest
+ discussion view
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: removed print_r
+
+ * engine/lib/dummy.php, engine/lib/pageowner.php, engine/lib/sessions.php,
+ views/default/page_elements/title.php: 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.
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Adjusted list_entities_from_annotations to
+ hide the gallery view by default
+
+ * .../views/default/object/groupforumtopic.php: Minor language change to
+ group topics
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/discussions.php, mod/groups/languages/en.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ .../views/default/object/groupforumtopic.php: more group profile work
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/index.php, mod/groups/languages/en.php,
+ mod/groups/membership.php, mod/groups/start.php: Added a 'member of' groups
+ page and made it default
+
+ * engine/lib/access.php, mod/groups/start.php, mod/profile/start.php: Fixed
+ access permissions wrt groups
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php: new tools menu added -
+ latest discussion
+
+ * mod/groups/languages/en.php,
+ mod/groups/views/default/groups/forum_latest.php: forum latest for group
+ profile page
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Removed an extra sanitise_string call in
+ update_annotations
+
+2008-08-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/forums/addpost.php,
+ mod/groups/actions/forums/addtopic.php,
+ mod/groups/actions/forums/deletetopic.php,
+ mod/groups/actions/forums/edittopic.php, mod/groups/addtopic.php,
+ mod/groups/edittopic.php, mod/groups/forum.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/topicposts.php,
+ mod/groups/views/default/forms/forums/addpost.php,
+ mod/groups/views/default/forms/forums/addtopic.php,
+ .../views/default/forms/forums/edittopic.php,
+ mod/groups/views/default/forum/topicposts.php,
+ mod/groups/views/default/forum/topics.php,
+ mod/groups/views/default/forum/viewposts.php,
+ mod/groups/views/default/groups/forum_latest.php,
+ mod/groups/views/default/groups/profileitems.php: groups now have forums
+
+2008-08-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/toolbar_arrow_ie.gif, views/default/css.php,
+ views/default/navigation/topbar_tools.php: new dropdown toolbar menu that
+ works corss platform. Widget page layout fixed for ie6 & 7
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Refs #210: Will trigger a plugin hook
+ 'action_gatekeeper:permissions:check'.
+
+ * views/default/page_elements/title.php: Refs #174: Checking that session
+ user exists before calling methods on it
+
+ * install.php: Install site secret
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/languages/en.php, mod/logbrowser/start.php,
+ .../views/default/logbrowser/adminlinks.php: Added explore log option to user
+ context menu, albeit in the wrong place.
+
+ * languages/en.php, views/default/admin/statistics.php: Direct link from
+ statistics through to elgg.org
+
+ * languages/en.php: Adjusted statistics message
+
+ * languages/en.php, views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php: Updated admin statistics
+
+ * engine/lib/system_log.php: You can now filter by ID.
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/graphics/icon.php: Minor tweaks to the default icon
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/views/default/object/logwrapper.php: Easy drilldown into
+ logs
+
+ * engine/lib/system_log.php: System log functions now allow searching.
+
+ * mod/logbrowser/index.php, mod/logbrowser/languages/en.php,
+ mod/logbrowser/start.php, mod/logbrowser/views/default/logbrowser/css.php,
+ mod/logbrowser/views/default/logbrowser/form.php,
+ mod/logbrowser/views/default/object/logwrapper.php: The log browser is now
+ searchable.
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, languages/en.php: Closes #218
+
+2008-08-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/index.php, mod/logbrowser/start.php,
+ .../views/default/logbrowser/gallery.php,
+ .../views/default/logbrowser/listing.php,
+ mod/logbrowser/views/default/object/logwrapper.php: Initial changes to log
+ browser
+
+2008-08-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/form.php: Todo has been done
+
+2008-08-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: collections, pages nav and numerous other fixes
+
+ * views/default/css.php: breadcrumbs sorted
+
+ * mod/groups/views/default/groups/groupprofile.php, views/default/css.php:
+ groups styles and group owner layout changed
+
+2008-08-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: title block tweaked
+
+2008-08-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/owner_block_menu_arrow.gif, views/default/css.php: owner block
+ menu 'selected' style added
+
+2008-08-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/profileitems.php: group profile layout
+ tweaked
+
+2008-08-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Edited container-related permissions.
+
+2008-08-06 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/profileitems.php: group profile tweak
+
+ * mod/groups/groupprofile.php: group profile tweak
+
+ * mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/members.php,
+ mod/groups/views/default/groups/profileitems.php: group profile layout
+ tweaked
+
+2008-08-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/opendd.php, .../views/default/forms/guidtool/import.php:
+ Example of usage (Refs #210), also refs #211.
+
+ * views/default/messages/exceptions/exception.php: Tidied up exception
+
+ * engine/lib/actions.php, languages/en.php, views/default/input/button.php,
+ views/default/input/form.php: Refs #210 and #211
+
+2008-08-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/page_elements/footer.php: footer
+ links update, changes to gallery view
+
+2008-08-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/button.php: Images and security fixes
+
+ * views/default/input/button.php, views/default/input/reset.php,
+ views/default/input/submit.php: Closes #212
+
+2008-08-06 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/navigation/topbar_tools.php: tool menu
+ slide effect removed, language file changed for dashboatrd instructions
+
+2008-08-06 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/hidden.php: Closes #209
+
+ * views/default/input/form.php: Closes #208
+
+ * account/forgotten_password.php: Fixes #207: Thanks for your report eike!
+
+2008-08-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: river additions
+
+ * views/default/css.php: toolbar fixes and register box positioning fixed
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/sessions.php: Tweaked the way
+ forwarding works.
+
+ * engine/lib/access.php, engine/lib/group.php, mod/groups/start.php: Fixed
+ group-specific access controls, and site-specific access controls
+
+2008-08-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/river_icons/river_icon_bookmarks.gif,
+ _graphics/river_icons/river_icon_shares.gif,
+ _graphics/river_icons/river_icon_status.gif,
+ _graphics/toolbar_messages_icon.gif, views/default/css.php: numerous fixes to
+ messageboard, status, river icons,
+
+2008-08-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Log though will now not store a url relating to an
+ action... it is now possible to log in again if you are logged out! :D
+
+ * engine/lib/river.php, engine/lib/system_log.php: Fixes #121 and #143.
+ Please confirm.
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/logbrowser/index.php, mod/logbrowser/start.php: The log browser is now
+ a part of the admin panel.
+
+ * engine/lib/widgets.php: Fixed an issue where the third widget column drops
+ widgets.
+
+ * views/default/canvas/layouts/widgets.php: Widget layout update
+
+2008-08-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php: Fixes #204
+
+ * actions/login.php, engine/lib/elgglib.php: Closes #196: Stores last
+ forwarded page in session, this is used by logon to forward page to correct
+ location. Also fixed current_page_url() which was introducing a superfluous
+ "/" before $_SERVER['REQUEST_URI']
+
+2008-08-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/toolbar_messages_icon.gif, views/default/css.php,
+ views/default/page_elements/elgg_topbar.php: topbar with message count and
+ icon
+
+2008-08-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php: largest avatar size changed from 600
+ to 550
+
+ * mod/profile/editicon.php: icon crop area layout tweaked
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Tagging issue on unsaved entities: solved.
+
+2008-08-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Speculative fix for metadata issue.
+
+ * engine/lib/entities.php: Actually fixes #202
+
+ * engine/lib/elgglib.php, engine/lib/entities.php: Fixes #202 : Listen to
+ plugin hook 'entity:icon:url', which passes parameters: 'entity' The entity
+ 'viewtype' The view (eg 'default') 'size' The size (eg, large, tiny etc) You
+ should return a url for the object's icon if you can.. otherwise return
+ nothing at all.
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Fixed accidental group link error
+
+ * views/default/account/forms/login.php: Removed an annoying notify error
+
+2008-08-05 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidtool/views/default/guidtool/listing.php: Using correct entity for
+ icon.
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install.php: The install script uses the one column layout
+
+2008-08-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/groupprofile.php: more group profile
+ layout tweaks
+
+ * mod/groups/views/default/groups/groupprofile.php: group profile tweaked
+
+2008-08-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php:
+
+2008-08-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/edit.php, mod/groups/index.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/groups/grouplinks.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/menu/actions.php,
+ .../views/default/groups/menu/adminlinks.php,
+ mod/groups/views/default/groups/menu/links.php,
+ .../views/default/groups/menu/ownerlinks.php: Moved group links to the
+ sidebar
+
+2008-08-05 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/powered_by_elgg_badge_drk_bckgnd.gif,
+ _graphics/powered_by_elgg_badge_light_bckgnd.gif,
+ views/default/page_elements/footer.php: powered by badge in footer
+
+2008-08-05 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php, mod/groups/views/default/groups/items.php,
+ mod/groups/views/default/groups/profileitems.php: group profile view tweaked
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/index.php, admin/plugins/index.php, admin/site/index.php,
+ admin/statistics/index.php, admin/user/index.php, engine/lib/admin.php,
+ engine/lib/entities.php, views/default/account/forms/useradd.php,
+ views/default/admin/user_opt/adduser.php,
+ views/default/admin/user_opt/search.php: Further changes to the admin panel
+
+2008-08-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/views/default/groups/items.php: groups profile page layout
+ tweak
+
+ * mod/groups/edit.php, mod/groups/groupprofile.php,
+ mod/groups/languages/en.php, mod/groups/views/default/groups/items.php,
+ mod/groups/views/default/groups/members.php: new group profile views
+
+2008-08-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php: Minor improvement to guid
+ tool
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * settings/index.php, settings/statistics/index.php,
+ settings/user/index.php, .../notifications/settings/usersettings.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php: User changes to settings
+
+ * engine/lib/users.php, engine/lib/usersettings.php, languages/en.php,
+ mod/profile/languages/en.php, mod/profile/start.php, settings/index.php,
+ settings/plugins/index.php, settings/statistics/index.php,
+ settings/user/index.php, .../notifications/settings/usersettings.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php,
+ views/default/usersettings/statistics.php,
+ .../usersettings/statistics_opt/numentities.php,
+ .../default/usersettings/statistics_opt/online.php: User settings
+
+2008-08-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/xml-rpc.php: Error message bugfix
+
+ * mod/guidtool/index.php, mod/guidtool/languages/en.php,
+ mod/guidtool/start.php: Adapted to use new menus.
+
+ * services/export/handler.php: Handler output made a little more pretty.
+
+ * mod/guidtool/export.php, mod/guidtool/format_picker.php,
+ mod/guidtool/import.php, mod/guidtool/index.php, mod/guidtool/view.php,
+ mod/logbrowser/index.php: Using the new view
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed the container_guid override.
+
+2008-08-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/navigation/topbar_tools.php,
+ views/default/page_elements/footer.php: updates to toolbar menu fixes, error
+ messages, owner block
+
+2008-08-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/entities/delete.php, languages/en.php,
+ views/default/group/default.php, views/default/object/default.php,
+ views/default/site/default.php: Fixes #199
+
+ * engine/lib/xml-rpc.php: XML-RPC helper functions suggested by Misja
+
+2008-08-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: search layout tweaked
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/metadata.php, search/index.php,
+ views/default/search/entity_list.php: Hidden viewtype toggle on search.
+
+ * views/default/page_elements/owner_block.php: Added owner_block/extend to
+ the owner block
+
+2008-08-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * LICENCE.txt: Refs #197: Added placeholders & gpl 2 licence.
+
+ * engine/lib/sessions.php, engine/lib/users.php, engine/schema/mysql.sql:
+ Closes #193: Added salt field to database and new users will be generated
+ with salted passwords. Existing users remain unchanged and should still be
+ able to log in. Requires a schema change and the following code run against
+ the database: alter table elggusers_entity add column salt varchar(8)
+ NOT NULL default '' after password;
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../canvas/layouts/narrow_right_sidebar.php,
+ views/default/canvas/layouts/two_column.php: Removed old, no-longer-necessary
+ canvas areas.
+
+2008-08-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * account/forgotten_password.php, account/register.php,
+ actions/systemsettings/install.php, languages/en.php,
+ views/default/account/forms/forgotten_password.php,
+ views/default/account/forms/login.php: Closes #195 & #191
+
+2008-08-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Altered pagination so that it
+ does display if we already have an offset.
+
+2008-08-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/edit.php: profile edit layout altered
+
+ * views/default/page_elements/title.php: tweaked the old title block - we no
+ longer need the user avatar now we have the owner block.
+
+ * mod/groups/all.php, mod/groups/groupprofile.php, mod/groups/index.php,
+ mod/groups/invite.php, mod/groups/languages/en.php, mod/groups/new.php,
+ mod/groups/start.php: some work on groups to make them work with the new
+ layout
+
+ * mod/profile/languages/en.php, mod/profile/start.php,
+ views/default/page_elements/owner_block.php: brief description added to the
+ owner block and profile
+
+ * views/default/navigation/pagination.php: pagination now only displays if
+ there is content to paginate through
+
+2008-08-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: minor interface fixes
+
+2008-08-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/annotation/default.php: Default annotation RSS view.
+
+2008-08-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/icon_odd.gif, _graphics/icon_rss.gif,
+ _graphics/owner_block_back.jpg,
+ mod/profile/views/default/profile/userdetails.php, views/default/css.php:
+ more interface fixes and improvements. Icons and background added to owner
+ block
+
+2008-08-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/canvas/default.php, views/foaf/friends/list.php,
+ views/foaf/search/entity_list.php, views/foaf/user/default.php: Fixed FOAF
+ view
+
+ * friends/index.php, friends/of.php,
+ mod/profile/views/default/user/default.php, views/default/user/default.php,
+ views/rss/user/default.php: Fixed RSS and OpenDD feeds for users
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/json/canvas/default.php, views/json/group/default.php,
+ views/json/object/default.php, views/json/search/entity_list.php,
+ views/json/site/default.php, views/json/user/default.php,
+ views/php/canvas/default.php, views/php/group/default.php,
+ views/php/object/default.php, views/php/search/entity_list.php,
+ views/php/site/default.php, views/php/user/default.php: PHP and JSON entity
+ list views... which should work.
+
+2008-08-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixed erroneous friends link issue
+
+ * views/default/page_elements/header.php,
+ views/default/page_elements/owner_block.php,
+ views/opendd/search/entity_list.php: Fixed OpenDD feeds
+
+ * languages/en.php, views/default/page_elements/owner_block.php: RSS and
+ OpenDD feeds autolink in owner block
+
+ * actions/user/spotlight.php, engine/lib/users.php,
+ views/default/page_elements/spotlight.php: Spotlight state persists.
+
+2008-08-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: friends picker modified, minor fixes and css
+ cleanup / re-sort
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/user/passwordreset.php, actions/user/requestnewpassword.php,
+ engine/lib/users.php, languages/en.php: Refs #191: Actions for resetting
+ passwords, but no front end as yet. To request a password reset access
+ http://..../actions/user/requestnewpassword/?username=username
+
+2008-08-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php, views/default/css.php: river
+ updated, widget layout fixed, page block tweaked,
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php: GUIDTool now displays some
+ generic information about entities where available.
+
+2008-08-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/reorder.php, engine/lib/widgets.php, entities/index.php,
+ views/default/canvas/layouts/widgets.php: Widgets now work in three columns
+
+ * engine/lib/elgglib.php: Introducing the new pagesetup event.
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Message changes, refs #190
+
+ * mod/guidtool/start.php: Guidtool only available to admins
+
+ * engine/lib/entities.php, engine/lib/users.php: Changed so that
+ validated_email flag written as null user. Refs #190. Also confirms fix and
+ closes #104.
+
+2008-08-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/metadata.php: The metadata permissions
+ check now passes along (optionally) the specific piece of metadata. Refs #104
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Closes #190. Note however that logins will be
+ broken until #104 has been resolved!
+
+ * actions/import/opendd.php, engine/lib/input.php: Fixes #194
+
+ * actions/import/opendd.php: Refs #194
+
+2008-08-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, entities/index.php,
+ .../canvas/layouts/two_column_left_sidebar.php,
+ views/default/page_elements/owner_block.php: Introducing the consistent owner
+ block
+
+2008-08-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Fixed what I presume was an error: namely it was
+ using $site instead of $guid in get_entity
+
+2008-07-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php: delete collection action - div
+ prevented from showing
+
+2008-07-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/deletecollection.php, languages/en.php: Collections now
+ delete successfully
+
+2008-07-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collections.php: temporarily allow h2 click to
+ propagate through to delete button
+
+2008-07-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/opendd.php: Bugfix
+
+2008-07-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/pickercallback.php, views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/tablelist.php,
+ views/default/friends/tablelistcountupdate.php: Counts now update when you
+ save a friends collection
+
+ * engine/lib/access.php, views/default/friends/picker.php: More updates for
+ collections - save now works properly.
+
+ * actions/friends/editcollection.php: Removing the reference to the
+ collection name for now
+
+ * actions/friends/editcollection.php, engine/lib/access.php,
+ friends/pickercallback.php, languages/en.php,
+ views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php,
+ views/default/friends/forms/collectionfields.php,
+ views/default/friends/forms/edit.php, views/default/friends/picker.php:
+ Picker saves correctly!
+
+2008-07-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/iframe.php: Added iframe output
+
+ * mod/guidtool/export.php, mod/guidtool/format_picker.php,
+ mod/guidtool/import.php, mod/guidtool/index.php,
+ mod/guidtool/languages/en.php, mod/guidtool/start.php, mod/guidtool/view.php,
+ .../views/default/forms/guidtool/export.php,
+ .../views/default/forms/guidtool/format.php,
+ mod/guidtool/views/default/guidtool/gallery.php,
+ mod/guidtool/views/default/guidtool/listing.php,
+ mod/guidtool/views/default/guidtool/profile.php,
+ .../views/default/object/guidtoolwrapper.php: Guid tool for import, export
+ and browsing.
+
+ * views/default/graphics/icon.php: Refs #151: graphics/icon view
+
+2008-07-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/footer_logo.gif, views/default/canvas/layouts/widgets.php,
+ views/default/css.php, views/default/navigation/pagination.php,
+ views/default/page_elements/footer.php: footer logo added, widget gallery
+ instructions changed, pagination block styles added to all pagination
+
+2008-07-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/addcollection.php, actions/friends/deletecollection.php,
+ actions/friends/editcollection.php, engine/lib/users.php, friends/add.php,
+ friends/collections.php, friends/edit.php, languages/en.php,
+ views/default/friends/forms/edit.php: Friends collections are now fully part
+ of the main core
+
+2008-07-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/icons/default/large.png, _graphics/icons/default/medium.png,
+ _graphics/icons/default/small.png, _graphics/icons/default/tiny.png,
+ engine/lib/elgglib.php, engine/lib/entities.php: Closes #151: Introducing
+ getIcon($size)
+
+ * mod/logbrowser/graphics/defaultlarge.jpg,
+ mod/logbrowser/graphics/defaultmedium.jpg,
+ mod/logbrowser/graphics/defaultsmall.jpg,
+ mod/logbrowser/graphics/defaulttiny.jpg,
+ .../views/default/logbrowser/gallery.php,
+ mod/logbrowser/views/default/logbrowser/icon.php,
+ .../views/default/logbrowser/listing.php: Logbrowser now using getIcon for
+ graphics
+
+ * mod/logbrowser/index.php: Title added
+
+ * engine/lib/elgglib.php: Introducing elgg_get_view_location()
+
+2008-07-31 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/toolbar_arrow.png, views/default/css.php: arrow icon added to
+ dropdown menu
+
+ * views/default/css.php, views/default/friends/picker.php: save and cancel
+ buttons added to collections
+
+2008-07-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/pickercallback.php, javascript/friendsPickerv1.js,
+ views/default/friends/collection.php, views/default/friends/collections.php,
+ views/default/friends/collectiontabs.php, views/default/friends/picker.php:
+ Hurrah! Made the friendspickers work
+
+2008-07-31 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidtool/import.php, mod/guidtool/index.php,
+ mod/guidtool/languages/en.php, mod/guidtool/manifest.xml,
+ mod/guidtool/start.php, .../views/default/forms/guidtool/import.php: Added
+ guidtool and switching to desktop.
+
+2008-07-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php: Friends picker tab initialisation
+ updates
+
+2008-07-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/picker.php, views/default/friends/tablelist.php:
+ small change to collection members display - as a table
+
+ * javascript/friendsPickerv1.js, views/default/friends/collectiontabs.php:
+ minor fixes from earlier today - re-instating the a-z slider, and correctly
+ switching the picker tabs
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php: Removing the members from the
+ collections content
+
+ * views/default/friends/picker.php: Picker works better on ajax load.
+
+ * views/default/friends/collectiontabs.php: Added specific numbering to tab
+ classes for the picker
+
+ * views/default/friends/picker.php: Removing js on picker load
+
+ * views/default/friends/collection.php, views/default/friends/picker.php:
+ Collections open blank (for now)
+
+ * views/default/friends/collectiontabs.php: Committing in loads
+
+2008-07-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collectiontabs.php: pete's collectiontabs code
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/odd.php, actions/import/opendd.php, engine/lib/export.php,
+ services/export/handler.php, views/odd/canvas/default.php,
+ views/odd/export/entity.php, views/odd/export/metadata.php,
+ views/odd/export/relationship.php, views/odd/group/default.php,
+ views/odd/messages/exceptions/exception.php, views/odd/object/default.php,
+ views/odd/pageshells/pageshell.php, views/odd/site/default.php,
+ views/odd/user/default.php, views/opendd/canvas/default.php,
+ views/opendd/export/entity.php, views/opendd/export/metadata.php,
+ views/opendd/export/relationship.php, views/opendd/group/default.php,
+ views/opendd/messages/exceptions/exception.php,
+ views/opendd/object/default.php, views/opendd/pageshells/pageshell.php,
+ views/opendd/site/default.php, views/opendd/user/default.php: Closes #189:
+ ODD -> OpenDD
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php, views/default/friends/picker.php:
+ AJAX improvements to picker
+
+ * engine/lib/elgglib.php, views/default/navigation/pagination.php: Lists of
+ comments etc no longer display "none found" if there aren't any.
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/odd.php: Forward to referer
+
+ * services/export/handler.php:
+
+ * actions/import/odd.php: Admin gatekeeper
+
+2008-07-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_toolbar_logout.gif, _graphics/elgg_toolbar_logout_over.gif,
+ _graphics/icon_customise_remove.png, views/default/css.php,
+ views/default/friends/collection.php: toolbar logout icon changed to work as
+ a single image resource (for caching purposes), delete icon on collections
+ changed to work as a single image rollover
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/export/entity.php: Minor improvements to
+ default entity view.
+
+ * views/default/export/metadata.php, views/default/export/relationship.php:
+ Improved views
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/pickercallback.php, views/default/friends/picker.php,
+ views/default/friends/tablelist.php: Added friends picker callback
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php, engine/lib/relationships.php: Refs #186: Get URL
+ for relationships
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php,
+ views/default/friends/collectiontabs.php, views/default/friends/picker.php:
+ Moved collection tabs out of the main picker view
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: Refs #186
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php: Introducing url handlers for extenders.
+
+ * engine/lib/export.php: Changed export uuid, refs #186
+
+ * htaccess_dist: Changed export rewrite rules.
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/collection.php, views/default/friends/picker.php,
+ views/default/friends/tablelist.php: Added friends collections members list
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Using guid_to_uuid
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/tablelist.php: Added the tablelist view
+
+2008-07-30 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js, views/default/css.php,
+ views/default/friends/collection.php, views/default/friends/picker.php: the
+ beginnings of the tabbed friends picker
+
+2008-07-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php: Extender getURL() support (no overide as of yet)
+
+ * mod/opendd/actions/opendd/feed/delete.php,
+ mod/opendd/actions/opendd/feed/subscribe.php, mod/opendd/edit.php,
+ mod/opendd/feeds.php, mod/opendd/graphics/defaultlarge.jpg,
+ mod/opendd/graphics/defaultmedium.jpg, mod/opendd/graphics/defaultsmall.jpg,
+ mod/opendd/graphics/defaulttiny.jpg, mod/opendd/index.php,
+ mod/opendd/languages/en.php, mod/opendd/manage.php, mod/opendd/manifest.xml,
+ mod/opendd/start.php, mod/opendd/viewfeed.php,
+ .../views/default/forms/opendd/subscribe.php,
+ mod/opendd/views/default/object/oddentity.php,
+ mod/opendd/views/default/object/oddfeed.php,
+ mod/opendd/views/default/object/oddmetadata.php,
+ .../views/default/object/oddrelationship.php,
+ mod/opendd/views/default/opendd/css.php,
+ mod/opendd/views/default/opendd/gallery.php,
+ mod/opendd/views/default/opendd/icon.php,
+ mod/opendd/views/default/opendd/link_logo.php,
+ mod/opendd/views/default/opendd/links.php,
+ mod/opendd/views/default/opendd/listing.php,
+ mod/opendd/views/default/opendd/metatags.php,
+ mod/opendd/views/default/opendd/profile.php,
+ mod/opendd/views/default/output/uuid.php,
+ .../widgets/opendd_friends_elsewhere/edit.php,
+ .../widgets/opendd_friends_elsewhere/view.php, mod/opendd/viewuuid.php: Moved
+ OpenDD out of the central repo.
+
+ * mod/logbrowser/index.php: Logbrowser using admin gatekeeper.
+
+2008-07-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/widgets.php: Widget state cookie is now removed on widget
+ delete.
+
+2008-07-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js, views/default/canvas/layouts/widgets.php,
+ views/default/widgets/wrapper.php: individual widgets state now saved in
+ cookies
+
+2008-07-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Default view added to export, for completeness
+
+ * engine/lib/system_log.php:
+
+ * views/odd/group/default.php, views/odd/site/default.php: OpenDD default
+ views on entities
+
+ * views/default/export/entity.php: Improvements to export view
+
+ * views/default/object/default.php, views/default/site/default.php: Added
+ some default views.
+
+ * .../views/default/logbrowser/gallery.php: And in gallery view
+
+ * .../views/default/logbrowser/listing.php: Handle anonymous events.
+
+ * actions/systemsettings/install.php,
+ mod/logbrowser/graphics/defaultlarge.jpg,
+ mod/logbrowser/graphics/defaultmedium.jpg,
+ mod/logbrowser/graphics/defaultsmall.jpg,
+ mod/logbrowser/graphics/defaulttiny.jpg, mod/logbrowser/index.php,
+ mod/logbrowser/languages/en.php, mod/logbrowser/manifest.xml,
+ mod/logbrowser/start.php, .../views/default/logbrowser/gallery.php,
+ mod/logbrowser/views/default/logbrowser/icon.php,
+ .../views/default/logbrowser/listing.php,
+ mod/logbrowser/views/default/object/logwrapper.php: Added basic log browser.
+ updateclient & logbrowser are switched on by default in new installs.
+
+ * engine/lib/system_log.php: Fixed count
+
+ * engine/lib/system_log.php: Typo
+
+ * engine/lib/system_log.php: Added some useful helper functions.
+
+ * engine/lib/system_log.php: Count support added
+
+2008-07-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php, views/default/css.php: final
+ changes to widgets - all ready to wire up now
+
+2008-07-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/opendd/start.php: Typo
+
+ * actions/register.php, languages/en.php,
+ views/default/account/forms/login.php: Registration disabled option (no admin
+ screen yet), closes #184
+
+2008-07-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * dashboard/index.php: dashboard widget tweak
+
+ * views/default/canvas/layouts/widgets.php: tweak to the profile widget
+ picker
+
+2008-07-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/updateclient/languages/en.php, mod/updateclient/start.php,
+ .../views/default/settings/updateclient/edit.php: Update client gets updates
+
+ * engine/lib/admin.php: Admin notify method added, view 'admin_message' for
+ this.
+
+2008-07-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/canvas/layouts/widgets.php: widget layout
+ help context sensitive.
+
+2008-07-29 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php: Only on install
+
+ * mod/updateclient/languages/en.php, mod/updateclient/start.php: Update
+ client
+
+2008-07-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/updateclient/languages/en.php,
+ .../views/default/settings/updateclient/edit.php: Added configuration to
+ client.
+
+ * views/default/admin/plugins_opt/plugin.php: Minor look and feel tweaks
+
+ * mod/updateclient/index.php, mod/updateclient/languages/en.php,
+ mod/updateclient/manifest.xml, mod/updateclient/start.php,
+ .../views/default/settings/updateclient/edit.php: Adding updateclient
+ (non-functional) and now switching back to base station.
+
+2008-07-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php: new start page layout/style
+
+ * views/default/css.php: fixes to toolbar and owner box ie 6 issues
+
+ * views/default/css.php: top toolbar styled up, and owner block items
+
+ * _graphics/tools_over.png, javascript/initialise_elgg.js, languages/en.php,
+ views/default/canvas/layouts/widgets.php, views/default/css.php,
+ views/default/navigation/topbar_tools.php: new 3 column widget gallery (needs
+ wiring up), profile page profile box alignment sorted, topbar menu tweaked
+ and image added,
+
+2008-07-28 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/start.php: Fixes #182
+
+2008-07-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php,
+ views/default/canvas/layouts/widgets.php, views/default/css.php: profile and
+ dashboard pages altered for 3 widget columns
+
+2008-07-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/footer.php: fixed a small footer error
+
+ * views/default/page_elements/footer.php: wired up the footer menu links
+
+ * views/default/pageshells/pageshell.php: the spotlight is now only
+ available for logged in users.
+
+2008-07-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js, views/default/css.php,
+ views/default/friends/picker.php: friends picker fixed for new page layout,
+ and hopefully I've fixed the load issue too
+
+2008-07-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php,
+ views/default/canvas/layouts/widgets.php, views/default/css.php,
+ views/default/page_elements/elgg_topbar.php,
+ views/default/pageshells/pageshell.php: canvas layout updates, ie6&7 layout
+ fixes, new 3-column widget view
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/ping.php: Some notes
+
+ * engine/lib/ping.php: Using correct ping address
+
+ * engine/lib/entities.php: User test negative non-fatal on permissions check
+
+ * engine/lib/entities.php: Actually fetching the user
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * friends/index.php, friends/of.php: friends pages altered
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/opendd/views/default/output/uuid.php: Introducing UUID view
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php, entities/list.php: changed list and entity canvas
+ layout
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/ping.php: Main pinging mechanism now functional
+
+ * engine/lib/ping.php: Temp disabled
+
+ * engine/schema/mysql.sql: Fixing access collections table
+
+2008-07-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/one_column.php, views/default/css.php,
+ views/default/page_elements/title.php: more canvas layout additions, and page
+ owner block added to sidebar
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../canvas/layouts/two_column_left_sidebar.php: tweak to the two_column
+ left to add the owner block
+
+2008-07-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php: menu fix
+
+ * views/default/css.php: new canvas layouts
+
+ * .../canvas/layouts/two_column_left_sidebar.php,
+ .../canvas/layouts/two_column_right_sidebar.php: new canvas layouts
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/ping.php: Sends url with version (to retrieve site if already
+ loaded)
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php: bug in tools fixed
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/ping.php: Set to ping ping.elgg.org
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/ping.php, languages/en.php, views/default/settings/system.php:
+ Ping now configurable.
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php: tools added to topbar
+
+ * views/default/pageshells/pageshell.php: removed toolbox from main content
+ area
+
+2008-07-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: minor tweak
+
+ * views/default/navigation/topbar_tools.php,
+ views/default/page_elements/elgg_topbar.php: tools menu item fixed and jquery
+ animation added
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/settings/system.php: Moving to laptop
+
+2008-07-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, views/default/friends/collection.php,
+ views/default/friends/picker.php: Improved friend picker.
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, engine/lib/configuration.php:
+ sitedescription now loaded into config and displayed
+
+2008-07-25 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topbar_tools.php,
+ views/default/page_elements/elgg_topbar.php: added tools to the topbar
+
+2008-07-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ languages/en.php, views/default/settings/system.php: Now possible to specify
+ a site description.
+
+ * engine/lib/ping.php:
+
+ * views/default/output/url.php: Fixed another oopsy
+
+ * engine/lib/api.php:
+
+ * engine/lib/entities.php: Support multiple metadata values on entities,
+ closes #179
+
+2008-07-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/ping.php:
+
+ * engine/lib/api.php: API Client bugfixes
+
+ * engine/lib/api.php:
+
+2008-07-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/friendsPickerv1.js, views/default/friends/picker.php: Tabs on
+ the friend picker now work.
+
+2008-07-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Fixing oopsy...
+
+2008-07-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/friends/picker.php: Fixed the friends picker.
+
+ * views/default/friends/picker.php: The picker now selects the
+ friendspickerN variable correctly.
+
+ * engine/lib/access.php, engine/lib/relationships.php,
+ engine/schema/mysql.sql, languages/en.php,
+ views/default/friends/collection.php, views/default/friends/collections.php,
+ views/default/friends/picker.php: Introducing the (still issue-packed) friend
+ picker.
+
+2008-07-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Allowing multiple
+
+ * views/default/output/url.php: Support HTTPS
+
+ * engine/lib/api.php: Api tweaks refs #149
+
+ * engine/lib/ping.php: New site pinger, refs #149
+
+ * engine/lib/entities.php: Correctly exporting site and container as opendd
+
+2008-07-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, services/api/rest.php: Updated to use pam for auth
+ token. Added anonymous function support.
+
+ * engine/lib/pam.php: PAM now supports 'required' and 'sufficient'
+
+2008-07-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/friends_picker_arrow_left.gif,
+ _graphics/friends_picker_arrow_right.gif, javascript/friendsPickerv1.js,
+ .../jquery/jquery-easing-compatibility.1.2.pack.js,
+ vendors/jquery/jquery-easing.1.2.pack.js, views/default/css.php,
+ views/default/page_elements/header.php: new files for friends picker
+
+2008-07-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Fixed typo
+
+ * engine/lib/api.php, languages/en.php: API client added to code & changed
+ order of expose_function
+
+ * engine/lib/entities.php, engine/lib/group.php: Moving canWriteToContainer
+
+2008-07-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/footer_logo.gif, views/default/page_elements/footer.php: removal
+ of the official elgg logo from the footer, this is not GPL.
+
+2008-07-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/groupprofile.php: The group profile now sets page ownership to
+ the group
+
+ * mod/groups/views/default/groups/grouplinks.php: Slight modification to
+ group links.
+
+ * engine/lib/objects.php: Yet more container refactoring.
+
+2008-07-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/access.php, views/default/input/checkboxes.php,
+ views/default/input/file.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Disabled support
+ added to forms.
+
+2008-07-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/metadata.php,
+ engine/lib/relationships.php: More owner_guid to container_guid transfer
+
+ * engine/lib/metadata.php, engine/lib/tags.php: Updated further functions to
+ work from container_guids rather than owner_guids
+
+ * mod/groups/start.php, mod/groups/views/default/groups/icon.php,
+ mod/profile/views/default/profile/icon.php: Icons now handle elegantly if you
+ try and display a non-ElggUser entity.
+
+ * engine/lib/group.php, engine/lib/pageowner.php,
+ mod/groups/languages/en.php: Groups now have usernames of a sort
+
+ * engine/lib/elgglib.php, engine/lib/group.php, engine/lib/users.php:
+ Introducing the Friendable interface
+
+ * mod/profile/views/default/user/default.php,
+ mod/profile/views/default/user/user.php: Moved the default user view from
+ user/user to user/default.
+
+2008-07-22 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php:
+
+ * engine/lib/entities.php: Saving cached annotations
+
+2008-07-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/new.php: Typo
+
+ * mod/opendd/edit.php, mod/opendd/feeds.php, mod/opendd/index.php,
+ mod/opendd/manage.php, mod/opendd/viewfeed.php, mod/opendd/viewuuid.php:
+ OpenDD using elgg_view_title
+
+ * engine/lib/entities.php: Exporting full profile
+
+ * mod/groups/all.php, mod/groups/edit.php, mod/groups/groupprofile.php,
+ mod/groups/index.php, mod/groups/invite.php, mod/groups/new.php: Groups using
+ elgg_view_title
+
+ * engine/lib/access.php: Fixes #175
+
+2008-07-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fix for can_write_to_container
+
+ * engine/lib/entities.php: Fixed the can_write_to_container function when
+ you're logged out.
+
+ * engine/lib/entities.php, engine/lib/users.php: Further fixes.
+
+ * engine/lib/entities.php: Fix for previous.
+
+ * engine/lib/entities.php: Container_guid is set intelligently for
+ get_entities when owner_guid is set.
+
+ * engine/lib/users.php: Slight fix to previous.
+
+ * engine/lib/users.php: Altered the get_user_friends_objects functions to
+ work with containers.
+
+ * engine/lib/entities.php, engine/lib/group.php: Moved
+ can_write_to_container into elgglib
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/lib/entities.php, engine/lib/group.php, engine/lib/objects.php,
+ engine/lib/pageowner.php, engine/lib/users.php, engine/schema/mysql.sql,
+ mod/groups/actions/addtogroup.php, views/default/page_elements/title.php:
+ Moved container_guid to entities, modified a bunch of functions.
+
+ * engine/lib/plugins.php: Standardised plugin loading
+
+2008-07-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, mod/groups/languages/en.php, mod/groups/start.php:
+ Closes #166
+
+2008-07-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Slight change to write access permissions function
+
+ * engine/lib/access.php: Reinstating plugin hooks for access collections.
+
+ * engine/lib/input.php, mod/profile/views/default/profile/userdetails.php,
+ views/default/admin/main.php, views/default/admin/plugins.php,
+ views/default/admin/site.php, views/default/admin/statistics.php,
+ views/default/admin/user.php, views/default/messages/errors/error.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/messages/message.php,
+ views/default/output/longtext.php, views/default/settings/install.php,
+ views/default/usersettings/main.php, views/default/usersettings/plugins.php,
+ views/default/usersettings/statistics.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/odd/messages/exceptions/exception.php, views/rss/object/default.php,
+ views/rss/user/default.php, views/xml/messages/exceptions/exception.php:
+ Added the autop function, replaced any references to nl2br
+
+ * engine/lib/access.php, engine/schema/mysql.sql: Fixed a bug with the
+ revamped access collections
+
+ * engine/lib/pageowner.php, engine/lib/plugins.php: Improvements to
+ get_context
+
+ * engine/lib/access.php: Fix for access collections
+
+ * views/default/input/text.php: Short text values are now properly escaped
+ in the input/text view.
+
+ * engine/schema/mysql.sql: Added auto increment initial val. Fixes #171
+
+2008-07-18 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: new functions added to access in order to allow
+ collections to be created
+
+2008-07-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: access_collections now auto_increment
+
+2008-07-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: access groups renamed to access collections
+
+2008-07-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: access_groups -> access_collections
+
+ * engine/lib/access.php: Fix to previous
+
+ * engine/lib/access.php: New access control hooks
+
+2008-07-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, mod/groups/groupprofile.php,
+ mod/groups/start.php: Closes #165 & #167
+
+ * services/export/handler.php:
+
+2008-07-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Added new access group control functions
+
+2008-07-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Fixes #164: Seems there is something erroniously
+ setting 'guid' to something in logged in systems (or alternatively this is
+ just a session problem on my system) either way I have modified isloggedin to
+ check both guid and id... which seems to work.
+
+ * engine/lib/entities.php, engine/lib/extender.php,
+ services/export/handler.php: Closes #160
+
+2008-07-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fixed get_entities_by_annotation
+
+ * engine/lib/annotations.php: Introducing list_entities_from_annotations
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, mod/opendd/viewuuid.php,
+ views/default/friends/list.php, views/default/search/entity_list.php,
+ views/js/object/default.php, views/js/user/default.php: Fixed numerous
+ occurrances of elgg_view_entity being called incorrectly. Fixes #163
+
+2008-07-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php: Fixed the single entity viewer
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/index.php: Fixes #162
+
+ * mod/opendd/viewuuid.php: Closes #161
+
+2008-07-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/add.php, actions/friends/remove.php: Add and remove friend
+ actions now use try / catch
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/extender.php: Closes #155: Introduces
+ 'volatile' type of metadata in odd feeds.
+
+ * engine/lib/elgglib.php: Closes #157: Introducing elgg_[get|set]_viewtype()
+
+ * engine/lib/river.php: Reversed ben's changes
+
+2008-07-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Fix for river items when the item is an annotation,
+ not an entity in itself
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Closes #158: Renamed $location to $view_location
+ within elgg_view. This seems to be a successful workaround.
+
+2008-07-16 misja <misja@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/xml-rpc_handler.php: Set the view with set_input rather
+ than via the session
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php: Closes #156 & #139
+
+2008-07-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: The friends river now grabs more friends ...
+
+2008-07-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/joinrequest.php: Fixes #154
+
+ * engine/lib/metadata.php, mod/groups/actions/join.php: Closes #116: Groups
+ join clears invite flags http://trac.elgg.org/elgg/ticket/116
+
+ * mod/profile/actions/edit.php, mod/profile/actions/iconupload.php,
+ mod/profile/languages/en.php,
+ .../default/river/ElggUser/profileiconupdate.php,
+ .../views/default/river/ElggUser/profileupdate.php,
+ .../views/default/river/ElggUser/update.php: Closes #152 and as a bonus you
+ get a river notification for icon upload as well. Aren't I nice?
+
+2008-07-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: river blog updated - added
+
+2008-07-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/opendd/start.php: Fixes #147
+
+ * mod/opendd/start.php:
+
+ * mod/opendd/start.php: Closes #150
+
+ * mod/opendd/start.php, .../widgets/opendd_friends_elsewhere/view.php,
+ mod/opendd/viewuuid.php: Closes #145: Override getURL on imported entities.
+
+2008-07-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: You can now override entity URLs with the
+ setURL($string) method.
+
+2008-07-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/edit.php,
+ mod/groups/actions/joinrequest.php, mod/groups/languages/en.php,
+ mod/groups/start.php, mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/groupgallery.php,
+ mod/groups/views/default/groups/grouplisting.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ .../default/river/ElggRelationship/create.php: Fixes #144
+
+2008-07-15 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/javascript.php: javascript menu dropdown IE
+ bug fixed for friends widget, still an issue with friends of
+
+2008-07-15 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/ElggRelationship/create.php,
+ views/default/river/wrapper.php,
+ views/json/messages/exceptions/exception.php,
+ views/php/messages/exceptions/exception.php,
+ views/xml/messages/exceptions/exception.php: Closes #140
+
+ * engine/lib/extender.php, mod/opendd/languages/en.php,
+ mod/opendd/manage.php, mod/opendd/start.php, mod/opendd/viewfeed.php,
+ .../widgets/opendd_friends_elsewhere/edit.php,
+ .../widgets/opendd_friends_elsewhere/view.php: Closes #135: First version of
+ the OpenDD friends elsewhere feed.
+
+ * engine/lib/river.php, .../default/river/ElggRelationship/create.php,
+ .../views/default/river/ElggUser/update.php: Using ElggRiverStatement. Plugin
+ writers update your views! Refs #135.
+
+ * engine/lib/entities.php: Moved temp array caching stuff to the correct
+ functions.
+
+ * engine/lib/entities.php: Entity metadata can now be saved using
+ setMetaData() interface even if guid not specified.
+
+2008-07-15 misja <misja@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/handlers/xml-rpc_handler.php, engine/lib/xml-rpc.php: Remove rogue
+ print_r() statement, rightly set the xml view and fix incorrect xml-rpc view
+ call.
+
+ * engine/lib/xml-rpc.php: Fix uninitialized XML-RPC handler value
+
+ * engine/lib/xml-rpc.php: Fixed registering of XML-RPC handlers
+
+2008-07-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: Time_created should be time_updated.
+
+ * engine/lib/opendd.php: Refs #139: Using UTF-8 encoding as a speculative
+ fix. Test and confirm.
+
+2008-07-14 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updated toolabr logout for old IE 6's
+
+ * views/default/css.php: updates to log out, pagination, search box
+
+2008-07-14 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: Introducing oddmetadata_to_elggextender(), a
+ function used for import but functionised to let you use it from elsewhere.
+
+2008-07-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Introducing oddentity_to_elggentity(), a function
+ used for import but functionised to let you use it from elsewhere.
+
+2008-07-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: and again
+
+ * views/default/css.php: river_forums_update added
+
+2008-07-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: new date and time lang
+
+2008-07-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/search/entity_list.php,
+ views/rss/search/entity_list.php: The lists now go through the
+ search/entity_list view.
+
+2008-07-11 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php: Added getNumElements()
+
+ * engine/lib/entities.php: Fixes #137: annotate and getAnnotations now
+ functions for unsaved entities. Maths functions non-functional at present.
+ Refs #135.
+
+ * engine/lib/entities.php: Added Group entity support to import.
+
+ * languages/en.php, services/export/handler.php: Better errors for attempt
+ to access a GUID you can't
+
+ * views/odd/messages/exceptions/exception.php: Exceptions in OpenDD export
+ now appear as comments for debugging.
+
+ * engine/lib/relationships.php, services/export/handler.php: relationships
+ are addressable and have working UUIDs, refs #132
+
+ * actions/comments/add.php, actions/comments/delete.php,
+ actions/email/confirm.php, actions/email/save.php, actions/friends/add.php,
+ actions/friends/remove.php, actions/import/odd.php, actions/login.php,
+ actions/logout.php, .../notifications/settings/usersettings/save.php,
+ actions/plugins/settings/save.php, actions/plugins/usersettings/save.php,
+ actions/register.php, actions/user/language.php, actions/user/name.php,
+ actions/user/password.php, actions/useradd.php, actions/widgets/save.php,
+ languages/en.php: Using register_error on errors rather than system_message.
+ Also, fixed widget save to handle arrays (Refs #135)
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php,
+ actions/admin/user/makeadmin.php, actions/admin/user/resetpassword.php: Using
+ register_error on errors rather than system_message
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ mod/groups/actions/addtogroup.php, mod/groups/actions/edit.php,
+ mod/groups/actions/join.php, mod/groups/actions/joinrequest.php,
+ mod/groups/actions/leave.php, mod/opendd/actions/opendd/feed/delete.php,
+ mod/opendd/actions/opendd/feed/subscribe.php: Using register_error on errors
+ rather than system_message
+
+2008-07-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: defaut font reset to verdana
+
+ * views/default/css.php: full list of pc names for Lucida Sans added
+
+2008-07-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/two_column.php, views/default/css.php: two
+ column layout fix
+
+ * views/default/canvas/layouts/two_column.php, views/default/css.php: two
+ column canvas layout fixed
+
+2008-07-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/page_elements/title.php:
+ elgg_view_title can now suppress the submenu
+
+2008-07-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_toolbar_logout_over.gif, views/default/css.php,
+ views/default/page_elements/elgg_topbar.php: elgg topbar logout re-done with
+ rollover
+
+2008-07-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/admin/plugins.php: Killed pagination on the plugin admin
+ page
+
+ * engine/lib/elgglib.php: Added a plugin hook for counting comments.
+
+2008-07-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/widgets.php: Working with multiple values in array
+
+2008-07-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/elgg_bookmarklet.gif: bookmarklet graphic
+
+2008-07-10 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixes #134: Using else between statements to
+ ensure that they are only ever triggered once. Please confirm that there are
+ no other issues attached.
+
+2008-07-10 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ .../views/default/profile/menu/adminlinks.php, views/default/css.php: avatar
+ submenu altered and messages div coloured up
+
+2008-07-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/messages/errors/list.php,
+ views/default/messages/messages/list.php: Error messages now have a different
+ div name
+
+ * views/default/page_elements/title.php: The submenu div doesn't appear if
+ there is no submenu.
+
+ * engine/lib/plugins.php: Fixed issue with get_plugin_name and pagehandlers.
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/comments/forms/edit.php: Fixed
+ comments!
+
+ * engine/lib/elgglib.php: Fixed submenu tab contexts
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Blocking some information from export, closes
+ #130
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: Updated the edit icon form
+ view
+
+ * mod/profile/editicon.php: Restoring old edit icon page
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, mod/opendd/actions/opendd/feed/delete.php,
+ mod/opendd/actions/opendd/feed/subscribe.php, mod/opendd/edit.php,
+ mod/opendd/feeds.php, mod/opendd/graphics/defaultlarge.jpg,
+ mod/opendd/graphics/defaultmedium.jpg, mod/opendd/graphics/defaultsmall.jpg,
+ mod/opendd/graphics/defaulttiny.jpg, mod/opendd/index.php,
+ mod/opendd/languages/en.php, mod/opendd/manage.php, mod/opendd/manifest.xml,
+ mod/opendd/start.php, mod/opendd/viewfeed.php,
+ .../views/default/forms/opendd/subscribe.php,
+ mod/opendd/views/default/object/oddentity.php,
+ mod/opendd/views/default/object/oddfeed.php,
+ mod/opendd/views/default/object/oddmetadata.php,
+ .../views/default/object/oddrelationship.php,
+ mod/opendd/views/default/opendd/css.php,
+ mod/opendd/views/default/opendd/gallery.php,
+ mod/opendd/views/default/opendd/icon.php,
+ mod/opendd/views/default/opendd/link_logo.php,
+ mod/opendd/views/default/opendd/links.php,
+ mod/opendd/views/default/opendd/listing.php,
+ mod/opendd/views/default/opendd/metatags.php,
+ mod/opendd/views/default/opendd/profile.php: Closes #81: OpenDD aggregator
+ http://trac.elgg.org/elgg/ticket/81
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Further profile text fix
+
+ * mod/profile/languages/en.php, mod/profile/start.php: Added profile submenu
+
+ * engine/lib/elgglib.php: Fixed minor profile tab issue
+
+2008-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: mini avatar in page title area fixed
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/user/index.php: The user administator page now results in an RSS
+ feed
+
+ * engine/lib/elgglib.php, views/default/canvas_header/submenu_template.php,
+ views/default/page_elements/title.php: Introducing the submenu
+
+2008-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: edit profile button moved
+
+2008-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: profile edit link moved
+
+ * friends/of.php: friends of title
+
+ * friends/index.php, friends/of.php: titles on friend list pages
+
+2008-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: css for page tabs submenu
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/rss/pageshells/pageshell.php: RSS feeds live again when you're
+ logged out!
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Fixed opendd metadata .htaccess rules
+
+ * engine/lib/elgglib.php, engine/lib/entities.php: Refs #81: Subtype can be
+ returned on a non-saved entity.
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added a comment hook so that other plugins can
+ handle comments instead
+
+ * vendors/kses/kses.php: Removed a kses warning.
+
+ * views/default/comments/forms/edit.php: The comment form only appears if
+ you are logged in.
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Removed toggle since it broke the handler
+ prototype
+
+2008-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: new view added to the canvas title
+ view.
+
+2008-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/page_elements/elgg_topbar.php: topbar
+ altered for messages and links style
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/object/object.php: Closes #129: Placeholder object default
+ view
+
+2008-07-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/editicon.php, mod/profile/languages/en.php,
+ views/default/css.php: new avatar crop page and instructions
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/languages/en.php, mod/groups/start.php,
+ .../default/widgets/group_entities_widget/edit.php,
+ .../default/widgets/group_entities_widget/view.php: Refs #129, #109 & #106
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Plugins can now override the front page
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Introducing list_entities_groups()
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: The relationship listing function wasn't
+ taking offsets properly.
+
+ * views/default/navigation/pagination.php: Further pagination change.
+
+2008-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: new topbar
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Further pagination change.
+
+ * views/default/navigation/pagination.php: Slightly more descriptive
+ pagination.
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Modified rewrite rules for page handler to support - and _
+
+2008-07-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php, vendors/kses/AUTHORS, vendors/kses/COPYING,
+ vendors/kses/ChangeLog, vendors/kses/README, vendors/kses/TODO,
+ vendors/kses/docs/attribute-value-checks, vendors/kses/docs/hooks,
+ vendors/kses/docs/stripping-everything, vendors/kses/docs/supported-formats,
+ vendors/kses/docs/whitelisted-url-protocols,
+ vendors/kses/examples/filter.php, vendors/kses/examples/test.php,
+ vendors/kses/kses.php, vendors/kses/oop/oop.kses.changelog.txt,
+ vendors/kses/oop/oop.simple.api.txt, vendors/kses/oop/php4.class.kses.php,
+ vendors/kses/oop/php5.class.kses.php, vendors/kses/oop/test.oop.kses.php:
+ Elgg 1.0, meet kses. Kses, Elgg 1.0.
+
+2008-07-09 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php: Minor tweak to OpenDD library
+
+2008-07-09 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/editicon.php, mod/profile/languages/en.php,
+ mod/profile/views/default/profile/editicon.php: new profile avatar page
+
+2008-07-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/gallery.php: users gallery view sorted
+
+2008-07-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Closes #128
+
+2008-07-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: new canvas title
+
+2008-07-08 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/river_icons/river_icon_friends.gif, views/default/css.php: river
+ icon for friends
+
+2008-07-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/vendors/calendarpopup/CalendarPopup.js,
+ engine/vendors/jquery/jquery.js, vendors/calendarpopup/CalendarPopup.js,
+ views/default/input/calendar.php: Moved the calendar popup, erased the
+ duplicate jQuery
+
+ * actions/comments/add.php, engine/lib/notification.php, languages/en.php:
+ Introducing notifications on generic comments.
+
+ * entities/list.php: Rough and ready entity list page
+
+2008-07-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: reverted the new title
+
+ * views/default/page_elements/title.php: title tweaks
+
+2008-07-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: OpenDD autodiscovery header
+
+2008-07-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: moved generic comments css from plugin to core
+
+2008-07-08 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Closes #125: get_entities_by_latest_annotation
+ function
+
+2008-07-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/widgets.php, views/default/output/tags.php: widget are now
+ logged in by default, tag output tweaked
+
+2008-07-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/metastrings.php, mod/profile/actions/iconupload.php: Removing
+ annoying warning messages
+
+2008-07-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php: Users online, not user's ...
+
+ * actions/admin/user/makeadmin.php, engine/lib/admin.php,
+ engine/lib/entities.php, engine/lib/metadata.php, engine/lib/sessions.php,
+ engine/lib/users.php, views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php: Administration tweaks; fixed
+ users online functions, as well as last_action functions, and the 'make
+ admin' functionality
+
+ * views/default/page_elements/title.php: Removed the 'your' prefix from
+ titles
+
+ * engine/lib/pageowner.php: page_owner() now works off owner_guid, not
+ owner_id
+
+ * languages/en.php: Added the word 'all' to the vocabulary
+
+2008-07-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/title.php: changes to the title view
+
+2008-07-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/wrapper.php: Relationship river items are now
+ correctly wrapped in divs
+
+ * mod/profile/graphics/defaulttopbar.jpg, mod/profile/graphics/topbar.jpg:
+ Default topbar graphic should now be included
+
+2008-07-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/graphics/topbar.jpg: default avatar added for topbar
+
+2008-07-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/metadata.php: Introducing
+ canEditMetadata
+
+2008-07-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Closes #107, this has been superceded by groups
+ functionality (#106).
+
+ * engine/lib/notification.php: Option to hide sender.
+
+2008-07-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/gallery_back_icon.gif, _graphics/gallery_back_icon_on.gif:
+ gallery overview icons
+
+ * _graphics/icon_tag.gif: piccy for tags
+
+ * views/default/css.php: tags icon and files update
+
+2008-07-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/tags.php: class wrapped around tag string.
+
+2008-07-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Closes #123
+
+2008-07-07 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/comments/forms/edit.php: removed the title from generic
+ comments
+
+2008-07-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Fixes #122
+
+2008-07-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/search/gallery.php: updated file
+ gallery
+
+2008-07-07 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php: Decode on import
+
+ * engine/lib/group.php, mod/groups/actions/edit.php,
+ mod/groups/actions/join.php, mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/edit.php,
+ mod/groups/views/default/groups/menu/actions.php: Closes #120
+
+2008-07-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed friendly_time
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/edit.php, mod/groups/languages/en.php,
+ mod/groups/views/default/forms/groups/edit.php: Closes #109: Group icons can
+ be set. Fixed recreate group on edit.
+
+ * mod/groups/graphics/defaultlarge.jpg,
+ mod/groups/graphics/defaultmedium.jpg, mod/groups/graphics/defaultsmall.jpg,
+ mod/groups/graphics/defaulttiny.jpg, mod/groups/graphics/icon.php,
+ mod/groups/views/default/groups/icon.php: Refs #109: Default graphics set.
+ Custom graphics must be in groups/{$GROUP_GUID}{$size}.jpg
+
+2008-07-04 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: changes to the icon
+ editing page.
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../views/default/profile/menu/adminlinks.php: Removed blank space on menu
+
+2008-07-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/menu/actions.php: REmoved duplicate
+ admin links
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php: Fixes #119
+
+ * languages/en.php, mod/groups/actions/addtogroup.php,
+ mod/groups/actions/edit.php, mod/groups/edit.php, mod/groups/invite.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ mod/groups/views/default/forms/groups/invite.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/icon.php,
+ mod/groups/views/default/groups/menu/actions.php,
+ mod/groups/views/default/sharing/invite.php: Refs #109: Invite support added
+
+2008-07-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updates for friends widget
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Fixed regression
+
+2008-07-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js: updated js
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/pageowner.php,
+ mod/groups/languages/en.php, mod/groups/start.php,
+ .../default/widgets/group_members_widget/edit.php,
+ .../default/widgets/group_members_widget/view.php: Refs #109: Group members
+ widget.
+
+ * mod/groups/groupprofile.php, mod/groups/languages/en.php,
+ mod/groups/start.php: Refs #109 : Widget support
+
+ * mod/groups/groupprofile.php, mod/groups/start.php,
+ mod/groups/views/default/groups/grouplinks.php,
+ mod/groups/views/default/groups/groupprofile.php,
+ mod/groups/views/default/groups/menu/actions.php,
+ .../views/default/groups/menu/ownerlinks.php: Refs #109 - Basic profile
+ layout
+
+ * mod/groups/languages/en.php,
+ .../default/river/ElggRelationship/create.php: Refs #109: River functionality
+
+2008-07-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updates to river(ie fixes), and sharing
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/ElggRelationship/create.php: Using entities rather
+ than object
+
+2008-07-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, languages/en.php, search/index.php,
+ views/default/search/startblurb.php,
+ views/default/user/search/finishblurb.php,
+ views/default/user/search/startblurb.php: First pass on user search
+
+2008-07-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: more river updates
+
+2008-07-04 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/groups/actions/addtogroup.php: Refs #109 : Private group membership
+ full exchange.
+
+ * engine/lib/notification.php: Unnecessary sanitise string causing issues on
+ some subjects
+
+ * mod/groups/actions/addtogroup.php, mod/groups/actions/joinrequest.php,
+ mod/groups/languages/en.php, mod/groups/start.php: Join requests on closed
+ groups, full loop. Refs #109
+
+2008-07-04 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: more river icon fixes
+
+2008-07-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/graphics/defaultlarge.jpg,
+ mod/profile/graphics/defaultmedium.jpg,
+ mod/profile/graphics/defaultsmall.jpg, mod/profile/graphics/defaulttiny.jpg:
+ new default avatar (your's was good Ben - just changed the blue a wee bit)
+
+ * _graphics/river_icons/river_icon_blog.gif,
+ _graphics/river_icons/river_icon_comment.gif,
+ _graphics/river_icons/river_icon_feed.gif,
+ _graphics/river_icons/river_icon_files.gif,
+ _graphics/river_icons/river_icon_forum.gif,
+ _graphics/river_icons/river_icon_messageboard.gif,
+ _graphics/river_icons/river_icon_plugin.gif,
+ .../river_icons/river_icon_privatemessage.gif,
+ _graphics/river_icons/river_icon_profile.gif,
+ _graphics/river_icons/river_icon_shares.gif,
+ _graphics/river_icons/river_icon_status.gif: icons for the river
+
+2008-07-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Refs #109
+
+2008-07-03 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: river icons added
+
+2008-07-03 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/spotlight/default.php: content added to the spotlight
+
+2008-07-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/wrapper.php: Fixed a subtype bug in the river item
+ wrapper.
+
+2008-07-03 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: It would help if I added the functions to the right
+ scope. Oops! Refs #106
+
+ * engine/lib/opendd.php: Fixes #113
+
+ * admin/user/index.php: Fixes #111
+
+ * views/default/input/access.php: Extended access to support options
+ override
+
+ * engine/lib/elgglib.php: Collection to group, refs #106
+
+2008-07-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/userdetails.php,
+ .../canvas/layouts/narrow_right_sidebar.php, views/default/css.php: profile,
+ forum and canvas updated
+
+ * views/default/css.php: status widget updates
+
+ * views/default/css.php: generic comments moved/cleaned
+
+2008-07-02 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Typo on database table
+
+2008-07-02 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ views/default/canvas/layouts/one_column.php, views/default/css.php: profile
+ menu, single view layout, and comments all updated
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/userdetails.php: avatar menu fixed for
+ non-200px wide avatars
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * dashboard/index.php, languages/en.php,
+ views/default/canvas/layouts/widgets.php: Default text for the dashboard.
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/start.php: Closes #112
+
+ * .../views/default/profile/menu/adminlinks.php,
+ mod/profile/views/default/profile/userdetails.php: Closes #112
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php: The widget layout now uses areas
+ 3 and 4 as the column content if there aren't any widgets
+
+ * views/default/canvas/layouts/widgets.php: The widget layout now uses areas
+ 3 and 4 as the column content if there aren't any widgets
+
+2008-07-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: created settings link
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/menu/actions.php,
+ mod/profile/views/default/profile/userdetails.php: Admin menus to the
+ contextual menu
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Closes #110
+
+ * actions/systemsettings/install.php: NEW - #109: Groups core plugin
+ http://trac.elgg.org/elgg/ticket/109
+
+ * actions/systemsettings/install.php: Refs #109: Groups plugin active by
+ default
+
+ * engine/lib/users.php: Closes #108
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/javascript.php,
+ views/default/widgets/wrapper.php: Fixed avatar menu on widgets
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Fixed notification subject
+
+2008-07-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: small tweak to topbar
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php: lines in avatar menu
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Correction to get_river_entities
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/page_elements/elgg_topbar.php: mini
+ avatar style and position and link
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Membership functions, and introducing
+ can_write_to_container, and its hook group_permission_check. Refs #106.
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/reset.css: unnecessary file
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Limits properly propagate to the pagination views.
+
+ * mod/profile/views/default/profile/gallery.php: Sanitising the profile
+ gallery view for now
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/pageshells/pageshell.php: pageshell /
+ logged out modification
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/search/gallery.php: Gallery view now displays 3 per row
+
+2008-07-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: further topbar tweak
+
+ * views/default/page_elements/elgg_topbar.php: topbar tweaks
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php,
+ views/default/account/forms/register.php,
+ views/default/account/forms/useradd.php,
+ views/default/canvas/layouts/one_column.php, views/default/css.php: login
+ front door tidied up
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Entity loader support for ElggGroup, refs #106
+
+ * engine/lib/group.php: Bugfix, refs #106
+
+2008-07-01 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/elgg_topbar.php: top_bar icon
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/manifest.xml: Licence in manifest
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/dashboard/index.php, mod/dashboard/manifest.xml,
+ mod/dashboard/start.php, mod/dashboard/views/default/dashboard/welcome.php:
+ No need to have the dashboard plugin. Dashboard is part of core.
+
+ * mod/profile/actions/cropicon.php, mod/profile/actions/iconupload.php,
+ mod/profile/icon.php, mod/profile/views/default/profile/icon.php: Toolbar ->
+ topbar in profile icons
+
+ * mod/profile/actions/cropicon.php, mod/profile/actions/iconupload.php,
+ mod/profile/icon.php, mod/profile/views/default/profile/icon.php: Added
+ toolbar size for the icons
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php, engine/lib/objects.php, languages/en.php: Group
+ class, refs #106
+
+ * engine/schema/mysql.sql: Added groups, refs #106
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Fix for the schema
+
+ * views/default/search/gallery.php: Gallery should probably only be three
+ squares wide for now.
+
+ * views/default/css.php: Small fix for gallery view users
+
+ * mod/profile/views/default/profile/gallery.php: Small fix for gallery view
+ users
+
+ * mod/profile/views/default/profile/gallery.php,
+ mod/profile/views/default/user/user.php,
+ views/default/search/gallery_listing.php, views/default/search/listing.php:
+ Gallery view for users
+
+ * views/default/css.php: CSS additions
+
+2008-07-01 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topmenu.php: previous top menu removed - replaced
+ by new elgg_topbar view
+
+ * _graphics/avatar_mini.gif, _graphics/elgg_toolbar_logo.gif,
+ _graphics/elgg_toolbar_logout.gif, _graphics/toptoolbar_background.gif,
+ views/default/css.php, views/default/page_elements/elgg_topbar.php,
+ views/default/page_elements/header.php: topbar menu
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: The $entity_guid on get_annotations can now be
+ an array.
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Added object in container search, refs #106.
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: get_annotations can now optionally take an
+ array as owner_guid
+
+ * actions/login.php: Users are now logged into the dashboard.
+
+ * engine/lib/elgglib.php, views/default/navigation/gallery.php,
+ views/default/search/gallery.php: Moved navigation/gallery to search/gallery,
+ which makes more sense.
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/group.php: Refs #106: Group prototype class
+
+ * engine/lib/entities.php: Added site_guid to internal db fields
+
+2008-07-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/widgets/wrapper.php: Widgets now load after the main page
+
+2008-07-01 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Refs #106: Added schema
+
+2008-06-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/widgets.php, views/default/canvas/layouts/widgets.php: Added
+ the ability to control widget contexts
+
+2008-06-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/makeadmin.php, languages/en.php,
+ mod/profile/views/default/profile/userdetails.php: Closes #105: Make admin
+ option http://trac.elgg.org/elgg/ticket/105
+
+ * actions/useradd.php, engine/lib/users.php, languages/en.php,
+ views/default/account/forms/useradd.php,
+ views/default/admin/user_opt/adduser.php: Added some user code - needs div
+ hiding
+
+2008-06-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php: Fixed entity page
+
+2008-06-30 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed minor cache counting issue
+
+ * engine/lib/plugins.php, languages/en.php: Refs #102 - Speculative fix
+
+2008-06-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php, views/default/widgets/wrapper.php: Partial fix for
+ constantly-shrinking widgets bug.
+
+2008-06-29 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/footer_logo.gif, views/default/css.php,
+ views/default/page_elements/footer.php: page footer added and msg div fixed
+ for IE
+
+ * _graphics/page_back_linen.gif, _graphics/page_back_linen_shadow.gif,
+ views/default/css.php: new page style, new floating msg box, other fixes &
+ cleanup
+
+2008-06-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/listing.php: changed the friends list
+ view order
+
+2008-06-28 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: more listings items cleanup
+
+ * views/default/css.php: fixed several listing item spacing issues
+
+ * views/default/canvas/layouts/widgets.php, views/default/css.php: cancel
+ button added to widget gallery
+
+2008-06-28 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/listing.php: added user status to the
+ friends view
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: Sanitising search
+
+ * engine/lib/widgets.php: Fixed widget saving
+
+2008-06-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js, views/default/canvas/layouts/widgets.php,
+ views/default/css.php: new widget gallery
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php:
+
+ * engine/lib/entities.php: Caching (most) subtype queries, drastically
+ reduces database queries in most use cases, refs #101
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Introducing friendly_title
+
+ * languages/en.php: Some more translations for comments
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php:
+
+ * engine/lib/metastrings.php: Metastrings now keeps a record of strings it
+ knows aren't present and so removes the need to futher look for them. Refs
+ #101
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Bug fix for previous.
+
+ * engine/lib/elgglib.php: Introducing elgg_count_comments
+
+ * views/default/annotation/generic_comment.php,
+ views/default/comments/forms/edit.php, views/default/css.php: Tweaks to
+ generic comment CSS
+
+ * actions/comments/add.php, actions/comments/delete.php,
+ engine/lib/elgglib.php, languages/en.php,
+ views/default/annotation/generic_comment.php,
+ views/default/comments/forms/edit.php: Brought generic comments into Elgg
+ core
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Using persistent db connections. This should
+ speed up pages with numerous small DB calls. Please report any issues asap.
+ Refs #101
+
+ * engine/lib/metastrings.php: Minor textual changes
+
+ * engine/lib/users.php: Added mapping to cache username => guid & code =>
+ guid. Refs #101.
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/icon.php: Icon menus now work when
+ you're logged out.
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Removed explains since these weren't much use
+
+ * engine/lib/install.php: Db installed flag on config, Refs #101
+
+ * engine/lib/elgglib.php: Caching datalists. Refs #101
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Fixed the contextual nubbin on search indices
+ (really)
+
+ * views/default/css.php: Fixed the contextual nubbin on search indices
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Short circuited query if could not possibly
+ return a value. Refs #101
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Forced search result icon sizes to be 40px
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Refs #101 - DB Profiling in debug mode
+ (recommended usage means putting $CONFIG->debug = true in settings.php)
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: Search now sets context appropriately
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Removed debug warning
+
+2008-06-27 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/metadata.php,
+ engine/lib/relationships.php, engine/lib/sites.php, engine/lib/users.php,
+ friends/index.php, friends/of.php, search/index.php: Added a 'display full
+ view' parameter to all of the listings functions
+
+ * engine/lib/elgglib.php, mod/profile/views/default/profile/listing.php,
+ views/default/search/listing.php: Introducing elgg_view_listing
+
+ * mod/profile/views/default/profile/icon.php: Minor fix to the icon code
+
+ * mod/profile/views/default/profile/icon.php: Fix to icon links, so they
+ display actions too
+
+ * mod/profile/views/default/profile/listing.php, views/default/css.php:
+ Added search listing styles
+
+ * mod/profile/views/default/profile/icon.php: Fix to previous
+
+ * mod/profile/views/default/profile/icon.php: Further contextual menu work
+
+ * mod/profile/javascript.php, mod/profile/profile.js,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/javascript.php,
+ mod/profile/views/default/profile/metatags.php,
+ views/default/navigation/topmenu.php: Initial inclusion of profile icon
+ navigation
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Fixes #100 - User not having any notification
+ method no longer a hard error.
+
+2008-06-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php: tweak to profile language
+
+2008-06-27 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/avatar_menu_arrow.gif, _graphics/avatar_menu_arrow_hover.gif,
+ _graphics/avatar_menu_arrow_open.gif, mod/profile/profile.js,
+ mod/profile/views/default/profile/css.php, views/default/css.php: avatar
+ contextual menus
+
+2008-06-27 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php: Refs #86 - Better debug
+
+ * engine/lib/metastrings.php: Closes #86
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, .../notifications/settings/usersettings.php,
+ views/default/settings/system.php, views/default/user/settings/language.php:
+ Closes #98
+
+ * views/default/input/pulldown.php: Pulldown menu view now supports passing
+ values as well as options as an associative array "value" => "option text"
+ called $vars['options_values']
+
+2008-06-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/listing.php,
+ mod/profile/views/default/user/user.php: Improved profile listings
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Added get_installed_translations() to return an
+ array of available translations together with native language translation of
+ the text. Refs #98
+
+ * languages/en.php: Added ISo-639 language codes, refs #98
+
+2008-06-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: Tweaked the title CSS now that it's going to appear
+ inline within canvases.
+
+ * engine/lib/river.php: Widget river items are now of the form
+ river/widget/handler/event.
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/resetpassword.php, engine/lib/admin.php,
+ engine/lib/users.php, languages/en.php,
+ mod/profile/views/default/profile/userdetails.php: Closes #16:
+ Administration: Reset password functionality on user admin screen
+ http://trac.elgg.org/elgg/ticket/16
+
+2008-06-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/save.php, .../notifications/settings/usersettings/save.php,
+ actions/user/language.php, actions/user/name.php, actions/user/password.php,
+ actions/usersettings/save.php, engine/lib/notification.php,
+ engine/lib/users.php, settings/user/index.php,
+ .../notifications/settings/usersettings.php,
+ views/default/user/settings/email.php,
+ views/default/user/settings/language.php,
+ views/default/user/settings/name.php,
+ views/default/user/settings/password.php,
+ views/default/usersettings/form.php: Unified user settings form
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/register.php: Closes #96: Administration: Add
+ user (with optional admin flag) http://trac.elgg.org/elgg/ticket/96
+
+ * views/default/admin/user_opt/adduser.php: Refs #96: Administration: Add
+ user (with optional admin flag) http://trac.elgg.org/elgg/ticket/96
+
+ * actions/register.php, languages/en.php,
+ views/default/account/forms/register.php, views/default/admin/user.php,
+ views/default/admin/user_opt/adduser.php: Refs #96: Administration: Add user
+ (with optional admin flag) http://trac.elgg.org/elgg/ticket/96
+
+ * actions/user/language.php, engine/lib/languages.php, engine/lib/users.php,
+ languages/en.php, views/default/user/settings/language.php: Closes #92:
+ Settings: Set user language http://trac.elgg.org/elgg/ticket/92
+
+2008-06-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/checkboxes.php: Checkboxes now work happily with
+ arrays.
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/user/name.php, actions/user/password.php, engine/lib/sessions.php,
+ engine/lib/users.php, languages/en.php,
+ views/default/user/settings/password.php: Fixes #91 and #97
+
+ * actions/email/save.php, actions/user/name.php,
+ engine/lib/notification.php, engine/lib/users.php, languages/en.php,
+ views/default/notifications/settings/email.php,
+ views/default/user/settings/email.php, views/default/user/settings/name.php:
+ Closes #90: Settings: Change name http://trac.elgg.org/elgg/ticket/90
+
+2008-06-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php: Layout update for the single entity view.
+
+2008-06-26 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Fixes #95 - Now keying off system log entries so
+ that whenever a user does something that triggers an event they are boosted.
+
+ * views/default/admin/statistics_opt/basic.php: Fixes #94
+
+ * actions/email/save.php, engine/lib/notification.php, languages/en.php,
+ views/default/notifications/settings/email.php: Closes #89: Provide
+ functionality for a user to set their email address in user settings
+ http://trac.elgg.org/elgg/ticket/89
+
+2008-06-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/confirm.php, actions/register.php,
+ engine/lib/notification.php, engine/lib/sites.php, engine/lib/users.php,
+ languages/en.php: Closes #79: Email confirmation on registration & email
+ change http://trac.elgg.org/elgg/ticket/79
+
+2008-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: river icon additions
+
+ * javascript/initialise_elgg.js, views/default/css.php: widget gallery
+ tooltip positioning and layer issue fixed
+
+2008-06-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, search/index.php: Search and metadata functions
+ now support multiple user GUIDs
+
+2008-06-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/email/confirm.php, engine/lib/users.php, languages/en.php: Refs
+ #79
+
+2008-06-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Small ownership tweak to get_tags
+
+ * search/index.php: The search page now takes more options.
+
+2008-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/shout_speech_bubble.gif: shouts bubble
+
+2008-06-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: get_tags can now take an array as owner_guid.
+
+ * engine/lib/filestore.php: Fixes for filestore.
+
+ * engine/lib/filestore.php: Added grabFile() to the filestore, for much more
+ efficient file reading.
+
+ * engine/lib/river.php, engine/lib/system_log.php: Made the friends river
+ entities functions loads more efficient.
+
+2008-06-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Fixes #87 & #88
+
+ * engine/lib/notification.php, engine/lib/relationships.php,
+ languages/en.php: Refs #78: Email notifications on friending, comments
+ http://trac.elgg.org/elgg/ticket/78
+
+2008-06-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, views/default/river/wrapper.php: The river now
+ passes entities to each river view as $vars['entity']
+
+ * engine/lib/annotations.php: Adding an annotation triggers an 'annotate'
+ event
+
+2008-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/spotlight_back.gif, _graphics/temp_spotlight.gif,
+ views/default/css.php, views/default/spotlight/default.php: default spotlight
+
+2008-06-25 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php, engine/lib/sites.php, languages/en.php: Fixes
+ #84: Method for retrieving preferences for a user and notifying accordingly
+ http://trac.elgg.org/elgg/ticket/84
+
+2008-06-25 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updated staus box
+
+ * views/default/css.php: moved message styles into plugin
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: messaging styles
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Removed the circular delete mechanism that was
+ plaguing ElggFile
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/ajax/loader.php: centred loader gif
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Caching the show_db_tables function
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php, views/default/css.php:
+ profile box fixes
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Serious memory optimisation for the photo resize
+ functions
+
+2008-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/odd/canvas/default.php, views/odd/object/default.php,
+ views/odd/user/default.php: Refs #82 - oops... forgot to add these...
+
+ * .../notifications/settings/usersettings/save.php,
+ engine/lib/notification.php, languages/en.php,
+ .../notifications/settings/usersettings.php: Closes #83 - API & Interface for
+ selecting notification methods
+
+ * actions/plugins/settings/save.php, actions/plugins/usersettings/save.php:
+ Added gatekeeper
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php, engine/lib/sites.php: Removing more notices.
+
+ * engine/lib/entities.php: Removing an annoying notice
+
+ * engine/lib/elgglib.php: Minor fix to elgg_view_entity where ElggEntities
+ are subclassed
+
+2008-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/edit.php: Fixes #69 - Clicking on profile "edit" causes crash.
+ I have retrieved the user again from $_SESSION['id'] since
+ $_SESSION['user'] is not being set. This may point to a larger problem since
+ the $_SESSION looks far from complete.
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Fix for previous river functionality
+
+ * engine/lib/river.php: Minor formatting fix
+
+ * views/default/admin/plugins.php: Update plugins list so 50 display on a
+ page
+
+ * engine/lib/river.php: A fix to the river function.
+
+2008-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php, views/odd/export/entity.php,
+ views/odd/export/metadata.php, views/odd/export/relationship.php,
+ views/odd/pageshells/pageshell.php: Closes #82: OpenDD feeds in the same vein
+ as RSS http://trac.elgg.org/elgg/ticket/82
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/widgets/editwrapper.php: Fix to edit wrapper saving
+
+ * views/default/pageshells/pageshell.php: Removing title from pageshell
+ outright
+
+ * views/default/page_elements/title.php,
+ views/default/widgets/editwrapper.php: Introducing elgg_view_title
+
+ * engine/lib/elgglib.php: Introducing elgg_view_title
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updated
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/save.php, views/default/widgets/editwrapper.php: Save
+ widget improvements.
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/userdetails.php,
+ mod/profile/views/default/user/user.php,
+ .../canvas/layouts/narrow_right_sidebar.php,
+ views/default/canvas/layouts/two_column.php,
+ views/default/canvas/layouts/widgets.php, views/default/css.php,
+ views/default/pageshells/pageshell.php: updated profile box
+
+2008-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/plugins/usersettings/save.php, engine/lib/plugins.php,
+ languages/en.php, settings/plugins/index.php,
+ views/default/object/plugin.php, views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php: Refs #76: User settings
+ page (to Elgg Classic standard)
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: River views now run off subtypes
+
+ * views/default/ajax/loader.php: Introducing the AJAX loader
+
+ * _graphics/ajax-loader.gif, _graphics/ajax_loader.gif,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php:
+ Widgets now reload properly
+
+2008-06-24 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/ajax-loader.gif: ajax loader gif
+
+2008-06-24 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php, languages/en.php,
+ .../default/usersettings/statistics_opt/online.php: Refs #76: User settings
+ page (to Elgg Classic standard)
+
+2008-06-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/cropicon.php,
+ views/default/canvas/layouts/widgets.php: Widget fixes
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/cropicon.php: Added mission crop icon action
+
+2008-06-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: container box fixes
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: No need to duplicate
+ the user's name.
+
+ * engine/lib/filestore.php, mod/profile/actions/iconupload.php,
+ mod/profile/languages/en.php, mod/profile/start.php,
+ mod/profile/views/default/profile/editicon.php: Image cropping works!
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php: rearranged the main
+ profile area
+
+ * mod/profile/views/default/profile/userdetails.php: moved the about me
+ below the other profile info
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/widgets/editwrapper.php: Some tweaks to
+ the 'saving' box
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php, languages/en.php, settings/index.php,
+ settings/plugins/index.php, settings/statistics/index.php,
+ settings/user/index.php, usersettings/index.php,
+ usersettings/plugins/index.php, usersettings/statistics/index.php,
+ usersettings/user/index.php, views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ .../usersettings/statistics_opt/numentities.php: Refs #76: User settings page
+ (to Elgg Classic standard). Committing some work before shutting down for the
+ day.
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: small bug fix on icon
+ cropper
+
+2008-06-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/dummy_river_icon.gif, views/default/css.php: river updates
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/river/dashboard.php: Removed extra divs.
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: more icon cropper tweaks,
+ form added
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * entities/index.php, views/default/widgets/editwrapper.php,
+ views/default/widgets/wrapper.php: Widgets now save on a per-widget basis.
+ TODO: get the collapsing widgets to work once they've saved ..
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php:
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: coordinates in for the
+ icon cropper
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php: Widgets are now loaded as
+ separate JS scripts
+
+ * engine/lib/elgglib.php, views/js/object/default.php,
+ views/js/pageshells/pageshell.php, views/js/user/default.php: You can now get
+ a Javascript version of any entity
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php, engine/lib/usersettings.php, engine/start.php,
+ languages/en.php, usersettings/index.php, usersettings/plugins/index.php,
+ usersettings/statistics/index.php, usersettings/user/index.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php,
+ views/default/admin/main_opt/statistics.php,
+ views/default/admin/main_opt/user.php, views/default/object/plugin.php,
+ views/default/usersettings/main.php,
+ views/default/usersettings/main_opt/plugins.php,
+ views/default/usersettings/main_opt/statistics.php,
+ views/default/usersettings/main_opt/user.php,
+ views/default/usersettings/plugins.php,
+ views/default/usersettings/plugins_opt/plugin.php,
+ views/default/usersettings/statistics.php,
+ views/default/usersettings/user.php: Refs #76: User settings page (to Elgg
+ Classic standard). Committing some work before shutting down for the day.
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/editicon.php: added coordinates to the
+ icon cropper
+
+ * .../views/default/profile/hoverover/actions.php,
+ .../views/default/profile/hoverover/links.php,
+ mod/profile/views/default/profile/menu/actions.php,
+ mod/profile/views/default/profile/menu/links.php,
+ .../views/default/profile/menu/linksownpage.php,
+ mod/profile/views/default/profile/profilelinks.php: new profile links system.
+
+2008-06-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php, views/default/css.php: css
+ updates
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php,
+ .../views/default/js/jquery.imgareaselect-0.4.2.js,
+ .../default/js/jquery.imgareaselect-0.4.2.min.js,
+ mod/profile/views/default/profile/editicon.php: beginnings of the icon
+ cropper tool
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * settings/index.php, settings/plugins/index.php: Refs #76: User settings
+ page (to Elgg Classic standard)
+
+ * settings/plugins/index.php: Refs #76: User settings page (to Elgg Classic
+ standard)
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php: Fix to icon upload
+
+ * views/default/css.php, views/default/page_elements/header.php,
+ views/default/pageshells/pageshell.php: Page title is now displayed at the
+ top of the canvas.
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * settings/index.php:
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/icon.php, mod/profile/views/default/profile/icon.php: Added
+ master icon size (part 2)
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php: Forwards to
+ http_referer
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php: Added master icon size
+
+2008-06-23 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php:
+ Forwards to http_referer
+
+ * views/default/admin/plugins.php: Pagination on admin page
+
+ * engine/handlers/cron_handler.php, htaccess_dist: Closes #77 - Cron
+ endpoint and event
+
+ * languages/en.php: Refs #75
+
+ * views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/online.php: Refs #75
+
+2008-06-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: Update for pagination, to allow
+ it to properly take a word other than 'offset' as the word to work from.
+
+2008-06-23 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/pagination.php: greater than, less than
+ pagination symbol changed
+
+2008-06-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/messages/messages/list.php: system messages now fade out
+ after 3 seconds.
+
+2008-06-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ views/default/navigation/pagination.php: Introducing the annotation listing
+ functions.
+
+ * engine/lib/elgglib.php, engine/lib/metastrings.php: Introducing
+ elgg_view_annotation
+
+2008-06-22 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/profilelinks.php,
+ mod/profile/views/default/profile/userdetails.php: added a new profile links
+ view
+
+2008-06-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php: Fixes #72
+
+2008-06-21 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/spotlight/default.php: tweaks to the
+ spotlight
+
+ * mod/profile/views/default/profile/userdetails.php: a further temp tweak to
+ the profile layout
+
+ * mod/profile/views/default/profile/userdetails.php,
+ views/default/canvas/layouts/widgets.php: a couple of small, temp, profile
+ layout tweaks.
+
+2008-06-21 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Plugin init only called on sanitised installs where
+ installation is complete.
+
+2008-06-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/page_elements/spotlight.php: Improvements
+ to spotlight
+
+ * views/default/page_elements/spotlight.php,
+ views/default/spotlight/default.php: Plugins can set their own context
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Added licence example
+
+2008-06-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php, mod/profile/edit.php,
+ mod/profile/views/default/profile/edit.php: Fixed profile, and allowed admins
+ to edit other profiles
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php: Fixes #71
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php: Additional
+ fixes to #70
+
+2008-06-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php:
+ Changed the engine reference in the action
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php:
+
+ * actions/plugins/settings/save.php, engine/lib/plugins.php,
+ languages/en.php, views/default/admin/plugins_opt/plugin.php,
+ views/default/object/plugin.php: Closes #66: Per site plugin settings
+ configuration panel. Use the same technique as edit pages on widgets, i.e.
+ 1) Create a new view in your plugins view/default called
+ settings/PLUGINNAME/edit Where PLUGINNAME is the plugin directory, eg
+ "river" or "profile". 2) Place your edit code in edit.php, fields should
+ save to params[fieldname]. 3) The view will be passed $vars['entity'] which
+ holds any configuration values already set in the metadata. Note. Settings
+ are PER SITE.
+
+ * .../views/default/widgets/river_widget/edit.php,
+ .../default/widgets/river_widget_friends/edit.php: Using a different test to
+ handle metadata better
+
+ * languages/en.php, mod/river/manifest.xml,
+ views/default/admin/plugins_opt/plugin.php: Closes #67 : Added new displayed
+ field "licence"
+
+2008-06-20 misja <misja@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/dashboard/manifest.xml, mod/profile/manifest.xml: Adding manifest
+ files to plugins
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/plugins/disable.php, actions/admin/plugins/enable.php,
+ admin/plugins/index.php, engine/lib/plugins.php, languages/en.php,
+ views/default/admin/plugins.php, views/default/admin/plugins_opt/plugin.php,
+ views/default/object/plugin.php: Closes #20: Plugin management and config
+ panel http://trac.elgg.org/elgg/ticket/20
+
+ * actions/admin/site/update_basic.php: Added admin gatekeeper
+
+2008-06-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/profile/edit.php,
+ views/default/canvas/layouts/widgets.php: Widget gallery updates -
+ internationalised and more
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Further fixes #59
+
+ * mod/river/languages/en.php, mod/river/manifest.xml, mod/river/start.php:
+ Using new manifest code (via manifest.xml)
+
+ * engine/lib/plugins.php: Bypass plugin loading disable code
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php, engine/start.php: Closes
+ #60: Enable/disable plugins on a site by site basis
+ http://trac.elgg.org/elgg/ticket/60
+
+ * engine/lib/elgglib.php: Bugfixes on privileged code execution.
+
+ * engine/lib/database.php: Removed database gatekeepers to avoid chicken and
+ egg problems with privileged codeblock execution, and because it is too
+ problematic.
+
+ * engine/lib/plugins.php: Actually closes #60: Enable/disable plugins on a
+ site by site basis http://trac.elgg.org/elgg/ticket/60
+
+ * engine/lib/metadata.php, engine/lib/plugins.php: Closes #60:
+ Enable/disable plugins on a site by site basis
+
+2008-06-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: update_data now returns true on a successful
+ update.
+
+ * mod/profile/views/default/profile/userdetails.php: Let's use a slightly
+ smaller image on the main profile page ..
+
+ * mod/profile/graphics/defaultlarge.jpg,
+ mod/profile/graphics/defaultmedium.jpg,
+ mod/profile/graphics/defaultsmall.jpg, mod/profile/graphics/defaulttiny.jpg:
+ New default profile pics
+
+2008-06-20 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/plugins.php: Refs #61 - Added ability to find settings for
+ plugins other than the one you are in.
+
+ * engine/lib/plugins.php: Closes #61: Enable plugins to store site specific
+ configurations
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/canvas/default.php,
+ views/default/page_elements/header.php, views/foaf/pageshells/pageshell.php,
+ views/rss/canvas/default.php, views/rss/object/default.php,
+ views/rss/pageshells/pageshell.php, views/rss/user/default.php: Automatic RSS
+ feeds!
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Re-enabled database gatekeepers, please report
+ problems. Refs #3, #45
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/widgettest/start.php, .../views/default/widgets/widgettest/edit.php,
+ .../views/default/widgets/widgettest/view.php: Removing widgettest, which has
+ done its job.
+
+ * mod/river/languages/en.php, mod/river/start.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/view.php,
+ views/default/widgets/wrapper.php: Put titles back in their correct place for
+ widgets.
+
+ * engine/lib/system_log.php: System_log no longer adds double entries.
+
+ * engine/lib/river.php, views/default/river/wrapper.php: Minor improvement
+ to previous - river items now are wrapped in a number of divs that make sense
+ according to what they refer to
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/river/languages/en.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/edit.php,
+ .../default/widgets/river_widget_friends/view.php: Fixes #50
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php, .../views/default/river/ElggUser/update.php,
+ views/default/river/wrapper.php: Modified river functions to use a common
+ wrapper
+
+ * mod/profile/languages/en.php, .../views/default/river/ElggUser/update.php:
+ Profile updates now show up in the river.
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php:
+
+ * engine/lib/plugins.php, languages/en.php, mod/river/languages/en.php,
+ mod/river/start.php: Closes #59: Plugin manifest. See
+ register_plugin_manifest() & register_plugin_manifest_basic(). Ref #20.
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/profile.js, mod/profile/views/default/profile/metatags.php:
+ Removing the hoverover menu. Refs #58
+
+ * mod/profile/views/default/profile/css.php: CSS update for hoverover
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php, engine/lib/users.php,
+ views/default/admin/statistics_opt/online.php: Fixes #55 : "Users online now"
+ function
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/topmenu.php: Wired up search
+
+ * mod/profile/views/default/profile/hoverover.php,
+ .../views/default/profile/hoverover/actions.php,
+ .../views/default/profile/hoverover/links.php: Sorting hoverover links into
+ actions and plain links
+
+ * mod/profile/views/default/profile/hoverover.php: Whoops! Replacing
+ 'bwerdmuller' with $vars['entity']->username
+
+ * mod/profile/profile.js, mod/profile/start.php,
+ mod/profile/views/default/profile/css.php,
+ mod/profile/views/default/profile/hoverover.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/profile/menu.php,
+ mod/profile/views/default/profile/metatags.php,
+ mod/profile/views/default/user/user.php: Added a hover-over menu, which can
+ be added to by plugins.
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Ref #57
+
+ * engine/lib/river.php, languages/en.php, mod/river/start.php,
+ .../views/default/widgets/river_widget/edit.php,
+ .../views/default/widgets/river_widget/view.php,
+ .../default/widgets/river_widget_friends/edit.php,
+ .../default/widgets/river_widget_friends/view.php,
+ views/default/river/dashboard.php: Fixed #50: River widgets
+ http://trac.elgg.org/elgg/ticket/50
+
+ * mod/profile/views/default/profile/userdetails.php: Fixes #56
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php, friends/index.php, friends/of.php: The
+ friends pages now use listing functions; also fixed a minor bug in the
+ get_entities_from_relationship function.
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: *actually* fixes #48: Elgg_view_river wrapper
+ function http://trac.elgg.org/elgg/ticket/48
+
+ * engine/lib/river.php: Fixes #48: Elgg_view_river wrapper function
+ http://trac.elgg.org/elgg/ticket/48
+
+2008-06-19 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js, views/default/canvas/layouts/widgets.php,
+ views/default/css.php: final amends to popups
+
+2008-06-19 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Fixes #54 - 'Enabled' functionality needs to be
+ added to metadata, refs #53
+
+2008-06-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Minor change to the navigation placement on list
+ view.
+
+ * engine/schema/mysql.sql: Added 'enabled' field to annotations. Refs #51
+
+2008-06-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js, views/default/canvas/layouts/widgets.php,
+ views/default/css.php: widget description popups added
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Hopefully fixed default wwwroot. refs #51 -
+ Misja, if this works for you, could you please close the ticket?
+
+2008-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php,
+ engine/lib/entities.php: Fixes #15: Ban user functionality
+
+ * engine/lib/access.php, engine/schema/mysql.sql: Fixes #12: Active variable
+ on entities table. Update db schema.
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * dashboard/index.php: Introducing the dashboard!
+
+ * engine/lib/entities.php, engine/lib/languages.php, engine/lib/sites.php,
+ engine/lib/users.php, engine/lib/widgets.php: Removing some error notices
+
+2008-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Speculative fix for mac install
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/widgets/editwrapper.php: Better access
+ control labels.
+
+ * engine/lib/database.php: Re-commented out callpath_gatekeeper. refs #37
+
+2008-06-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: added default class for submit buttons
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/reorder.php, languages/en.php: Corrected widget panel save
+ messages.
+
+ * actions/widgets/reorder.php, engine/lib/widgets.php,
+ views/default/canvas/layouts/widgets.php, views/default/input/access.php:
+ Added widget handling.
+
+2008-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/user/index.php, views/default/admin/user_opt/search.php: Minor tweak
+ to make compatible with search form
+
+ * engine/lib/sites.php: Fixes #43: Site full text search over name,
+ description and url
+
+ * engine/lib/objects.php: Fixes #42: Object full text search on description
+
+ * admin/user/index.php, engine/lib/users.php, views/default/admin/user.php:
+ Further fixes to #41 with admin panel support
+
+ * admin/user/index.php, engine/lib/users.php, engine/schema/mysql.sql: Fixes
+ #41: User full text search. See caveats in function search_for_user()
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, views/default/navigation/pagination.php: Interface
+ tweak when no results are found.
+
+ * views/default/canvas/layouts/widgets.php: Descriptions are now registered
+ in widgets as a hidden field.
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/metadata.php,
+ engine/lib/relationships.php, engine/lib/sites.php, engine/lib/users.php,
+ languages/en.php, search/index.php, views/default/navigation/pagination.php:
+ Added generic listing and pagination functions
+
+2008-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/elgglib.php, languages/en.php, views/default/settings/system.php:
+ Fixes #18: Set default view type in admin http://trac.elgg.org/elgg/ticket/18
+
+2008-06-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js, views/default/canvas/layouts/widgets.php:
+ widget drag n drop
+
+2008-06-18 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/configuration.php, languages/en.php,
+ views/default/input/checkboxes.php, views/default/settings/system.php: Fixes
+ #17 - Debug mode toggle. Introduced unset_config() which is also called
+ automatically by set_config(). Also modified the view input/checkboxes to set
+ values on the checkbox.
+
+ * actions/admin/site/update_basic.php, actions/systemsettings/install.php,
+ engine/lib/configuration.php, languages/en.php,
+ views/default/settings/system.php: Fixes #19: Default language selector
+ http://trac.elgg.org/elgg/ticket/19
+
+2008-06-18 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/account/forms/login.php,
+ views/default/account/forms/register.php, views/default/css.php: tweaked
+ login boxes n buttons
+
+2008-06-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/widgets.php: Added GUIDs and handlers to the
+ widget panel
+
+2008-06-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../canvas/layouts/narrow_right_sidebar.php, views/default/css.php:
+ updated page layout
+
+2008-06-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, languages/en.php: Fixes #24 - Added a funky
+ display function called friendly_time($timestamp).
+
+ * engine/start.php: Fixed #36 - CSS now works on the install page.
+
+ * engine/lib/sessions.php: isloggedin() doesn't touch the session if we're
+ not fully installed yet.
+
+2008-06-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * install.php: - To use main site config Marcus Povey
+
+ * install.php: CLOSED - #36: CSS broken on initial install page.
+ http://trac.elgg.org/elgg/ticket/36
+
+ * engine/lib/elgglib.php, engine/lib/input.php, engine/lib/install.php,
+ engine/settings.example.php, engine/start.php, htaccess_dist,
+ languages/en.php, views/default/messages/sanitisation/htaccess.php,
+ views/default/messages/sanitisation/settings.php,
+ views/failsafe/messages/errors/error.php,
+ views/failsafe/messages/errors/list.php,
+ views/failsafe/messages/exceptions/exception.php,
+ views/failsafe/messages/list.php,
+ views/failsafe/messages/sanitisation/htaccess.php,
+ views/failsafe/messages/sanitisation/settings.php,
+ views/failsafe/pageshells/pageshell.php: CLOSED - #34: Install process must
+ be completely graphical http://trac.elgg.org/elgg/ticket/34
+
+2008-06-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Fixed #37. It turns out callpath_gatekeeper
+ worked fine; PHP 5.2 with the Zend Optimizer 3.2 does not, which was borking
+ our OSX MAMP installation. We're going to need a great big red warning box
+ for people installing on a Mac, alerting them to the fact that they'll need
+ to switch off the Optimizer.
+
+2008-06-17 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: updated css
+
+2008-06-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Removed references to callpath_gatekeeper.
+
+ * engine/lib/database.php: Disabling the gatekeeper for now. Reopened #3
+
+ * engine/start.php: We need actions to work when the installation hasn't
+ been settled. Refs #3
+
+2008-06-17 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, views/default/river/ElggRelationship/create.php,
+ views/default/river/ElggUser/login.php,
+ views/default/river/ElggUser/logout.php, views/default/river/dashboard.php,
+ views/default/river/shell.php: CLOSED - #35: Create specific river views for
+ dashboard http://trac.elgg.org/elgg/ticket/35
+
+2008-06-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php: is_installed now returns a much more
+ representative result. Refs #3
+
+ * engine/lib/filestore.php, mod/profile/actions/iconupload.php,
+ mod/profile/languages/en.php: Fixed #33 - all profile icons except for the
+ largest size are cropped to squares. Additionally, the image resampling
+ functions now take an extra boolean parameter to specify squareness (or not).
+
+2008-06-17 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/index.php, admin/plugins/index.php, admin/site/index.php,
+ admin/statistics/index.php, admin/user/index.php: pushed the admin panel
+ through the correct canvas area
+
+ * mod/apitest/index.php, mod/apitest/start.php,
+ mod/apitest/views/default/apitest/configform.php,
+ mod/apitest/views/default/apitest/main.php, mod/exporttest/index.php,
+ mod/exporttest/start.php, mod/exporttest/views/default/exporttest/main.php,
+ .../views/default/exporttest/outputxml.php, mod/guidbrowser/index.php,
+ mod/guidbrowser/languages/en.php, mod/guidbrowser/start.php,
+ .../views/default/guidbrowser/browser.php,
+ .../views/default/guidbrowser/entity.php,
+ .../views/default/guidbrowser/entity_full.php,
+ .../views/default/guidbrowser/newentity.php,
+ .../views/default/guidbrowser/prevnext.php: removed guid exporter, exporttest
+ and apitest from core and put them into the plugins folder
+
+2008-06-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php, engine/lib/plugins.php,
+ views/default/navigation/toolbox.php: Sticky menu items, but also, much more
+ intelligent context detection. Plugin authors need not bother with
+ set_context() any more - the context should be set automatically. This is
+ overruled by page handling settings, if set, which use the first element of
+ the URL to determine context. Fixes #32
+
+ * engine/lib/plugins.php: More intelligent context detection. Refs #32
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php, mod/profile/start.php,
+ views/default/navigation/toolbox.php: Registers contexts for each menu item.
+ Refs #32
+
+2008-06-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: CLOSED - #30: $CONFIG is not populated from
+ elggconfig or datalists http://trac.elgg.org/elgg/ticket/30
+
+2008-06-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/userdetails.php: updated profile interface
+
+ * views/default/css.php: updated css
+
+2008-06-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: CLOSED - #26: Lengthing metadata fields
+ http://trac.elgg.org/elgg/ticket/26
+
+2008-06-16 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * .../canvas/layouts/narrow_right_sidebar.php,
+ views/default/canvas/layouts/one_column.php,
+ views/default/canvas/layouts/two_column.php,
+ views/default/canvas/layouts/widgets.php: new canvas area added
+
+2008-06-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: CLOSED - #5: Boolean metadata values
+ http://trac.elgg.org/elgg/ticket/5
+
+ * engine/lib/xml-rpc.php: - Minor tweak to exception report. Marcus Povey
+
+ * engine/handlers/xml-rpc_handler.php, engine/lib/xml-rpc.php,
+ htaccess_dist, languages/en.php, views/xml/xml-rpc/output.php: CLOSED - #14:
+ XML-RPC handler http://trac.elgg.org/elgg/ticket/14
+
+2008-06-16 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js: updated interface js to fix submit button
+ bug
+
+2008-06-16 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/xml/pageshells/pageshell.php: Added Content-Length to XML pageshell
+ for compatibility with most XML based formats.
+
+ * engine/lib/sessions.php: CLOSED - #27: Standard login system to go through
+ PAM http://trac.elgg.org/elgg/ticket/27
+
+2008-06-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php: Search once again displays results. Fixes #28
+
+ * views/default/widgets/wrapper.php: Widget edit controls now only appear if
+ you can edit the widget in question.
+
+2008-06-15 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/widgets/wrapper.php: small tweak to the widget wrapper
+
+2008-06-13 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _graphics/icon_customise_drag.gif, _graphics/icon_customise_info.gif,
+ _graphics/icon_customise_remove.gif, javascript/initialise_elgg.js,
+ .../jquery/jquery-ui-personalized-1.5.packed.js,
+ views/default/canvas/layouts/widgets.php, views/default/css.php,
+ views/default/navigation/toolbox.php, views/default/page_elements/header.php:
+ updated and new stuff pertaining to the customise panel, new jquery also
+
+2008-06-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/profile/userdetails.php:
+
+ * views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php: - Fixed basic statistics
+ Marcus Povey
+
+ * actions/admin/user/ban.php:
+
+2008-06-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: added $order to docs
+
+2008-06-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed typo
+
+2008-06-13 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/entities.php: getAnnotations now
+ has an extra param $order
+
+2008-06-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Metadata now inherits its parent entity's
+ permissions
+
+ * engine/lib/widgets.php: using_widgets();
+
+ * views/default/input/access.php, views/default/widgets/editwrapper.php:
+ Added access controls to widgets and fixed the access control input
+
+2008-06-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/user/ban.php, actions/admin/user/delete.php,
+ languages/en.php, mod/profile/views/default/profile/userdetails.php,
+ views/default/admin/user.php: ASSIGNED - # 2: Administration panel
+ http://trac.elgg.org/elgg/ticket/2 - Added ban template and delete
+
+2008-06-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php: Fixed
+ update/insert issue on all top-level entities
+
+ * views/default/canvas/layouts/widgets.php: Added the stub for Pete's widget
+ reorderer
+
+ * engine/lib/widgets.php: Widget fix
+
+2008-06-13 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * admin/user/index.php: - Some thoughts Marcus Povey
+
+ * engine/lib/database.php, engine/lib/entities.php, languages/en.php,
+ .../views/default/guidbrowser/entity_full.php: Marcus Povey: CLOSED - # 9:
+ FilePluginFile not found http://trac.elgg.org/ticket/9
+
+ * admin/user/index.php, languages/en.php, views/default/admin/site.php,
+ views/default/admin/statistics_opt/online.php, views/default/admin/user.php,
+ views/default/admin/user_opt/search.php: - User search box Marcus Povey
+
+2008-06-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/statistics.php,
+ views/default/admin/statistics.php,
+ views/default/admin/statistics_opt/basic.php,
+ views/default/admin/statistics_opt/numentities.php,
+ views/default/admin/statistics_opt/online.php: - Moved statistics to their
+ own component views. Yay. Marcus Povey
+
+2008-06-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apitest/index.php, mod/exporttest/index.php,
+ mod/guidbrowser/index.php: put remaining core plugins through the canvas
+ views
+
+ * mod/profile/edit.php, mod/profile/editicon.php: piped remaining profile
+ pages through the canvas system
+
+ * views/default/editmenu.php, views/default/pageshell.php: removing some old
+ views
+
+2008-06-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/widgets/add.php, actions/widgets/save.php, engine/lib/widgets.php,
+ mod/profile/index.php, mod/profile/start.php, mod/widgettest/start.php,
+ .../views/default/widgets/widgettest/edit.php,
+ .../views/default/widgets/widgettest/view.php,
+ views/default/canvas/layouts/widgets.php, views/default/widgets/wrapper.php:
+ Widgets, including a test widget plugin
+
+ * views/default/canvas/layouts/widgets.php: The widget canvas layout now
+ automatically grabs widgets.
+
+ * engine/lib/elgglib.php: We only have one pageshell.
+
+ * engine/lib/widgets.php: Extra helpful widgets functions
+
+ * actions/widgets/save.php, engine/lib/widgets.php, languages/en.php,
+ views/default/widgets/editwrapper.php: Widget API changes, as well as edit
+ and action infrastructure
+
+2008-06-12 marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/statistics.php:
+
+2008-06-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/object/widget.php: Added a simple widget alias so widgets
+ display automatically.
+
+ * views/default/canvas/layouts/one_column.php,
+ views/default/canvas/layouts/two_column.php,
+ views/default/canvas/layouts/widgets.php,
+ views/default/widgets/editwrapper.php, views/default/widgets/wrapper.php:
+ Widget wrapper, widget views
+
+2008-06-12 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/pageshells/pageshell.php: logic for not displaying toolbar
+ when non-logged
+
+ * views/default/welcome/logged_in.php: updated welcome pages
+
+ * views/default/page_elements/spotlight.php: new view for page spotlight
+
+ * views/default/welcome/logged_out.php: toolbar switched off for non-logged
+ users
+
+ * _graphics/skyscraper.gif: placeholder skyscaper ad for non logged-in pages
+
+ * views/default/canvas/layouts/one_column.php,
+ views/default/canvas/layouts/two_column.php, views/default/css.php,
+ views/default/pageshells/pageshell.php: new layout using canvas view
+
+2008-06-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Further documentation fixes.
+
+ * engine/lib/entities.php: Some extra entity documentation
+
+2008-06-12 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/statistics.php,
+ views/default/admin/site.php, views/default/admin/statistics.php: Marcus
+ Povey <marcus@dushka.co.uk> * Added stub for statistics * Added stub
+ statistics library
+
+2008-06-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/widgets.php: Added use_widgets function to register a context
+ for widget use.
+
+ * engine/lib/widgets.php: Added widgets library to core.
+
+2008-06-12 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/pageshells/pageshell_loggedout.php,
+ views/default/pageshells/pageshell_sidebar.php: removed old pageshells
+
+2008-06-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/admin.php, engine/lib/entities.php: Edit permissions changes
+ for admins
+
+2008-06-11 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * javascript/initialise_elgg.js: new subdirectory added to house the init js
+ for the page - feel free to move elsewhere
+
+ * views/default/css.php, views/default/navigation/toolbox.php,
+ views/default/navigation/topmenu.php, views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/pageshells/pageshell.php: latest interface stuff
+
+ * _graphics/footer_back.gif, _graphics/spacer.gif,
+ _graphics/temp_spotlight.gif: new images added
+
+ * _graphics/pagebackground.gif, _graphics/pagebackground.jpg: old images
+ removed
+
+2008-06-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/admin/site/update_basic.php: Marcus Povey <marcus@dushka.co.uk> *
+ Removed debug
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Default of
+ can_edit_entity trigger plugin hook set to true.
+
+ * actions/admin/site/update_basic.php, engine/lib/admin.php,
+ engine/lib/entities.php, engine/lib/sites.php, languages/en.php,
+ views/default/admin/site.php: Marcus Povey <marcus@dushka.co.uk> * Basic site
+ admin
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * All queries
+ echoed in debug mode
+
+ * views/default/admin/plugins.php: Marcus Povey <marcus@dushka.co.uk> *
+ Comments
+
+ * engine/lib/admin.php: Marcus Povey <marcus@dushka.co.uk> * Documentation
+
+ * admin/index.php, admin/plugins/index.php, admin/site/index.php,
+ admin/user/index.php, engine/lib/admin.php, engine/lib/elgglib.php,
+ languages/en.php, views/default/admin/main.php,
+ views/default/admin/main_opt/plugins.php,
+ views/default/admin/main_opt/site.php, views/default/admin/main_opt/user.php,
+ views/default/admin/plugins.php, views/default/admin/site.php,
+ views/default/admin/user.php: Marcus Povey <marcus@dushka.co.uk> * Initial
+ administration panel
+
+ * engine/lib/admin.php, engine/lib/elgglib.php:
+
+ * engine/lib/sessions.php: Marcus Povey <marcus@dushka.co.uk> * actions with
+ admin only support
+
+ * engine/lib/actions.php: Marcus Povey <marcus@dushka.co.uk> * actions with
+ admin only support
+
+ * admin/index.php, admin/plugins/index.php, admin/settings/index.php,
+ admin/users/index.php, engine/lib/admin.php: Marcus Povey
+ <marcus@dushka.co.uk> * Starting admin and relocating to the garden...
+
+2008-06-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php, mod/profile/icon.php,
+ mod/profile/views/default/profile/icon.php: Fixed icon cache issue.
+
+2008-06-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Marcus Povey <marcus@dushka.co.uk> * Introducing
+ admin_gatekeeper()
+
+2008-06-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, languages/en.php: Marcus Povey
+ <marcus@dushka.co.uk> * Debug added to site installation
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Spelling
+ error
+
+2008-06-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/output/tags.php: Sorting out tag links.
+
+ * engine/schema/mysql.sql: Added an explicit conversion to MyISAM in the db
+ tables when a FULLTEXT key is used.
+
+2008-06-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php:
+
+ * engine/lib/languages.php:
+
+2008-06-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: A better fix for language pack loading ...
+
+ * mod/profile/languages/en.php: Fixed a bad header in profile
+
+ * engine/lib/languages.php: Fix for language pack loading.
+
+2008-06-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Marcus Povey <marcus@dushka.co.uk> * Modified
+ elgg_echo to return $message_key if no translations found, meaning you will
+ always get _something_ from the command and will serve to prompt people for
+ missing translations.
+
+2008-06-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Error text change.
+
+ * engine/start.php: Languages are now loaded before the main engine starts.
+
+ * engine/lib/actions.php, engine/lib/configuration.php,
+ engine/lib/database.php, engine/lib/elgglib.php, engine/lib/entities.php,
+ engine/lib/export.php, engine/lib/filestore.php, engine/lib/install.php,
+ engine/lib/languages.php, engine/lib/notification.php,
+ engine/lib/objects.php, engine/lib/sessions.php, engine/lib/sites.php,
+ engine/lib/system_log.php, engine/lib/users.php, engine/start.php,
+ mod/apitest/start.php, mod/dashboard/start.php, mod/exporttest/start.php,
+ mod/guidbrowser/start.php, mod/profile/start.php: register_event_handler and
+ trigger_event have been renamed to register_elgg_event_handler and
+ trigger_elgg_event respectively.
+
+2008-06-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, languages/en.php: Marcus Povey
+ <marcus@dushka.co.uk> * Debug added to db connect
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Bugfix on
+ filestore
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Removed
+ debug
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Bugfixed
+ canEdit and isFullyLoaded
+
+2008-06-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Caching complete
+
+ * engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php:
+
+ * engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php: Marcus
+ Povey <marcus@dushka.co.uk> * Added the code to the correct method. Doh!
+
+ * engine/lib/entities.php, engine/lib/users.php:
+
+ * engine/lib/users.php:
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php:
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Added table
+ counter
+
+2008-06-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Annoying typo bugfix
+
+ * views/default/page_elements/header.php: Moving the location of metatags so
+ that we can add jQuery plugins after jQuery gets loaded.
+
+2008-06-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php:
+
+2008-06-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Fixed class instanceof errors
+
+2008-06-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php, engine/lib/users.php: Marcus Povey
+ <marcus@dushka.co.uk> * Reverted caching error
+
+ * engine/lib/entities.php, engine/lib/sites.php, engine/lib/users.php:
+ Marcus Povey <marcus@dushka.co.uk> * Added caching to entities. Please report
+ any problems.
+
+2008-06-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/users.php: Interim fix for user saving
+
+2008-06-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/messages/exceptions/exception.php: Marcus Povey
+ <marcus@dushka.co.uk> * Updated to show improved debug in debug mode.
+
+ * views/default/messages/exceptions/exception.php: Marcus Povey
+ <marcus@dushka.co.uk> * Updated to show improved debug in debug mode.
+
+2008-06-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Fixed previously-introduced entity save issue.
+
+ * engine/lib/entities.php: There are line breaks in my query. Hrm.
+
+ * engine/lib/entities.php: Fixed issue on save
+
+2008-06-06 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, languages/en.php: Marcus Povey <marcus@dushka.co.uk> *
+ More internationalisation
+
+ * languages/en.php, services/api/rest.php: Marcus Povey
+ <marcus@dushka.co.uk> * More internationalisation
+
+ * languages/en.php, services/export/handler.php: Marcus Povey
+ <marcus@dushka.co.uk> * More internationalisation
+
+ * languages/en.php, views/default/export/entity.php: Marcus Povey
+ <marcus@dushka.co.uk> * More internationalisation
+
+ * engine/lib/query.php, languages/en.php: Marcus Povey <marcus@dushka.co.uk>
+ * More internationalisation
+
+ * actions/register.php: Marcus Povey <marcus@dushka.co.uk> * Blank passwords
+ and blank second password no longer permitted
+
+ * engine/lib/entities.php, engine/lib/extender.php,
+ engine/lib/relationships.php, engine/lib/river.php,
+ engine/lib/system_log.php: Marcus Povey <marcus@dushka.co.uk> * Limit to
+ specific users and/or relationships
+
+2008-06-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php, engine/lib/users.php, mod/profile/start.php:
+ Fixes for metadata and for the run order.
+
+2008-06-05 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php:
+
+ * engine/lib/river.php: Marcus Povey <marcus@dushka.co.uk> * River now
+ passes performed_by_guid user as an object to sub views
+
+ * engine/lib/system_log.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * System log performs the id of the user who performed
+ a given action (or 0 if no user was logged in). Update your DB schema.
+
+ * views/default/river/shell.php:
+
+ * views/default/river/ElggUser/login.php,
+ views/default/river/ElggUser/logout.php:
+
+ * views/default/river/shell.php:
+
+ * languages/en.php, views/default/river/ElggUser/login.php,
+ views/default/river/ElggUser/logout.php, views/default/river/shell.php:
+ Marcus Povey <marcus@dushka.co.uk> * Some basic river code
+
+ * mod/profile/index.php, views/default/river/ElggUser/login.php,
+ views/default/river/ElggUser/logout.php, views/default/river/shell.php:
+ Marcus Povey <marcus@dushka.co.uk> *
+
+2008-06-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php, engine/settings.example.php: Removing assorted
+ errors which will allow for excellent river operation
+
+2008-06-05 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php:
+
+2008-06-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/filestore.php,
+ views/default/pageshells/pageshell.php: Further cleanup
+
+ * views/default/page_elements/header.php, views/default/pageshell.php:
+ Further sitename fix.
+
+2008-06-05 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, engine/lib/notification.php, languages/en.php:
+ Marcus Povey <marcus@dushka.co.uk> * More text internationalised
+
+2008-06-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Fixed a foreach bug.
+
+ * views/default/page_elements/header.php: Returned the site name to the
+ header.
+
+2008-06-05 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/cache.php, engine/lib/database.php,
+ engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/export.php,
+ engine/lib/extender.php, engine/lib/filestore.php, engine/lib/metadata.php,
+ engine/lib/objects.php, engine/lib/plugins.php, engine/lib/relationships.php,
+ engine/lib/sites.php, engine/lib/users.php, languages/en.php: Marcus Povey
+ <marcus@dushka.co.uk> * Partial internationalisation of exceptions
+
+2008-06-05 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/systemsettings/install.php, engine/lib/elgglib.php, install.php,
+ views/default/account/forms/register.php, views/default/settings/system.php:
+ Installation and initial account creation should now be stable.
+
+2008-06-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: A more elegant event passthrough mechanism.
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php,
+ engine/lib/languages.php, engine/lib/sessions.php, engine/lib/sites.php:
+ Fixed the installation labels issue!
+
+2008-06-04 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/query.php: Marcus Povey <marcus@dushka.co.uk> * Documentation
+ added to query.
+
+2008-06-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, engine/lib/install.php, engine/lib/sessions.php,
+ engine/lib/users.php, views/default/account/forms/login.php: Fixed actions
+ issues
+
+ * engine/lib/elgglib.php: Fixed the callpath_gatekeeper on Windows machines.
+
+2008-06-04 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/query.php:
+
+ * engine/lib/system_log.php:
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> * Belts
+ and braces
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> * Supports
+ multiple delivery methods as an array
+
+ * engine/lib/system_log.php: Marcus Povey <marcus@dushka.co.uk> * Minor
+ documentation
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> *
+ Documentation
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Minor
+ documentation
+
+ * engine/lib/query.php:
+
+ * engine/lib/query.php: Marcus Povey <marcus@dushka.co.uk> * More
+ documentation added
+
+ * engine/lib/database.php, engine/lib/query.php: Marcus Povey
+ <marcus@dushka.co.uk> * Moved Query object et al to their own file
+
+2008-06-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Minor doc
+ tweak
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ documentation
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Removed
+ superfluous event
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Debug
+ removed
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/metadata.php, engine/lib/relationships.php: Marcus Povey
+ <marcus@dushka.co.uk> * Fixed annotations not returning anything * Access
+ control on db now disabled when run from privileged code block.
+
+ * engine/lib/access.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ restricted mode
+
+2008-06-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: Added the metatags element into
+ the page header.
+
+2008-06-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php: Marcus Povey <marcus@dushka.co.uk> * Removed and
+ because you can always add it.
+
+ * engine/lib/access.php: Marcus Povey <marcus@dushka.co.uk> * Added access
+ control shorthand function. REPLACE THIS WHEN QUERY OBJECT COMPLETE
+
+ * engine/lib/database.php:
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed set
+ ommission
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Path check no
+ longer an event, forces path check
+
+ * engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php: Marcus
+ Povey <marcus@dushka.co.uk> * Update and creates now handled separately, with
+ the appropriate events triggered.
+
+ * action_handler.php, pagehandler.php: Marcus Povey <marcus@dushka.co.uk> *
+ Moved handlers to engine/handlers/ to avoid them running foul of the
+ callpath_gatekeeper.. UPDATE YOUR .htaccess!
+
+ * engine/handlers/action_handler.php, engine/handlers/pagehandler.php,
+ htaccess_dist: Marcus Povey <marcus@dushka.co.uk> * Moved handlers to
+ engine/handlers/ to avoid them running foul of the callpath_gatekeeper..
+ UPDATE YOUR .htaccess!
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Minor bugfix
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Missing $CONFIG from insert_data
+
+ * engine/lib/elgglib.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Privileged path check to privileged function
+ execution. ... i really don't like this exception stuff. I think it would be
+ better to say that you can't access stuff you can't access.
+
+2008-05-30 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Removed debug
+
+ * engine/lib/database.php, engine/lib/elgglib.php: Marcus Povey
+ <marcus@dushka.co.uk> * Bugfix on gatekeeper and forcing data functions to
+ privileged only
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Renamed
+ limited to strict
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Improved
+ callpath_gatekeeper
+
+2008-05-29 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/export/entity.php: Marcus Povey <marcus@dushka.co.uk> * Removed
+ foaf/export since this has been superceded.
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Turns out i
+ needed reflection afterall.
+
+2008-05-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/friends/list.php, views/foaf/pageshells/pageshell.php: Added
+ FOAF
+
+ * views/default/canvas/layouts/one_column.php: Correcting one column font
+ size issue
+
+2008-05-29 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Introducing
+ callpath_gatekeeper
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Simplified
+ call_gatekeeper()
+
+ * engine/lib/elgglib.php:
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Introducing
+ call_gatekeeper()
+
+2008-05-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/friends/add.php, actions/friends/remove.php,
+ engine/lib/social.php, engine/lib/users.php, friends/index.php,
+ friends/of.php, languages/en.php, mod/profile/views/default/profile/menu.php,
+ mod/profile/views/default/profile/userdetails.php,
+ mod/profile/views/default/user/user.php, views/default/friends/list.php:
+ Added friends pages and related functionality
+
+2008-05-29 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php:
+
+2008-05-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/user/user.php: Slight change to the user view in
+ profiles, to facilitate the friends page
+
+2008-05-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Import now
+ does simple checks for failure
+
+ * engine/lib/opendd.php: Marcus Povey <marcus@dushka.co.uk> * Sanity checks
+ added to OpenDD import
+
+ * mod/exporttest/views/default/exporttest/main.php:
+
+2008-05-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Query fixes for previous.
+
+ * engine/lib/tags.php: Adding support for db prefixes to previous
+
+2008-05-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/odd.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ gatekeeper
+
+ * mod/exporttest/views/default/exporttest/main.php: Marcus Povey
+ <marcus@dushka.co.uk> * export test import set to use new import action
+
+2008-05-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php, views/default/output/tagcloud.php: Added new tagcloud
+ functions
+
+2008-05-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/import/odd.php, languages/en.php: Marcus Povey
+ <marcus@dushka.co.uk> * Importing ODD action added
+
+2008-05-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * search/index.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php: Subtypes and object types for search.
+
+2008-05-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Minor doc
+ update
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Minor doc
+ update
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed Where,
+ WhereStatic and WhereSet
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ order/limit
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed tables
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ spacing issue
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Throws
+ exception if fields are missing on a select query
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ $CONFIG->prefix now $CONFIG->dbprefix * Exception thrown on missing tables
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Fixed ACL
+ where "where" is missing * Added catch for exceptions
+
+2008-05-28 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/one_column.php: small tweak to the canvas
+ view - this is temp
+
+2008-05-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: A further fix for previous.
+
+ * engine/lib/sessions.php: Solidifying the login() function so that the
+ session data is always consistent.
+
+ * actions/login.php, engine/lib/sessions.php: Revamped the login functions
+ to separate login from authentication.
+
+ * engine/lib/sessions.php: login() can now be extended by other
+ authentication methods. TODO: wrap this up with the PAM functionality.
+
+ * engine/lib/sessions.php: Adding login and logout events.
+
+2008-05-27 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Fixed DB
+ code
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ incorrect event trigger code - problem caused by incorrect is_array clause on
+ event trigger functions
+
+2008-05-27 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/input.php, engine/lib/social.php: create a new social library
+ in the engine. Moved string parsing for links to input.php and removed
+ converting strings to tags from the shouts plugin and added them to the
+ social library.
+
+2008-05-27 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Marcus Povey <marcus@dushka.co.uk> * Offset
+ incremented each pass, will no longer get stuck in the infinite loop
+
+ * engine/lib/system_log.php: Marcus Povey <marcus@dushka.co.uk> *
+ Restrictions checked
+
+ * engine/lib/river.php: Marcus Povey <marcus@dushka.co.uk> * Views looked
+ for now river/$CLASSNAME/$EVENT
+
+2008-05-26 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: new fixed width
+
+ * views/default/css.php: fixed width page
+
+ * vendors/jquery/init.js, vendors/jquery/jquery-1.2.4a.js,
+ vendors/jquery/jquery-1.2.6.pack.js, vendors/jquery/jquery.js,
+ vendors/jquery/ui.base.js, vendors/jquery/ui.draggable.js,
+ vendors/jquery/ui.droppable.js, vendors/jquery/ui.sortable.js: new jquery,
+ removed old
+
+ * _graphics/footer.gif, _graphics/header.gif, _graphics/sidebar-bottom.gif,
+ _graphics/sidebar-top.gif: removed old graphics
+
+ * _graphics/pagebackground.gif, _graphics/pagebackground.jpg: pics needed
+
+ * views/default/css.php, views/default/navigation/toolbox.php,
+ views/default/page_elements/header.php, views/default/reset.css: simple
+ default theme as a starting point
+
+2008-05-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/canvas/layouts/one_column.php: added a new canvas area to
+ views, this is for plugins to layout their content.
+
+2008-05-26 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fix for elgg_view_layout
+
+ * engine/lib/elgglib.php: Added layout manager to elgglib
+
+2008-05-26 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: added some relationship helper functions for
+ relationship type 'attached'
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Slight tweak to the entities
+ getEntitiesFromRelationship method. We need inverse relationships!
+
+ * views/default/pageshells/pageshell.php: Sticking the sidebar somewhere for
+ now
+
+ * engine/lib/access.php, languages/en.php: Added a plugin hook and
+ translations for previous.
+
+ * engine/lib/access.php, views/default/input/access.php: Introducing a
+ visual widget for inputting access permissions.
+
+2008-05-23 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/pageshells/pageshell.php: reverted
+ back to a simple layout for now
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/views/default/user/user.php: Similar profile fix to previous
+
+2008-05-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/extender.php, engine/lib/metadata.php,
+ engine/lib/relationships.php, engine/lib/river.php,
+ engine/lib/system_log.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Support for river entries
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/languages/en.php, mod/profile/views/default/profile/edit.php:
+ You can now edit your profile again ..
+
+2008-05-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * View debug
+ messages now echoed to system log instead of to the screen. * Minor doc fix
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Removing double sanitise_string on save metadata
+
+2008-05-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Added
+ access_id
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Removing conflict over 'event' keyword in views
+
+ * engine/lib/elgglib.php: ... and again ...
+
+2008-05-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/system_log.php:
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fix for previous
+
+ * mod/profile/actions/iconupload.php, mod/profile/icon.php,
+ mod/profile/views/default/profile/icon.php: Introducing the 'tiny' profile
+ icon size
+
+2008-05-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/extender.php,
+ engine/lib/relationships.php, engine/lib/system_log.php, engine/start.php:
+ Marcus Povey <marcus@dushka.co.uk> * System log event code
+
+2008-05-23 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Similar tweak as for events, but with plugin hooks
+
+ * engine/lib/elgglib.php: trigger_event now passes the actual event details
+ on 'all'
+
+ * engine/lib/entities.php: An improvement to the clearMetadata method on
+ ElggEntities - specify a name and it only clears metadata of that type.
+
+2008-05-22 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Marcus Povey <marcus@dushka.co.uk> * Added system log to
+ prerequisite loader
+
+ * engine/lib/system_log.php: Marcus Povey <marcus@dushka.co.uk> * Can now
+ run
+
+ * engine/lib/river.php, engine/lib/system_log.php: Marcus Povey
+ <marcus@dushka.co.uk> * Moving back to desktop
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Added
+ system_log table
+
+2008-05-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Removing duplicate metastring issue
+
+2008-05-22 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * undid
+ previous as it was a dumb idea
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> *
+ Clarification: Trigger event can only be passed a context related to a
+ ElggEntity
+
+2008-05-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Rearranging events: stage 1
+
+2008-05-22 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/river.php: Marcus Povey <marcus@dushka.co.uk> * River stub for
+ the pub.
+
+2008-05-22 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pagehandler.php: The context is now set automatically when the
+ page handler is in use.
+
+ * engine/lib/pageowner.php: Plugins can now set context
+
+2008-05-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: And again
+
+ * engine/lib/entities.php: Minor fix for setting metadata
+
+2008-05-21 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Marcus Povey <marcus@dushka.co.uk> * Tag cloud for
+ files
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Introducing
+ find_metadata as a counterpart to get_entities_from_metadata
+
+2008-05-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/relationships.php: Entities now clear
+ all associated relationships on delete
+
+ * engine/lib/relationships.php: Added function to remove all entity
+ relationships of a particular kind associated with an entity
+
+ * engine/lib/access.php: Creating the constants ACCESS_PUBLIC,
+ ACCESS_PRIVATE, ACCESS_LOGGED_IN
+
+2008-05-21 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/tags.php: Marcus Povey <marcus@dushka.co.uk> * Added tag cloud
+ functions
+
+2008-05-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/iconupload.php, mod/profile/icon.php: Assorted profile
+ icon fixes
+
+ * engine/lib/entities.php: Metadata can now be added to before an entity is
+ saved. It will be added to the db on save.
+
+ * views/default/pageshells/pageshell.php: Allowing for further extension to
+ the sidebar
+
+ * engine/lib/elgglib.php, views/default/pageshells/pageshell.php: Added
+ easier sidebar population
+
+2008-05-20 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Introducing
+ get_resized_image_from_existing_file * Consolidated
+ get_resized_image_from_uploaded_file to use it
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ get_subtype_id now shortcircuits returning unmodified $subtype if $subtype is
+ ""
+
+ * engine/lib/objects.php, engine/lib/sites.php, engine/lib/users.php: Marcus
+ Povey <marcus@dushka.co.uk> * Fixed direct load by guid issue
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ strange regression in get_entities, now returns all stuff even if subtype is
+ blank.
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Revised
+ matrix generation on filestore
+
+2008-05-20 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Removing a PHP notice
+
+2008-05-20 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/atom.php, engine/lib/export.php, engine/lib/opendd.php,
+ views/atom/export/entity.php, views/atom/export/metadata.php,
+ views/atom/export/relationship.php, views/atom/pageshells/pageshell.php:
+ Marcus Povey <marcus@dushka.co.uk> * reverted previous
+
+ * engine/lib/atom.php, engine/lib/export.php, engine/lib/opendd.php,
+ views/atom/export/entity.php, views/atom/export/metadata.php,
+ views/atom/export/relationship.php, views/atom/pageshells/pageshell.php:
+ Marcus Povey <marcus@dushka.co.uk> * Committed abortive Atom wrapper... we
+ need to support different import/export
+
+ * engine/start.php: Marcus Povey <marcus@dushka.co.uk> * Debug mode now
+ lists libraries loaded
+
+ * services/export/handler.php: Marcus Povey <marcus@dushka.co.uk> *
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Introducing:
+ current_page_url()
+
+2008-05-19 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php, engine/start.php,
+ views/default/pageshells/pageshell.php: Fixing the install process, step 1.
+
+ * engine/lib/sessions.php: Session init now fails if the db hasn't been
+ installed.
+
+ * engine/start.php: Elgg will now enter light mode (no plugins are loaded,
+ system init doesn't happen) if the parameter lightmode = "true"
+
+2008-05-16 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * services/export/handler.php: Marcus Povey <marcus@dushka.co.uk> * Minor
+ clarification
+
+ * endpoints/rest.php, mod/apitest/start.php, services/api/rest.php: Marcus
+ Povey <marcus@dushka.co.uk> * Refactored API under services
+
+ * export/handler.php, htaccess_dist, services/export/handler.php: Marcus
+ Povey <marcus@dushka.co.uk> * Refactored export to services/export for future
+ expansion of other rest style endpoints
+
+2008-05-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/pageshells/pageshell.php: Removed the double body issue to
+ prevent confusion
+
+ * admin/index.php, admin/plugins/index.php, admin/settings/index.php,
+ admin/users/index.php, languages/en.php, mod/blog/actions/add.php,
+ mod/blog/actions/comments/add.php, mod/blog/actions/comments/delete.php,
+ mod/blog/actions/delete.php, mod/blog/actions/edit.php, mod/blog/add.php,
+ mod/blog/edit.php, mod/blog/everyone.php, mod/blog/index.php,
+ mod/blog/languages/en.php, mod/blog/read.php, mod/blog/start.php,
+ mod/blog/views/default/blog/css.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/blog/notfound.php,
+ mod/blog/views/default/blog/view.php,
+ mod/blog/views/default/object/blog-comment.php,
+ mod/blog/views/default/object/blog-comments.php,
+ mod/blog/views/default/object/blog.php, mod/file/actions/download.php,
+ mod/file/actions/upload.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/languages/en.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/file/file.php, mod/file/views/default/file/footer.php,
+ mod/file/views/default/file/icon.php, mod/file/views/default/file/upload.php,
+ mod/file/world.php, mod/tasklist/index.php, mod/tasklist/start.php,
+ mod/tasklist/views/default/tasklist/item.php,
+ mod/tasklist/views/default/tasklist/main.php,
+ mod/tasklist/views/default/tasklist/newtask.php,
+ views/default/admin/main.php, views/default/editmenu.php,
+ views/default/navigation/topmenu.php: Moving some stuff into the plugins
+ repo, where it belongs.
+
+ * engine/lib/users.php: Introducing getFriendsObjects to ElggUser
+
+2008-05-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Debug mode
+ causes queries that return no data to issue a warning
+
+ * engine/lib/opendd.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ ommission: setPublished
+
+2008-05-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/opendd.php: Added version
+
+ * engine/lib/opendd.php: Marcus Povey <marcus@dushka.co.uk> * Including XML
+ so it stands as a standalone lib
+
+ * engine/lib/export.php, engine/lib/opendd.php: Marcus Povey
+ <marcus@dushka.co.uk> * Moved ODD stuff to its own lib [untested]
+
+ * views/json/pageshells/pageshell.php: Marcus Povey <marcus@dushka.co.uk> *
+ Being "strictly correct" by returning application/json for json content type.
+
+2008-05-09 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * vendors/jquery/init.js, vendors/jquery/jquery-1.2.4a.js,
+ vendors/jquery/ui.base.js, vendors/jquery/ui.draggable.js,
+ vendors/jquery/ui.droppable.js, vendors/jquery/ui.sortable.js: jquery
+ framework
+
+ * views/default/css.php, views/default/navigation/topmenu.php,
+ views/default/page_elements/header.php,
+ views/default/pageshells/pageshell.php: drag n drop interface test
+
+2008-05-08 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Moved shortcut so that subtype of "" doesn't cause fail.
+
+2008-05-07 pete <pete@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php:
+
+ * views/default/css.php, views/default/navigation/toolbox.php,
+ views/default/pageshells/pageshell.php,
+ views/default/pageshells/pageshell_sidebar.php: new toolbar menu
+
+2008-05-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Removed a debug message
+
+ * engine/lib/entities.php: A fix for get_entities, which was borking if the
+ subtype of object specified didn't exist.
+
+ * engine/lib/configuration.php, engine/lib/sessions.php,
+ engine/lib/sites.php: Configuration prerequisites are now loaded on boot time
+ rathr than init
+
+ * engine/lib/filestore.php: The filestore is no longer so greedy about its
+ init function, and therefore gets the correct filestore location
+
+ * engine/lib/configuration.php: A small validation check
+
+2008-05-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: reversed my last tweak, another solution will
+ be required
+
+2008-05-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php, views/default/navigation/topmenu.php: Adding a user
+ icon to the top menu
+
+2008-05-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: small tweak to get annotations
+
+2008-05-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Minor bug fix in configuration
+
+ * engine/start.php: Update to start.php to fix bug on installation
+
+ * actions/systemsettings/install.php: Corrected an issue with actions.
+
+ * actions/systemsettings/install.php: Fixed a bug where the site was private
+ unless you were logged out ...
+
+ * actions/systemsettings/install.php, engine/lib/configuration.php,
+ engine/lib/database.php, engine/lib/entities.php, engine/lib/install.php,
+ engine/lib/languages.php, engine/lib/metadata.php,
+ engine/lib/relationships.php, engine/lib/users.php, engine/start.php,
+ install.php, languages/en.php, views/default/navigation/toolbox.php,
+ views/default/pageshells/pageshell_sidebar.php,
+ views/default/settings/install.php, views/default/settings/system.php: The
+ system now uses the site GUID to get and set entity data. Also, installation
+ is a great deal more visual.
+
+2008-05-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> * Now
+ registers email handler (oops)
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/foaf/export/entity.php: Marcus Povey <marcus@dushka.co.uk> * FOAF
+ view uses correctly formatted UUID
+
+ * views/foaf/export/entity.php, views/foaf/pageshells/pageshell.php: Marcus
+ Povey <marcus@dushka.co.uk> * Added prototype FOAF view
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Establishing $CONFIG->site
+
+ * engine/lib/install.php: Further changes to the site install procedure.
+
+ * engine/lib/elgglib.php, engine/lib/install.php, engine/lib/sites.php,
+ engine/schema/mysql.sql: Major site config changes
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/actions/upload.php: Marcus Povey <marcus@dushka.co.uk> * Uploads
+ and downloads now work.
+
+ * engine/lib/filestore.php:
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Schema update for configuration
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Bugfixing
+ my sillyness
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php: Fixed a bug in countAnnotations
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php:
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Bugfix
+
+ * mod/file/actions/download.php, mod/file/languages/en.php: Marcus Povey
+ <marcus@dushka.co.uk> * Download support
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Added tell
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Added eof
+ functionality to datastore
+
+ * mod/file/actions/download.php, mod/file/start.php,
+ mod/file/views/default/file/file.php: Marcus Povey <marcus@dushka.co.uk> *
+ Download page added
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Docs for previous
+
+ * engine/lib/actions.php: Added GET variable processing to the action
+ handler.
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/start.php, mod/file/views/default/file/file.php: Marcus Povey
+ <marcus@dushka.co.uk> * Name tweaks
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Get and set per-site configuration values
+ from the database
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/actions/upload.php: Marcus Povey <marcus@dushka.co.uk> * Minor
+ tweak
+
+ * mod/file/actions/upload.php: Marcus Povey <marcus@dushka.co.uk> * Error
+ handling
+
+ * mod/file/actions/upload.php: Marcus Povey <marcus@dushka.co.uk> * Save to
+ get the GUID
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX: Typo
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: $CONFIG->dbprefix, not $CONFIG->prefix
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php, mod/file/upload.php: Marcus Povey
+ <marcus@dushka.co.uk> * Bugfix: uses the correct filename
+
+2008-05-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Introducing gatekeeper();
+
+ * engine/lib/elgglib.php: Introducing run_function_once($functionname,
+ $timelastupdatedcheck).
+
+2008-05-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/actions/upload.php, mod/file/index.php, mod/file/start.php,
+ mod/file/views/default/file/file.php, mod/file/views/default/file/icon.php:
+ Marcus Povey <marcus@dushka.co.uk> * Using mime types
+
+ * engine/lib/database.php, engine/lib/entities.php: Marcus Povey
+ <marcus@dushka.co.uk> * Fixed regression on custom class loader
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Now
+ registers ElggFile for 'object' & 'file'
+
+2008-04-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Fix for previous fix for previous fix
+
+ * engine/lib/entities.php: Slight correction to the count entities from
+ relationship alias in ElggEntity
+
+ * engine/lib/relationships.php: Fix for previous fix
+
+ * engine/lib/relationships.php: Fix for previous
+
+ * engine/lib/entities.php, engine/lib/relationships.php: Fixing some
+ functions relating to relationships
+
+2008-04-30 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Minor tweak:
+ removed $ns references from ODD __toString()
+
+ * engine/lib/export.php, engine/lib/relationships.php: Marcus Povey
+ <marcus@dushka.co.uk> * Changed "verb" to "type" in relationship, as
+ described in ODD spec 0.5
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> * Removed
+ get_notifications... you should provide a list of guid's yourself
+
+ * mod/file/views/default/file/footer.php: Marcus Povey <marcus@dushka.co.uk>
+ * Simple footer
+
+2008-04-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: get_entities returns false if the subtype name
+ couldn't be found.
+
+2008-04-30 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/file/actions/upload.php, mod/file/friends.php, mod/file/index.php,
+ mod/file/languages/en.php, mod/file/start.php, mod/file/upload.php,
+ mod/file/views/default/file/file.php, mod/file/views/default/file/footer.php,
+ mod/file/views/default/file/upload.php, mod/file/world.php: Marcus Povey
+ <marcus@dushka.co.uk> * First draft file upload
+
+2008-04-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/relationships.php: Introducing
+ getEntitiesFromRelationship and countEntitiesFromRelationship methods on
+ ElggEntity
+
+ * mod/blog/views/default/object/blog.php: Fixed a (presumably transient)
+ comments issue in blogs.
+
+ * mod/blog/views/default/object/blog.php: Temporary style fix
+
+ * mod/blog/views/default/object/blog.php: Updating blog view to involve
+ icons
+
+2008-04-30 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> *
+ ElggDiskFilestore now uses matrix formed from username, and supports paths.
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> *
+
+2008-04-30 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Resizing images now resamples them for better
+ clarity.
+
+ * mod/profile/actions/iconupload.php: Better error reporting on previous.
+
+ * mod/profile/actions/iconupload.php: Fixed profile resizing issue
+
+ * engine/lib/filestore.php: Previous now returns false.
+
+ * engine/lib/filestore.php: Fixed image resizing issue, corrected function
+ to create a jpeg using output buffering rather than a temporary file
+
+2008-04-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/page_elements/header.php: added jquery to the main pageshell
+ header
+
+ * vendors/jquery/jquery.js: Uploaded the latest jquery into core.
+
+2008-04-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/profile/actions/iconupload.php,
+ mod/profile/editicon.php, mod/profile/graphics/defaultlarge.jpg,
+ mod/profile/graphics/defaultmedium.jpg,
+ mod/profile/graphics/defaultsmall.jpg, mod/profile/icon.php,
+ mod/profile/languages/en.php, mod/profile/start.php,
+ mod/profile/views/default/profile/editicon.php,
+ mod/profile/views/default/profile/icon.php,
+ mod/profile/views/default/user/user.php: Introducing profile icons.
+
+ * engine/lib/filestore.php: Fix for make_file_matrix
+
+ * engine/lib/filestore.php: Filenames fix
+
+ * engine/lib/filestore.php: Non-invasive fix for previous.
+
+ * engine/lib/filestore.php: Introducing get_uploaded_file and
+ get_resized_image_from_uploaded_file.
+
+ * engine/lib/extender.php: Sledgehammer tactics on can_edit_extender
+
+ * engine/lib/extender.php: Attempt at an extender canEdit fix
+
+ * engine/lib/annotations.php: Fixed typo
+
+ * engine/lib/extender.php: Added getEntity() to ElggExtender
+
+ * engine/lib/annotations.php: Fixed a minor SQL error in annotation sum
+ functions
+
+ * engine/lib/annotations.php: Minor fix involving ratings and get
+ annotations
+
+2008-04-29 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Import functionality works, removed update but no change error on update
+
+ * engine/lib/extender.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Missing name
+
+ * engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Fixed bug in
+ getOwner override
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ incorrect if condition logic
+
+2008-04-29 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/calendar.php: small tweak to the calendar input
+
+2008-04-29 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/input/calendar.php: Replacing strip_string with
+ sanitise_string in the calendar input
+
+2008-04-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/notification.php: Marcus Povey <marcus@dushka.co.uk> * Notify
+ and email notify added (not tested) ... still unsure about get_notify_list,
+ attempted a number of options ... not sure if this is as simple as it could
+ be
+
+2008-04-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/vendors/calendarpopup/CalendarPopup.js,
+ views/default/input/calendar.php, views/default/output/calendar.php: Calendar
+ popup input for dates
+
+ * views/default/output/tags.php: Removing undefined index notice
+
+ * views/default/welcome.php: Removed annoying reference to $vars['name'] in
+ the welcome view
+
+ * mod/profile/actions/edit.php, mod/profile/languages/en.php,
+ mod/profile/start.php, mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/user/user.php: The profile now has fields set in
+ start.php. TODO: make those user editable, once we have the admin panel ...
+
+ * views/default/output/tags.php: The tag output view can now use
+ $vars['value'], bringing it in line with all the others
+
+ * views/default/input/email.php, views/default/output/email.php: Email
+ address input and output fields
+
+2008-04-25 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php: Marcus Povey <marcus@dushka.co.uk> * Removed minor
+ config stuff
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Crude
+ deleteall method added
+
+ * htaccess_dist: Marcus Povey <marcus@dushka.co.uk> * JSON & PHP export
+ rewrite rules
+
+ * views/json/export/entity.php, views/json/export/metadata.php,
+ views/json/export/relationship.php, views/php/export/entity.php,
+ views/php/export/metadata.php, views/php/export/relationship.php: Marcus
+ Povey <marcus@dushka.co.uk> * JSON & PHP Export modes
+
+ * engine/lib/extender.php, engine/lib/relationships.php: Marcus Povey
+ <marcus@dushka.co.uk> * Metadata and relationships can now be accessed as
+ arrays
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Objects can
+ be accessed as arrays
+
+2008-04-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Adding get_entities_from_metadata_multi
+
+2008-04-25 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * export/handler.php, htaccess_dist, odd/handler.php: Marcus Povey
+ <marcus@dushka.co.uk> * Renamed /odd to /export since the handler can now do
+ so much more...
+
+2008-04-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/editmenu.php: Editmenu stub view
+
+2008-04-25 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Marcus Povey <marcus@dushka.co.uk> * Using ODD view by
+ default
+
+ * odd/handler.php, views/default/export/entity.php,
+ views/default/export/metadata.php, views/default/export/relationship.php,
+ views/odd/export/entity.php, views/odd/export/metadata.php,
+ views/odd/export/relationship.php, views/odd/pageshells/pageshell.php: Marcus
+ Povey <marcus@dushka.co.uk> * Updated ODD handler, now uses views * Normal
+ and ODD view for all data items... cute eh? :)
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Using common
+ attribute type var to determine ODD export type for uuid generation, now
+ attributes can support a uuid
+
+ * .../views/default/guidbrowser/entity_full.php: Marcus Povey
+ <marcus@dushka.co.uk> * Uses guid_one as well
+
+ * odd/handler.php: Marcus Povey <marcus@dushka.co.uk> * Removed session
+ debug
+
+ * action.php, engine/lib/api.php, engine/lib/elgglib.php,
+ views/default/api/output.php, views/json/api/output.php,
+ views/json/pageshells/pageshell.php, views/php/api/output.php,
+ views/php/pageshells/pageshell.php, views/xml/api/output.php,
+ views/xml/pageshells/pageshell.php: Marcus Povey <marcus@dushka.co.uk> *
+
+ * endpoints/rest.php: Marcus Povey <marcus@dushka.co.uk> * API converted to
+ use views system
+
+2008-04-25 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fix to the debug messages for elgg_view
+
+2008-04-25 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/export.php: Marcus Povey
+ <marcus@dushka.co.uk> * Removed all namespacing code
+
+2008-04-24 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Namespace
+ support added to export
+
+2008-04-24 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * version.php: Minor edit to the version number spec
+
+ * engine/lib/elgglib.php, engine/lib/version.php, engine/schema/mysql.sql,
+ version.php: The beginnings of a db upgrade system. See lib/version.php,
+ /version.php and the datalist functions in elgglib.php.
+
+2008-04-24 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Removed header
+ object
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Unhandled
+ elements issue a warning on import
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Removed ODD
+ header element
+
+ * engine/lib/entities.php:
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/extender.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Generated now published * Metadata and annotations
+ use time from db * Attributes use time from entity
+
+2008-04-23 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Improved
+ documentation
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Filesize
+ support added, now possible to get all file contents with
+ $file->read($file->size());
+
+2008-04-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/profile/actions/edit.php, mod/profile/edit.php, mod/profile/index.php,
+ mod/profile/languages/en.php, mod/profile/start.php,
+ mod/profile/views/default/profile/edit.php,
+ mod/profile/views/default/user/user.php: Introduced profile plugin
+
+ * engine/lib/entities.php, engine/lib/metadata.php, engine/lib/users.php:
+ Fixed user GUID and multiple metadata bugs
+
+ * engine/lib/sessions.php: Session init now gets priority
+
+ * engine/lib/metadata.php: Improving the metadata search in cases where
+ users have multiple tags with the same text
+
+ * mod/blog/start.php: Added doc for blog URL function
+
+ * engine/lib/entities.php: Minor update to the default entity URLs
+
+ * engine/lib/elgglib.php: Fixed an inconsistency in elgg_view_entity
+
+2008-04-21 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php:
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Numerous
+ bugs fixed
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * No longer
+ saves file automatically, this gives you the option as to how to handle files
+ - either as proper objects or adhoc file handles which still use the
+ filestore code.
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Save and
+ Load (read/write) work * TODO: Loaded can not be loaded via name, only
+ guid... correct?
+
+2008-04-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: can_edit_entity now always returns false if the
+ user is logged out
+
+2008-04-21 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Marcus Povey <marcus@dushka.co.uk> * Removed tiny
+ debug output
+
+2008-04-21 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php: Fix for lingering sessions with nonexistent users
+
+ * engine/schema/mysql.sql: Removing extraneous character from schema
+
+ * engine/schema/mysql.sql: Added site_guid to the entities table
+
+2008-04-18 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/filestore.php: Marcus Povey <marcus@dushka.co.uk> * Unfinished
+ filestore code
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * Cleaned up doc
+
+2008-04-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: If you feed an entity a metadata array, it
+ assumes multiple values are allowed
+
+ * views/default/input/tags.php: Updated input tag field to take in strings
+ as well as arrays
+
+ * mod/blog/views/default/object/blog.php: Link fix
+
+ * htaccess_dist: Minor page handler mod_rewrite fix
+
+2008-04-18 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/exporttest/index.php, mod/guidbrowser/index.php: Marcus Povey
+ <marcus@dushka.co.uk> * Hardcoded sessions no longer necessary now that login
+ works
+
+2008-04-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/views/default/object/blog-comment.php,
+ mod/blog/views/default/object/blog.php,
+ views/default/account/forms/register.php: Removing references to action.php
+
+ * action_handler.php: Searunner?!
+
+2008-04-18 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * action_handler.php, htaccess_dist: Marcus Povey <marcus@dushka.co.uk> *
+ Fixed broken actions code on linux
+
+2008-04-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Removing previous
+
+2008-04-18 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Fixed ODD mod-rewrite rules
+
+2008-04-18 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Action debug
+
+ * htaccess_dist, mod/blog/start.php: Fix for page handler bugs
+
+2008-04-17 misja <misja@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Misja Hoebe <misja@curverider.co.uk> Clean up svn cruft
+
+2008-04-16 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, search/index.php: Introducing search
+
+ * engine/lib/elgglib.php, mod/blog/views/default/object/blog.php: No need
+ for elgg_view_entity to separately load the owner entity
+
+ * engine/lib/entities.php, mod/blog/start.php: ElggEntity->getOwnerUser() ->
+ ElggEntity->getOwnerEntity()
+
+ * mod/blog/start.php, mod/blog/views/default/object/blog.php: URL handling
+ for the blog plugin
+
+ * engine/lib/entities.php: Added the getURL and getOwnerUser methods to
+ ElggEntity (gets the URL to display the current entity and the ElggUser
+ entity that represents the owner respectively)
+
+ * engine/lib/entities.php, engine/lib/users.php, entities/index.php,
+ languages/en.php: Generic entity view system
+
+ * mod/blog/start.php, mod/blog/views/default/object/blog.php: Blog plugin
+ now serves as a fancy URL example
+
+ * views/default/messages/errors/list.php, views/default/messages/list.php,
+ views/default/messages/messages/list.php: Fixing the message views
+
+ * engine/lib/input.php, engine/lib/pagehandler.php: Added better GET query
+ variable handling into the page handler mix
+
+2008-04-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * _css/css.php, _graphics/blockquote.png, _graphics/footer.gif,
+ _graphics/header.gif, _graphics/sidebar-bottom.gif,
+ _graphics/sidebar-top.gif, css/css.php, engine/lib/pagehandler.php,
+ graphics/blockquote.png, graphics/footer.gif, graphics/header.gif,
+ graphics/sidebar-bottom.gif, graphics/sidebar-top.gif, htaccess_dist,
+ pagehandler.php, views/default/css.php,
+ views/default/page_elements/header.php: Natty page handling functions. See
+ engine/lib/pagehandler.php
+
+2008-04-15 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: Marcus Povey <marcus@dushka.co.uk> * Hopefully correct
+ mod-rewrite rules
+
+2008-04-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, engine/lib/entities.php, engine/lib/users.php:
+ get_entities now allows for arrays of GUIDs to be supplied as an owner, and
+ can be asked to count entities rather than return them; as a result,
+ get_user_friends_objects and count_* functionality is also now available
+
+2008-04-15 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * odd/handler.php: Marcus Povey <marcus@dushka.co.uk> * ODD handler added,
+ still needs modrewrite rules to be specified.
+
+2008-04-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/comments/delete.php, mod/blog/languages/en.php,
+ mod/blog/start.php, mod/blog/views/default/object/blog-comment.php,
+ mod/blog/views/default/object/blog-comments.php,
+ mod/blog/views/default/object/blog.php: Blog plugin improvements, including
+ delete on comments
+
+ * languages/en.php: A couple of additions to the language file
+
+ * views/default/input/checkboxes.php, views/default/input/file.php,
+ views/default/input/gender.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Cleaning up input
+ field views
+
+ * views/default/output/confirmlink.php, views/default/output/date.php,
+ views/default/output/file.php, views/default/output/gender.php,
+ views/default/output/longtext.php, views/default/output/pulldown.php,
+ views/default/output/tagcloud.php, views/default/output/tags.php,
+ views/default/output/text.php, views/default/output/timestamp.php,
+ views/default/output/url.php: Tidied up output views
+
+2008-04-15 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Removed
+ canedit shortcut
+
+ * engine/lib/relationships.php: Marcus Povey <marcus@dushka.co.uk> *
+ Modified to not throw exception on missing verb conversion
+
+ * engine/lib/relationships.php: Marcus Povey <marcus@dushka.co.uk> *
+ Relationship import
+
+2008-04-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/extender.php: Improvement to canEdit() for extenders, which
+ takes into account the canEdit() status of entities the extender is attached
+ to
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metastrings.php: Removing the multiple slash problem on
+ metastrings in extenders
+
+2008-04-15 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/relationships.php: Marcus Povey <marcus@dushka.co.uk> *
+ Relationships export
+
+ * engine/lib/xml.php: Marcus Povey <marcus@dushka.co.uk> * Improved XML to
+ array code
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Minor tweaks
+
+ * engine/lib/extender.php: Marcus Povey <marcus@dushka.co.uk> * Extender
+ import support. * Removed Importable interface on extender, its easier to
+ just use the entity object interface.
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Blocking
+ create and update dates from ODD export, since these don't make sense to
+ export.
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ optional set multiple on metadata
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Belts and
+ braces
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Entity
+ import.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Using common detect_extender_valuetype function
+
+2008-04-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Undone last as
+ it was a bad idea.
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Exception
+ thrown on unrecognised import tag.
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Import
+ functions now deal in ODD!
+
+ * engine/lib/export.php, engine/lib/xml.php: Marcus Povey
+ <marcus@dushka.co.uk> * XML Import processor
+
+ * engine/lib/relationships.php: Marcus Povey <marcus@dushka.co.uk> *
+ Relationships export
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Relationships
+ export
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * ODD
+ relationship verb -> relationship mapping functions
+
+ * mod/guidbrowser/index.php, mod/guidbrowser/start.php,
+ .../views/default/guidbrowser/entity_full.php: Marcus Povey
+ <marcus@dushka.co.uk> * Relationships added to GUID browser
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> *
+ Relationships table brought in line with code... oops
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/extender.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * ODD Annotation and Metadata export
+
+2008-04-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Added owner
+ uuid to type
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ subclass
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Comment tweak
+
+ * engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/export.php, engine/lib/extender.php, engine/lib/metadata.php,
+ engine/lib/relationships.php: Marcus Povey <marcus@dushka.co.uk> * Entity ODD
+ export
+
+ * engine/lib/xml.php: Marcus Povey <marcus@dushka.co.uk> * Moved XML stuff
+ to xml.php
+
+ * engine/lib/exceptions.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ DataFormatException
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Minor tweak
+
+2008-04-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php, engine/lib/api.php, engine/lib/pam.php: Marcus Povey
+ <marcus@dushka.co.uk> * Created PAM library * API moved to use new PAM
+ functions
+
+2008-04-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apitest/index.php, mod/apitest/start.php,
+ mod/apitest/views/default/apitest/configform.php,
+ mod/apitest/views/default/apitest/main.php: Marcus Povey
+ <marcus@dushka.co.uk> * Package header added
+
+ * mod/tasklist/index.php, mod/tasklist/start.php,
+ mod/tasklist/views/default/tasklist/item.php,
+ mod/tasklist/views/default/tasklist/main.php,
+ mod/tasklist/views/default/tasklist/newtask.php: Marcus Povey
+ <marcus@dushka.co.uk> * Package header added
+
+ * mod/exporttest/index.php, mod/exporttest/start.php,
+ mod/exporttest/views/default/exporttest/main.php,
+ .../views/default/exporttest/outputxml.php: Marcus Povey
+ <marcus@dushka.co.uk> * Package header added
+
+ * mod/guidbrowser/languages/en.php, mod/guidbrowser/start.php,
+ .../views/default/guidbrowser/browser.php,
+ .../views/default/guidbrowser/entity.php,
+ .../views/default/guidbrowser/entity_full.php,
+ .../views/default/guidbrowser/newentity.php,
+ .../views/default/guidbrowser/prevnext.php: Marcus Povey
+ <marcus@dushka.co.uk> * Package header added
+
+2008-04-09 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/start.php: Fixed some bugs including a
+ load order patch from Rolando, and an update issue
+
+ * engine/lib/pam.php: Empty PAM include file
+
+2008-04-08 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Simplified extender types, now only supports integer
+ and text - types deamed not to be necessary (yet), also simplifies import and
+ export. * Types better detected.
+
+2008-04-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/users.php, engine/start.php:
+ Incorporating setup fixes from Rolando
+
+2008-04-08 misja <misja@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php, engine/lib/cache.php, engine/lib/database.php: Misja
+ Hoebe <misja@curverider.co.uk> More doctag fixes
+
+ * endpoints/rest.php, engine/lib/annotations.php, engine/lib/entities.php,
+ engine/lib/exceptions.php, engine/lib/export.php, engine/lib/extender.php,
+ engine/lib/metadata.php, engine/lib/objects.php, engine/lib/plugins.php,
+ engine/lib/relationships.php, engine/lib/sites.php, engine/lib/users.php:
+ Misja Hoebe <misja@curverider.co.uk> More docstring fixes
+
+ * action.php, engine/lib/annotations.php, engine/lib/sites.php,
+ engine/lib/users.php: Misja Hoebe <misja@curverider.co.uk> Fixing doctags
+
+2008-04-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Further annotation /
+ metadata fixes
+
+ * views/default/output/tags.php: Improved tag display
+
+ * engine/lib/annotations.php: Fixing undeclared error
+
+ * mod/blog/actions/delete.php, mod/blog/actions/edit.php,
+ mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/object/blog.php: CRUD for blog posts
+
+ * engine/lib/sites.php, engine/lib/users.php: Same bugfix for sites and
+ users
+
+ * engine/lib/elgglib.php, engine/lib/entities.php, engine/lib/objects.php:
+ Further adventures in getting things to delete correctly
+
+ * engine/lib/annotations.php, engine/lib/elgglib.php,
+ engine/lib/entities.php: Further delete and event trigger fixes
+
+ * engine/lib/entities.php: Triggering events on create, update and delete
+ actions on entities
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php: Properly extensible canEdit functionality for
+ metadata, annotations, and anything else that supports the ElggExtender
+ interface
+
+ * engine/lib/entities.php, engine/lib/metadata.php: Much better handling for
+ deleting entities and metadata
+
+2008-04-04 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/edit.php, mod/blog/edit.php, mod/blog/start.php,
+ mod/blog/views/default/blog/forms/edit.php,
+ mod/blog/views/default/object/blog.php: Blog edit updates
+
+ * views/default/input/tags.php: Updated the tags input field
+
+ * languages/en.php: Adding 'edit' to the language file
+
+ * engine/lib/entities.php: Added $entity->canEdit() (true|false)
+
+ * mod/blog/everyone.php, mod/blog/index.php, mod/blog/languages/en.php,
+ mod/blog/start.php: Introducing the all blog posts page.
+
+ * views/default/output/tags.php: Tweaking the output/tags view
+
+ * engine/lib/entities.php, engine/lib/metadata.php: Added better support for
+ arrays of metadata
+
+ * mod/blog/actions/add.php, mod/blog/views/default/object/blog.php: Added
+ tags to the blog plugin
+
+ * mod/blog/read.php, mod/blog/views/default/blog/notfound.php: Further blog
+ enhancements
+
+2008-04-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/relationships.php: Marcus Povey
+ <marcus@dushka.co.uk> * Relationship related code moved to relationships.php
+ * Added ElggRelationship class as wrapper (to help with import and export) *
+ Import and Export relationship code added (NOT TESTED)
+
+ * mod/exporttest/index.php:
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Minor text
+ change
+
+2008-04-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/actions/comments/add.php, mod/blog/languages/en.php,
+ mod/blog/start.php, mod/blog/views/default/object/blog-comment.php,
+ mod/blog/views/default/object/blog-comments.php,
+ mod/blog/views/default/object/blog.php: Added comments to blog
+
+ * engine/lib/database.php: Added query display to database exceptions
+
+ * engine/lib/sessions.php: Fixed session initialisation issue
+
+2008-04-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/lib/extender.php, engine/lib/metadata.php:
+ Marcus Povey <marcus@dushka.co.uk> * Annotations and metadata now imported
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Bugfixes
+
+ * mod/guidbrowser/index.php, mod/guidbrowser/start.php,
+ .../views/default/guidbrowser/browser.php,
+ .../views/default/guidbrowser/entity.php,
+ .../views/default/guidbrowser/entity_full.php,
+ .../views/default/guidbrowser/navbar.php,
+ .../views/default/guidbrowser/prevnext.php: Marcus Povey
+ <marcus@dushka.co.uk> * Basic guid browser
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ Iterator interface to override foreach behaviour
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/sites.php,
+ engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Exception thrown
+ if load fails
+
+2008-04-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/languages/en.php, mod/blog/read.php,
+ mod/blog/views/default/blog/css.php, mod/blog/views/default/object/blog.php:
+ Blog: extended comment form, etc.
+
+ * engine/lib/elgglib.php: Slight fix for previous
+
+ * engine/lib/elgglib.php: Update for elgg_view_entity
+
+ * engine/lib/database.php: Slight get_data revert
+
+ * views/default/page_elements/header.php: Changing, once again, the way
+ titles work
+
+ * engine/lib/pageowner.php: Pages can now manually override the page owner
+
+ * mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/css.php, mod/blog/views/default/object/blog.php:
+ Adding name and posted date to blog entries
+
+ * mod/blog/index.php, mod/blog/views/default/blog/view.php,
+ mod/blog/views/default/object/blog.php: Blog update: you can post and view
+ blog entries.
+
+ * engine/lib/elgglib.php: Improved elgg_view_entity
+
+2008-04-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Cut and
+ paste is a killer
+
+ * engine/lib/plugins.php: Marcus Povey <marcus@dushka.co.uk> * Fixed
+ language autoload
+
+2008-04-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/guidbrowser/index.php, mod/guidbrowser/languages/en.php,
+ mod/guidbrowser/start.php, .../views/default/guidbrowser/entity.php,
+ .../views/default/guidbrowser/entity_full.php,
+ .../views/default/guidbrowser/navbar.php,
+ .../views/default/guidbrowser/newentity.php: Marcus Povey
+ <marcus@dushka.co.uk> * End of day
+
+2008-04-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php, engine/lib/entities.php, engine/lib/users.php:
+ Assorted entity fixes
+
+ * engine/lib/plugins.php: Plugins now autoregister translations
+
+ * engine/lib/entities.php: Small fix for get_entities
+
+ * mod/blog/actions/add.php, mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/forms/edit.php: Blog posting
+
+2008-04-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Access id
+ better handled
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Subtype is
+ converted to its exportable string version
+
+2008-04-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php: Removed some unnecessary debug junk
+
+ * engine/lib/actions.php: Fixed action registration for plugins
+
+2008-04-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/exporttest/index.php: Marcus Povey <marcus@dushka.co.uk> * Minor tweak
+ to actually get the command from it all
+
+2008-04-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Modified page_draw to behave correctly depending
+ on sessions
+
+ * languages/en.php: Language updates
+
+ * action.php: Removing debug issue
+
+ * action.php: Debug message in actions
+
+ * views/default/account/forms/register.php: Changing the destination of the
+ register form
+
+ * views/default/css.php, views/default/page_elements/header.php: Separating
+ sitename and title in the header
+
+ * views/default/css.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php: Let's make the
+ classes for input elements consistent
+
+ * views/default/pageshells/pageshell.php: Reinstating the side menu
+
+2008-04-02 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * graphics/blockquote.png, graphics/footer.gif, graphics/header.gif,
+ graphics/sidebar-bottom.gif, graphics/sidebar-top.gif, views/default/css.php,
+ views/default/page_elements/footer.php,
+ views/default/pageshells/pageshell.php: basic skin added
+
+2008-04-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * BUGFIX: User creation * User import functionality
+ working
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Offset/limit
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Value to
+ value_id
+
+ * mod/exporttest/views/default/exporttest/main.php: Marcus Povey
+ <marcus@dushka.co.uk> * Now using method=post
+
+ * engine/lib/entities.php, mod/tasklist/start.php: Marcus Povey
+ <marcus@dushka.co.uk> * REMOVED DEBUG * WARNING!!! THERE IS A PHP BUG ON
+ UBUNTU/APACHE2/PHP5 that will prevent metadata from functioning. Values
+ appear to get unset. No fix known.
+
+ * engine/lib/entities.php:
+
+ * mod/tasklist/start.php:
+
+ * mod/tasklist/start.php:
+
+ * mod/tasklist/start.php:
+
+ * engine/lib/entities.php, engine/lib/metadata.php:
+
+ * engine/lib/entities.php:
+
+ * engine/lib/entities.php:
+
+ * engine/lib/entities.php:
+
+ * mod/tasklist/start.php: debug
+
+ * engine/lib/entities.php: removed debug
+
+ * engine/lib/entities.php: debug
+
+ * engine/lib/entities.php: debug
+
+ * engine/lib/metadata.php: debug
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Entity type/ subtype functional
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> *
+ get_metadata_byname better handles single/multiple return values
+
+ * mod/tasklist/start.php, mod/tasklist/views/default/tasklist/newtask.php:
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> *
+ get_metadata_byname better handles single/multiple return values
+
+2008-04-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/blog/index.php: Slight change to blogs
+
+2008-04-02 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: debug
+
+ * engine/lib/metadata.php: removed debug
+
+ * engine/lib/metadata.php: debug
+
+ * mod/tasklist/index.php, mod/tasklist/start.php: test
+
+2008-04-02 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * htaccess_dist: htaccess dist
+
+ * engine/lib/users.php: Small fix
+
+ * engine/lib/pageowner.php: Smaller version of previous
+
+ * engine/lib/pageowner.php: Introducing page_owner_entity
+
+ * engine/lib/friends.php: Removing the friends module (it's unnecessary)
+
+ * engine/lib/pageowner.php: Fix to previous
+
+ * engine/lib/pageowner.php: Reverting page_owner
+
+2008-04-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * End of day...
+
+ * engine/lib/annotations.php, engine/lib/extender.php,
+ engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Moved common
+ functionality of metadata and annotations into superclass.
+
+2008-04-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * languages/en.php, mod/blog/add.php, mod/blog/edit.php, mod/blog/index.php,
+ mod/blog/languages/en.php, mod/blog/start.php,
+ mod/blog/views/default/blog/forms/edit.php: Further adventures in blogging;
+ saving for now
+
+ * mod/blog/index.php, mod/blog/languages/en.php, mod/blog/start.php,
+ views/default/welcome/logged_in.php: Blog mod and welcome screen updates
+
+ * engine/lib/pageowner.php: Update to docs for previous
+
+ * engine/lib/pageowner.php, engine/lib/users.php: page_owner() now returns
+ an ElggUser or false
+
+ * views/default/navigation/toolbox.php: Modified toolbox to display menu
+ items correctly
+
+ * engine/lib/elgglib.php: Fixed the menu item function
+
+2008-04-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Marcus Povey <marcus@dushka.co.uk> * Removed debug
+
+2008-04-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/languages.php: Added the register_languages function, for
+ easier loading of language files from plugins
+
+ * actions/register.php, engine/lib/entities.php, engine/lib/sessions.php,
+ engine/lib/users.php: Registration, login, logout work. Victory!
+
+ * views/default/account/forms/register.php: Registration form update
+
+ * engine/lib/users.php: Updated the registration function
+
+ * languages/en.php, register.php, views/default/account/forms/login.php,
+ views/default/account/forms/register.php, views/default/login.php,
+ views/default/welcome/logged_out.php: Further adventures in registration
+
+2008-04-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Some UUID
+ functions
+
+2008-04-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/logout.php, actions/register.php,
+ engine/lib/entities.php, engine/lib/users.php, languages/en.php,
+ views/default/login.php: User registration gubbins
+
+2008-04-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Used wrong
+ function decl
+
+ * mod/exporttest/index.php,
+ mod/exporttest/views/default/exporttest/main.php: Marcus Povey
+ <marcus@dushka.co.uk> * Added import block
+
+ * engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Moved import to
+ ElggEntity
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Moved import
+ to ElggEntity
+
+2008-04-01 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php, languages/en.php,
+ views/default/navigation/topmenu.php, views/default/page_elements/header.php,
+ views/default/welcome.php, views/default/welcome/logged_in.php,
+ views/default/welcome/logged_out.php: Fixed some session stuff, modified a
+ few views
+
+2008-04-01 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Moved import
+ to ElggEntity
+
+ * engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * Moved import to
+ ElggEntity
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Entities
+ owner_guid exported as owner_uuid
+
+2008-03-31 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Tidied up
+ comments
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Somewhat more
+ robust import logic
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Owner guid converted to a uuid
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Initial xml
+ import.
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Export of
+ entities now includes uuid
+
+2008-03-31 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/test/graphics/elgg.powered.png, mod/test/graphics/leaf.jpg,
+ mod/test/graphics/logo.png, mod/test/graphics/orange_small.png,
+ mod/test/graphics/purplecrayon.gif, mod/test/index.php, mod/test/start.php,
+ mod/test/views/default/css.php, mod/test/views/default/menu.php,
+ mod/test/views/default/pageshells/pageshell.php,
+ mod/test/views/default/testplugin/pageshell.php: Removing the mod/test
+ plugin. It doesn't need to be here...
+
+2008-03-31 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php: Marcus Povey <marcus@dushka.co.uk> *
+ Reverted regression
+
+2008-03-29 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * No such entity
+ error thrown if invalid guid given for export
+
+2008-03-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/api.php, engine/lib/entities.php,
+ engine/lib/export.php, engine/lib/metadata.php, index.php: Marcus Povey
+ <marcus@dushka.co.uk> * Metadata and Annotations now exported.
+
+ * engine/start.php: Marcus Povey <marcus@dushka.co.uk> * Preloads export
+ library - todo: do this better!
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> *
+
+ * mod/exporttest/index.php, mod/exporttest/start.php,
+ mod/exporttest/views/default/exporttest/main.php,
+ .../views/default/exporttest/outputxml.php: Marcus Povey
+ <marcus@dushka.co.uk> * Export test
+
+ * engine/lib/entities.php, engine/lib/export.php: Marcus Povey
+ <marcus@dushka.co.uk> * Export functionality for ElggEntity and children
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Whitespace
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Using export()
+ instead of toStdClass()
+
+2008-03-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Corresponding fix for register_plugin_hook
+
+ * engine/lib/elgglib.php: Fix for trigger_plugin_hook
+
+ * engine/lib/configuration.php: Autoconfiguration update .. again
+
+ * engine/lib/elgglib.php: Some extra params for elgg_view_entity
+
+ * engine/lib/elgglib.php: Added elgg_view_entity(ElggEntity $entity) to
+ intelligently display entities
+
+2008-03-28 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Moved XML
+ serialisation functions to export.php
+
+2008-03-28 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added custom return values to trigger_plugin_hook
+
+ * engine/lib/elgglib.php: Some extra documentation
+
+ * engine/lib/elgglib.php: Plugin hooks
+
+2008-03-27 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/export.php: Marcus Povey <marcus@dushka.co.uk> * Sketch
+ import/export functions added, pending event handling functions
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Array
+ support added
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Add / update
+ meta from array
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Multiple
+ meta tag support (requires db schema change)
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Removed sql
+ restriction to allow multiple tag entries
+
+2008-03-26 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/apitest/index.php, mod/apitest/start.php,
+ mod/apitest/views/default/apitest/configform.php,
+ mod/apitest/views/default/apitest/main.php: Marcus Povey
+ <marcus@dushka.co.uk> * Basic API testrig
+
+2008-03-25 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Subtype subclass instantiation
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * IO Exception if
+ cache directory doesn't exist
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Removed debug.
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Array support
+ added to api
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Call method now
+ specified in api
+
+2008-03-22 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Whitespace
+ removed
+
+2008-03-21 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Tweak for
+ unrecognised output format handling
+
+2008-03-20 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/tasklist/index.php: Marcus Povey <marcus@dushka.co.uk> * tags
+
+ * engine/lib/annotations.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Annotations now using metastrings table for name_ids
+ * Stupid amounts of whitespace removed
+
+ * engine/lib/entities.php, engine/lib/metadata.php, engine/schema/mysql.sql:
+ Marcus Povey <marcus@dushka.co.uk> * Metadata now using metastrings *
+ Entities will now throw an exception when creation is attempted with no owner
+
+ * mod/tasklist/index.php, mod/tasklist/views/default/tasklist/newtask.php:
+ Marcus Povey <marcus@dushka.co.uk> * Tags
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * a/cvs/csv ...
+ oops
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * Age checking on
+ cache.
+
+2008-03-19 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Exports working
+ system.api.list
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Removed warning
+ when calling undeclaired functions
+
+ * endpoints/rest.php: Marcus Povey <marcus@dushka.co.uk> * Added some
+ default values - these should be removed!
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Using simple
+ cache for replay protection... still need to clear cache of old files etc.
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * Cache no longer
+ using matrix directory due to issues with mkdir.
+
+ * endpoints/rest.php: Marcus Povey <marcus@dushka.co.uk> * Added expose and
+ call functions.
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Added expose and
+ call functions.
+
+ * endpoints/rest.php, engine/lib/api.php, index.php: Marcus Povey
+ <marcus@dushka.co.uk> * API now uses PAM
+
+2008-03-18 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php, engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk>
+ * API now supporting pluggable output format
+
+ * mod/tasklist/index.php, mod/tasklist/start.php,
+ mod/tasklist/views/default/tasklist/item.php,
+ mod/tasklist/views/default/tasklist/main.php,
+ mod/tasklist/views/default/tasklist/newtask.php: Marcus Povey
+ <marcus@dushka.co.uk> * Added VERY simple tasklist plugin.
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Final tweaks
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Moved order
+ and limit the right way
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Get Metadata
+ now actually works
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Modified to better deal with metastrings table
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Value to
+ value_id
+
+2008-03-17 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Marcus Povey <marcus@dushka.co.uk> * getOwner now
+ consistent with class hierachy
+
+ * engine/lib/objects.php, engine/lib/users.php: Marcus Povey
+ <marcus@dushka.co.uk> * getOwner now consistent with class hierachy
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Fixed sql
+ error on clear annotaitons
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * limit/offset
+ the wrong way round
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * guid not
+ needed in subtype since this is just a label.
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ Added config
+
+ * engine/lib/sessions.php, engine/lib/users.php: Marcus Povey
+ <marcus@dushka.co.uk> * Some minor tweaks
+
+ * engine/lib/configuration.php: Marcus Povey <marcus@dushka.co.uk> *
+ Reverted regression caused by previous revision
+
+2008-03-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sessions.php, engine/lib/users.php: Session functionality,
+ hello again!
+
+2008-03-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/languages.php: Marcus Povey
+ <marcus@dushka.co.uk> * Removed error outputs * Fixed languages
+
+ * engine/lib/access.php: Marcus Povey <marcus@dushka.co.uk> * Made site test
+ conditional to remove debug message
+
+2008-03-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: A quick syntax fix for objects
+
+2008-03-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/entities.php: Marcus Povey
+ <marcus@dushka.co.uk> * Get and set annotations seem to be working
+
+ * engine/lib/annotations.php, engine/lib/entities.php: Marcus Povey
+ <marcus@dushka.co.uk> * Get annotations
+
+2008-03-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php, engine/lib/usersnew.php: Whoops, that should be
+ users.php
+
+ * engine/lib/usersnew.php: Removed a needless comment
+
+ * engine/lib/usersnew.php: New users module
+
+ * engine/lib/entities.php, engine/lib/objects.php, engine/lib/users.php:
+ Adding a couple of extra functions, deleting the old users module
+
+2008-03-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/entities.php: Marcus Povey
+ <marcus@dushka.co.uk> * Annotations added
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ average calcs
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Removed debug
+
+ * engine/lib/entities.php, engine/lib/metadata.php, index.php: Marcus Povey
+ <marcus@dushka.co.uk> * Metadata code
+
+2008-03-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Added new objects class
+
+ * engine/lib/entities.php, engine/lib/objects.php: Removing old objects
+ class
+
+2008-03-14 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metastrings.php: Marcus Povey <marcus@dushka.co.uk> *
+ Metastrings modified for new schema
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Belts and
+ braces
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Belts and
+ braces
+
+2008-03-13 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Use
+ $CONFIG->debug = true to enable query profiling
+
+ * engine/lib/entities.php, engine/lib/sites.php: Marcus Povey
+ <marcus@dushka.co.uk> * Finally got sites to load :)
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Undone
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Owner ID
+ detected if not specified.
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Now saves
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Access
+ control fields ok
+
+ * engine/lib/access.php: Marcus Povey <marcus@dushka.co.uk> * Access using
+ new schema
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Added access
+ groups
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Fixed insert
+ SQL
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Types
+ initialised for first time creation
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Bugfix:
+ getMetaData
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Bugfix:
+ setMetaData
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Made URL
+ unique
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Commented out
+ sites_init - this needs to be rewritten!
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Added ElggSite
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ relationship code
+
+ * engine/lib/entities.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Removed site_guid references, since this should be
+ handled by relationships
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Ooops...
+ forgot access controls
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Changed a
+ couple of table names
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ delete_entity
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Initial
+ framework of ElggEntity code
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * A little bit
+ of extra info.
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Made subtype
+ a unique key
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * New database
+ schema. THIS IS A FLAG DAY!
+
+2008-03-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Added the ability to set an alternative template
+ handler
+
+2008-03-12 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Multiple
+ searches.
+
+ * engine/lib/annotations.php:
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, engine/lib/sites.php, index.php: Marcus Povey
+ <marcus@dushka.co.uk> * Subtyping on annotations and metadata
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * BUGFIX:
+ get_data now catches mysql_errors
+
+2008-03-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/actions.php, mod/test/start.php: Actions fix
+
+ * engine/lib/actions.php, engine/lib/objects.php, languages/en.php,
+ mod/test/index.php, mod/test/start.php,
+ mod/test/views/default/testplugin/pageshell.php: Language updates
+
+2008-03-12 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/entities.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ get_entity_subtypes function
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * object_*
+ changed to entity_* in metadata and annotations
+
+2008-03-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Fixing incorrect primary key
+
+ * engine/schema/mysql.sql, mod/test/index.php: Fixing incorrect primary key
+
+ * engine/lib/access.php, engine/lib/objects.php, mod/test/index.php: Updates
+ to both objects (in order to be able to resave type properly) and access (to
+ add useful constants)
+
+2008-03-12 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * object_*
+ changed to entity_* in metadata and annotations
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * object_* changed to entity_*
+
+2008-03-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/test/views/default/css.php,
+ mod/test/views/default/pageshells/pageshell.php: tweak to ben's elgg 0.2
+ theme plugin
+
+2008-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * mod/test/graphics/elgg.powered.png, mod/test/graphics/leaf.jpg,
+ mod/test/graphics/logo.png, mod/test/graphics/orange_small.png,
+ mod/test/graphics/purplecrayon.gif, mod/test/views/default/css.php,
+ mod/test/views/default/menu.php,
+ mod/test/views/default/pageshells/pageshell.php,
+ views/default/navigation/toolbox.php: Adding a friendly old template to the
+ test plugin
+
+2008-03-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * File cache
+ outline
+
+2008-03-11 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/css.php: css tweak
+
+ * index.php, mod/dashboard/views/default/dashboard/welcome.php: index page
+ changes so it now logs you into the dashboard
+
+ * mod/dashboard/index.php, mod/dashboard/start.php,
+ mod/dashboard/views/default/dashboard/welcome.php, views/default/css.php,
+ views/default/navigation/topmenu.php: css, dashboard and topmenu tweaks
+
+2008-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php, mod/test/index.php: Fixes
+ for previous
+
+ * engine/lib/elgglib.php, engine/lib/plugins.php, mod/test/index.php,
+ mod/test/start.php: God bless 'em! Plugins now autoregister their own views.
+
+2008-03-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Removed subtypes until problems with tag system are
+ sorted out.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Added orderby and limits
+
+2008-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Page_draw echoes
+
+2008-03-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/cache.php: Marcus Povey <marcus@dushka.co.uk> * ElggCache
+ superclass
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Value type
+ added
+
+2008-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: user_info() ftw
+
+2008-03-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk> * Added api to list
+ apis
+
+2008-03-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/pageowner.php, engine/lib/users.php: Et voila: page ownership!
+
+ * engine/lib/elgglib.php, views/default/pageshell.php,
+ views/default/pageshells/pageshell.php: The pageshell now correctly passes
+ elements to the header, footer etc.
+
+ * mod/test/index.php: Minor test plugin fix
+
+ * engine/lib/elgglib.php, views/default/navigation/toolbox.php: Menu items
+ fix
+
+ * mod/test/start.php: Initial test plugin menu items
+
+ * views/default/navigation/toolbox.php: Toolbox navigation edit
+
+ * engine/lib/elgglib.php: Registers and menu items
+
+2008-03-11 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php, engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk>
+ * Site id specified
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Removed log
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/metastrings.php, engine/schema/mysql.sql: Marcus Povey
+ <marcus@dushka.co.uk> * Added metadata/metastrings tag stuff. Lorks.
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Fixed db
+ problems
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Removed
+ count based on this conversation: [10:05:38] … basically, if you add an
+ item, you need to create a tag entry in the metastrings table (as discussed
+ yesterday) [10:05:56] … if you then delete the item, that leaves a tag
+ [10:06:07] … if you want to delete the tag when nothing references it
+ [10:06:11] … it needs a counter [10:06:29] … which means for every add
+ and delete query you need to check for and sometimes update this counter
+ [10:06:36] … making three queries for every one [10:06:47] … but if you
+ don't do that the meta strings table grows over time [10:06:54] … making it
+ space inefficient [10:07:03] … so, which do you do? [10:10:31] … ?
+ [10:10:43] … i'd be tempted to not delete [10:10:58] … because the
+ multiple queries will be a pain for everyone all the time [10:11:05] … and
+ storage costs are cheap [10:11:32] Ben Werdmuller: I would be very tempted to
+ do the same [10:11:35] … so let's do that :) [10:11:36] Marcus Povey: maybe
+ we could write an admin script to clean up or something [10:11:45] Ben
+ Werdmuller: exactly, we could clean up on a cron if people really want
+ [10:11:59] … but for now, let's just go with the growing tag cloud
+
+2008-03-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/logout.php, engine/lib/languages.php,
+ languages/en.php, views/default/login.php,
+ views/default/navigation/topmenu.php, views/default/page_elements/footer.php,
+ views/default/welcome.php: More language integration
+
+ * actions/login.php, actions/logout.php, engine/lib/languages.php,
+ languages/en.php: Languages! There's a little more to do, but ...
+
+2008-03-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Added count
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Changed
+ metadata database to use metastrings as described (all values in metadata are
+ now storing data only once)
+
+ * endpoints/rest.php, engine/lib/api.php: Marcus Povey <marcus@dushka.co.uk>
+ * First draft api
+
+2008-03-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Updated ref to get_objects
+
+ * engine/lib/sites.php: Fixing access permissions error on site update
+
+ * engine/lib/objects.php: Updated objects with metadata and annotations
+
+2008-03-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php, engine/lib/api.php, engine/lib/users.php,
+ engine/schema/mysql.sql, index.php: Marcus Povey <marcus@dushka.co.uk> *
+ Tokens and execute code added to api
+
+2008-03-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/navigation/toolbox.php,
+ views/default/navigation/topmenu.php, views/default/page_elements/header.php:
+ top level navigation added
+
+ * views/default/text/about.php, views/default/text/privacy_view.php,
+ views/default/text/tos_view.php: changes to the text pages
+
+ * engine/lib/elgglib.php, views/default/basic_elements/login.php,
+ views/default/basic_elements/welcome.php, views/default/css.php,
+ views/default/input/checkboxes.php, views/default/input/file.php,
+ views/default/input/gender.php, views/default/input/longtext.php,
+ views/default/input/password.php, views/default/input/pulldown.php,
+ views/default/input/radio.php, views/default/input/tags.php,
+ views/default/input/text.php, views/default/input/url.php,
+ views/default/navigation/toolbox.php, views/default/navigation/topmenu.php,
+ views/default/output/date.php, views/default/output/file.php,
+ views/default/output/gender.php, views/default/output/longtext.php,
+ views/default/output/pulldown.php, views/default/output/tagcloud.php,
+ views/default/output/tags.php, views/default/output/text.php,
+ views/default/output/timestamp.php, views/default/output/url.php,
+ views/default/page_elements/footer.php,
+ views/default/page_elements/header.php,
+ views/default/pageshells/pageshell.php,
+ views/default/pageshells/pageshell_loggedout.php,
+ views/default/pageshells/pageshell_sidebar.php, views/default/text/about.php,
+ views/default/text/privacy_view.php, views/default/text/tos_view.php: some
+ new views
+
+2008-03-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, engine/lib/users.php: Adding metadata and annotations
+ for users.
+
+2008-03-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Erp
+
+2008-03-10 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * views/default/welcome.php: logout bug fix
+
+2008-03-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php:
+
+ * engine/lib/annotations.php, engine/lib/sites.php: Marcus Povey
+ <marcus@dushka.co.uk> * Simple maths functions added
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Site objects
+
+2008-03-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, actions/logout.php, engine/lib/actions.php,
+ engine/lib/elgglib.php, engine/lib/users.php,
+ views/default/messages/list.php, views/default/messages/messages/list.php,
+ views/default/pageshell.php: Messages and actions: fixed!
+
+2008-03-10 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Remove site
+ metadata
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Get user sites
+
+2008-03-10 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * actions/login.php, views/default/login.php: Fixing the login form
+
+2008-03-09 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * index.php: Marcus Povey <marcus@dushka.co.uk> * Commented out my testing
+
+ * engine/lib/annotations.php:
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Fixed copy
+ constructor
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Will now
+ return objects via metadata
+
+ * engine/schema/mysql.sql:
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Corrected
+ database fault
+
+2008-03-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/settings.example.php: add url field to settings
+
+ * views/default/css.php: css tweak
+
+ * actions/login.php, actions/logout.php, engine/lib/users.php, index.php,
+ views/default/css.php, views/default/login.php, views/default/pageshell.php,
+ views/default/welcome.php: crude login and logout functionality
+
+2008-03-08 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ get_objects_from_metadatas (untested)
+
+2008-03-08 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php, mod/test/index.php: Configuration fix
+
+2008-03-08 dave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/vendors/jquery/jquery.js: jquery added to core
+
+2008-03-07 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Add name and
+ value to get_metadatas
+
+2008-03-07 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/users.php: Log in and logout
+
+ * mod/test/start.php, mod/test/views/default/testplugin/pageshell.php: Test
+ plugin
+
+ * engine/lib/elgglib.php: Event API fix
+
+ * engine/lib/plugins.php, engine/start.php: Some extra plugins stuff
+
+ * engine/lib/users.php: Grabbing the ElggUser and sticking it in the session
+ as appropriate
+
+ * engine/lib/friends.php, engine/lib/users.php, engine/schema/mysql.sql,
+ index.php: Users and friends
+
+ * engine/lib/sites.php: Fix for ElggSites
+
+2008-03-07 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * endpoints/rest.php, engine/lib/api.php, engine/schema/mysql.sql: Marcus
+ Povey <marcus@dushka.co.uk> * Initial work on API
+
+2008-03-06 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/sites.php: Marcus Povey
+ <marcus@dushka.co.uk> * Added delete annotations, fixed error on annotation
+ search (missing params)
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Delete site
+ implemented
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Count added
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Casting done
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Updated
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Added
+ count to annotations
+
+ * engine/lib/objects.php: Marcus Povey <marcus@dushka.co.uk> * Casting takes
+ advantage of constructor
+
+ * engine/lib/annotations.php, engine/lib/metadata.php, engine/lib/sites.php,
+ index.php: Marcus Povey <marcus@dushka.co.uk> * Initial annotations and
+ metadata get/sets functional, combined with site test
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Can
+ retrieve annotations
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Metadata
+ creates and updates
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Meta now
+ updates if item already exists (if the user has permission)
+
+2008-03-06 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Objects are now cast to ElggObjects on get
+
+2008-03-06 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Marcus Povey
+ <marcus@dushka.co.uk> * Cleared up typo
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * User ID
+ detected if not provided
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Very
+ crude type detection for annotation tags, defaults to 'tag'
+
+ * engine/lib/sites.php: Marcus Povey <marcus@dushka.co.uk> * Implemented
+ update site
+
+ * engine/lib/annotations.php: Marcus Povey <marcus@dushka.co.uk> * Ability
+ to change owner
+
+ * engine/lib/metadata.php: Marcus Povey <marcus@dushka.co.uk> * Ability to
+ change owner
+
+ * engine/lib/annotations.php, engine/lib/metadata.php,
+ engine/lib/objects.php: Marcus Povey <marcus@dushka.co.uk> * Fixed get/sets
+
+ * engine/lib/objects.php: Fixed ElggObject attributes.
+
+ * engine/schema/mysql.sql:
+
+ * engine/schema/mysql.sql: Marcus Povey <marcus@dushka.co.uk> * Removed
+ write access id on sites since it seemed superfluous
+
+2008-03-05 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/annotations.php, engine/lib/metadata.php, engine/lib/sites.php,
+ index.php: End of day
+
+ * engine/lib/database.php: Marcus Povey <marcus@dushka.co.uk> * Sanitise
+ trims as well
+
+ * engine/lib/exceptions.php: Marcus Povey <marcus@dushka.co.uk> * A couple
+ more exceptions
+
+ * engine/lib/elgglib.php: Marcus Povey <marcus@dushka.co.uk> * Exceptions
+ that are handled by the default elgg error handler are now echoed to the
+ error log.
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Minor tweaks
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Switching to desktop
+
+ * engine/lib/annotations.php, engine/lib/metadata.php: Types forced on
+ $object->value
+
+ * engine/lib/metadata.php: Added metadata object and methods
+
+ * engine/schema/mysql.sql: Added owner id to metadata
+
+ * engine/lib/annotations.php, engine/lib/sites.php: Changed
+ mysql_real_escape_string to sanitise_string
+
+ * engine/lib/annotations.php: Get annotations
+
+2008-03-04 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/metadata.php: Commit so i can switch to the laptop...
+
+ * engine/lib/annotations.php: initial annotations library added (untested)
+
+ * engine/schema/mysql.sql: Added metadata and annotations, removed
+ superfluous tables.
+
+ * engine/lib/sites.php:
+
+ * engine/lib/sites.php: Get site prototype
+
+ * engine/lib/sites.php: Save
+
+ * engine/lib/sites.php: Added a basic ElggSite outline
+
+2008-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Further additions to the ElggObject, according to
+ spec
+
+2008-03-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/schema/mysql.sql: new site db
+
+ * engine/lib/database.php: Fixed get_tables so install works correctly
+
+ * engine/lib/configuration.php: Fixed wwwroot
+
+2008-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Extending stdClass is silly
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php: Removed some notices
+
+ * engine/lib/database.php: Fixed install issue
+
+2008-03-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: removed echo
+
+2008-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/configuration.php, engine/lib/database.php,
+ engine/schema/mysql.sql, engine/settings.example.php, engine/start.php:
+ Installation issues: fixed
+
+2008-03-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed short circuit comparison
+
+2008-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Some further fixes
+
+ * engine/lib/elgglib.php: Views directory fix
+
+2008-03-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Fixed file exist error
+
+ * engine/lib/elgglib.php: Removed test to see if .htaccess exists, this test
+ doesn't work on my machine. Reason unknown.
+
+ * engine/lib/database.php: Candidate for deletion
+
+2008-03-03 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Added callbacks to get_data
+
+ * engine/lib/objects.php, index.php: Some misc changes
+
+2008-03-03 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Database errors now distinct from "no data",
+ errors are hard fails
+
+2008-02-17 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/objects.php: Further metadata and ElggObject updates.
+
+ * engine/lib/objects.php: Added most of an ElggObject class
+
+ * engine/lib/objects.php: Full object and object metadata CRUD functionality
+
+2008-02-15 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/access.php, engine/lib/database.php, engine/lib/objects.php,
+ engine/lib/sites.php, engine/lib/users.php, engine/schema/mysql.sql,
+ index.php: All kinds of object and database stuff
+
+ * engine/schema/mysql.sql, engine/start.php, install.php: Added the concept
+ of a site_id to msot of the database tables. Also some extra installation
+ stuff.
+
+ * views/default/css.php: Added a CSS file
+
+ * engine/lib/actions.php, engine/lib/database.php, engine/lib/elgglib.php,
+ engine/lib/plugins.php, engine/schema/mysql.sql, engine/settings.example.php:
+ Adding more plugin-related fun
+
+ * engine/lib/configuration.php, views/default/pageshell.php: Various
+ configuration things
+
+ * engine/lib/configuration.php, engine/lib/elgglib.php,
+ engine/lib/plugins.php, engine/start.php: Simple plugin mechanism
+
+ * engine/lib/elgglib.php: Correction to previous
+
+ * engine/lib/elgglib.php: Plugins can now extend views.
+
+ * css/css.php: Importing the dynamic CSS file
+
+2008-02-14 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/install.php, install.php, views/default/pageshell.php: Some
+ further installation tweaks
+
+ * engine/lib/database.php, engine/lib/elgglib.php, install.php: A simple
+ beginning to an install script
+
+ * action.php, htaccess_dist, index.php, views/default/pageshell.php: Changes
+ to site structure
+
+ * engine/lib/actions.php, engine/lib/elgglib.php, engine/schema/mysql.sql,
+ engine/settings.example.php, index.php,
+ views/default/messages/sanitisation/htaccess.php: Actions, .htaccess, and the
+ database schema
+
+2008-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/database.php: Added more context to the database function notes
+
+ * engine/lib/database.php, engine/start.php: Added some fancy database
+ connection gubbins. If you give it loads of read or write dbs to pick from,
+ Elgg will choose one at random for each category!
+
+ * engine/lib/elgglib.php, engine/start.php, views/default/pageshell.php:
+ Messages and exceptions, working merrily together. Aww.
+
+ * views/default/messages/messages/list.php,
+ views/default/messages/messages/message.php: Standard messages are now
+ displayed.
+
+ * engine/lib/elgglib.php, engine/start.php,
+ views/default/messages/errors/exception.php,
+ views/default/messages/exceptions/exception.php,
+ views/default/messages/list.php, views/default/pageshell.php: Further message
+ handling in the template
+
+ * engine/lib/elgglib.php, engine/lib/input.php, engine/start.php,
+ views/default/messages/errors/exception.php: Exception handling
+
+2008-02-13 icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php: Moving on to explodenew
+
+ * engine/lib/exceptions.php: Updates
+
+ * engine/lib/input.php: Added input method
+
+ * engine/start.php: Start now reporting errors using exceptions...
+
+ * engine/lib/exceptions.php: Added installation exception
+
+ * engine/start.php: Loads now
+
+ * engine/lib/elgglib.php: Ooops...
+
+ * engine/start.php: Loading exceptions
+
+ * engine/lib/elgglib.php: Added error handler stuff.
+
+ * engine/lib/exceptions.php: Added exceptions
+
+ * engine/start.php: Added CVS exclude to start.php
+
+2008-02-13 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/start.php, views/default/messages/sanitisation/settings.php: A
+ slightly better no-settings error. It's probably a good idea to eventually
+ allow people to edit settings.php directly if they have the access defined.
+
+ * engine/start.php: Let's be a little more friendly.
+
+ * engine/start.php, views/default/messages/errors/error.php,
+ views/default/messages/errors/list.php, views/default/pageshell.php: Some
+ error reporting and initial (very, very basic) templating
+
+ * engine/lib/elgglib.php: A little reoirganisation in elgglib
+
+2008-02-12 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/lib/elgglib.php: Adding priority and a little more description to
+ the events API.
+
+ * engine/lib/elgglib.php, engine/start.php: Adding the events API
+
+ * engine/lib/elgglib.php, engine/start.php: Sanitisation
+
+ * engine/lib/elgglib.php, engine/start.php,
+ views/default/messages/sanitisation/settings.php: Introducing views and some
+ sanitisation
+
+ * engine/lib/elgglib.php, engine/start.php, index.php: The engine starter
+ now functions appropriately
+
+2008-02-11 ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>
+
+ * engine/settings.example.php, engine/start.functions.php, engine/start.php:
+ Some more bootstrapping.
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..a1b3e1cbf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+Lorea
+=====
+
+(Re-)Taking the Networks!
+
+The [lorea](https://lorea.org) code aims at providing individuals and teams with privacy-aware, security-conscious, and user-controlled-data collaborative tools over the Web, and around it.
+
+The main application is based on [Elgg](http://elgg.org), a PHP-based social networking platform. Lorea extends it with plugins to provide better privacy features, including strong encryption, *OStatus-based federation* with other Lorea/Elgg installations and OStatus-compliant projects, etc.
+
+It also integrates other popular technologies such as [DokuWiki](http://www.dokuwiki.org), [Etherpad](http://etherpad.org), [XMPP](http://xmpp.org), etc., and provides *GPG-encrypted mailing-lists* to groups.
+
+### Installation
+
+Our code is divided in two git repositories: elgg and lorea-plugins. You can get it using the following commands.
+
+<pre>
+$ git clone git://gitorious.org/lorea/elgg.git
+$ cd elgg
+$ git remote add lorea-plugins git://gitorious.org/lorea/lorea-plugins.git
+$ git pull lorea-plugins master
+</pre>
+
+You can update the code to the latest release using:
+
+<pre>
+$ git pull origin master
+$ git pull lorea-plugins master
+</pre>
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 5d9261ee4..000000000
--- a/README.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Elgg
-Copyright (c) 2008-2012 See COPYRIGHT.txt
-
-See CONTRIBUTORS.txt for development credits.
-
-Elgg is managed by the Elgg Foundation, a nonprofit organization that was
-founded to govern, protect, and promote the Elgg open source social network
-engine. The Foundation aims to provide a stable, commercially and
-individually independent organization that operates in the best interest of Elgg
-as an open source project.
-
-The project site can be found at http://elgg.org/
-
-The Elgg project was started in 2004 by:
-Ben Werdmuller <ben@benwerd.com, http://benwerd.com> and
-Dave Tosh <davidgtosh@gmail.com>
-
-Elgg is released under the GNU General Public License (GPL) Version 2 and the
-Massachusetts Institute of Technology (MIT) License. See LICENSE.txt
-in the root of the package you downloaded.
-
-For installation instructions, see INSTALL.txt.
-
-For upgrade instructions, see UPGRADE.txt. \ No newline at end of file
diff --git a/_graphics/walled_garden/one_column_bottom.png b/_graphics/walled_garden/one_column_bottom.png
index 1dfd7f8ad..bd2296896 100644
--- a/_graphics/walled_garden/one_column_bottom.png
+++ b/_graphics/walled_garden/one_column_bottom.png
Binary files differ
diff --git a/_graphics/walled_garden/one_column_top.png b/_graphics/walled_garden/one_column_top.png
index 429a88b75..dc8de438a 100644
--- a/_graphics/walled_garden/one_column_top.png
+++ b/_graphics/walled_garden/one_column_top.png
Binary files differ
diff --git a/_graphics/walled_garden/two_column_bottom.png b/_graphics/walled_garden/two_column_bottom.png
index 8aeceeeee..21e076991 100644
--- a/_graphics/walled_garden/two_column_bottom.png
+++ b/_graphics/walled_garden/two_column_bottom.png
Binary files differ
diff --git a/_graphics/walled_garden/two_column_top.png b/_graphics/walled_garden/two_column_top.png
index c28b3f630..cd71a4262 100644
--- a/_graphics/walled_garden/two_column_top.png
+++ b/_graphics/walled_garden/two_column_top.png
Binary files differ
diff --git a/actions/admin/site/regenerate_secret.php b/actions/admin/site/regenerate_secret.php
new file mode 100644
index 000000000..3112fb5f3
--- /dev/null
+++ b/actions/admin/site/regenerate_secret.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Generate a new site secret
+ */
+
+init_site_secret();
+elgg_reset_system_cache();
+
+system_message(elgg_echo('admin:site:secret_regenerated'));
+
+forward(REFERER);
diff --git a/actions/admin/site/unlock_upgrade.php b/actions/admin/site/unlock_upgrade.php
new file mode 100644
index 000000000..b625b1d26
--- /dev/null
+++ b/actions/admin/site/unlock_upgrade.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Unlocks the upgrade script
+ */
+
+if (_elgg_upgrade_is_locked()) {
+ _elgg_upgrade_unlock();
+}
+system_message(elgg_echo('upgrade:unlock:success'));
+forward(REFERER);
diff --git a/actions/admin/site/update_advanced.php b/actions/admin/site/update_advanced.php
index 897a2f983..4888b0a8d 100644
--- a/actions/admin/site/update_advanced.php
+++ b/actions/admin/site/update_advanced.php
@@ -14,10 +14,10 @@ if ($site = elgg_get_site_entity()) {
throw new InstallationException(elgg_echo('InvalidParameterException:NonElggSite'));
}
- $site->url = get_input('wwwroot');
+ $site->url = rtrim(get_input('wwwroot', '', false), '/') . '/';
- datalist_set('path', sanitise_filepath(get_input('path')));
- $dataroot = sanitise_filepath(get_input('dataroot'));
+ datalist_set('path', sanitise_filepath(get_input('path', '', false)));
+ $dataroot = sanitise_filepath(get_input('dataroot', '', false));
// check for relative paths
if (stripos(PHP_OS, 'win') === 0) {
@@ -53,8 +53,6 @@ if ($site = elgg_get_site_entity()) {
$user_default_access = (get_input('allow_user_default_access')) ? 1 : 0;
set_config('allow_user_default_access', $user_default_access, $site->getGUID());
- set_config('view', get_input('view'), $site->getGUID());
-
$debug = get_input('debug');
if ($debug) {
set_config('debug', $debug, $site->getGUID());
diff --git a/actions/admin/site/update_basic.php b/actions/admin/site/update_basic.php
index 97d258b65..9765182cc 100644
--- a/actions/admin/site/update_basic.php
+++ b/actions/admin/site/update_basic.php
@@ -16,7 +16,7 @@ if ($site = elgg_get_site_entity()) {
}
$site->description = get_input('sitedescription');
- $site->name = get_input('sitename');
+ $site->name = strip_tags(get_input('sitename'));
$site->email = get_input('siteemail');
$site->save();
diff --git a/actions/avatar/remove.php b/actions/avatar/remove.php
index cd38e456a..9cb40a760 100644
--- a/actions/avatar/remove.php
+++ b/actions/avatar/remove.php
@@ -3,32 +3,34 @@
* Avatar remove action
*/
-$guid = get_input('guid');
-$user = get_entity($guid);
-if ($user) {
- // Delete all icons from diskspace
- $icon_sizes = elgg_get_config('icon_sizes');
- foreach ($icon_sizes as $name => $size_info) {
- $file = new ElggFile();
- $file->owner_guid = $guid;
- $file->setFilename("profile/{$guid}{$name}.jpg");
- $filepath = $file->getFilenameOnFilestore();
- if (!$file->delete()) {
- elgg_log("Avatar file remove failed. Remove $filepath manually, please.", 'WARNING');
- }
- }
-
- // Remove crop coords
- unset($user->x1);
- unset($user->x2);
- unset($user->y1);
- unset($user->y2);
-
- // Remove icon
- unset($user->icontime);
- system_message(elgg_echo('avatar:remove:success'));
-} else {
+$user_guid = get_input('guid');
+$user = get_user($user_guid);
+
+if (!$user || !$user->canEdit()) {
register_error(elgg_echo('avatar:remove:fail'));
+ forward(REFERER);
}
+// Delete all icons from diskspace
+$icon_sizes = elgg_get_config('icon_sizes');
+foreach ($icon_sizes as $name => $size_info) {
+ $file = new ElggFile();
+ $file->owner_guid = $user_guid;
+ $file->setFilename("profile/{$user_guid}{$name}.jpg");
+ $filepath = $file->getFilenameOnFilestore();
+ if (!$file->delete()) {
+ elgg_log("Avatar file remove failed. Remove $filepath manually, please.", 'WARNING');
+ }
+}
+
+// Remove crop coords
+unset($user->x1);
+unset($user->x2);
+unset($user->y1);
+unset($user->y2);
+
+// Remove icon
+unset($user->icontime);
+
+system_message(elgg_echo('avatar:remove:success'));
forward(REFERER);
diff --git a/actions/comments/delete.php b/actions/comments/delete.php
index f2c058ff4..c6b481da4 100644
--- a/actions/comments/delete.php
+++ b/actions/comments/delete.php
@@ -5,11 +5,6 @@
* @package Elgg
*/
-// Ensure we're logged in
-if (!elgg_is_logged_in()) {
- forward();
-}
-
// Make sure we can get the comment in question
$annotation_id = (int) get_input('annotation_id');
$comment = elgg_get_annotation_from_id($annotation_id);
diff --git a/actions/friends/collections/add.php b/actions/friends/collections/add.php
index 9dc17b37e..e63a149f7 100644
--- a/actions/friends/collections/add.php
+++ b/actions/friends/collections/add.php
@@ -6,7 +6,7 @@
* @subpackage Friends.Collections
*/
-$collection_name = get_input('collection_name');
+$collection_name = htmlspecialchars(get_input('collection_name', '', false), ENT_QUOTES, 'UTF-8');
$friends = get_input('friends_collection');
if (!$collection_name) {
diff --git a/actions/login.php b/actions/login.php
index ea7fb3508..bd7f91299 100644
--- a/actions/login.php
+++ b/actions/login.php
@@ -7,9 +7,8 @@
*/
// set forward url
-if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
+if (!empty($_SESSION['last_forward_from'])) {
$forward_url = $_SESSION['last_forward_from'];
- unset($_SESSION['last_forward_from']);
} elseif (get_input('returntoreferer')) {
$forward_url = REFERER;
} else {
@@ -19,7 +18,7 @@ if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
$username = get_input('username');
$password = get_input('password', null, false);
-$persistent = get_input("persistent", false);
+$persistent = (bool) get_input("persistent");
$result = false;
if (empty($username) || empty($password)) {
@@ -62,5 +61,9 @@ if ($user->language) {
$message = elgg_echo('loginok');
}
+if (isset($_SESSION['last_forward_from'])) {
+ unset($_SESSION['last_forward_from']);
+}
+
system_message($message);
forward($forward_url);
diff --git a/actions/plugins/settings/save.php b/actions/plugins/settings/save.php
index e94127f7c..581a2f9ec 100644
--- a/actions/plugins/settings/save.php
+++ b/actions/plugins/settings/save.php
@@ -3,7 +3,7 @@
* Saves global plugin settings.
*
* This action can be overriden for a specific plugin by creating the
- * settings/<plugin_id>/save action in that plugin.
+ * <plugin_id>/settings/save action in that plugin.
*
* @uses array $_REQUEST['params'] A set of key/value pairs to save to the ElggPlugin entity
* @uses int $_REQUEST['plugin_id'] The ID of the plugin
diff --git a/actions/plugins/usersettings/save.php b/actions/plugins/usersettings/save.php
index 71ad2ad7b..f6b8ab0b6 100644
--- a/actions/plugins/usersettings/save.php
+++ b/actions/plugins/usersettings/save.php
@@ -3,7 +3,7 @@
* Saves user-specific plugin settings.
*
* This action can be overriden for a specific plugin by creating the
- * settings/<plugin_id>/save action in that plugin.
+ * <plugin_id>/usersettings/save action in that plugin.
*
* @uses array $_REQUEST['params'] A set of key/value pairs to save to the ElggPlugin entity
* @uses int $_REQUEST['plugin_id'] The id of the plugin
diff --git a/actions/profile/edit.php b/actions/profile/edit.php
index 8ca60f246..e1f066e82 100644
--- a/actions/profile/edit.php
+++ b/actions/profile/edit.php
@@ -4,6 +4,8 @@
*
*/
+elgg_make_sticky_form('profile:edit');
+
$guid = get_input('guid');
$owner = get_entity($guid);
@@ -25,7 +27,7 @@ if (!is_array($accesslevel)) {
* wrapper for recursive array walk decoding
*/
function profile_array_decoder(&$v) {
- $v = html_entity_decode($v, ENT_COMPAT, 'UTF-8');
+ $v = _elgg_html_decode($v);
}
$profile_fields = elgg_get_config('profile_fields');
@@ -37,7 +39,7 @@ foreach ($profile_fields as $shortname => $valuetype) {
if (is_array($value)) {
array_walk_recursive($value, 'profile_array_decoder');
} else {
- $value = html_entity_decode($value, ENT_COMPAT, 'UTF-8');
+ $value = _elgg_html_decode($value);
}
// limit to reasonable sizes
@@ -48,10 +50,14 @@ foreach ($profile_fields as $shortname => $valuetype) {
forward(REFERER);
}
+ if ($value && $valuetype == 'url' && !preg_match('~^https?\://~i', $value)) {
+ $value = "http://$value";
+ }
+
if ($valuetype == 'tags') {
$value = string_to_tag_array($value);
}
-
+
$input[$shortname] = $value;
}
@@ -71,24 +77,30 @@ if (sizeof($input) > 0) {
foreach ($input as $shortname => $value) {
$options = array(
'guid' => $owner->guid,
- 'metadata_name' => $shortname
+ 'metadata_name' => $shortname,
+ 'limit' => false
);
elgg_delete_metadata($options);
- if (isset($accesslevel[$shortname])) {
- $access_id = (int) $accesslevel[$shortname];
- } else {
- // this should never be executed since the access level should always be set
- $access_id = ACCESS_DEFAULT;
- }
- if (is_array($value)) {
- $i = 0;
- foreach ($value as $interval) {
- $i++;
- $multiple = ($i > 1) ? TRUE : FALSE;
- create_metadata($owner->guid, $shortname, $interval, 'text', $owner->guid, $access_id, $multiple);
+
+ if (!is_null($value) && ($value !== '')) {
+ // only create metadata for non empty values (0 is allowed) to prevent metadata records with empty string values #4858
+
+ if (isset($accesslevel[$shortname])) {
+ $access_id = (int) $accesslevel[$shortname];
+ } else {
+ // this should never be executed since the access level should always be set
+ $access_id = ACCESS_DEFAULT;
+ }
+ if (is_array($value)) {
+ $i = 0;
+ foreach ($value as $interval) {
+ $i++;
+ $multiple = ($i > 1) ? TRUE : FALSE;
+ create_metadata($owner->guid, $shortname, $interval, 'text', $owner->guid, $access_id, $multiple);
+ }
+ } else {
+ create_metadata($owner->getGUID(), $shortname, $value, 'text', $owner->getGUID(), $access_id);
}
- } else {
- create_metadata($owner->getGUID(), $shortname, $value, 'text', $owner->getGUID(), $access_id);
}
}
@@ -97,6 +109,7 @@ if (sizeof($input) > 0) {
// Notify of profile update
elgg_trigger_event('profileupdate', $owner->type, $owner);
+ elgg_clear_sticky_form('profile:edit');
system_message(elgg_echo("profile:saved"));
}
diff --git a/actions/register.php b/actions/register.php
index f23d5b381..73926232c 100644
--- a/actions/register.php
+++ b/actions/register.php
@@ -30,8 +30,6 @@ if (elgg_get_config('allow_registration')) {
$guid = register_user($username, $password, $name, $email, false, $friend_guid, $invitecode);
if ($guid) {
- elgg_clear_sticky_form('register');
-
$new_user = get_entity($guid);
// allow plugins to respond to self registration
@@ -47,13 +45,16 @@ if (elgg_get_config('allow_registration')) {
// @todo should registration be allowed no matter what the plugins return?
if (!elgg_trigger_plugin_hook('register', 'user', $params, TRUE)) {
+ $ia = elgg_set_ignore_access(true);
$new_user->delete();
+ elgg_set_ignore_access($ia);
// @todo this is a generic messages. We could have plugins
// throw a RegistrationException, but that is very odd
// for the plugin hooks system.
throw new RegistrationException(elgg_echo('registerbad'));
}
+ elgg_clear_sticky_form('register');
system_message(elgg_echo("registerok", array(elgg_get_site_entity()->name)));
// if exception thrown, this probably means there is a validation
@@ -76,4 +77,4 @@ if (elgg_get_config('allow_registration')) {
register_error(elgg_echo('registerdisabled'));
}
-forward(REFERER); \ No newline at end of file
+forward(REFERER);
diff --git a/actions/river/delete.php b/actions/river/delete.php
new file mode 100644
index 000000000..0d8297932
--- /dev/null
+++ b/actions/river/delete.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * River item delete action
+ *
+ * @package Elgg
+ * @subpackage Core
+ */
+
+$id = get_input('id', false);
+
+if ($id !== false && elgg_is_admin_logged_in()) {
+ if (elgg_delete_river(array('id' => $id))) {
+ system_message(elgg_echo('river:delete:success'));
+ } else {
+ register_error(elgg_echo('river:delete:fail'));
+ }
+} else {
+ register_error(elgg_echo('river:delete:fail'));
+}
+
+forward(REFERER);
diff --git a/actions/widgets/add.php b/actions/widgets/add.php
index f65d11134..d7b2f291c 100644
--- a/actions/widgets/add.php
+++ b/actions/widgets/add.php
@@ -9,6 +9,7 @@
$owner_guid = get_input('owner_guid');
$handler = get_input('handler');
$context = get_input('context');
+$show_access = (bool)get_input('show_access', true);
$column = get_input('column', 1);
$default_widgets = get_input('default_widgets', 0);
@@ -29,7 +30,7 @@ if (!empty($owner_guid)) {
$widget->move($column, 0);
// send widget html for insertion
- echo elgg_view_entity($widget);
+ echo elgg_view_entity($widget, array('show_access' => $show_access));
//system_message(elgg_echo('widgets:add:success'));
forward(REFERER);
diff --git a/documentation/info/manifest.xml b/documentation/info/manifest.xml
index baa6cc3fa..4fd4be8ce 100644
--- a/documentation/info/manifest.xml
+++ b/documentation/info/manifest.xml
@@ -6,6 +6,9 @@
<blurb>A concise description.</blurb>
<description>This is a longer, more interesting description of my plugin, its features, and other important information.</description>
<website>http://www.elgg.org/</website>
+ <repository>https://github.com/Elgg/Elgg</repository>
+ <bugtracker>https://github.com/Elgg/Elgg/issues</bugtracker>
+ <donations>http://elgg.org/supporter.php</donations>
<copyright>(C) Elgg 2011</copyright>
<license>GNU General Public License version 2</license>
diff --git a/engine/classes/ElggAccess.php b/engine/classes/ElggAccess.php
index 6f8d9bb4b..0aed477fc 100644
--- a/engine/classes/ElggAccess.php
+++ b/engine/classes/ElggAccess.php
@@ -16,6 +16,7 @@ class ElggAccess {
*/
private $ignore_access;
+ // @codingStandardsIgnoreStart
/**
* Get current ignore access setting.
*
@@ -26,6 +27,7 @@ class ElggAccess {
elgg_deprecated_notice('ElggAccess::get_ignore_access() is deprecated by ElggAccess::getIgnoreAccess()', 1.8);
return $this->getIgnoreAccess();
}
+ // @codingStandardsIgnoreEnd
/**
* Get current ignore access setting.
@@ -36,6 +38,7 @@ class ElggAccess {
return $this->ignore_access;
}
+ // @codingStandardsIgnoreStart
/**
* Set ignore access.
*
@@ -49,6 +52,7 @@ class ElggAccess {
elgg_deprecated_notice('ElggAccess::set_ignore_access() is deprecated by ElggAccess::setIgnoreAccess()', 1.8);
return $this->setIgnoreAccess($ignore);
}
+ // @codingStandardsIgnoreEnd
/**
* Set ignore access.
diff --git a/engine/classes/ElggAnnotation.php b/engine/classes/ElggAnnotation.php
index 511b5151f..175e7049d 100644
--- a/engine/classes/ElggAnnotation.php
+++ b/engine/classes/ElggAnnotation.php
@@ -11,6 +11,9 @@
* @package Elgg.Core
* @subpackage DataModel.Annotations
* @link http://docs.elgg.org/DataModel/Annotations
+ *
+ * @property string $value_type
+ * @property string $enabled
*/
class ElggAnnotation extends ElggExtender {
@@ -56,6 +59,8 @@ class ElggAnnotation extends ElggExtender {
* Save this instance
*
* @return int an object id
+ *
+ * @throws IOException
*/
function save() {
if ($this->id > 0) {
diff --git a/engine/classes/ElggAttributeLoader.php b/engine/classes/ElggAttributeLoader.php
new file mode 100644
index 000000000..ffc80b02d
--- /dev/null
+++ b/engine/classes/ElggAttributeLoader.php
@@ -0,0 +1,248 @@
+<?php
+
+/**
+ * Loads ElggEntity attributes from DB or validates those passed in via constructor
+ *
+ * @access private
+ *
+ * @package Elgg.Core
+ * @subpackage DataModel
+ */
+class ElggAttributeLoader {
+
+ /**
+ * @var array names of attributes in all entities
+ */
+ protected static $primary_attr_names = array(
+ 'guid',
+ 'type',
+ 'subtype',
+ 'owner_guid',
+ 'container_guid',
+ 'site_guid',
+ 'access_id',
+ 'time_created',
+ 'time_updated',
+ 'last_action',
+ 'enabled',
+ );
+
+ /**
+ * @var array names of secondary attributes required for the entity
+ */
+ protected $secondary_attr_names = array();
+
+ /**
+ * @var string entity type (not class) required for fetched primaries
+ */
+ protected $required_type;
+
+ /**
+ * @var array
+ */
+ protected $initialized_attributes;
+
+ /**
+ * @var string class of object being loaded
+ */
+ protected $class;
+
+ /**
+ * @var bool should access control be considered when fetching entity?
+ */
+ public $requires_access_control = true;
+
+ /**
+ * @var callable function used to load attributes from {prefix}entities table
+ */
+ public $primary_loader = 'get_entity_as_row';
+
+ /**
+ * @var callable function used to load attributes from secondary table
+ */
+ public $secondary_loader = '';
+
+ /**
+ * @var callable function used to load all necessary attributes
+ */
+ public $full_loader = '';
+
+ /**
+ * Constructor
+ *
+ * @param string $class class of object being loaded
+ * @param string $required_type entity type this is being used to populate
+ * @param array $initialized_attrs attributes after initializeAttributes() has been run
+ * @throws InvalidArgumentException
+ */
+ public function __construct($class, $required_type, array $initialized_attrs) {
+ if (!is_string($class)) {
+ throw new InvalidArgumentException('$class must be a class name.');
+ }
+ $this->class = $class;
+
+ if (!is_string($required_type)) {
+ throw new InvalidArgumentException('$requiredType must be a system entity type.');
+ }
+ $this->required_type = $required_type;
+
+ $this->initialized_attributes = $initialized_attrs;
+ unset($initialized_attrs['tables_split'], $initialized_attrs['tables_loaded']);
+ $all_attr_names = array_keys($initialized_attrs);
+ $this->secondary_attr_names = array_diff($all_attr_names, self::$primary_attr_names);
+ }
+
+ /**
+ * Get primary attributes missing that are missing
+ *
+ * @param stdClass $row Database row
+ * @return array
+ */
+ protected function isMissingPrimaries($row) {
+ return array_diff(self::$primary_attr_names, array_keys($row)) !== array();
+ }
+
+ /**
+ * Get secondary attributes that are missing
+ *
+ * @param stdClass $row Database row
+ * @return array
+ */
+ protected function isMissingSecondaries($row) {
+ return array_diff($this->secondary_attr_names, array_keys($row)) !== array();
+ }
+
+ /**
+ * Check that the type is correct
+ *
+ * @param stdClass $row Database row
+ * @return void
+ * @throws InvalidClassException
+ */
+ protected function checkType($row) {
+ if ($row['type'] !== $this->required_type) {
+ $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($row['guid'], $this->class));
+ throw new InvalidClassException($msg);
+ }
+ }
+
+ /**
+ * Get all required attributes for the entity, validating any that are passed in. Returns empty array
+ * if can't be loaded (Check $failure_reason).
+ *
+ * This function splits loading between "primary" attributes (those in {prefix}entities table) and
+ * "secondary" attributes (e.g. those in {prefix}objects_entity), but can load all at once if a
+ * combined loader is available.
+ *
+ * @param mixed $row a row loaded from DB (array or stdClass) or a GUID
+ * @return array will be empty if failed to load all attributes (access control or entity doesn't exist)
+ *
+ * @throws InvalidArgumentException|LogicException|IncompleteEntityException
+ */
+ public function getRequiredAttributes($row) {
+ if (!is_array($row) && !($row instanceof stdClass)) {
+ // assume row is the GUID
+ $row = array('guid' => $row);
+ }
+ $row = (array) $row;
+ if (empty($row['guid'])) {
+ throw new InvalidArgumentException('$row must be or contain a GUID');
+ }
+
+ // these must be present to support isFullyLoaded()
+ foreach (array('tables_split', 'tables_loaded') as $key) {
+ if (isset($this->initialized_attributes[$key])) {
+ $row[$key] = $this->initialized_attributes[$key];
+ }
+ }
+
+ $was_missing_primaries = $this->isMissingPrimaries($row);
+ $was_missing_secondaries = $this->isMissingSecondaries($row);
+
+ // some types have a function to load all attributes at once, it should be faster
+ if (($was_missing_primaries || $was_missing_secondaries) && is_callable($this->full_loader)) {
+ $fetched = (array) call_user_func($this->full_loader, $row['guid']);
+ if (!$fetched) {
+ return array();
+ }
+ $row = array_merge($row, $fetched);
+ $this->checkType($row);
+ } else {
+ if ($was_missing_primaries) {
+ if (!is_callable($this->primary_loader)) {
+ throw new LogicException('Primary attribute loader must be callable');
+ }
+ if ($this->requires_access_control) {
+ $fetched = (array) call_user_func($this->primary_loader, $row['guid']);
+ } else {
+ $ignoring_access = elgg_set_ignore_access();
+ $fetched = (array) call_user_func($this->primary_loader, $row['guid']);
+ elgg_set_ignore_access($ignoring_access);
+ }
+ if (!$fetched) {
+ return array();
+ }
+ $row = array_merge($row, $fetched);
+ }
+
+ // We must test type before trying to load the secondaries so that InvalidClassException
+ // gets thrown. Otherwise the secondary loader will fail and return false.
+ $this->checkType($row);
+
+ if ($was_missing_secondaries) {
+ if (!is_callable($this->secondary_loader)) {
+ throw new LogicException('Secondary attribute loader must be callable');
+ }
+ $fetched = (array) call_user_func($this->secondary_loader, $row['guid']);
+ if (!$fetched) {
+ if ($row['type'] === 'site') {
+ // A special case is needed for sites: When vanilla ElggEntities are created and
+ // saved, these are stored w/ type "site", but with no sites_entity row. These
+ // are probably only created in the unit tests.
+ // @todo Don't save vanilla ElggEntities with type "site"
+
+ $row = $this->filterAddedColumns($row);
+ $row['guid'] = (int) $row['guid'];
+ return $row;
+ }
+ throw new IncompleteEntityException("Secondary loader failed to return row for {$row['guid']}");
+ }
+ $row = array_merge($row, $fetched);
+ }
+ }
+
+ $row = $this->filterAddedColumns($row);
+
+ // Note: If there are still missing attributes, we're running on a 1.7 or earlier schema. We let
+ // this pass so the upgrades can run.
+
+ // guid needs to be an int https://github.com/elgg/elgg/issues/4111
+ $row['guid'] = (int) $row['guid'];
+
+ return $row;
+ }
+
+ /**
+ * Filter out keys returned by the query which should not appear in the entity's attributes
+ *
+ * @param array $row All columns from the query
+ * @return array Columns acceptable for the entity's attributes
+ */
+ protected function filterAddedColumns($row) {
+ // make an array with keys as acceptable attribute names
+ $acceptable_attrs = self::$primary_attr_names;
+ array_splice($acceptable_attrs, count($acceptable_attrs), 0, $this->secondary_attr_names);
+ $acceptable_attrs = array_combine($acceptable_attrs, $acceptable_attrs);
+
+ // @todo remove these when #4584 is in place
+ $acceptable_attrs['tables_split'] = true;
+ $acceptable_attrs['tables_loaded'] = true;
+
+ foreach ($row as $key => $val) {
+ if (!isset($acceptable_attrs[$key])) {
+ unset($row[$key]);
+ }
+ }
+ return $row;
+ }
+}
diff --git a/engine/classes/ElggAutoP.php b/engine/classes/ElggAutoP.php
new file mode 100644
index 000000000..05842d1b2
--- /dev/null
+++ b/engine/classes/ElggAutoP.php
@@ -0,0 +1,336 @@
+<?php
+
+/**
+ * Create wrapper P and BR elements in HTML depending on newlines. Useful when
+ * users use newlines to signal line and paragraph breaks. In all cases output
+ * should be well-formed markup.
+ *
+ * In DIV elements, Ps are only added when there would be at
+ * least two of them.
+ *
+ * @package Elgg.Core
+ * @subpackage Output
+ */
+class ElggAutoP {
+
+ public $encoding = 'UTF-8';
+
+ /**
+ * @var DOMDocument
+ */
+ protected $_doc = null;
+
+ /**
+ * @var DOMXPath
+ */
+ protected $_xpath = null;
+
+ protected $_blocks = 'address article area aside blockquote caption col colgroup dd
+ details div dl dt fieldset figure figcaption footer form h1 h2 h3 h4 h5 h6 header
+ hr hgroup legend map math menu nav noscript p pre section select style summary
+ table tbody td tfoot th thead tr ul ol option li';
+
+ /**
+ * @var array
+ */
+ protected $_inlines = 'a abbr audio b button canvas caption cite code command datalist
+ del dfn em embed i iframe img input ins kbd keygen label map mark meter object
+ output progress q rp rt ruby s samp script select small source span strong style
+ sub sup textarea time var video wbr';
+
+ /**
+ * Descend into these elements to add Ps
+ *
+ * @var array
+ */
+ protected $_descendList = 'article aside blockquote body details div footer form
+ header section';
+
+ /**
+ * Add Ps inside these elements
+ *
+ * @var array
+ */
+ protected $_alterList = 'article aside blockquote body details div footer header
+ section';
+
+ /** @var string */
+ protected $_unique = '';
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->_blocks = preg_split('@\\s+@', $this->_blocks);
+ $this->_descendList = preg_split('@\\s+@', $this->_descendList);
+ $this->_alterList = preg_split('@\\s+@', $this->_alterList);
+ $this->_inlines = preg_split('@\\s+@', $this->_inlines);
+ $this->_unique = md5(__FILE__);
+ }
+
+ /**
+ * Intance of class for singleton pattern.
+ * @var ElggAutoP
+ */
+ private static $instance;
+
+ /**
+ * Singleton pattern.
+ * @return ElggAutoP
+ */
+ public static function getInstance() {
+ $className = __CLASS__;
+ if (!(self::$instance instanceof $className)) {
+ self::$instance = new $className();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Create wrapper P and BR elements in HTML depending on newlines. Useful when
+ * users use newlines to signal line and paragraph breaks. In all cases output
+ * should be well-formed markup.
+ *
+ * In DIV, LI, TD, and TH elements, Ps are only added when their would be at
+ * least two of them.
+ *
+ * @param string $html snippet
+ * @return string|false output or false if parse error occurred
+ */
+ public function process($html) {
+ // normalize whitespace
+ $html = str_replace(array("\r\n", "\r"), "\n", $html);
+
+ // allows preserving entities untouched
+ $html = str_replace('&', $this->_unique . 'AMP', $html);
+
+ $this->_doc = new DOMDocument();
+
+ // parse to DOM, suppressing loadHTML warnings
+ // http://www.php.net/manual/en/domdocument.loadhtml.php#95463
+ libxml_use_internal_errors(true);
+
+ // Do not load entities. May be unnecessary, better safe than sorry
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ if (!$this->_doc->loadHTML("<html><meta http-equiv='content-type' "
+ . "content='text/html; charset={$this->encoding}'><body>{$html}</body>"
+ . "</html>")) {
+
+ libxml_disable_entity_loader($disable_load_entities);
+ return false;
+ }
+
+ libxml_disable_entity_loader($disable_load_entities);
+
+ $this->_xpath = new DOMXPath($this->_doc);
+ // start processing recursively at the BODY element
+ $nodeList = $this->_xpath->query('//body[1]');
+ $this->addParagraphs($nodeList->item(0));
+
+ // serialize back to HTML
+ $html = $this->_doc->saveHTML();
+
+ // Note: we create <autop> elements, which will later be converted to paragraphs
+
+ // split AUTOPs into multiples at /\n\n+/
+ $html = preg_replace('/(' . $this->_unique . 'NL){2,}/', '</autop><autop>', $html);
+ $html = str_replace(array($this->_unique . 'BR', $this->_unique . 'NL', '<br>'),
+ '<br />',
+ $html);
+ $html = str_replace('<br /></autop>', '</autop>', $html);
+
+ // re-parse so we can handle new AUTOP elements
+
+ // Do not load entities. May be unnecessary, better safe than sorry
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ if (!$this->_doc->loadHTML($html)) {
+ libxml_disable_entity_loader($disable_load_entities);
+ return false;
+ }
+
+ libxml_disable_entity_loader($disable_load_entities);
+
+ // must re-create XPath object after DOM load
+ $this->_xpath = new DOMXPath($this->_doc);
+
+ // strip AUTOPs that only have comments/whitespace
+ foreach ($this->_xpath->query('//autop') as $autop) {
+ /* @var DOMElement $autop */
+ $hasContent = false;
+ if (trim($autop->textContent) !== '') {
+ $hasContent = true;
+ } else {
+ foreach ($autop->childNodes as $node) {
+ if ($node->nodeType === XML_ELEMENT_NODE) {
+ $hasContent = true;
+ break;
+ }
+ }
+ }
+ if (!$hasContent) {
+ // mark to be later replaced w/ preg_replace (faster than moving nodes out)
+ $autop->setAttribute("r", "1");
+ }
+ }
+
+ // If a DIV contains a single AUTOP, remove it
+ foreach ($this->_xpath->query('//div') as $el) {
+ /* @var DOMElement $el */
+ $autops = $this->_xpath->query('./autop', $el);
+ if ($autops->length === 1) {
+ $firstAutop = $autops->item(0);
+ /* @var DOMElement $firstAutop */
+ $firstAutop->setAttribute("r", "1");
+ }
+ }
+
+ $html = $this->_doc->saveHTML();
+
+ // trim to the contents of BODY
+ $bodyStart = strpos($html, '<body>');
+ $bodyEnd = strpos($html, '</body>', $bodyStart + 6);
+ $html = substr($html, $bodyStart + 6, $bodyEnd - $bodyStart - 6);
+
+ // strip AUTOPs that should be removed
+ $html = preg_replace('@<autop r="1">(.*?)</autop>@', '\\1', $html);
+
+ // commit to converting AUTOPs to Ps
+ $html = str_replace('<autop>', "\n<p>", $html);
+ $html = str_replace('</autop>', "</p>\n", $html);
+
+ $html = str_replace('<br>', '<br />', $html);
+ $html = str_replace($this->_unique . 'AMP', '&', $html);
+ return $html;
+ }
+
+ /**
+ * Add P and BR elements as necessary
+ *
+ * @param DOMElement $el DOM element
+ * @return void
+ */
+ protected function addParagraphs(DOMElement $el) {
+ // no need to call recursively, just queue up
+ $elsToProcess = array($el);
+ $inlinesToProcess = array();
+ while ($el = array_shift($elsToProcess)) {
+ // if true, we can alter all child nodes, if not, we'll just call
+ // addParagraphs on each element in the descendInto list
+ $alterInline = in_array($el->nodeName, $this->_alterList);
+
+ // inside affected elements, we want to trim leading whitespace from
+ // the first text node
+ $ltrimFirstTextNode = true;
+
+ // should we open a new AUTOP element to move inline elements into?
+ $openP = true;
+ $autop = null;
+
+ // after BR, ignore a newline
+ $isFollowingBr = false;
+
+ $node = $el->firstChild;
+ while (null !== $node) {
+ if ($alterInline) {
+ if ($openP) {
+ $openP = false;
+ // create a P to move inline content into (this may be removed later)
+ $autop = $el->insertBefore($this->_doc->createElement('autop'), $node);
+ }
+ }
+
+ $isElement = ($node->nodeType === XML_ELEMENT_NODE);
+ if ($isElement) {
+ $isBlock = in_array($node->nodeName, $this->_blocks);
+ } else {
+ $isBlock = false;
+ }
+
+ if ($alterInline) {
+ $isText = ($node->nodeType === XML_TEXT_NODE);
+ $isLastInline = (! $node->nextSibling
+ || ($node->nextSibling->nodeType === XML_ELEMENT_NODE
+ && in_array($node->nextSibling->nodeName, $this->_blocks)));
+ if ($isElement) {
+ $isFollowingBr = ($node->nodeName === 'br');
+ }
+
+ if ($isText) {
+ $nodeText = $node->nodeValue;
+ if ($ltrimFirstTextNode) {
+ $nodeText = ltrim($nodeText);
+ $ltrimFirstTextNode = false;
+ }
+ if ($isFollowingBr && preg_match('@^[ \\t]*\\n[ \\t]*@', $nodeText, $m)) {
+ // if a user ends a line with <br>, don't add a second BR
+ $nodeText = substr($nodeText, strlen($m[0]));
+ }
+ if ($isLastInline) {
+ $nodeText = rtrim($nodeText);
+ }
+ $nodeText = str_replace("\n", $this->_unique . 'NL', $nodeText);
+ $tmpNode = $node;
+ $node = $node->nextSibling; // move loop to next node
+
+ // alter node in place, then move into AUTOP
+ $tmpNode->nodeValue = $nodeText;
+ $autop->appendChild($tmpNode);
+
+ continue;
+ }
+ }
+ if ($isBlock || ! $node->nextSibling) {
+ if ($isBlock) {
+ if (in_array($node->nodeName, $this->_descendList)) {
+ $elsToProcess[] = $node;
+ //$this->addParagraphs($node);
+ }
+ }
+ $openP = true;
+ $ltrimFirstTextNode = true;
+ }
+ if ($alterInline) {
+ if (! $isBlock) {
+ $tmpNode = $node;
+ if ($isElement && false !== strpos($tmpNode->textContent, "\n")) {
+ $inlinesToProcess[] = $tmpNode;
+ }
+ $node = $node->nextSibling;
+ $autop->appendChild($tmpNode);
+ continue;
+ }
+ }
+
+ $node = $node->nextSibling;
+ }
+ }
+
+ // handle inline nodes
+ // no need to recurse, just queue up
+ while ($el = array_shift($inlinesToProcess)) {
+ $ignoreLeadingNewline = false;
+ foreach ($el->childNodes as $node) {
+ if ($node->nodeType === XML_ELEMENT_NODE) {
+ if ($node->nodeValue === 'BR') {
+ $ignoreLeadingNewline = true;
+ } else {
+ $ignoreLeadingNewline = false;
+ if (false !== strpos($node->textContent, "\n")) {
+ $inlinesToProcess[] = $node;
+ }
+ }
+ continue;
+ } elseif ($node->nodeType === XML_TEXT_NODE) {
+ $text = $node->nodeValue;
+ if ($text[0] === "\n" && $ignoreLeadingNewline) {
+ $text = substr($text, 1);
+ $ignoreLeadingNewline = false;
+ }
+ $node->nodeValue = str_replace("\n", $this->_unique . 'BR', $text);
+ }
+ }
+ }
+ }
+}
diff --git a/engine/classes/ElggBatch.php b/engine/classes/ElggBatch.php
index c1a77a0d9..d810ea066 100644
--- a/engine/classes/ElggBatch.php
+++ b/engine/classes/ElggBatch.php
@@ -150,6 +150,20 @@ class ElggBatch
private $incrementOffset = true;
/**
+ * Entities that could not be instantiated during a fetch
+ *
+ * @var stdClass[]
+ */
+ private $incompleteEntities = array();
+
+ /**
+ * Total number of incomplete entities fetched
+ *
+ * @var int
+ */
+ private $totalIncompletes = 0;
+
+ /**
* Batches operations on any elgg_get_*() or compatible function that supports
* an options array.
*
@@ -222,16 +236,22 @@ class ElggBatch
}
/**
+ * Tell the process that an entity was incomplete during a fetch
+ *
+ * @param stdClass $row
+ *
+ * @access private
+ */
+ public function reportIncompleteEntity(stdClass $row) {
+ $this->incompleteEntities[] = $row;
+ }
+
+ /**
* Fetches the next chunk of results
*
* @return bool
*/
private function getNextResultsChunk() {
- // reset memory caches after first chunk load
- if ($this->chunkIndex > 0) {
- global $DB_QUERY_CACHE, $ENTITY_CACHE;
- $DB_QUERY_CACHE = $ENTITY_CACHE = array();
- }
// always reset results.
$this->results = array();
@@ -265,27 +285,47 @@ class ElggBatch
if ($this->incrementOffset) {
$offset = $this->offset + $this->retrievedResults;
} else {
- $offset = $this->offset;
+ $offset = $this->offset + $this->totalIncompletes;
}
$current_options = array(
'limit' => $limit,
- 'offset' => $offset
+ 'offset' => $offset,
+ '__ElggBatch' => $this,
);
$options = array_merge($this->options, $current_options);
- $getter = $this->getter;
- if (is_string($getter)) {
- $this->results = $getter($options);
- } else {
- $this->results = call_user_func_array($getter, array($options));
+ $this->incompleteEntities = array();
+ $this->results = call_user_func_array($this->getter, array($options));
+
+ $num_results = count($this->results);
+ $num_incomplete = count($this->incompleteEntities);
+
+ $this->totalIncompletes += $num_incomplete;
+
+ if ($this->incompleteEntities) {
+ // pad the front of the results with nulls representing the incompletes
+ array_splice($this->results, 0, 0, array_pad(array(), $num_incomplete, null));
+ // ...and skip past them
+ reset($this->results);
+ for ($i = 0; $i < $num_incomplete; $i++) {
+ next($this->results);
+ }
}
if ($this->results) {
$this->chunkIndex++;
- $this->resultIndex = 0;
- $this->retrievedResults += count($this->results);
+
+ // let the system know we've jumped past the nulls
+ $this->resultIndex = $num_incomplete;
+
+ $this->retrievedResults += ($num_results + $num_incomplete);
+ if ($num_results == 0) {
+ // This fetch was *all* incompletes! We need to fetch until we can either
+ // offer at least one row to iterate over, or give up.
+ return $this->getNextResultsChunk();
+ }
return true;
} else {
return false;
@@ -296,7 +336,8 @@ class ElggBatch
* Increment the offset from the original options array? Setting to
* false is required for callbacks that delete rows.
*
- * @param bool $increment
+ * @param bool $increment Set to false when deleting data
+ * @return void
*/
public function setIncrementOffset($increment = true) {
$this->incrementOffset = (bool) $increment;
diff --git a/engine/classes/ElggCache.php b/engine/classes/ElggCache.php
index 4317f4be9..909eab39b 100644
--- a/engine/classes/ElggCache.php
+++ b/engine/classes/ElggCache.php
@@ -21,6 +21,7 @@ abstract class ElggCache implements ArrayAccess {
$this->variables = array();
}
+ // @codingStandardsIgnoreStart
/**
* Set a cache variable.
*
@@ -35,6 +36,7 @@ abstract class ElggCache implements ArrayAccess {
elgg_deprecated_notice('ElggCache::set_variable() is deprecated by ElggCache::setVariable()', 1.8);
$this->setVariable($variable, $value);
}
+ // @codingStandardsIgnoreEnd
/**
* Set a cache variable.
@@ -52,6 +54,7 @@ abstract class ElggCache implements ArrayAccess {
$this->variables[$variable] = $value;
}
+ // @codingStandardsIgnoreStart
/**
* Get variables for this cache.
*
@@ -65,6 +68,7 @@ abstract class ElggCache implements ArrayAccess {
elgg_deprecated_notice('ElggCache::get_variable() is deprecated by ElggCache::getVariable()', 1.8);
return $this->getVariable($variable);
}
+ // @codingStandardsIgnoreEnd
/**
* Get variables for this cache.
diff --git a/engine/classes/ElggCrypto.php b/engine/classes/ElggCrypto.php
new file mode 100644
index 000000000..317d371e4
--- /dev/null
+++ b/engine/classes/ElggCrypto.php
@@ -0,0 +1,208 @@
+<?php
+/**
+ * ElggCrypto
+ *
+ * @package Elgg.Core
+ * @subpackage Crypto
+ *
+ * @access private
+ */
+class ElggCrypto {
+
+ /**
+ * Character set for temp passwords (no risk of embedded profanity/glyphs that look similar)
+ */
+ const CHARS_PASSWORD = 'bcdfghjklmnpqrstvwxyz2346789';
+
+ /**
+ * Generate a string of highly randomized bytes (over the full 8-bit range).
+ *
+ * @param int $length Number of bytes needed
+ * @return string Random bytes
+ *
+ * @author George Argyros <argyros.george@gmail.com>
+ * @copyright 2012, George Argyros. All rights reserved.
+ * @license Modified BSD
+ * @link https://github.com/GeorgeArgyros/Secure-random-bytes-in-PHP/blob/master/srand.php Original
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the <organization> nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL GEORGE ARGYROS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ public function getRandomBytes($length) {
+ /**
+ * Our primary choice for a cryptographic strong randomness function is
+ * openssl_random_pseudo_bytes.
+ */
+ $SSLstr = '4'; // http://xkcd.com/221/
+ if (function_exists('openssl_random_pseudo_bytes')
+ && (version_compare(PHP_VERSION, '5.3.4') >= 0 || substr(PHP_OS, 0, 3) !== 'WIN')) {
+ $SSLstr = openssl_random_pseudo_bytes($length, $strong);
+ if ($strong) {
+ return $SSLstr;
+ }
+ }
+
+ /**
+ * If mcrypt extension is available then we use it to gather entropy from
+ * the operating system's PRNG. This is better than reading /dev/urandom
+ * directly since it avoids reading larger blocks of data than needed.
+ * Older versions of mcrypt_create_iv may be broken or take too much time
+ * to finish so we only use this function with PHP 5.3.7 and above.
+ * @see https://bugs.php.net/bug.php?id=55169
+ */
+ if (function_exists('mcrypt_create_iv')
+ && (version_compare(PHP_VERSION, '5.3.7') >= 0 || substr(PHP_OS, 0, 3) !== 'WIN')) {
+ $str = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
+ if ($str !== false) {
+ return $str;
+ }
+ }
+
+ /**
+ * No build-in crypto randomness function found. We collect any entropy
+ * available in the PHP core PRNGs along with some filesystem info and memory
+ * stats. To make this data cryptographically strong we add data either from
+ * /dev/urandom or if its unavailable, we gather entropy by measuring the
+ * time needed to compute a number of SHA-1 hashes.
+ */
+ $str = '';
+ $bits_per_round = 2; // bits of entropy collected in each clock drift round
+ $msec_per_round = 400; // expected running time of each round in microseconds
+ $hash_len = 20; // SHA-1 Hash length
+ $total = $length; // total bytes of entropy to collect
+
+ $handle = @fopen('/dev/urandom', 'rb');
+ if ($handle && function_exists('stream_set_read_buffer')) {
+ @stream_set_read_buffer($handle, 0);
+ }
+
+ do {
+ $bytes = ($total > $hash_len) ? $hash_len : $total;
+ $total -= $bytes;
+
+ //collect any entropy available from the PHP system and filesystem
+ $entropy = rand() . uniqid(mt_rand(), true) . $SSLstr;
+ $entropy .= implode('', @fstat(@fopen(__FILE__, 'r')));
+ $entropy .= memory_get_usage() . getmypid();
+ $entropy .= serialize($_ENV) . serialize($_SERVER);
+ if (function_exists('posix_times')) {
+ $entropy .= serialize(posix_times());
+ }
+ if (function_exists('zend_thread_id')) {
+ $entropy .= zend_thread_id();
+ }
+
+ if ($handle) {
+ $entropy .= @fread($handle, $bytes);
+ } else {
+ // Measure the time that the operations will take on average
+ for ($i = 0; $i < 3; $i++) {
+ $c1 = microtime(true);
+ $var = sha1(mt_rand());
+ for ($j = 0; $j < 50; $j++) {
+ $var = sha1($var);
+ }
+ $c2 = microtime(true);
+ $entropy .= $c1 . $c2;
+ }
+
+ // Based on the above measurement determine the total rounds
+ // in order to bound the total running time.
+ $rounds = (int) ($msec_per_round * 50 / (int) (($c2 - $c1) * 1000000));
+
+ // Take the additional measurements. On average we can expect
+ // at least $bits_per_round bits of entropy from each measurement.
+ $iter = $bytes * (int) (ceil(8 / $bits_per_round));
+
+ for ($i = 0; $i < $iter; $i++) {
+ $c1 = microtime();
+ $var = sha1(mt_rand());
+ for ($j = 0; $j < $rounds; $j++) {
+ $var = sha1($var);
+ }
+ $c2 = microtime();
+ $entropy .= $c1 . $c2;
+ }
+ }
+
+ // We assume sha1 is a deterministic extractor for the $entropy variable.
+ $str .= sha1($entropy, true);
+
+ } while ($length > strlen($str));
+
+ if ($handle) {
+ @fclose($handle);
+ }
+
+ return substr($str, 0, $length);
+ }
+
+ /**
+ * Generate a random string of specified length.
+ *
+ * Uses supplied character list for generating the new string.
+ * If no character list provided - uses Base64 URL character set.
+ *
+ * @param int $length Desired length of the string
+ * @param string|null $chars Characters to be chosen from randomly. If not given, the Base64 URL
+ * charset will be used.
+ *
+ * @return string The random string
+ *
+ * @throws InvalidArgumentException
+ *
+ * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ *
+ * @see https://github.com/zendframework/zf2/blob/master/library/Zend/Math/Rand.php#L179
+ */
+ public static function getRandomString($length, $chars = null) {
+ if ($length < 1) {
+ throw new InvalidArgumentException('Length should be >= 1');
+ }
+
+ if (empty($chars)) {
+ $numBytes = ceil($length * 0.75);
+ $bytes = self::getRandomBytes($numBytes);
+ $string = substr(rtrim(base64_encode($bytes), '='), 0, $length);
+
+ // Base64 URL
+ return strtr($string, '+/', '-_');
+ }
+
+ $listLen = strlen($chars);
+
+ if ($listLen == 1) {
+ return str_repeat($chars, $length);
+ }
+
+ $bytes = self::getRandomBytes($length);
+ $pos = 0;
+ $result = '';
+ for ($i = 0; $i < $length; $i++) {
+ $pos = ($pos + ord($bytes[$i])) % $listLen;
+ $result .= $chars[$pos];
+ }
+
+ return $result;
+ }
+}
diff --git a/engine/classes/ElggData.php b/engine/classes/ElggData.php
index 3470ee1cf..4f843cde4 100644
--- a/engine/classes/ElggData.php
+++ b/engine/classes/ElggData.php
@@ -5,6 +5,9 @@
*
* @package Elgg.Core
* @subpackage DataModel
+ *
+ * @property int $owner_guid
+ * @property int $time_created
*/
abstract class ElggData implements
Loggable, // Can events related to this object class be logged
@@ -23,6 +26,7 @@ abstract class ElggData implements
*/
protected $attributes = array();
+ // @codingStandardsIgnoreStart
/**
* Initialise the attributes array.
*
@@ -33,16 +37,15 @@ abstract class ElggData implements
* Passing false returns false. Core constructors always pass false.
* Does nothing either way since attributes are initialized by the time
* this is called.
- * @return false|void False is
+ * @return void
* @deprecated 1.8 Use initializeAttributes()
*/
protected function initialise_attributes($pre18_api = true) {
if ($pre18_api) {
elgg_deprecated_notice('initialise_attributes() is deprecated by initializeAttributes()', 1.8);
- } else {
- return false;
}
}
+ // @codingStandardsIgnoreEnd
/**
* Initialize the attributes array.
@@ -111,7 +114,7 @@ abstract class ElggData implements
* @param string $name The attribute to set
* @param mixed $value The value to set it to
*
- * @return The success of your set funtion?
+ * @return bool The success of your set function?
*/
abstract protected function set($name, $value);
@@ -195,7 +198,7 @@ abstract class ElggData implements
*
* @see Iterator::current()
*
- * @return void
+ * @return mixed
*/
public function current() {
return current($this->attributes);
@@ -206,7 +209,7 @@ abstract class ElggData implements
*
* @see Iterator::key()
*
- * @return void
+ * @return string
*/
public function key() {
return key($this->attributes);
@@ -228,7 +231,7 @@ abstract class ElggData implements
*
* @see Iterator::valid()
*
- * @return void
+ * @return bool
*/
public function valid() {
return $this->valid;
@@ -266,12 +269,13 @@ abstract class ElggData implements
*
* @param mixed $key Name
*
- * @return void
+ * @return mixed
*/
public function offsetGet($key) {
if (array_key_exists($key, $this->attributes)) {
return $this->attributes[$key];
}
+ return null;
}
/**
diff --git a/engine/classes/ElggDiskFilestore.php b/engine/classes/ElggDiskFilestore.php
index f00376481..6e2354012 100644
--- a/engine/classes/ElggDiskFilestore.php
+++ b/engine/classes/ElggDiskFilestore.php
@@ -60,6 +60,7 @@ class ElggDiskFilestore extends ElggFilestore {
$path = substr($fullname, 0, $ls);
$name = substr($fullname, $ls);
+ // @todo $name is unused, remove it or do we need to fix something?
// Try and create the directory
try {
@@ -108,7 +109,7 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param resource $f File pointer resource
* @param int $length The number of bytes to read
- * @param inf $offset The number of bytes to start after
+ * @param int $offset The number of bytes to start after
*
* @return mixed Contents of file or false on fail.
*/
@@ -193,25 +194,33 @@ class ElggDiskFilestore extends ElggFilestore {
}
/**
- * Returns the filename as saved on disk for an ElggFile object
+ * Get the filename as saved on disk for an ElggFile object
+ *
+ * Returns an empty string if no filename set
*
* @param ElggFile $file File object
*
* @return string The full path of where the file is stored
+ * @throws InvalidParameterException
*/
public function getFilenameOnFilestore(ElggFile $file) {
- $owner = $file->getOwnerEntity();
- if (!$owner) {
- $owner = elgg_get_logged_in_user_entity();
+ $owner_guid = $file->getOwnerGuid();
+ if (!$owner_guid) {
+ $owner_guid = elgg_get_logged_in_user_guid();
}
- if (!$owner) {
+ if (!$owner_guid) {
$msg = elgg_echo('InvalidParameterException:MissingOwner',
array($file->getFilename(), $file->guid));
throw new InvalidParameterException($msg);
}
- return $this->dir_root . $this->makefileMatrix($owner->guid) . $file->getFilename();
+ $filename = $file->getFilename();
+ if (!$filename) {
+ return '';
+ }
+
+ return $this->dir_root . $this->makeFileMatrix($owner_guid) . $filename;
}
/**
@@ -219,7 +228,7 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param ElggFile $file File object
*
- * @return mixed
+ * @return string
*/
public function grabFile(ElggFile $file) {
return file_get_contents($file->getFilenameOnFilestore());
@@ -233,6 +242,9 @@ class ElggDiskFilestore extends ElggFilestore {
* @return bool
*/
public function exists(ElggFile $file) {
+ if (!$file->getFilename()) {
+ return false;
+ }
return file_exists($this->getFilenameOnFilestore($file));
}
@@ -246,12 +258,13 @@ class ElggDiskFilestore extends ElggFilestore {
*/
public function getSize($prefix = '', $container_guid) {
if ($container_guid) {
- return get_dir_size($this->dir_root . $this->makefileMatrix($container_guid) . $prefix);
+ return get_dir_size($this->dir_root . $this->makeFileMatrix($container_guid) . $prefix);
} else {
return false;
}
}
+ // @codingStandardsIgnoreStart
/**
* Create a directory $dirroot
*
@@ -266,6 +279,7 @@ class ElggDiskFilestore extends ElggFilestore {
return $this->makeDirectoryRoot($dirroot);
}
+ // @codingStandardsIgnoreEnd
/**
* Create a directory $dirroot
@@ -285,6 +299,7 @@ class ElggDiskFilestore extends ElggFilestore {
return true;
}
+ // @codingStandardsIgnoreStart
/**
* Multibyte string tokeniser.
*
@@ -315,30 +330,31 @@ class ElggDiskFilestore extends ElggFilestore {
} else {
return str_split($string);
}
-
- return false;
}
+ // @codingStandardsIgnoreEnd
+ // @codingStandardsIgnoreStart
/**
* Construct a file path matrix for an entity.
*
* @param int $identifier The guide of the entity to store the data under.
*
- * @return str The path where the entity's data will be stored.
+ * @return string The path where the entity's data will be stored.
* @deprecated 1.8 Use ElggDiskFilestore::makeFileMatrix()
*/
protected function make_file_matrix($identifier) {
elgg_deprecated_notice('ElggDiskFilestore::make_file_matrix() is deprecated by ::makeFileMatrix()', 1.8);
- return $this->makefileMatrix($identifier);
+ return $this->makeFileMatrix($identifier);
}
+ // @codingStandardsIgnoreEnd
/**
* Construct a file path matrix for an entity.
*
* @param int $guid The guide of the entity to store the data under.
*
- * @return str The path where the entity's data will be stored.
+ * @return string The path where the entity's data will be stored.
*/
protected function makeFileMatrix($guid) {
$entity = get_entity($guid);
@@ -352,6 +368,7 @@ class ElggDiskFilestore extends ElggFilestore {
return "$time_created/$entity->guid/";
}
+ // @codingStandardsIgnoreStart
/**
* Construct a filename matrix.
*
@@ -363,13 +380,14 @@ class ElggDiskFilestore extends ElggFilestore {
*
* @param int $guid The entity to contrust a matrix for
*
- * @return str The
+ * @return string The
*/
protected function user_file_matrix($guid) {
elgg_deprecated_notice('ElggDiskFilestore::user_file_matrix() is deprecated by ::makeFileMatrix()', 1.8);
return $this->makeFileMatrix($guid);
}
+ // @codingStandardsIgnoreEnd
/**
* Returns a list of attributes to save to the database when saving
diff --git a/engine/classes/ElggEntity.php b/engine/classes/ElggEntity.php
index 77c2bbf4d..a563f6fad 100644
--- a/engine/classes/ElggEntity.php
+++ b/engine/classes/ElggEntity.php
@@ -24,7 +24,7 @@
*
* @package Elgg.Core
* @subpackage DataModel.Entities
- *
+ *
* @property string $type object, user, group, or site (read-only after save)
* @property string $subtype Further clarifies the nature of the entity (read-only after save)
* @property int $guid The unique identifier for this entity (read only)
@@ -34,6 +34,7 @@
* @property int $access_id Specifies the visibility level of this entity
* @property int $time_created A UNIX timestamp of when the entity was created (read-only, set on first save)
* @property int $time_updated A UNIX timestamp of when the entity was last updated (automatically updated on save)
+ * @property-read string $enabled
*/
abstract class ElggEntity extends ElggData implements
Notable, // Calendar interface
@@ -248,7 +249,9 @@ abstract class ElggEntity extends ElggData implements
* @return mixed The value, or NULL if not found.
*/
public function getMetaData($name) {
- if ((int) ($this->guid) == 0) {
+ $guid = $this->getGUID();
+
+ if (! $guid) {
if (isset($this->temp_metadata[$name])) {
// md is returned as an array only if more than 1 entry
if (count($this->temp_metadata[$name]) == 1) {
@@ -261,21 +264,38 @@ abstract class ElggEntity extends ElggData implements
}
}
+ // upon first cache miss, just load/cache all the metadata and retry.
+ // if this works, the rest of this function may not be needed!
+ $cache = elgg_get_metadata_cache();
+ if ($cache->isKnown($guid, $name)) {
+ return $cache->load($guid, $name);
+ } else {
+ $cache->populateFromEntities(array($guid));
+ // in case ignore_access was on, we have to check again...
+ if ($cache->isKnown($guid, $name)) {
+ return $cache->load($guid, $name);
+ }
+ }
+
$md = elgg_get_metadata(array(
- 'guid' => $this->getGUID(),
+ 'guid' => $guid,
'metadata_name' => $name,
'limit' => 0,
));
+ $value = null;
+
if ($md && !is_array($md)) {
- return $md->value;
+ $value = $md->value;
} elseif (count($md) == 1) {
- return $md[0]->value;
+ $value = $md[0]->value;
} else if ($md && is_array($md)) {
- return metadata_array_to_values($md);
+ $value = metadata_array_to_values($md);
}
- return null;
+ $cache->save($guid, $name, $value);
+
+ return $value;
}
/**
@@ -332,8 +352,8 @@ abstract class ElggEntity extends ElggData implements
'limit' => 0
);
// @todo in 1.9 make this return false if can't add metadata
- // http://trac.elgg.org/ticket/4520
- //
+ // https://github.com/elgg/elgg/issues/4520
+ //
// need to remove access restrictions right now to delete
// because this is the expected behavior
$ia = elgg_set_ignore_access(true);
@@ -355,12 +375,11 @@ abstract class ElggEntity extends ElggData implements
}
return $result;
- }
-
- // unsaved entity. store in temp array
- // returning single entries instead of an array of 1 element is decided in
- // getMetaData(), just like pulling from the db.
- else {
+ } else {
+ // unsaved entity. store in temp array
+ // returning single entries instead of an array of 1 element is decided in
+ // getMetaData(), just like pulling from the db.
+ //
// if overwrite, delete first
if (!$multiple || !isset($this->temp_metadata[$name])) {
$this->temp_metadata[$name] = array();
@@ -921,7 +940,7 @@ abstract class ElggEntity extends ElggData implements
* @param ElggMetadata $metadata The piece of metadata to specifically check
* @param int $user_guid The user GUID, optionally (default: logged in user)
*
- * @return true|false
+ * @return bool
*/
function canEditMetadata($metadata = null, $user_guid = 0) {
return can_edit_entity_metadata($this->getGUID(), $user_guid, $metadata);
@@ -945,7 +964,7 @@ abstract class ElggEntity extends ElggData implements
*
* @tip Can be overridden by registering for the permissions_check:comment,
* <entity type> plugin hook.
- *
+ *
* @param int $user_guid User guid (default is logged in user)
*
* @return bool
@@ -1007,7 +1026,7 @@ abstract class ElggEntity extends ElggData implements
/**
* Returns the guid.
*
- * @return int GUID
+ * @return int|null GUID
*/
public function getGUID() {
return $this->get('guid');
@@ -1245,21 +1264,29 @@ abstract class ElggEntity extends ElggData implements
/**
* Save an entity.
*
- * @return bool/int
+ * @return bool|int
* @throws IOException
*/
public function save() {
- $guid = (int) $this->guid;
+ $guid = $this->getGUID();
if ($guid > 0) {
- cache_entity($this);
- return update_entity(
- $this->get('guid'),
+ // See #5600. This ensures the lower level can_edit_entity() check will use a
+ // fresh entity from the DB so it sees the persisted owner_guid
+ _elgg_disable_caching_for_entity($guid);
+
+ $ret = update_entity(
+ $guid,
$this->get('owner_guid'),
$this->get('access_id'),
$this->get('container_guid'),
$this->get('time_created')
);
+
+ _elgg_enable_caching_for_entity($guid);
+ _elgg_cache_entity($this);
+
+ return $ret;
} else {
// Create a new entity (nb: using attribute array directly
// 'cos set function does something special!)
@@ -1301,10 +1328,7 @@ abstract class ElggEntity extends ElggData implements
$this->attributes['subtype'] = get_subtype_id($this->attributes['type'],
$this->attributes['subtype']);
- // Cache object handle
- if ($this->attributes['guid']) {
- cache_entity($this);
- }
+ _elgg_cache_entity($this);
return $this->attributes['guid'];
}
@@ -1341,12 +1365,12 @@ abstract class ElggEntity extends ElggData implements
$this->attributes['tables_loaded']++;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
+ // guid needs to be an int https://github.com/elgg/elgg/issues/4111
$this->attributes['guid'] = (int)$this->attributes['guid'];
// Cache object handle
if ($this->attributes['guid']) {
- cache_entity($this);
+ _elgg_cache_entity($this);
}
return true;
@@ -1652,9 +1676,11 @@ abstract class ElggEntity extends ElggData implements
/**
* Import data from an parsed ODD xml data array.
*
- * @param array $data XML data
+ * @param ODD $data XML data
*
* @return true
+ *
+ * @throws InvalidParameterException
*/
public function import(ODD $data) {
if (!($data instanceof ODDEntity)) {
@@ -1716,8 +1742,6 @@ abstract class ElggEntity extends ElggData implements
* @return array
*/
public function getTags($tag_names = NULL) {
- global $CONFIG;
-
if ($tag_names && !is_array($tag_names)) {
$tag_names = array($tag_names);
}
diff --git a/engine/classes/ElggExtender.php b/engine/classes/ElggExtender.php
index d94bad837..25aba354f 100644
--- a/engine/classes/ElggExtender.php
+++ b/engine/classes/ElggExtender.php
@@ -171,7 +171,7 @@ abstract class ElggExtender extends ElggData {
public function export() {
$uuid = get_uuid_from_object($this);
- $meta = new ODDMetadata($uuid, guid_to_uuid($this->entity_guid), $this->attributes['name'],
+ $meta = new ODDMetaData($uuid, guid_to_uuid($this->entity_guid), $this->attributes['name'],
$this->attributes['value'], $this->attributes['type'], guid_to_uuid($this->owner_guid));
$meta->setAttribute('published', date("r", $this->time_created));
diff --git a/engine/classes/ElggFile.php b/engine/classes/ElggFile.php
index f21621ffd..23080834b 100644
--- a/engine/classes/ElggFile.php
+++ b/engine/classes/ElggFile.php
@@ -93,6 +93,7 @@ class ElggFile extends ElggObject {
$container_guid = $this->container_guid;
}
$fs = $this->getFilestore();
+ // @todo add getSize() to ElggFilestore
return $fs->getSize($prefix, $container_guid);
}
@@ -127,9 +128,11 @@ class ElggFile extends ElggObject {
* @param mixed $default A default. Useful to pass what the browser thinks it is.
* @since 1.7.12
*
+ * @note If $file is provided, this may be called statically
+ *
* @return mixed Detected type on success, false on failure.
*/
- static function detectMimeType($file = null, $default = null) {
+ public function detectMimeType($file = null, $default = null) {
if (!$file) {
if (isset($this) && $this->filename) {
$file = $this->filename;
@@ -178,6 +181,8 @@ class ElggFile extends ElggObject {
* @param string $mode Either read/write/append
*
* @return resource File handler
+ *
+ * @throws IOException|InvalidParameterException
*/
public function open($mode) {
if (!$this->getFilename()) {
@@ -270,9 +275,14 @@ class ElggFile extends ElggObject {
*/
public function delete() {
$fs = $this->getFilestore();
- if ($fs->delete($this)) {
- return parent::delete();
+
+ $result = $fs->delete($this);
+
+ if ($this->getGUID() && $result) {
+ $result = parent::delete();
}
+
+ return $result;
}
/**
@@ -285,6 +295,7 @@ class ElggFile extends ElggObject {
public function seek($position) {
$fs = $this->getFilestore();
+ // @todo add seek() to ElggFilestore
return $fs->seek($this->handle, $position);
}
@@ -347,6 +358,8 @@ class ElggFile extends ElggObject {
* a filestore as recorded in metadata or the system default.
*
* @return ElggFilestore
+ *
+ * @throws ClassNotFoundException
*/
protected function getFilestore() {
// Short circuit if already set.
@@ -359,7 +372,6 @@ class ElggFile extends ElggObject {
// need to get all filestore::* metadata because the rest are "parameters" that
// get passed to filestore::setParameters()
if ($this->guid) {
- $db_prefix = elgg_get_config('dbprefix');
$options = array(
'guid' => $this->guid,
'where' => array("n.string LIKE 'filestore::%'"),
@@ -388,6 +400,7 @@ class ElggFile extends ElggObject {
$this->filestore = new $filestore();
$this->filestore->setParameters($parameters);
+ // @todo explain why $parameters will always be set here (PhpStorm complains)
}
// this means the entity hasn't been saved so fallback to default
diff --git a/engine/classes/ElggFileCache.php b/engine/classes/ElggFileCache.php
index 34178d452..94143f777 100644
--- a/engine/classes/ElggFileCache.php
+++ b/engine/classes/ElggFileCache.php
@@ -13,6 +13,8 @@ class ElggFileCache extends ElggCache {
* @param string $cache_path The cache path.
* @param int $max_age Maximum age in seconds, 0 if no limit.
* @param int $max_size Maximum size of cache in seconds, 0 if no limit.
+ *
+ * @throws ConfigurationException
*/
function __construct($cache_path, $max_age = 0, $max_size = 0) {
$this->setVariable("cache_path", $cache_path);
@@ -24,6 +26,7 @@ class ElggFileCache extends ElggCache {
}
}
+ // @codingStandardsIgnoreStart
/**
* Create and return a handle to a file.
*
@@ -39,6 +42,7 @@ class ElggFileCache extends ElggCache {
return $this->createFile($filename, $rw);
}
+ // @codingStandardsIgnoreEnd
/**
* Create and return a handle to a file.
@@ -70,6 +74,7 @@ class ElggFileCache extends ElggCache {
return fopen($path . $filename, $rw);
}
+ // @codingStandardsIgnoreStart
/**
* Create a sanitised filename for the file.
*
@@ -84,6 +89,7 @@ class ElggFileCache extends ElggCache {
return $filename;
}
+ // @codingStandardsIgnoreEnd
/**
* Create a sanitised filename for the file.
diff --git a/engine/classes/ElggGroup.php b/engine/classes/ElggGroup.php
index 121186196..7e69b7a84 100644
--- a/engine/classes/ElggGroup.php
+++ b/engine/classes/ElggGroup.php
@@ -32,7 +32,7 @@ class ElggGroup extends ElggEntity
* @param mixed $guid If an int, load that GUID.
* If an entity table db row, then will load the rest of the data.
*
- * @throws Exception if there was a problem creating the group.
+ * @throws IOException|InvalidParameterException if there was a problem creating the group.
*/
function __construct($guid = null) {
$this->initializeAttributes();
@@ -48,21 +48,18 @@ class ElggGroup extends ElggEntity
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggGroup? Use a copy constructor
} else if ($guid instanceof ElggGroup) {
+ // $guid is an ElggGroup so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggGroup constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggGroup = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo why separate from else
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggGroup'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load entity
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -220,6 +217,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function getObjects($subtype = "", $limit = 10, $offset = 0) {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", $limit, $offset, false);
}
@@ -233,6 +231,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function getFriendsObjects($subtype = "", $limit = 10, $offset = 0) {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", $limit, $offset, false);
}
@@ -244,6 +243,7 @@ class ElggGroup extends ElggEntity
* @return array|false
*/
public function countObjects($subtype = "") {
+ // @todo are we deprecating this method, too?
return get_objects_in_group($this->getGUID(), $subtype, 0, 0, "", 10, 0, true);
}
@@ -284,7 +284,7 @@ class ElggGroup extends ElggEntity
*
* @return bool
*/
- public function isMember($user = 0) {
+ public function isMember($user = null) {
if (!($user instanceof ElggUser)) {
$user = elgg_get_logged_in_user_entity();
}
@@ -324,37 +324,18 @@ class ElggGroup extends ElggEntity
* @return bool
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'group', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_group_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'group') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_group_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -371,7 +352,12 @@ class ElggGroup extends ElggEntity
}
// Now save specific stuff
- return create_group_entity($this->get('guid'), $this->get('name'), $this->get('description'));
+
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_group_entity($this->get('guid'), $this->get('name'), $this->get('description'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
// EXPORTABLE INTERFACE ////////////////////////////////////////////////////////////
diff --git a/engine/classes/ElggGroupItemVisibility.php b/engine/classes/ElggGroupItemVisibility.php
new file mode 100644
index 000000000..2c7e2abb4
--- /dev/null
+++ b/engine/classes/ElggGroupItemVisibility.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * Determines if otherwise visible items should be hidden from a user due to group
+ * policy or visibility.
+ *
+ * @class ElggGroupItemVisibility
+ * @package Elgg.Core
+ * @subpackage Groups
+ *
+ * @access private
+ */
+class ElggGroupItemVisibility {
+
+ const REASON_MEMBERSHIP = 'membershiprequired';
+ const REASON_LOGGEDOUT = 'loggedinrequired';
+ const REASON_NOACCESS = 'noaccess';
+
+ /**
+ * @var bool
+ */
+ public $shouldHideItems = false;
+
+ /**
+ * @var string
+ */
+ public $reasonHidden = '';
+
+ /**
+ * Determine visibility of items within a container for the current user
+ *
+ * @param int $container_guid GUID of a container (may/may not be a group)
+ *
+ * @return ElggGroupItemVisibility
+ *
+ * @todo Make this faster, considering it must run for every river item.
+ */
+ static public function factory($container_guid) {
+ // cache because this may be called repeatedly during river display, and
+ // due to need to check group visibility, cache will be disabled for some
+ // get_entity() calls
+ static $cache = array();
+
+ $ret = new ElggGroupItemVisibility();
+
+ if (!$container_guid) {
+ return $ret;
+ }
+
+ $user = elgg_get_logged_in_user_entity();
+ $user_guid = $user ? $user->guid : 0;
+
+ $container_guid = (int) $container_guid;
+
+ $cache_key = "$container_guid|$user_guid";
+ if (empty($cache[$cache_key])) {
+ // compute
+
+ $container = get_entity($container_guid);
+ $is_visible = (bool) $container;
+
+ if (!$is_visible) {
+ // see if it *really* exists...
+ $prev_access = elgg_set_ignore_access();
+ $container = get_entity($container_guid);
+ elgg_set_ignore_access($prev_access);
+ }
+
+ if ($container && $container instanceof ElggGroup) {
+ /* @var ElggGroup $container */
+
+ if ($is_visible) {
+ if (!$container->isPublicMembership()) {
+ if ($user) {
+ if (!$container->isMember($user) && !$user->isAdmin()) {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_MEMBERSHIP;
+ }
+ } else {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_LOGGEDOUT;
+ }
+ }
+ } else {
+ $ret->shouldHideItems = true;
+ $ret->reasonHidden = self::REASON_NOACCESS;
+ }
+ }
+ $cache[$cache_key] = $ret;
+ }
+ return $cache[$cache_key];
+ }
+}
diff --git a/engine/classes/ElggLRUCache.php b/engine/classes/ElggLRUCache.php
new file mode 100644
index 000000000..f51af2ed7
--- /dev/null
+++ b/engine/classes/ElggLRUCache.php
@@ -0,0 +1,181 @@
+<?php
+
+/**
+ * Least Recently Used Cache
+ *
+ * A fixed sized cache that removes the element used last when it reaches its
+ * size limit.
+ *
+ * Based on https://github.com/cash/LRUCache
+ *
+ * @access private
+ *
+ * @package Elgg.Core
+ * @subpackage Cache
+ */
+class ElggLRUCache implements ArrayAccess {
+ /** @var int */
+ protected $maximumSize;
+
+ /**
+ * The front of the array contains the LRU element
+ *
+ * @var array
+ */
+ protected $data = array();
+
+ /**
+ * Create a LRU Cache
+ *
+ * @param int $size The size of the cache
+ * @throws InvalidArgumentException
+ */
+ public function __construct($size) {
+ if (!is_int($size) || $size <= 0) {
+ throw new InvalidArgumentException();
+ }
+ $this->maximumSize = $size;
+ }
+
+ /**
+ * Get the value cached with this key
+ *
+ * @param int|string $key The key. Strings that are ints are cast to ints.
+ * @param mixed $default The value to be returned if key not found. (Optional)
+ * @return mixed
+ */
+ public function get($key, $default = null) {
+ if (isset($this->data[$key])) {
+ $this->recordAccess($key);
+ return $this->data[$key];
+ } else {
+ return $default;
+ }
+ }
+
+ /**
+ * Add something to the cache
+ *
+ * @param int|string $key The key. Strings that are ints are cast to ints.
+ * @param mixed $value The value to cache
+ * @return void
+ */
+ public function set($key, $value) {
+ if (isset($this->data[$key])) {
+ $this->data[$key] = $value;
+ $this->recordAccess($key);
+ } else {
+ $this->data[$key] = $value;
+ if ($this->size() > $this->maximumSize) {
+ // remove least recently used element (front of array)
+ reset($this->data);
+ unset($this->data[key($this->data)]);
+ }
+ }
+ }
+
+ /**
+ * Get the number of elements in the cache
+ *
+ * @return int
+ */
+ public function size() {
+ return count($this->data);
+ }
+
+ /**
+ * Does the cache contain an element with this key
+ *
+ * @param int|string $key The key
+ * @return boolean
+ */
+ public function containsKey($key) {
+ return isset($this->data[$key]);
+ }
+
+ /**
+ * Remove the element with this key.
+ *
+ * @param int|string $key The key
+ * @return mixed Value or null if not set
+ */
+ public function remove($key) {
+ if (isset($this->data[$key])) {
+ $value = $this->data[$key];
+ unset($this->data[$key]);
+ return $value;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Clear the cache
+ *
+ * @return void
+ */
+ public function clear() {
+ $this->data = array();
+ }
+
+ /**
+ * Moves the element from current position to end of array
+ *
+ * @param int|string $key The key
+ * @return void
+ */
+ protected function recordAccess($key) {
+ $value = $this->data[$key];
+ unset($this->data[$key]);
+ $this->data[$key] = $value;
+ }
+
+ /**
+ * Assigns a value for the specified key
+ *
+ * @see ArrayAccess::offsetSet()
+ *
+ * @param int|string $key The key to assign the value to.
+ * @param mixed $value The value to set.
+ * @return void
+ */
+ public function offsetSet($key, $value) {
+ $this->set($key, $value);
+ }
+
+ /**
+ * Get the value for specified key
+ *
+ * @see ArrayAccess::offsetGet()
+ *
+ * @param int|string $key The key to retrieve.
+ * @return mixed
+ */
+ public function offsetGet($key) {
+ return $this->get($key);
+ }
+
+ /**
+ * Unsets a key.
+ *
+ * @see ArrayAccess::offsetUnset()
+ *
+ * @param int|string $key The key to unset.
+ * @return void
+ */
+ public function offsetUnset($key) {
+ $this->remove($key);
+ }
+
+ /**
+ * Does key exist?
+ *
+ * @see ArrayAccess::offsetExists()
+ *
+ * @param int|string $key A key to check for.
+ * @return boolean
+ */
+ public function offsetExists($key) {
+ return $this->containsKey($key);
+ }
+}
diff --git a/engine/classes/ElggMemcache.php b/engine/classes/ElggMemcache.php
index d9539b9cb..91d50ab89 100644
--- a/engine/classes/ElggMemcache.php
+++ b/engine/classes/ElggMemcache.php
@@ -32,6 +32,8 @@ class ElggMemcache extends ElggSharedMemoryCache {
*
* @param string $namespace The namespace for this cache to write to -
* note, namespaces of the same name are shared!
+ *
+ * @throws ConfigurationException
*/
function __construct($namespace = 'default') {
global $CONFIG;
diff --git a/engine/classes/ElggMenuBuilder.php b/engine/classes/ElggMenuBuilder.php
index de0017599..b463143d8 100644
--- a/engine/classes/ElggMenuBuilder.php
+++ b/engine/classes/ElggMenuBuilder.php
@@ -8,6 +8,9 @@
*/
class ElggMenuBuilder {
+ /**
+ * @var ElggMenuItem[]
+ */
protected $menu = array();
protected $selected = null;
@@ -15,7 +18,7 @@ class ElggMenuBuilder {
/**
* ElggMenuBuilder constructor
*
- * @param array $menu Array of ElggMenuItem objects
+ * @param ElggMenuItem[] $menu Array of ElggMenuItem objects
*/
public function __construct(array $menu) {
$this->menu = $menu;
@@ -107,6 +110,7 @@ class ElggMenuBuilder {
$children = array();
// divide base nodes from children
foreach ($section as $menu_item) {
+ /* @var ElggMenuItem $menu_item */
$parent_name = $menu_item->getParentName();
if (!$parent_name) {
$parents[$menu_item->getName()] = $menu_item;
@@ -118,13 +122,16 @@ class ElggMenuBuilder {
// attach children to parents
$iteration = 0;
$current_gen = $parents;
+ $next_gen = null;
while (count($children) && $iteration < 5) {
foreach ($children as $index => $menu_item) {
$parent_name = $menu_item->getParentName();
if (array_key_exists($parent_name, $current_gen)) {
$next_gen[$menu_item->getName()] = $menu_item;
- $current_gen[$parent_name]->addChild($menu_item);
- $menu_item->setParent($current_gen[$parent_name]);
+ if (!in_array($menu_item, $current_gen[$parent_name]->getData('children'))) {
+ $current_gen[$parent_name]->addChild($menu_item);
+ $menu_item->setParent($current_gen[$parent_name]);
+ }
unset($children[$index]);
}
}
@@ -158,7 +165,7 @@ class ElggMenuBuilder {
// scan looking for a selected item
foreach ($this->menu as $menu_item) {
if ($menu_item->getHref()) {
- if (elgg_http_url_is_identical(full_url(), $menu_item->getHref())) {
+ if (elgg_http_url_is_identical(current_page_url(), $menu_item->getHref())) {
$menu_item->setSelected(true);
return $menu_item;
}
@@ -204,6 +211,9 @@ class ElggMenuBuilder {
// sort each section
foreach ($this->menu as $index => $section) {
+ foreach ($section as $key => $node) {
+ $section[$key]->setData('original_order', $key);
+ }
usort($section, $sort_callback);
$this->menu[$index] = $section;
@@ -213,12 +223,12 @@ class ElggMenuBuilder {
array_push($stack, $root);
while (!empty($stack)) {
$node = array_pop($stack);
+ /* @var ElggMenuItem $node */
$node->sortChildren($sort_callback);
$children = $node->getChildren();
if ($children) {
$stack = array_merge($stack, $children);
}
- $p = count($stack);
}
}
}
@@ -227,42 +237,55 @@ class ElggMenuBuilder {
/**
* Compare two menu items by their display text
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
*/
public static function compareByText($a, $b) {
- $a = $a->getText();
- $b = $b->getText();
+ $at = $a->getText();
+ $bt = $b->getText();
- return strnatcmp($a, $b);
+ $result = strnatcmp($at, $bt);
+ if ($result === 0) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $result;
}
/**
* Compare two menu items by their identifiers
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
*/
public static function compareByName($a, $b) {
- $a = $a->getName();
- $b = $b->getName();
+ $an = $a->getName();
+ $bn = $b->getName();
- return strcmp($a, $b);
+ $result = strcmp($an, $bn);
+ if ($result === 0) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $result;
}
/**
* Compare two menu items by their priority
*
- * @param ElggMenuItem $a
- * @param ElggMenuItem $b
+ * @param ElggMenuItem $a Menu item
+ * @param ElggMenuItem $b Menu item
* @return bool
+ *
+ * @todo change name to compareByPriority
*/
public static function compareByWeight($a, $b) {
- $a = $a->getWeight();
- $b = $b->getWeight();
+ $aw = $a->getWeight();
+ $bw = $b->getWeight();
- return $a > $b;
+ if ($aw == $bw) {
+ return $a->getData('original_order') - $b->getData('original_order');
+ }
+ return $aw - $bw;
}
}
diff --git a/engine/classes/ElggMenuItem.php b/engine/classes/ElggMenuItem.php
index 4bc9144d4..81ce6c099 100644
--- a/engine/classes/ElggMenuItem.php
+++ b/engine/classes/ElggMenuItem.php
@@ -542,6 +542,9 @@ class ElggMenuItem {
* @return void
*/
public function sortChildren($sortFunction) {
+ foreach ($this->data['children'] as $key => $node) {
+ $this->data['children'][$key]->data['original_order'] = $key;
+ }
usort($this->data['children'], $sortFunction);
}
diff --git a/engine/classes/ElggMetadata.php b/engine/classes/ElggMetadata.php
index 634a122e5..3a8e2d817 100644
--- a/engine/classes/ElggMetadata.php
+++ b/engine/classes/ElggMetadata.php
@@ -6,6 +6,10 @@
*
* @package Elgg.Core
* @subpackage Metadata
+ *
+ * @property string $value_type
+ * @property int $owner_guid
+ * @property string $enabled
*/
class ElggMetadata extends ElggExtender {
@@ -26,8 +30,6 @@ class ElggMetadata extends ElggExtender {
* Construct a metadata object
*
* @param mixed $id ID of metadata or a database row as stdClass object
- *
- * @return void
*/
function __construct($id = null) {
$this->initializeAttributes();
@@ -54,7 +56,7 @@ class ElggMetadata extends ElggExtender {
*
* @param int $user_guid The GUID of the user (defaults to currently logged in user)
*
- * @return true|false Depending on permissions
+ * @return bool Depending on permissions
*/
function canEdit($user_guid = 0) {
if ($entity = get_entity($this->get('entity_guid'))) {
@@ -64,9 +66,11 @@ class ElggMetadata extends ElggExtender {
}
/**
- * Save matadata object
+ * Save metadata object
+ *
+ * @return int|bool the metadata object id or true if updated
*
- * @return int the metadata object id
+ * @throws IOException
*/
function save() {
if ($this->id > 0) {
@@ -89,7 +93,13 @@ class ElggMetadata extends ElggExtender {
* @return bool
*/
function delete() {
- return elgg_delete_metastring_based_object_by_id($this->id, 'metadata');
+ $success = elgg_delete_metastring_based_object_by_id($this->id, 'metadata');
+ if ($success) {
+ // we mark unknown here because this deletes only one value
+ // under this name, and there may be others remaining.
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
@@ -99,17 +109,27 @@ class ElggMetadata extends ElggExtender {
* @since 1.8
*/
function disable() {
- return elgg_set_metastring_based_object_enabled_by_id($this->id, 'no', 'metadata');
+ $success = elgg_set_metastring_based_object_enabled_by_id($this->id, 'no', 'metadata');
+ if ($success) {
+ // we mark unknown here because this disables only one value
+ // under this name, and there may be others remaining.
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
- * Disable the metadata
+ * Enable the metadata
*
* @return bool
* @since 1.8
*/
function enable() {
- return elgg_set_metastring_based_object_enabled_by_id($this->id, 'yes', 'metadata');
+ $success = elgg_set_metastring_based_object_enabled_by_id($this->id, 'yes', 'metadata');
+ if ($success) {
+ elgg_get_metadata_cache()->markUnknown($this->entity_guid, $this->name);
+ }
+ return $success;
}
/**
diff --git a/engine/classes/ElggObject.php b/engine/classes/ElggObject.php
index b4bae6825..aeaa3ba5c 100644
--- a/engine/classes/ElggObject.php
+++ b/engine/classes/ElggObject.php
@@ -66,21 +66,18 @@ class ElggObject extends ElggEntity {
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggObject? Use a copy constructor
} else if ($guid instanceof ElggObject) {
+ // $guid is an ElggObject so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggObject constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggObject = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo remove - do not need separate exception
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggObject'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -99,37 +96,18 @@ class ElggObject extends ElggEntity {
* @throws InvalidClassException
*/
protected function load($guid) {
- // Load data from entity table if needed
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'object', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_object_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'object') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_object_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -148,8 +126,12 @@ class ElggObject extends ElggEntity {
}
// Save ElggObject-specific attributes
- return create_object_entity($this->get('guid'), $this->get('title'),
- $this->get('description'), $this->get('container_guid'));
+
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_object_entity($this->get('guid'), $this->get('title'), $this->get('description'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
/**
@@ -223,7 +205,7 @@ class ElggObject extends ElggEntity {
// must be member of group
if (elgg_instanceof($this->getContainerEntity(), 'group')) {
- if (!$this->getContainerEntity()->canWriteToContainer(get_user($user_guid))) {
+ if (!$this->getContainerEntity()->canWriteToContainer($user_guid)) {
return false;
}
}
diff --git a/engine/classes/ElggPAM.php b/engine/classes/ElggPAM.php
index 0681a909b..f07095fc1 100644
--- a/engine/classes/ElggPAM.php
+++ b/engine/classes/ElggPAM.php
@@ -53,11 +53,17 @@ class ElggPAM {
foreach ($_PAM_HANDLERS[$this->policy] as $k => $v) {
$handler = $v->handler;
+ if (!is_callable($handler)) {
+ continue;
+ }
+ /* @var callable $handler */
+
$importance = $v->importance;
try {
// Execute the handler
- $result = $handler($credentials);
+ // @todo don't assume $handler is a global function
+ $result = call_user_func($handler, $credentials);
if ($result) {
$authenticated = true;
} elseif ($result === false) {
diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php
index 8c9093834..545b9a53c 100644
--- a/engine/classes/ElggPlugin.php
+++ b/engine/classes/ElggPlugin.php
@@ -36,8 +36,9 @@ class ElggPlugin extends ElggObject {
* @warning Unlike other ElggEntity objects, you cannot null instantiate
* ElggPlugin. You must point it to an actual plugin GUID or location.
*
- * @param mixed $plugin The GUID of the ElggPlugin object or the path of
- * the plugin to load.
+ * @param mixed $plugin The GUID of the ElggPlugin object or the path of the plugin to load.
+ *
+ * @throws PluginException
*/
public function __construct($plugin) {
if (!$plugin) {
@@ -76,68 +77,8 @@ class ElggPlugin extends ElggObject {
// load the rest of the plugin
parent::__construct($existing_guid);
}
- }
- /**
- * Overridden from ElggEntity and ElggObject::load(). Core always inits plugins with
- * a query joined to the objects_entity table, so all the info is there.
- *
- * @param mixed $guid GUID of an ElggObject or the stdClass object from entities table
- *
- * @return bool
- * @throws InvalidClassException
- */
- protected function load($guid) {
-
- $expected_attributes = $this->attributes;
- unset($expected_attributes['tables_split']);
- unset($expected_attributes['tables_loaded']);
-
- // this was loaded with a full join
- $needs_loaded = false;
-
- if ($guid instanceof stdClass) {
- $row = (array) $guid;
- $missing_attributes = array_diff_key($expected_attributes, $row);
- if ($missing_attributes) {
- $needs_loaded = true;
- $old_guid = $guid;
- $guid = $row['guid'];
- } else {
- $this->attributes = $row;
- }
- } else {
- $needs_loaded = true;
- }
-
- if ($needs_loaded) {
- $entity = (array) get_entity_as_row($guid);
- $object = (array) get_object_entity_as_row($guid);
-
- if (!$entity || !$object) {
- return false;
- }
-
- $this->attributes = array_merge($this->attributes, $entity, $object);
- }
-
- $this->attributes['tables_loaded'] = 2;
-
- // Check the type
- if ($this->attributes['type'] != 'object') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
-
- // cache the entity
- if ($this->attributes['guid']) {
- cache_entity($this);
- }
-
- return true;
+ _elgg_cache_plugin_by_id($this);
}
/**
@@ -204,7 +145,7 @@ class ElggPlugin extends ElggObject {
/**
* Sets the location of this plugin.
*
- * @param path $id The path to the plugin's dir.
+ * @param string $id The path to the plugin's dir.
* @return bool
*/
public function setID($id) {
@@ -358,20 +299,15 @@ class ElggPlugin extends ElggObject {
$private_settings = get_data($q);
- if ($private_settings) {
- $return = array();
+ $return = array();
+ if ($private_settings) {
foreach ($private_settings as $setting) {
- $name = substr($setting->name, $ps_prefix_len);
- $value = $setting->value;
-
- $return[$name] = $value;
+ $return[$setting->name] = $setting->value;
}
-
- return $return;
}
- return false;
+ return $return;
}
/**
@@ -412,11 +348,14 @@ class ElggPlugin extends ElggObject {
*/
public function unsetAllSettings() {
$db_prefix = get_config('dbprefix');
- $ps_prefix = elgg_namespace_plugin_private_setting('setting', '');
+
+ $us_prefix = elgg_namespace_plugin_private_setting('user_setting', '', $this->getID());
+ $is_prefix = elgg_namespace_plugin_private_setting('internal', '', $this->getID());
$q = "DELETE FROM {$db_prefix}private_settings
WHERE entity_guid = $this->guid
- AND name NOT LIKE '$ps_prefix%'";
+ AND name NOT LIKE '$us_prefix%'
+ AND name NOT LIKE '$is_prefix%'";
return delete_data($q);
}
@@ -482,20 +421,18 @@ class ElggPlugin extends ElggObject {
$private_settings = get_data($q);
- if ($private_settings) {
- $return = array();
+ $return = array();
+ if ($private_settings) {
foreach ($private_settings as $setting) {
$name = substr($setting->name, $ps_prefix_len);
$value = $setting->value;
$return[$name] = $value;
}
-
- return $return;
}
- return false;
+ return $return;
}
/**
@@ -608,7 +545,7 @@ class ElggPlugin extends ElggObject {
* Returns if the plugin is complete, meaning has all required files
* and Elgg can read them and they make sense.
*
- * @todo bad name? This could be confused with isValid() from ElggPackage.
+ * @todo bad name? This could be confused with isValid() from ElggPluginPackage.
*
* @return bool
*/
@@ -659,6 +596,8 @@ class ElggPlugin extends ElggObject {
* Checks if this plugin can be activated on the current
* Elgg installation.
*
+ * @todo remove $site_guid param or implement it
+ *
* @param mixed $site_guid Optional site guid
* @return bool
*/
@@ -709,8 +648,8 @@ class ElggPlugin extends ElggObject {
// Note: this will not run re-run the init hooks!
if ($return) {
if ($this->canReadFile('activate.php')) {
- $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES
- | ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
+ $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES |
+ ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
$this->start($flags);
diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php
index 7e79c15c8..6912c2b08 100644
--- a/engine/classes/ElggPluginManifest.php
+++ b/engine/classes/ElggPluginManifest.php
@@ -130,7 +130,7 @@ class ElggPluginManifest {
}
// see if we need to construct the xml object.
- if ($manifest instanceof XmlElement) {
+ if ($manifest instanceof ElggXMLElement) {
$manifest_obj = $manifest;
} else {
if (substr(trim($manifest), 0, 1) == '<') {
@@ -264,7 +264,7 @@ class ElggPluginManifest {
/**
* Returns the license
*
- * @return sting
+ * @return string
*/
public function getLicense() {
// license vs licence. Use license.
@@ -276,6 +276,32 @@ class ElggPluginManifest {
}
}
+ /**
+ * Returns the repository url
+ *
+ * @return string
+ */
+ public function getRepositoryURL() {
+ return $this->parser->getAttribute('repository');
+ }
+
+ /**
+ * Returns the bug tracker page
+ *
+ * @return string
+ */
+ public function getBugTrackerURL() {
+ return $this->parser->getAttribute('bugtracker');
+ }
+
+ /**
+ * Returns the donations page
+ *
+ * @return string
+ */
+ public function getDonationsPageURL() {
+ return $this->parser->getAttribute('donations');
+ }
/**
* Returns the version of the plugin.
@@ -456,7 +482,7 @@ class ElggPluginManifest {
* Normalizes a dependency array using the defined structs.
* Can be used with either requires or suggests.
*
- * @param array $dep An dependency array.
+ * @param array $dep A dependency array.
* @return array The normalized deps array.
*/
private function normalizeDep($dep) {
@@ -500,8 +526,10 @@ class ElggPluginManifest {
break;
}
}
-
break;
+ default:
+ // unrecognized so we just return the raw dependency
+ return $dep;
}
$normalized_dep = $this->buildStruct($struct, $dep);
diff --git a/engine/classes/ElggPluginManifestParser.php b/engine/classes/ElggPluginManifestParser.php
index b0480d4d8..af152b561 100644
--- a/engine/classes/ElggPluginManifestParser.php
+++ b/engine/classes/ElggPluginManifestParser.php
@@ -53,10 +53,10 @@ abstract class ElggPluginManifestParser {
/**
* Loads the manifest XML to be parsed.
*
- * @param XmlElement $xml The Manifest XML object to be parsed
- * @param object $caller The object calling this parser.
+ * @param ElggXmlElement $xml The Manifest XML object to be parsed
+ * @param object $caller The object calling this parser.
*/
- public function __construct(XmlElement $xml, $caller) {
+ public function __construct(ElggXMLElement $xml, $caller) {
$this->manifestObject = $xml;
$this->caller = $caller;
}
diff --git a/engine/classes/ElggPluginManifestParser18.php b/engine/classes/ElggPluginManifestParser18.php
index 554e28c02..3b753f17b 100644
--- a/engine/classes/ElggPluginManifestParser18.php
+++ b/engine/classes/ElggPluginManifestParser18.php
@@ -13,10 +13,10 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
* @var array
*/
protected $validAttributes = array(
- 'name', 'author', 'version', 'blurb', 'description',
- 'website', 'copyright', 'license', 'requires', 'suggests',
- 'screenshot', 'category', 'conflicts', 'provides',
- 'activate_on_install'
+ 'name', 'author', 'version', 'blurb', 'description','website',
+ 'repository', 'bugtracker', 'donations', 'copyright', 'license',
+ 'requires', 'suggests', 'conflicts', 'provides',
+ 'screenshot', 'category', 'activate_on_install'
);
/**
@@ -46,6 +46,9 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
case 'website':
case 'copyright':
case 'license':
+ case 'repository':
+ case 'bugtracker':
+ case 'donations':
case 'activate_on_install':
$parsed[$element->name] = $element->content;
break;
diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php
index 2dc4bdb3d..37eb4bf4d 100644
--- a/engine/classes/ElggPluginPackage.php
+++ b/engine/classes/ElggPluginPackage.php
@@ -100,7 +100,6 @@ class ElggPluginPackage {
* @param string $plugin The ID (directory name) or full path of the plugin.
* @param bool $validate Automatically run isValid()?
*
- * @return true
* @throws PluginException
*/
public function __construct($plugin, $validate = true) {
@@ -213,6 +212,7 @@ class ElggPluginPackage {
return false;
}
+ // Note: $conflicts and $requires are not unused. They're called dynamically
$conflicts = $this->getManifest()->getConflicts();
$requires = $this->getManifest()->getRequires();
$provides = $this->getManifest()->getProvides();
@@ -294,6 +294,7 @@ class ElggPluginPackage {
return true;
}
+ $this->errorMsg = elgg_echo('unknown_error');
return false;
}
@@ -330,8 +331,10 @@ class ElggPluginPackage {
* @return bool|array
*/
public function checkDependencies($full_report = false) {
+ // Note: $conflicts and $requires are not unused. They're called dynamically
$requires = $this->getManifest()->getRequires();
$conflicts = $this->getManifest()->getConflicts();
+
$enabled_plugins = elgg_get_plugins('active');
$this_id = $this->getID();
$report = array();
@@ -368,6 +371,7 @@ class ElggPluginPackage {
$check_types = array('requires', 'conflicts');
if ($full_report) {
+ // Note: $suggests is not unused. It's called dynamically
$suggests = $this->getManifest()->getSuggests();
$check_types[] = 'suggests';
}
diff --git a/engine/classes/ElggPriorityList.php b/engine/classes/ElggPriorityList.php
index 8a3b836a8..416df885c 100644
--- a/engine/classes/ElggPriorityList.php
+++ b/engine/classes/ElggPriorityList.php
@@ -89,7 +89,7 @@
* return true;
* }
*
- * @package Elgg.Core
+ * @package Elgg.Core
* @subpackage Helpers
*/
class ElggPriorityList
@@ -126,7 +126,9 @@ class ElggPriorityList
* maintains its priority and the new element is to the next available
* slot, taking into consideration all previously registered elements.
* Negative elements are accepted.
+ * @param bool $exact unused
* @return int The priority of the added element.
+ * @todo remove $exact or implement it. Note we use variable name strict below.
*/
public function add($element, $priority = null, $exact = false) {
if ($priority !== null && !is_numeric($priority)) {
@@ -146,7 +148,8 @@ class ElggPriorityList
* @warning The element must have the same attributes / values. If using $strict, it must have
* the same types. array(10) will fail in strict against array('10') (str vs int).
*
- * @param type $element
+ * @param mixed $element The element to remove from the list
+ * @param bool $strict Whether to check the type of the element match
* @return bool
*/
public function remove($element, $strict = false) {
@@ -162,10 +165,10 @@ class ElggPriorityList
/**
* Move an existing element to a new priority.
*
- * @param mixed $current_priority
- * @param int $new_priority
- *
- * @return int The new priority.
+ * @param mixed $element The element to move
+ * @param int $new_priority The new priority for the element
+ * @param bool $strict Whether to check the type of the element match
+ * @return bool
*/
public function move($element, $new_priority, $strict = false) {
$new_priority = (int) $new_priority;
@@ -200,12 +203,12 @@ class ElggPriorityList
*
* If no user function is provided the elements are sorted by priority registered.
*
- * The callback function should accept the array of elements as the first argument and should
- * return a sorted array.
+ * The callback function should accept the array of elements as the first
+ * argument and should return a sorted array.
*
* This function can be called multiple times.
*
- * @param type $callback
+ * @param callback $callback The callback for sorting. Numeric sorting is the default.
* @return bool
*/
public function sort($callback = null) {
@@ -268,7 +271,7 @@ class ElggPriorityList
/**
* Returns the element at $priority.
*
- * @param int $priority
+ * @param int $priority The priority
* @return mixed The element or false on fail.
*/
public function getElement($priority) {
@@ -351,7 +354,12 @@ class ElggPriorityList
return ($key !== NULL && $key !== FALSE);
}
- // Countable
+ /**
+ * Countable interface
+ *
+ * @see Countable::count()
+ * @return int
+ */
public function count() {
return count($this->elements);
}
diff --git a/engine/classes/ElggRelationship.php b/engine/classes/ElggRelationship.php
index efc0f7eff..d2e88882a 100644
--- a/engine/classes/ElggRelationship.php
+++ b/engine/classes/ElggRelationship.php
@@ -71,6 +71,7 @@ class ElggRelationship extends ElggData implements
* Save the relationship
*
* @return int the relationship id
+ * @throws IOException
*/
public function save() {
if ($this->id > 0) {
@@ -145,7 +146,7 @@ class ElggRelationship extends ElggData implements
* @param ODD $data ODD data
* @return bool
- * @throws ImportException
+ * @throws ImportException|InvalidParameterException
*/
public function import(ODD $data) {
if (!($data instanceof ODDRelationship)) {
@@ -179,6 +180,8 @@ class ElggRelationship extends ElggData implements
return true;
}
}
+
+ return false;
}
// SYSTEM LOG INTERFACE ////////////////////////////////////////////////////////////
diff --git a/engine/classes/ElggSession.php b/engine/classes/ElggSession.php
index 13a33736c..9750f063e 100644
--- a/engine/classes/ElggSession.php
+++ b/engine/classes/ElggSession.php
@@ -54,7 +54,7 @@ class ElggSession implements ArrayAccess {
*
* @param mixed $key Name
*
- * @return void
+ * @return mixed
*/
function offsetGet($key) {
if (!ElggSession::$__localcache) {
@@ -98,7 +98,7 @@ class ElggSession implements ArrayAccess {
*
* @param int $offset Offset
*
- * @return int
+ * @return bool
*/
function offsetExists($offset) {
if (isset(ElggSession::$__localcache[$offset])) {
@@ -112,6 +112,8 @@ class ElggSession implements ArrayAccess {
if ($this->offsetGet($offset)) {
return true;
}
+
+ return false;
}
@@ -132,10 +134,10 @@ class ElggSession implements ArrayAccess {
* @param string $key Name
* @param mixed $value Value
*
- * @return mixed
+ * @return void
*/
function set($key, $value) {
- return $this->offsetSet($key, $value);
+ $this->offsetSet($key, $value);
}
/**
@@ -143,9 +145,9 @@ class ElggSession implements ArrayAccess {
*
* @param string $key Name
*
- * @return bool
+ * @return void
*/
function del($key) {
- return $this->offsetUnset($key);
+ $this->offsetUnset($key);
}
}
diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php
index 401939005..dd996fe98 100644
--- a/engine/classes/ElggSite.php
+++ b/engine/classes/ElggSite.php
@@ -77,28 +77,24 @@ class ElggSite extends ElggEntity {
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // Is $guid is an ElggSite? Use a copy constructor
} else if ($guid instanceof ElggSite) {
+ // $guid is an ElggSite so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggSite constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggSite = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo remove and just use else clause
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggSite'));
-
- // See if this is a URL
} else if (strpos($guid, "http") !== false) {
+ // url so retrieve by url
$guid = get_site_by_url($guid);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -117,37 +113,18 @@ class ElggSite extends ElggEntity {
* @throws InvalidClassException
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'site', $this->attributes);
+ $attr_loader->requires_access_control = !($this instanceof ElggPlugin);
+ $attr_loader->secondary_loader = 'get_site_entity_as_row';
- // Check the type
- if ($this->attributes['type'] != 'site') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
-
- // Load missing data
- $row = get_site_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -381,6 +358,11 @@ class ElggSite extends ElggEntity {
public function checkWalledGarden() {
global $CONFIG;
+ // command line calls should not invoke the walled garden check
+ if (PHP_SAPI === 'cli') {
+ return;
+ }
+
if ($CONFIG->walled_garden) {
if ($CONFIG->default_access == ACCESS_PUBLIC) {
$CONFIG->default_access = ACCESS_LOGGED_IN;
@@ -395,7 +377,9 @@ class ElggSite extends ElggEntity {
elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1);
if (!$this->isPublicPage()) {
- $_SESSION['last_forward_from'] = current_page_url();
+ if (!elgg_is_xhr()) {
+ $_SESSION['last_forward_from'] = current_page_url();
+ }
register_error(elgg_echo('loggedinrequired'));
forward();
}
@@ -457,8 +441,6 @@ class ElggSite extends ElggEntity {
// include a hook for plugin authors to include public pages
$plugins = elgg_trigger_plugin_hook('public_pages', 'walled_garden', NULL, array());
- // lookup admin-specific public pages
-
// allow public pages
foreach (array_merge($defaults, $plugins) as $public) {
$pattern = "`^{$CONFIG->url}$public/*$`i";
diff --git a/engine/classes/ElggStaticVariableCache.php b/engine/classes/ElggStaticVariableCache.php
index 787d35a32..9c14fdfba 100644
--- a/engine/classes/ElggStaticVariableCache.php
+++ b/engine/classes/ElggStaticVariableCache.php
@@ -11,7 +11,7 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
/**
* The cache.
*
- * @var unknown_type
+ * @var array
*/
private static $__cache;
@@ -21,8 +21,8 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
* This function creates a variable cache in a static variable in
* memory, optionally with a given namespace (to avoid overlap).
*
- * @param string $namespace The namespace for this cache to write to
- * note, namespaces of the same name are shared!
+ * @param string $namespace The namespace for this cache to write to.
+ * @warning namespaces of the same name are shared!
*/
function __construct($namespace = 'default') {
$this->setNamespace($namespace);
@@ -80,7 +80,7 @@ class ElggStaticVariableCache extends ElggSharedMemoryCache {
}
/**
- * This was probably meant to delete everything?
+ * Clears the cache for a particular namespace
*
* @return void
*/
diff --git a/engine/classes/ElggTranslit.php b/engine/classes/ElggTranslit.php
index 676c59fc8..b4bf87797 100644
--- a/engine/classes/ElggTranslit.php
+++ b/engine/classes/ElggTranslit.php
@@ -20,11 +20,10 @@
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*
- * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- *
- * @author Steve Clay <steve@mrclay.org>
- * @package Elgg.Core
+ * @package Elgg.Core
+ * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
+ * @author Jonathan H. Wage <jonwage@gmail.com>
+ * @author Steve Clay <steve@mrclay.org>
*
* @access private Plugin authors should not use this directly
*/
@@ -32,8 +31,9 @@ class ElggTranslit {
/**
* Create a version of a string for embedding in a URL
- * @param string $string a UTF-8 string
- * @param string $separator
+ *
+ * @param string $string A UTF-8 string
+ * @param string $separator The character to separate words with
* @return string
*/
static public function urlize($string, $separator = '-') {
@@ -49,24 +49,29 @@ class ElggTranslit {
// Internationalization, AND 日本語!
$string = self::transliterateAscii($string);
- // more translation
+ // allow HTML tags in titles
+ $string = preg_replace('~<([a-zA-Z][^>]*)>~', ' $1 ', $string);
+
+ // more substitutions
+ // @todo put these somewhere else
$string = strtr($string, array(
- // Euro/GBP
- "\xE2\x82\xAC" /* € */ => 'E', "\xC2\xA3" /* £ */ => 'GBP',
+ // currency
+ "\xE2\x82\xAC" /* € */ => ' E ',
+ "\xC2\xA3" /* £ */ => ' GBP ',
));
// remove all ASCII except 0-9a-zA-Z, hyphen, underscore, and whitespace
// note: "x" modifier did not work with this pattern.
$string = preg_replace('~['
- . '\x00-\x08' # control chars
- . '\x0b\x0c' # vert tab, form feed
- . '\x0e-\x1f' # control chars
- . '\x21-\x2c' # ! ... ,
- . '\x2e\x2f' # . slash
- . '\x3a-\x40' # : ... @
- . '\x5b-\x5e' # [ ... ^
- . '\x60' # `
- . '\x7b-\x7f' # { ... DEL
+ . '\x00-\x08' // control chars
+ . '\x0b\x0c' // vert tab, form feed
+ . '\x0e-\x1f' // control chars
+ . '\x21-\x2c' // ! ... ,
+ . '\x2e\x2f' // . slash
+ . '\x3a-\x40' // : ... @
+ . '\x5b-\x5e' // [ ... ^
+ . '\x60' // `
+ . '\x7b-\x7f' // { ... DEL
. ']~', '', $string);
$string = strtr($string, '', '');
@@ -80,10 +85,10 @@ class ElggTranslit {
// note: we cannot use [^0-9a-zA-Z] because that matches multibyte chars.
// note: "x" modifier did not work with this pattern.
$pattern = '~['
- . '\x00-\x2f' # controls ... slash
- . '\x3a-\x40' # : ... @
- . '\x5b-\x60' # [ ... `
- . '\x7b-\x7f' # { ... DEL
+ . '\x00-\x2f' // controls ... slash
+ . '\x3a-\x40' // : ... @
+ . '\x5b-\x60' // [ ... `
+ . '\x7b-\x7f' // { ... DEL
. ']+~x';
// ['internationalization', 'and', '日本語']
@@ -98,6 +103,7 @@ class ElggTranslit {
/**
* Transliterate Western multibyte chars to ASCII
+ *
* @param string $utf8 a UTF-8 string
* @return string
*/
@@ -247,6 +253,7 @@ class ElggTranslit {
/**
* Tests that "normalizer_normalize" exists and works
+ *
* @return bool
*/
static public function hasNormalizerSupport() {
@@ -255,7 +262,7 @@ class ElggTranslit {
$form_c = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
$form_d = "A\xCC\x8A"; // A followed by 'COMBINING RING ABOVE' (U+030A)
$ret = (function_exists('normalizer_normalize')
- && $form_c === normalizer_normalize($form_d));
+ && $form_c === normalizer_normalize($form_d));
}
return $ret;
}
diff --git a/engine/classes/ElggUser.php b/engine/classes/ElggUser.php
index d7bb89265..6163f9b62 100644
--- a/engine/classes/ElggUser.php
+++ b/engine/classes/ElggUser.php
@@ -40,6 +40,9 @@ class ElggUser extends ElggEntity
$this->attributes['code'] = NULL;
$this->attributes['banned'] = "no";
$this->attributes['admin'] = 'no';
+ $this->attributes['prev_last_action'] = NULL;
+ $this->attributes['last_login'] = NULL;
+ $this->attributes['prev_last_login'] = NULL;
$this->attributes['tables_split'] = 2;
}
@@ -65,30 +68,26 @@ class ElggUser extends ElggEntity
$msg = elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid->guid));
throw new IOException($msg);
}
-
- // See if this is a username
} else if (is_string($guid)) {
+ // $guid is a username
$user = get_user_by_username($guid);
if ($user) {
foreach ($user->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
}
-
- // Is $guid is an ElggUser? Use a copy constructor
} else if ($guid instanceof ElggUser) {
+ // $guid is an ElggUser so this is a copy constructor
elgg_deprecated_notice('This type of usage of the ElggUser constructor was deprecated. Please use the clone method.', 1.7);
foreach ($guid->attributes as $key => $value) {
$this->attributes[$key] = $value;
}
-
- // Is this is an ElggEntity but not an ElggUser = ERROR!
} else if ($guid instanceof ElggEntity) {
+ // @todo why have a special case here
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonElggUser'));
-
- // Is it a GUID
} else if (is_numeric($guid)) {
+ // $guid is a GUID so load entity
if (!$this->load($guid)) {
throw new IOException(elgg_echo('IOException:FailedToLoadGUID', array(get_class(), $guid)));
}
@@ -106,37 +105,17 @@ class ElggUser extends ElggEntity
* @return bool
*/
protected function load($guid) {
- // Test to see if we have the generic stuff
- if (!parent::load($guid)) {
- return false;
- }
-
- // Only work with GUID from here
- if ($guid instanceof stdClass) {
- $guid = $guid->guid;
- }
-
- // Check the type
- if ($this->attributes['type'] != 'user') {
- $msg = elgg_echo('InvalidClassException:NotValidElggStar', array($guid, get_class()));
- throw new InvalidClassException($msg);
- }
+ $attr_loader = new ElggAttributeLoader(get_class(), 'user', $this->attributes);
+ $attr_loader->secondary_loader = 'get_user_entity_as_row';
- // Load missing data
- $row = get_user_entity_as_row($guid);
- if (($row) && (!$this->isFullyLoaded())) {
- // If $row isn't a cached copy then increment the counter
- $this->attributes['tables_loaded']++;
- }
-
- // Now put these into the attributes array as core values
- $objarray = (array) $row;
- foreach ($objarray as $key => $value) {
- $this->attributes[$key] = $value;
+ $attrs = $attr_loader->getRequiredAttributes($guid);
+ if (!$attrs) {
+ return false;
}
- // guid needs to be an int http://trac.elgg.org/ticket/4111
- $this->attributes['guid'] = (int)$this->attributes['guid'];
+ $this->attributes = $attrs;
+ $this->attributes['tables_loaded'] = 2;
+ _elgg_cache_entity($this);
return true;
}
@@ -153,9 +132,13 @@ class ElggUser extends ElggEntity
}
// Now save specific stuff
- return create_user_entity($this->get('guid'), $this->get('name'), $this->get('username'),
+ _elgg_disable_caching_for_entity($this->guid);
+ $ret = create_user_entity($this->get('guid'), $this->get('name'), $this->get('username'),
$this->get('password'), $this->get('salt'), $this->get('email'), $this->get('language'),
$this->get('code'));
+ _elgg_enable_caching_for_entity($this->guid);
+
+ return $ret;
}
/**
diff --git a/engine/classes/ElggVolatileMetadataCache.php b/engine/classes/ElggVolatileMetadataCache.php
new file mode 100644
index 000000000..4acda7cee
--- /dev/null
+++ b/engine/classes/ElggVolatileMetadataCache.php
@@ -0,0 +1,355 @@
+<?php
+/**
+ * ElggVolatileMetadataCache
+ * In memory cache of known metadata values stored by entity.
+ *
+ * @package Elgg.Core
+ * @subpackage Cache
+ *
+ * @access private
+ */
+class ElggVolatileMetadataCache {
+
+ /**
+ * The cached values (or null for known to be empty). If the portion of the cache
+ * is synchronized, missing values are assumed to indicate that values do not
+ * exist in storage, otherwise, we don't know what's there.
+ *
+ * @var array
+ */
+ protected $values = array();
+
+ /**
+ * Does the cache know that it contains all names fetch-able from storage?
+ * The keys are entity GUIDs and either the value exists (true) or it's not set.
+ *
+ * @var array
+ */
+ protected $isSynchronized = array();
+
+ /**
+ * @var null|bool
+ */
+ protected $ignoreAccess = null;
+
+ /**
+ * Cache metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param array $values The metadata values to cache
+ * @return void
+ */
+ public function saveAll($entity_guid, array $values) {
+ if (!$this->getIgnoreAccess()) {
+ $this->values[$entity_guid] = $values;
+ $this->isSynchronized[$entity_guid] = true;
+ }
+ }
+
+ /**
+ * Get the metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return array
+ */
+ public function loadAll($entity_guid) {
+ if (isset($this->values[$entity_guid])) {
+ return $this->values[$entity_guid];
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * Declare that there may be fetch-able metadata names in storage that this
+ * cache doesn't know about
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return void
+ */
+ public function markOutOfSync($entity_guid) {
+ unset($this->isSynchronized[$entity_guid]);
+ }
+
+ /**
+ * Have all the metadata for this entity been cached?
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return bool
+ */
+ public function isSynchronized($entity_guid) {
+ return isset($this->isSynchronized[$entity_guid]);
+ }
+
+ /**
+ * Cache a piece of metadata
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @param array|int|string|null $value The metadata value. null means it is
+ * known that there is no fetch-able
+ * metadata under this name
+ * @param bool $allow_multiple Can the metadata be an array
+ * @return void
+ */
+ public function save($entity_guid, $name, $value, $allow_multiple = false) {
+ if ($this->getIgnoreAccess()) {
+ // we don't know if what gets saves here will be available to user once
+ // access control returns, hence it's best to forget :/
+ $this->markUnknown($entity_guid, $name);
+ } else {
+ if ($allow_multiple) {
+ if ($this->isKnown($entity_guid, $name)) {
+ $existing = $this->load($entity_guid, $name);
+ if ($existing !== null) {
+ $existing = (array) $existing;
+ $existing[] = $value;
+ $value = $existing;
+ }
+ } else {
+ // we don't know whether there are unknown values, so it's
+ // safest to leave that assumption
+ $this->markUnknown($entity_guid, $name);
+ return;
+ }
+ }
+ $this->values[$entity_guid][$name] = $value;
+ }
+ }
+
+ /**
+ * Warning: You should always call isKnown() beforehand to verify that this
+ * function's return value should be trusted (otherwise a null return value
+ * is ambiguous).
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return array|string|int|null null = value does not exist
+ */
+ public function load($entity_guid, $name) {
+ if (isset($this->values[$entity_guid]) && array_key_exists($name, $this->values[$entity_guid])) {
+ return $this->values[$entity_guid][$name];
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Forget about this metadata entry. We don't want to try to guess what the
+ * next fetch from storage will return
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return void
+ */
+ public function markUnknown($entity_guid, $name) {
+ unset($this->values[$entity_guid][$name]);
+ $this->markOutOfSync($entity_guid);
+ }
+
+ /**
+ * If true, load() will return an accurate value for this name
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return bool
+ */
+ public function isKnown($entity_guid, $name) {
+ if (isset($this->isSynchronized[$entity_guid])) {
+ return true;
+ } else {
+ return (isset($this->values[$entity_guid]) && array_key_exists($name, $this->values[$entity_guid]));
+ }
+
+ }
+
+ /**
+ * Declare that metadata under this name is known to be not fetch-able from storage
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @param string $name The metadata name
+ * @return array
+ */
+ public function markEmpty($entity_guid, $name) {
+ $this->values[$entity_guid][$name] = null;
+ }
+
+ /**
+ * Forget about all metadata for an entity
+ *
+ * @param int $entity_guid The GUID of the entity
+ * @return void
+ */
+ public function clear($entity_guid) {
+ $this->values[$entity_guid] = array();
+ $this->markOutOfSync($entity_guid);
+ }
+
+ /**
+ * Clear entire cache and mark all entities as out of sync
+ *
+ * @return void
+ */
+ public function flush() {
+ $this->values = array();
+ $this->isSynchronized = array();
+ }
+
+ /**
+ * Use this value instead of calling elgg_get_ignore_access(). By default that
+ * function will be called.
+ *
+ * This setting makes this component a little more loosely-coupled.
+ *
+ * @param bool $ignore Whether to ignore access or not
+ * @return void
+ */
+ public function setIgnoreAccess($ignore) {
+ $this->ignoreAccess = (bool) $ignore;
+ }
+
+ /**
+ * Tell the cache to call elgg_get_ignore_access() to determing access status.
+ *
+ * @return void
+ */
+ public function unsetIgnoreAccess() {
+ $this->ignoreAccess = null;
+ }
+
+ /**
+ * Get the ignore access value
+ *
+ * @return bool
+ */
+ protected function getIgnoreAccess() {
+ if (null === $this->ignoreAccess) {
+ return elgg_get_ignore_access();
+ } else {
+ return $this->ignoreAccess;
+ }
+ }
+
+ /**
+ * Invalidate based on options passed to the global *_metadata functions
+ *
+ * @param string $action Action performed on metadata. "delete", "disable", or "enable"
+ * @param array $options Options passed to elgg_(delete|disable|enable)_metadata
+ * "guid" if given, invalidation will be limited to this entity
+ * "metadata_name" if given, invalidation will be limited to metadata with this name
+ * @return void
+ */
+ public function invalidateByOptions($action, array $options) {
+ // remove as little as possible, optimizing for common cases
+ if (empty($options['guid'])) {
+ // safest to clear everything unless we want to make this even more complex :(
+ $this->flush();
+ } else {
+ if (empty($options['metadata_name'])) {
+ // safest to clear the whole entity
+ $this->clear($options['guid']);
+ } else {
+ switch ($action) {
+ case 'delete':
+ $this->markEmpty($options['guid'], $options['metadata_name']);
+ break;
+ default:
+ $this->markUnknown($options['guid'], $options['metadata_name']);
+ }
+ }
+ }
+ }
+
+ /**
+ * Populate the cache from a set of entities
+ *
+ * @param int|array $guids Array of or single GUIDs
+ * @return void
+ */
+ public function populateFromEntities($guids) {
+ if (empty($guids)) {
+ return;
+ }
+ if (!is_array($guids)) {
+ $guids = array($guids);
+ }
+ $guids = array_unique($guids);
+
+ // could be useful at some point in future
+ //$guids = $this->filterMetadataHeavyEntities($guids);
+
+ $db_prefix = elgg_get_config('dbprefix');
+ $options = array(
+ 'guids' => $guids,
+ 'limit' => 0,
+ 'callback' => false,
+ 'joins' => array(
+ "JOIN {$db_prefix}metastrings v ON n_table.value_id = v.id",
+ "JOIN {$db_prefix}metastrings n ON n_table.name_id = n.id",
+ ),
+ 'selects' => array('n.string AS name', 'v.string AS value'),
+ 'order_by' => 'n_table.entity_guid, n_table.time_created ASC',
+
+ // @todo don't know why this is necessary
+ 'wheres' => array(get_access_sql_suffix('n_table')),
+ );
+ $data = elgg_get_metadata($options);
+
+ // build up metadata for each entity, save when GUID changes (or data ends)
+ $last_guid = null;
+ $metadata = array();
+ $last_row_idx = count($data) - 1;
+ foreach ($data as $i => $row) {
+ $name = $row->name;
+ $value = ($row->value_type === 'text') ? $row->value : (int) $row->value;
+ $guid = $row->entity_guid;
+ if ($guid !== $last_guid) {
+ if ($last_guid) {
+ $this->saveAll($last_guid, $metadata);
+ }
+ $metadata = array();
+ }
+ if (isset($metadata[$name])) {
+ $metadata[$name] = (array) $metadata[$name];
+ $metadata[$name][] = $value;
+ } else {
+ $metadata[$name] = $value;
+ }
+ if (($i == $last_row_idx)) {
+ $this->saveAll($guid, $metadata);
+ }
+ $last_guid = $guid;
+ }
+ }
+
+ /**
+ * Filter out entities whose concatenated metadata values (INTs casted as string)
+ * exceed a threshold in characters. This could be used to avoid overpopulating the
+ * cache if RAM usage becomes an issue.
+ *
+ * @param array $guids GUIDs of entities to examine
+ * @param int $limit Limit in characters of all metadata (with ints casted to strings)
+ * @return array
+ */
+ public function filterMetadataHeavyEntities(array $guids, $limit = 1024000) {
+ $db_prefix = elgg_get_config('dbprefix');
+
+ $options = array(
+ 'guids' => $guids,
+ 'limit' => 0,
+ 'callback' => false,
+ 'joins' => "JOIN {$db_prefix}metastrings v ON n_table.value_id = v.id",
+ 'selects' => array('SUM(LENGTH(v.string)) AS bytes'),
+ 'order_by' => 'n_table.entity_guid, n_table.time_created ASC',
+ 'group_by' => 'n_table.entity_guid',
+ );
+ $data = elgg_get_metadata($options);
+ // don't cache if metadata for entity is over 10MB (or rolled INT)
+ foreach ($data as $row) {
+ if ($row->bytes > $limit || $row->bytes < 0) {
+ array_splice($guids, array_search($row->entity_guid, $guids), 1);
+ }
+ }
+ return $guids;
+ }
+}
diff --git a/engine/classes/ElggWidget.php b/engine/classes/ElggWidget.php
index 99708f66a..66191bf47 100644
--- a/engine/classes/ElggWidget.php
+++ b/engine/classes/ElggWidget.php
@@ -7,6 +7,11 @@
*
* @package Elgg.Core
* @subpackage Widgets
+ *
+ * @property-read string $handler internal, do not use
+ * @property-read string $column internal, do not use
+ * @property-read string $order internal, do not use
+ * @property-read string $context internal, do not use
*/
class ElggWidget extends ElggObject {
@@ -141,10 +146,15 @@ class ElggWidget extends ElggObject {
}
}
+ $bottom_rank = count($widgets);
+ if ($column == $this->column) {
+ $bottom_rank--;
+ }
+
if ($rank == 0) {
// top of the column
$this->order = reset($widgets)->order - 10;
- } elseif ($rank == (count($widgets) - 1)) {
+ } elseif ($rank == $bottom_rank) {
// bottom of the column of active widgets
$this->order = end($widgets)->order + 10;
} else {
diff --git a/engine/classes/ElggXMLElement.php b/engine/classes/ElggXMLElement.php
new file mode 100644
index 000000000..cbd3fc5ce
--- /dev/null
+++ b/engine/classes/ElggXMLElement.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * A parser for XML that uses SimpleXMLElement
+ *
+ * @package Elgg.Core
+ * @subpackage XML
+ */
+class ElggXMLElement {
+ /**
+ * @var SimpleXMLElement
+ */
+ private $_element;
+
+ /**
+ * Creates an ElggXMLParser from a string or existing SimpleXMLElement
+ *
+ * @param string|SimpleXMLElement $xml The XML to parse
+ */
+ public function __construct($xml) {
+ if ($xml instanceof SimpleXMLElement) {
+ $this->_element = $xml;
+ } else {
+ // do not load entities
+ $disable_load_entities = libxml_disable_entity_loader(true);
+
+ $this->_element = new SimpleXMLElement($xml);
+
+ libxml_disable_entity_loader($disable_load_entities);
+ }
+ }
+
+ /**
+ * @return string The name of the element
+ */
+ public function getName() {
+ return $this->_element->getName();
+ }
+
+ /**
+ * @return string[] The attributes
+ */
+ public function getAttributes() {
+ //include namespace declarations as attributes
+ $xmlnsRaw = $this->_element->getNamespaces();
+ $xmlns = array();
+ foreach ($xmlnsRaw as $key => $val) {
+ $label = 'xmlns' . ($key ? ":$key" : $key);
+ $xmlns[$label] = $val;
+ }
+ //get attributes and merge with namespaces
+ $attrRaw = $this->_element->attributes();
+ $attr = array();
+ foreach ($attrRaw as $key => $val) {
+ $attr[$key] = $val;
+ }
+ $attr = array_merge((array) $xmlns, (array) $attr);
+ $result = array();
+ foreach ($attr as $key => $val) {
+ $result[$key] = (string) $val;
+ }
+ return $result;
+ }
+
+ /**
+ * @return string CData
+ */
+ public function getContent() {
+ return (string) $this->_element;
+ }
+
+ /**
+ * @return ElggXMLElement[] Child elements
+ */
+ public function getChildren() {
+ $children = $this->_element->children();
+ $result = array();
+ foreach ($children as $val) {
+ $result[] = new ElggXMLElement($val);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Override ->
+ *
+ * @param string $name Property name
+ * @return mixed
+ */
+ function __get($name) {
+ switch ($name) {
+ case 'name':
+ return $this->getName();
+ break;
+ case 'attributes':
+ return $this->getAttributes();
+ break;
+ case 'content':
+ return $this->getContent();
+ break;
+ case 'children':
+ return $this->getChildren();
+ break;
+ }
+ return null;
+ }
+
+ /**
+ * Override isset
+ *
+ * @param string $name Property name
+ * @return boolean
+ */
+ function __isset($name) {
+ switch ($name) {
+ case 'name':
+ return $this->getName() !== null;
+ break;
+ case 'attributes':
+ return $this->getAttributes() !== null;
+ break;
+ case 'content':
+ return $this->getContent() !== null;
+ break;
+ case 'children':
+ return $this->getChildren() !== null;
+ break;
+ }
+ return false;
+ }
+}
diff --git a/engine/classes/IncompleteEntityException.php b/engine/classes/IncompleteEntityException.php
new file mode 100644
index 000000000..8c86edcc6
--- /dev/null
+++ b/engine/classes/IncompleteEntityException.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * IncompleteEntityException
+ * Thrown when constructing an entity that is missing its secondary entity table
+ *
+ * @package Elgg.Core
+ * @subpackage Exception
+ * @access private
+ */
+class IncompleteEntityException extends Exception {}
diff --git a/engine/classes/ODDMetaData.php b/engine/classes/ODDMetaData.php
index 58862e0fb..09b653582 100644
--- a/engine/classes/ODDMetaData.php
+++ b/engine/classes/ODDMetaData.php
@@ -10,12 +10,12 @@ class ODDMetaData extends ODD {
/**
* New ODD metadata
*
- * @param unknown_type $uuid Unique ID
- * @param unknown_type $entity_uuid Another unique ID
- * @param unknown_type $name Name
- * @param unknown_type $value Value
- * @param unknown_type $type Type
- * @param unknown_type $owner_uuid Owner ID
+ * @param string $uuid Unique ID
+ * @param string $entity_uuid Another unique ID
+ * @param string $name Name
+ * @param string $value Value
+ * @param string $type Type
+ * @param string $owner_uuid Owner ID
*/
function __construct($uuid, $entity_uuid, $name, $value, $type = "", $owner_uuid = "") {
parent::__construct();
@@ -31,7 +31,7 @@ class ODDMetaData extends ODD {
/**
* Returns 'metadata'
*
- * @return 'metadata'
+ * @return string 'metadata'
*/
protected function getTagName() {
return "metadata";
diff --git a/engine/classes/ODDRelationship.php b/engine/classes/ODDRelationship.php
index 2906b1c73..8b1fe217b 100644
--- a/engine/classes/ODDRelationship.php
+++ b/engine/classes/ODDRelationship.php
@@ -10,9 +10,9 @@ class ODDRelationship extends ODD {
/**
* New ODD Relationship
*
- * @param unknown_type $uuid1 First UUID
- * @param unknown_type $type Type of telationship
- * @param unknown_type $uuid2 Second UUId
+ * @param string $uuid1 First UUID
+ * @param string $type Type of telationship
+ * @param string $uuid2 Second UUId
*/
function __construct($uuid1, $type, $uuid2) {
parent::__construct();
@@ -25,7 +25,7 @@ class ODDRelationship extends ODD {
/**
* Returns 'relationship'
*
- * @return 'relationship'
+ * @return string 'relationship'
*/
protected function getTagName() {
return "relationship";
diff --git a/engine/handlers/cache_handler.php b/engine/handlers/cache_handler.php
index b332ec379..36fc665bb 100644
--- a/engine/handlers/cache_handler.php
+++ b/engine/handlers/cache_handler.php
@@ -64,7 +64,7 @@ $ts = $matches[4];
// If is the same ETag, content didn't changed.
$etag = $ts;
-if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") {
header("HTTP/1.1 304 Not Modified");
exit;
}
@@ -80,23 +80,26 @@ switch ($type) {
break;
}
-header('Expires: ' . date('r', strtotime("+6 months")), true);
+header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true);
header("Pragma: public", true);
header("Cache-Control: public", true);
-header("ETag: $etag");
+header("ETag: \"$etag\"");
$filename = $dataroot . 'views_simplecache/' . md5($viewtype . $view);
if (file_exists($filename)) {
- $contents = file_get_contents($filename);
+ readfile($filename);
} else {
// someone trying to access a non-cached file or a race condition with cache flushing
mysql_close($mysql_dblink);
require_once(dirname(dirname(__FILE__)) . "/start.php");
- elgg_regenerate_simplecache();
+
+ global $CONFIG;
+ if (!in_array($view, $CONFIG->views->simplecache)) {
+ header("HTTP/1.1 404 Not Found");
+ exit;
+ }
elgg_set_viewtype($viewtype);
- $contents = elgg_view($view);
+ echo elgg_view($view);
}
-
-echo $contents;
diff --git a/engine/lib/access.php b/engine/lib/access.php
index e8b3b0d52..de0693ea8 100644
--- a/engine/lib/access.php
+++ b/engine/lib/access.php
@@ -12,6 +12,26 @@
*/
/**
+ * Return an ElggCache static variable cache for the access caches
+ *
+ * @staticvar ElggStaticVariableCache $access_cache
+ * @return \ElggStaticVariableCache
+ * @access private
+ */
+function _elgg_get_access_cache() {
+ /**
+ * A default filestore cache using the dataroot.
+ */
+ static $access_cache;
+
+ if (!$access_cache) {
+ $access_cache = new ElggStaticVariableCache('access');
+ }
+
+ return $access_cache;
+}
+
+/**
* Return a string of access_ids for $user_id appropriate for inserting into an SQL IN clause.
*
* @uses get_access_array
@@ -29,10 +49,10 @@
*/
function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
global $CONFIG, $init_finished;
- static $access_list;
-
- if (!isset($access_list)) {
- $access_list = array();
+ $cache = _elgg_get_access_cache();
+
+ if ($flush) {
+ $cache->clear();
}
if ($user_id == 0) {
@@ -45,20 +65,20 @@ function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (isset($access_list[$user_id]) && $flush == false) {
- return $access_list[$user_id];
- }
+ $hash = $user_id . $site_id . 'get_access_list';
- $access = "(" . implode(",", get_access_array($user_id, $site_id, $flush)) . ")";
+ if ($cache[$hash]) {
+ return $cache[$hash];
+ }
+
+ $access_array = get_access_array($user_id, $site_id, $flush);
+ $access = "(" . implode(",", $access_array) . ")";
- // only cache if done with init and access is enabled (unless admin user)
- // session is loaded before init is finished, so don't need to check for user session
- if ($init_finished && (elgg_is_admin_logged_in() || !elgg_get_ignore_access())) {
- $access_list[$user_id] = $access;
- return $access_list[$user_id];
- } else {
- return $access;
+ if ($init_finished) {
+ $cache[$hash] = $access;
}
+
+ return $access;
}
/**
@@ -86,12 +106,10 @@ function get_access_list($user_id = 0, $site_id = 0, $flush = false) {
function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
global $CONFIG, $init_finished;
- // @todo everything from the db is cached.
- // this cache might be redundant. But db cache is flushed on every db write.
- static $access_array;
+ $cache = _elgg_get_access_cache();
- if (!isset($access_array)) {
- $access_array = array();
+ if ($flush) {
+ $cache->clear();
}
if ($user_id == 0) {
@@ -105,35 +123,41 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (empty($access_array[$user_id]) || $flush == true) {
- $tmp_access_array = array(ACCESS_PUBLIC);
+ $hash = $user_id . $site_id . 'get_access_array';
+
+ if ($cache[$hash]) {
+ $access_array = $cache[$hash];
+ } else {
+ $access_array = array(ACCESS_PUBLIC);
// The following can only return sensible data if the user is logged in.
if (elgg_is_logged_in()) {
- $tmp_access_array[] = ACCESS_LOGGED_IN;
+ $access_array[] = ACCESS_LOGGED_IN;
// Get ACL memberships
$query = "SELECT am.access_collection_id"
. " FROM {$CONFIG->dbprefix}access_collection_membership am"
. " LEFT JOIN {$CONFIG->dbprefix}access_collections ag ON ag.id = am.access_collection_id"
- . " WHERE am.user_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
+ . " WHERE am.user_guid = $user_id AND (ag.site_guid = $site_id OR ag.site_guid = 0)";
- if ($collections = get_data($query)) {
+ $collections = get_data($query);
+ if ($collections) {
foreach ($collections as $collection) {
if (!empty($collection->access_collection_id)) {
- $tmp_access_array[] = (int)$collection->access_collection_id;
+ $access_array[] = (int)$collection->access_collection_id;
}
}
}
// Get ACLs owned.
$query = "SELECT ag.id FROM {$CONFIG->dbprefix}access_collections ag ";
- $query .= "WHERE ag.owner_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
+ $query .= "WHERE ag.owner_guid = $user_id AND (ag.site_guid = $site_id OR ag.site_guid = 0)";
- if ($collections = get_data($query)) {
+ $collections = get_data($query);
+ if ($collections) {
foreach ($collections as $collection) {
if (!empty($collection->id)) {
- $tmp_access_array[] = (int)$collection->id;
+ $access_array[] = (int)$collection->id;
}
}
}
@@ -141,21 +165,21 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) {
$ignore_access = elgg_check_access_overrides($user_id);
if ($ignore_access == true) {
- $tmp_access_array[] = ACCESS_PRIVATE;
+ $access_array[] = ACCESS_PRIVATE;
}
+ }
- // only cache if done with init and access is enabled (unless admin user)
- // session is loaded before init is finished, so don't need to check for user session
- if ($init_finished && (elgg_is_admin_logged_in() || !elgg_get_ignore_access())) {
- $access_array[$user_id] = $tmp_access_array;
- }
+ if ($init_finished) {
+ $cache[$hash] = $access_array;
}
- } else {
- $tmp_access_array = $access_array[$user_id];
}
- $options = array('user_id' => $user_id, 'site_id' => $site_id);
- return elgg_trigger_plugin_hook('access:collections:read', 'user', $options, $tmp_access_array);
+ $options = array(
+ 'user_id' => $user_id,
+ 'site_id' => $site_id
+ );
+
+ return elgg_trigger_plugin_hook('access:collections:read', 'user', $options, $access_array);
}
/**
@@ -401,9 +425,12 @@ function has_access_to_entity($entity, $user = null) {
* @link http://docs.elgg.org/Access
*/
function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) {
- global $CONFIG;
- //@todo this is probably not needed since caching happens at the DB level.
- static $access_array;
+ global $CONFIG, $init_finished;
+ $cache = _elgg_get_access_cache();
+
+ if ($flush) {
+ $cache->clear();
+ }
if ($user_id == 0) {
$user_id = elgg_get_logged_in_user_guid();
@@ -416,37 +443,41 @@ function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) {
$user_id = (int) $user_id;
$site_id = (int) $site_id;
- if (empty($access_array[$user_id]) || $flush == true) {
- $query = "SELECT ag.* FROM {$CONFIG->dbprefix}access_collections ag ";
- $query .= " WHERE (ag.site_guid = {$site_id} OR ag.site_guid = 0)";
- $query .= " AND (ag.owner_guid = {$user_id})";
- // ACCESS_PRIVATE through ACCESS_PUBLIC take 0 through 2
- // @todo this AND clause is unnecessary because of id starts at 3 for table
- $query .= " AND ag.id >= 3";
+ $hash = $user_id . $site_id . 'get_write_access_array';
- $tmp_access_array = array(
+ if ($cache[$hash]) {
+ $access_array = $cache[$hash];
+ } else {
+ // @todo is there such a thing as public write access?
+ $access_array = array(
ACCESS_PRIVATE => elgg_echo("PRIVATE"),
ACCESS_FRIENDS => elgg_echo("access:friends:label"),
ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"),
ACCESS_PUBLIC => elgg_echo("PUBLIC")
);
+
+ $query = "SELECT ag.* FROM {$CONFIG->dbprefix}access_collections ag ";
+ $query .= " WHERE (ag.site_guid = $site_id OR ag.site_guid = 0)";
+ $query .= " AND (ag.owner_guid = $user_id)";
+
$collections = get_data($query);
if ($collections) {
foreach ($collections as $collection) {
- $tmp_access_array[$collection->id] = $collection->name;
+ $access_array[$collection->id] = $collection->name;
}
}
- $access_array[$user_id] = $tmp_access_array;
- } else {
- $tmp_access_array = $access_array[$user_id];
+ if ($init_finished) {
+ $cache[$hash] = $access_array;
+ }
}
- $options = array('user_id' => $user_id, 'site_id' => $site_id);
- $tmp_access_array = elgg_trigger_plugin_hook('access:collections:write', 'user',
- $options, $tmp_access_array);
-
- return $tmp_access_array;
+ $options = array(
+ 'user_id' => $user_id,
+ 'site_id' => $site_id
+ );
+ return elgg_trigger_plugin_hook('access:collections:write', 'user',
+ $options, $access_array);
}
/**
@@ -476,7 +507,7 @@ function can_edit_access_collection($collection_id, $user_guid = null) {
return false;
}
- $write_access = get_write_access_array($user->getGUID(), null, true);
+ $write_access = get_write_access_array($user->getGUID(), 0, true);
// don't ignore access when checking users.
if ($user_guid) {
@@ -560,8 +591,6 @@ function create_access_collection($name, $owner_guid = 0, $site_guid = 0) {
* @see remove_user_from_access_collection()
*/
function update_access_collection($collection_id, $members) {
- global $CONFIG;
-
$acl = get_access_collection($collection_id);
if (!$acl) {
@@ -877,6 +906,8 @@ function get_readable_access_level($entity_access_id) {
* @tip Use this to access entities in automated scripts
* when no user is logged in.
*
+ * @note This clears the access cache.
+ *
* @warning This will not show disabled entities.
* Use {@link access_show_hidden_entities()} to access disabled entities.
*
@@ -888,6 +919,8 @@ function get_readable_access_level($entity_access_id) {
* @see elgg_get_ignore_access()
*/
function elgg_set_ignore_access($ignore = true) {
+ $cache = _elgg_get_access_cache();
+ $cache->clear();
$elgg_access = elgg_get_access_object();
return $elgg_access->setIgnoreAccess($ignore);
}
@@ -982,6 +1015,10 @@ function access_init() {
*
* Returns true to override the access system or null if no change is needed.
*
+ * @param string $hook
+ * @param string $type
+ * @param bool $value
+ * @param array $params
* @return true|null
* @access private
*/
@@ -1014,10 +1051,18 @@ function elgg_override_permissions($hook, $type, $value, $params) {
/**
* Runs unit tests for the entities object.
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $value
+ * @param array $params
+ * @return array
+ *
* @access private
*/
function access_test($hook, $type, $value, $params) {
global $CONFIG;
+
$value[] = $CONFIG->path . 'engine/tests/api/access_collections.php';
return $value;
}
diff --git a/engine/lib/actions.php b/engine/lib/actions.php
index 3a7c02488..8047914ac 100644
--- a/engine/lib/actions.php
+++ b/engine/lib/actions.php
@@ -65,61 +65,43 @@ function action($action, $forwarder = "") {
// @todo REMOVE THESE ONCE #1509 IS IN PLACE.
// Allow users to disable plugins without a token in order to
// remove plugins that are incompatible.
- // Login and logout are for convenience.
+ // Logout for convenience.
// file/download (see #2010)
$exceptions = array(
'admin/plugins/disable',
'logout',
- 'login',
'file/download',
);
if (!in_array($action, $exceptions)) {
- // All actions require a token.
- action_gatekeeper();
+ action_gatekeeper($action);
}
$forwarder = str_replace(elgg_get_site_url(), "", $forwarder);
$forwarder = str_replace("http://", "", $forwarder);
$forwarder = str_replace("@", "", $forwarder);
-
if (substr($forwarder, 0, 1) == "/") {
$forwarder = substr($forwarder, 1);
}
- if (isset($CONFIG->actions[$action])) {
- if (elgg_is_admin_logged_in() || ($CONFIG->actions[$action]['access'] !== 'admin')) {
- if (elgg_is_logged_in() || ($CONFIG->actions[$action]['access'] === 'public')) {
-
- // Trigger action event
- // @todo This is only called before the primary action is called.
- $event_result = true;
- $event_result = elgg_trigger_plugin_hook('action', $action, null, $event_result);
-
- // Include action
- // Event_result being false doesn't produce an error
- // since i assume this will be handled in the hook itself.
- // @todo make this better!
- if ($event_result) {
- if (!include($CONFIG->actions[$action]['file'])) {
- register_error(elgg_echo('actionnotfound', array($action)));
- }
- }
- } else {
- register_error(elgg_echo('actionloggedout'));
+ if (!isset($CONFIG->actions[$action])) {
+ register_error(elgg_echo('actionundefined', array($action)));
+ } elseif (!elgg_is_admin_logged_in() && ($CONFIG->actions[$action]['access'] === 'admin')) {
+ register_error(elgg_echo('actionunauthorized'));
+ } elseif (!elgg_is_logged_in() && ($CONFIG->actions[$action]['access'] !== 'public')) {
+ register_error(elgg_echo('actionloggedout'));
+ } else {
+ // Returning falsy doesn't produce an error
+ // We assume this will be handled in the hook itself.
+ if (elgg_trigger_plugin_hook('action', $action, null, true)) {
+ if (!include($CONFIG->actions[$action]['file'])) {
+ register_error(elgg_echo('actionnotfound', array($action)));
}
- } else {
- register_error(elgg_echo('actionunauthorized'));
}
- } else {
- register_error(elgg_echo('actionundefined', array($action)));
}
- if (!empty($forwarder)) {
- forward($forwarder);
- } else {
- forward(REFERER);
- }
+ $forwarder = empty($forwarder) ? REFERER : $forwarder;
+ forward($forwarder);
}
/**
@@ -205,6 +187,26 @@ function elgg_unregister_action($action) {
}
/**
+ * Is the token timestamp within acceptable range?
+ *
+ * @param int $ts timestamp from the CSRF token
+ *
+ * @return bool
+ */
+function _elgg_validate_token_timestamp($ts) {
+ $action_token_timeout = elgg_get_config('action_token_timeout');
+ // default is 2 hours
+ $timeout = ($action_token_timeout !== null) ? $action_token_timeout : 2;
+
+ $hour = 60 * 60;
+ $timeout = $timeout * $hour;
+ $now = time();
+
+ // Validate time to ensure its not crazy
+ return ($timeout == 0 || ($ts > $now - $timeout) && ($ts < $now + $timeout));
+}
+
+/**
* Validate an action token.
*
* Calls to actions will automatically validate tokens. If tokens are not
@@ -222,8 +224,6 @@ function elgg_unregister_action($action) {
* @access private
*/
function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL) {
- global $CONFIG;
-
if (!$token) {
$token = get_input('__elgg_token');
}
@@ -232,29 +232,18 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
$ts = get_input('__elgg_ts');
}
- if (!isset($CONFIG->action_token_timeout)) {
- // default to 2 hours
- $timeout = 2;
- } else {
- $timeout = $CONFIG->action_token_timeout;
- }
-
$session_id = session_id();
if (($token) && ($ts) && ($session_id)) {
// generate token, check with input and forward if invalid
- $generated_token = generate_action_token($ts);
+ $required_token = generate_action_token($ts);
// Validate token
- if ($token == $generated_token) {
- $hour = 60 * 60;
- $timeout = $timeout * $hour;
- $now = time();
-
- // Validate time to ensure its not crazy
- if ($timeout == 0 || ($ts > $now - $timeout) && ($ts < $now + $timeout)) {
+ if ($token == $required_token) {
+
+ if (_elgg_validate_token_timestamp($ts)) {
// We have already got this far, so unless anything
- // else says something to the contry we assume we're ok
+ // else says something to the contrary we assume we're ok
$returnval = true;
$returnval = elgg_trigger_plugin_hook('action_gatekeeper:permissions:check', 'all', array(
@@ -268,10 +257,20 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
register_error(elgg_echo('actiongatekeeper:pluginprevents'));
}
} else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:timeerror'));
+ // this is necessary because of #5133
+ if (elgg_is_xhr()) {
+ register_error(elgg_echo('js:security:token_refresh_failed', array(elgg_get_site_url())));
+ } else {
+ register_error(elgg_echo('actiongatekeeper:timeerror'));
+ }
}
} else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:tokeninvalid'));
+ // this is necessary because of #5133
+ if (elgg_is_xhr()) {
+ register_error(elgg_echo('js:security:token_refresh_failed', array(elgg_get_site_url())));
+ } else {
+ register_error(elgg_echo('actiongatekeeper:tokeninvalid'));
+ }
}
} else {
if (! empty($_SERVER['CONTENT_LENGTH']) && empty($_POST)) {
@@ -300,12 +299,33 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
* This function verifies form input for security features (like a generated token),
* and forwards if they are invalid.
*
+ * @param string $action The action being performed
+ *
* @return mixed True if valid or redirects.
* @access private
*/
-function action_gatekeeper() {
- if (validate_action_token()) {
- return TRUE;
+function action_gatekeeper($action) {
+ if ($action === 'login') {
+ if (validate_action_token(false)) {
+ return true;
+ }
+
+ $token = get_input('__elgg_token');
+ $ts = (int)get_input('__elgg_ts');
+ if ($token && _elgg_validate_token_timestamp($ts)) {
+ // The tokens are present and the time looks valid: this is probably a mismatch due to the
+ // login form being on a different domain.
+ register_error(elgg_echo('actiongatekeeper:crosssitelogin'));
+
+
+ forward('login', 'csrf');
+ }
+
+ // let the validator send an appropriate msg
+ validate_action_token();
+
+ } elseif (validate_action_token()) {
+ return true;
}
forward(REFERER, 'csrf');
@@ -344,16 +364,19 @@ function generate_action_token($timestamp) {
}
/**
- * Initialise the site secret hash.
+ * Initialise the site secret (32 bytes: "z" to indicate format + 186-bit key in Base64 URL).
*
* Used during installation and saves as a datalist.
*
+ * Note: Old secrets were hex encoded.
+ *
* @return mixed The site secret hash or false
* @access private
* @todo Move to better file.
*/
function init_site_secret() {
- $secret = md5(rand() . microtime());
+ $secret = 'z' . ElggCrypto::getRandomString(31);
+
if (datalist_set('__site_secret__', $secret)) {
return $secret;
}
@@ -380,6 +403,26 @@ function get_site_secret() {
}
/**
+ * Get the strength of the site secret
+ *
+ * @return string "strong", "moderate", or "weak"
+ * @access private
+ */
+function _elgg_get_site_secret_strength() {
+ $secret = get_site_secret();
+ if ($secret[0] !== 'z') {
+ $rand_max = getrandmax();
+ if ($rand_max < pow(2, 16)) {
+ return 'weak';
+ }
+ if ($rand_max < pow(2, 32)) {
+ return 'moderate';
+ }
+ }
+ return 'strong';
+}
+
+/**
* Check if an action is registered and its script exists.
*
* @param string $action Action name
diff --git a/engine/lib/admin.php b/engine/lib/admin.php
index b65d98c95..f36f29668 100644
--- a/engine/lib/admin.php
+++ b/engine/lib/admin.php
@@ -134,11 +134,11 @@ function elgg_delete_admin_notice($id) {
}
/**
- * List all admin messages.
+ * Get admin notices. An admin must be logged in since the notices are private.
*
* @param int $limit Limit
*
- * @return array List of admin notices
+ * @return array Array of admin notices
* @since 1.8.0
*/
function elgg_get_admin_notices($limit = 10) {
@@ -158,11 +158,13 @@ function elgg_get_admin_notices($limit = 10) {
* @since 1.8.0
*/
function elgg_admin_notice_exists($id) {
+ $old_ia = elgg_set_ignore_access(true);
$notice = elgg_get_entities_from_metadata(array(
'type' => 'object',
'subtype' => 'admin_notice',
'metadata_name_value_pair' => array('name' => 'admin_notice_id', 'value' => $id)
));
+ elgg_set_ignore_access($old_ia);
return ($notice) ? TRUE : FALSE;
}
@@ -233,6 +235,8 @@ function admin_init() {
elgg_register_action('admin/site/update_basic', '', 'admin');
elgg_register_action('admin/site/update_advanced', '', 'admin');
elgg_register_action('admin/site/flush_cache', '', 'admin');
+ elgg_register_action('admin/site/unlock_upgrade', '', 'admin');
+ elgg_register_action('admin/site/regenerate_secret', '', 'admin');
elgg_register_action('admin/menu/save', '', 'admin');
@@ -268,8 +272,9 @@ function admin_init() {
// users
elgg_register_admin_menu_item('administer', 'users', null, 20);
elgg_register_admin_menu_item('administer', 'online', 'users', 10);
- elgg_register_admin_menu_item('administer', 'newest', 'users', 20);
- elgg_register_admin_menu_item('administer', 'add', 'users', 30);
+ elgg_register_admin_menu_item('administer', 'admins', 'users', 20);
+ elgg_register_admin_menu_item('administer', 'newest', 'users', 30);
+ elgg_register_admin_menu_item('administer', 'add', 'users', 40);
// configure
// plugins
@@ -287,6 +292,7 @@ function admin_init() {
elgg_register_admin_menu_item('configure', 'settings', null, 100);
elgg_register_admin_menu_item('configure', 'basic', 'settings', 10);
elgg_register_admin_menu_item('configure', 'advanced', 'settings', 20);
+ elgg_register_admin_menu_item('configure', 'advanced/site_secret', 'settings', 25);
elgg_register_admin_menu_item('configure', 'menu_items', 'appearance', 30);
elgg_register_admin_menu_item('configure', 'profile_fields', 'appearance', 40);
// default widgets is added via an event handler elgg_default_widgets_init() in widgets.php
@@ -344,7 +350,7 @@ function elgg_admin_add_plugin_settings_menu() {
$active_plugins = elgg_get_plugins('active');
if (!$active_plugins) {
// nothing added because no items
- return FALSE;
+ return;
}
foreach ($active_plugins as $plugin) {
@@ -378,6 +384,7 @@ function elgg_admin_add_plugin_settings_menu() {
*/
function elgg_admin_sort_page_menu($hook, $type, $return, $params) {
$configure_items = $return['configure'];
+ /* @var ElggMenuItem[] $configure_items */
foreach ($configure_items as $menu_item) {
if ($menu_item->getName() == 'settings') {
$settings = $menu_item;
@@ -385,6 +392,7 @@ function elgg_admin_sort_page_menu($hook, $type, $return, $params) {
}
// keep the basic and advanced settings at the top
+ /* @var ElggMenuItem $settings */
$children = $settings->getChildren();
$site_settings = array_splice($children, 0, 2);
usort($children, array('ElggMenuBuilder', 'compareByText'));
@@ -421,7 +429,7 @@ function admin_pagesetup() {
elgg_register_menu_item('admin_footer', array(
'name' => 'community_forums',
'text' => elgg_echo('admin:footer:community_forums'),
- 'href' => 'http://community.elgg.org/pg/groups/world/',
+ 'href' => 'http://community.elgg.org/groups/all/',
));
elgg_register_menu_item('admin_footer', array(
@@ -464,14 +472,18 @@ function admin_page_handler($page) {
$vars = array('page' => $page);
// special page for plugin settings since we create the form for them
- if ($page[0] == 'plugin_settings' && isset($page[1]) &&
- (elgg_view_exists("settings/{$page[1]}/edit") || elgg_view_exists("plugins/{$page[1]}/settings"))) {
+ if ($page[0] == 'plugin_settings') {
+ if (isset($page[1]) && (elgg_view_exists("settings/{$page[1]}/edit") ||
+ elgg_view_exists("plugins/{$page[1]}/settings"))) {
- $view = 'admin/plugin_settings';
- $plugin = elgg_get_plugin_from_id($page[1]);
- $vars['plugin'] = $plugin;
+ $view = 'admin/plugin_settings';
+ $plugin = elgg_get_plugin_from_id($page[1]);
+ $vars['plugin'] = $plugin;
- $title = elgg_echo("admin:{$page[0]}");
+ $title = elgg_echo("admin:{$page[0]}");
+ } else {
+ forward('', '404');
+ }
} else {
$view = 'admin/' . implode('/', $page);
$title = elgg_echo("admin:{$page[0]}");
@@ -550,7 +562,7 @@ function admin_plugin_screenshot_page_handler($pages) {
* * COPYRIGHT.txt
* * LICENSE.txt
*
- * @param type $page
+ * @param array $pages
* @return bool
* @access private
*/
@@ -613,7 +625,11 @@ function admin_markdown_page_handler($pages) {
/**
* Adds default admin widgets to the admin dashboard.
*
- * @return void
+ * @param string $event
+ * @param string $type
+ * @param ElggUser $user
+ *
+ * @return null|true
* @access private
*/
function elgg_add_admin_widgets($event, $type, $user) {
@@ -635,6 +651,7 @@ function elgg_add_admin_widgets($event, $type, $user) {
$guid = elgg_create_widget($user->getGUID(), $handler, 'admin');
if ($guid) {
$widget = get_entity($guid);
+ /* @var ElggWidget $widget */
$widget->move($column, $position);
}
}
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
index 2036ccd61..5e9b530de 100644
--- a/engine/lib/annotations.php
+++ b/engine/lib/annotations.php
@@ -17,6 +17,7 @@
*/
function row_to_elggannotation($row) {
if (!($row instanceof stdClass)) {
+ // @todo should throw in this case?
return $row;
}
@@ -30,7 +31,7 @@ function row_to_elggannotation($row) {
*
* @param int $id The id of the annotation object being retrieved.
*
- * @return false|ElggAnnotation
+ * @return ElggAnnotation|false
*/
function elgg_get_annotation_from_id($id) {
return elgg_get_metastring_based_object_from_id($id, 'annotations');
@@ -195,10 +196,22 @@ function update_annotation($annotation_id, $name, $value, $value_type, $owner_gu
* for the proper use of the "calculation" option.
*
*
- * @return mixed
+ * @return ElggAnnotation[]|mixed
* @since 1.8.0
*/
function elgg_get_annotations(array $options = array()) {
+
+ // @todo remove support for count shortcut - see #4393
+ if (isset($options['__egefac']) && $options['__egefac']) {
+ unset($options['__egefac']);
+ } else {
+ // support shortcut of 'count' => true for 'annotation_calculation' => 'count'
+ if (isset($options['count']) && $options['count']) {
+ $options['annotation_calculation'] = 'count';
+ unset($options['count']);
+ }
+ }
+
$options['metastring_type'] = 'annotations';
return elgg_get_metastring_based_objects($options);
}
@@ -211,7 +224,7 @@ function elgg_get_annotations(array $options = array()) {
* annotation_name(s), annotation_value(s), or guid(s) must be set.
*
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed Null if the metadata name is invalid. Bool on success or fail.
+ * @return bool|null true on success, false on failure, null if no annotations to delete.
* @since 1.8.0
*/
function elgg_delete_annotations(array $options) {
@@ -229,16 +242,20 @@ function elgg_delete_annotations(array $options) {
* @warning Unlike elgg_get_annotations() this will not accept an empty options array!
*
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no annotations disabled.
* @since 1.8.0
*/
function elgg_disable_annotations(array $options) {
if (!elgg_is_valid_options_for_batch_operation($options, 'annotations')) {
return false;
}
+
+ // if we can see hidden (disabled) we need to use the offset
+ // otherwise we risk an infinite loop if there are more than 50
+ $inc_offset = access_get_show_hidden_status();
$options['metastring_type'] = 'annotations';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', false);
+ return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', $inc_offset);
}
/**
@@ -246,8 +263,11 @@ function elgg_disable_annotations(array $options) {
*
* @warning Unlike elgg_get_annotations() this will not accept an empty options array!
*
+ * @warning In order to enable annotations, you must first use
+ * {@link access_show_hidden_entities()}.
+ *
* @param array $options An options array. {@See elgg_get_annotations()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata enabled.
* @since 1.8.0
*/
function elgg_enable_annotations(array $options) {
@@ -316,8 +336,6 @@ function elgg_list_annotations($options) {
*
* annotation_owner_guids => NULL|ARR guids for annotaiton owners
*
- * annotation_ids => NULL|ARR Annotation IDs
- *
* @return mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
@@ -336,8 +354,6 @@ function elgg_get_entities_from_annotations(array $options = array()) {
'annotation_owner_guids' => ELGG_ENTITIES_ANY_VALUE,
- 'annotation_ids' => ELGG_ENTITIES_ANY_VALUE,
-
'order_by' => 'maxtime desc',
'group_by' => 'a.entity_guid'
);
@@ -345,12 +361,13 @@ function elgg_get_entities_from_annotations(array $options = array()) {
$options = array_merge($defaults, $options);
$singulars = array('annotation_name', 'annotation_value',
- 'annotation_name_value_pair', 'annotation_owner_guid', 'annotation_id');
+ 'annotation_name_value_pair', 'annotation_owner_guid');
$options = elgg_normalise_plural_options_array($options, $singulars);
+ $options = elgg_entities_get_metastrings_options('annotation', $options);
- if (!$options = elgg_entities_get_metastrings_options('annotation', $options)) {
- return FALSE;
+ if (!$options) {
+ return false;
}
// special sorting for annotations
@@ -406,8 +423,8 @@ function elgg_list_entities_from_annotations($options = array()) {
function elgg_get_entities_from_annotation_calculation($options) {
$db_prefix = elgg_get_config('dbprefix');
$defaults = array(
- 'calculation' => 'sum',
- 'order_by' => 'annotation_calculation desc'
+ 'calculation' => 'sum',
+ 'order_by' => 'annotation_calculation desc'
);
$options = array_merge($defaults, $options);
@@ -427,6 +444,10 @@ function elgg_get_entities_from_annotation_calculation($options) {
$options['callback'] = 'entity_row_to_elggstar';
+ // see #4393
+ // @todo remove after the 'count' shortcut is removed from elgg_get_annotations()
+ $options['__egefac'] = true;
+
return elgg_get_annotations($options);
}
@@ -440,23 +461,30 @@ function elgg_get_entities_from_annotation_calculation($options) {
* @return string
*/
function elgg_list_entities_from_annotation_calculation($options) {
+ $defaults = array(
+ 'calculation' => 'sum',
+ 'order_by' => 'annotation_calculation desc'
+ );
+ $options = array_merge($defaults, $options);
+
return elgg_list_entities($options, 'elgg_get_entities_from_annotation_calculation');
}
/**
- * Handler called by trigger_plugin_hook on the "export" event.
+ * Export the annotations for the specified entity
*
* @param string $hook 'export'
- * @param string $entity_type 'all'
+ * @param string $type 'all'
* @param mixed $returnvalue Default return value
- * @param mixed $params List of params to export
+ * @param mixed $params Parameters determining what annotations to export
*
* @elgg_plugin_hook export all
*
- * @return mixed
+ * @return array
+ * @throws InvalidParameterException
* @access private
*/
-function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $params) {
+function export_annotation_plugin_hook($hook, $type, $returnvalue, $params) {
// Sanity check values
if ((!is_array($params)) && (!isset($params['guid']))) {
throw new InvalidParameterException(elgg_echo('InvalidParameterException:GUIDNotForExport'));
@@ -467,12 +495,12 @@ function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $param
}
$guid = (int)$params['guid'];
- $name = $params['name'];
+ $options = array('guid' => $guid, 'limit' => 0);
+ if (isset($params['name'])) {
+ $options['annotation_name'] = $params['name'];
+ }
- $result = elgg_get_annotations(array(
- 'guid' => $guid,
- 'limit' => 0
- ));
+ $result = elgg_get_annotations($options);
if ($result) {
foreach ($result as $r) {
@@ -517,15 +545,16 @@ function elgg_annotation_exists($entity_guid, $annotation_type, $owner_guid = NU
return FALSE;
}
- $entity_guid = (int)$entity_guid;
- $annotation_type = sanitise_string($annotation_type);
+ $entity_guid = sanitize_int($entity_guid);
+ $owner_guid = sanitize_int($owner_guid);
+ $annotation_type = sanitize_string($annotation_type);
- $sql = "select a.id" .
- " FROM {$CONFIG->dbprefix}annotations a, {$CONFIG->dbprefix}metastrings m " .
- " WHERE a.owner_guid={$owner_guid} AND a.entity_guid={$entity_guid} " .
- " AND a.name_id=m.id AND m.string='{$annotation_type}'";
+ $sql = "SELECT a.id FROM {$CONFIG->dbprefix}annotations a" .
+ " JOIN {$CONFIG->dbprefix}metastrings m ON a.name_id = m.id" .
+ " WHERE a.owner_guid = $owner_guid AND a.entity_guid = $entity_guid" .
+ " AND m.string = '$annotation_type'";
- if ($check_annotation = get_data_row($sql)) {
+ if (get_data_row($sql)) {
return TRUE;
}
@@ -544,6 +573,7 @@ function elgg_comment_url_handler(ElggAnnotation $comment) {
if ($entity) {
return $entity->getURL() . '#item-annotation-' . $comment->id;
}
+ return "";
}
/**
@@ -560,6 +590,12 @@ function elgg_register_annotation_url_handler($extender_name = "all", $function_
/**
* Register annotation unit tests
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $value
+ * @param array $params
+ * @return array
* @access private
*/
function annotations_test($hook, $type, $value, $params) {
diff --git a/engine/lib/cache.php b/engine/lib/cache.php
index be1c43e14..3116c1a9b 100644
--- a/engine/lib/cache.php
+++ b/engine/lib/cache.php
@@ -125,7 +125,7 @@ function elgg_get_filepath_cache() {
* @access private
*/
function elgg_filepath_cache_reset() {
- return elgg_reset_system_cache();
+ elgg_reset_system_cache();
}
/**
* @access private
@@ -143,13 +143,13 @@ function elgg_filepath_cache_load($type) {
* @access private
*/
function elgg_enable_filepath_cache() {
- return elgg_enable_system_cache();
+ elgg_enable_system_cache();
}
/**
* @access private
*/
function elgg_disable_filepath_cache() {
- return elgg_disable_system_cache();
+ elgg_disable_system_cache();
}
/* Simplecache */
@@ -208,6 +208,7 @@ function elgg_get_simplecache_url($type, $view) {
global $CONFIG;
$lastcache = (int)$CONFIG->lastcache;
$viewtype = elgg_get_viewtype();
+ elgg_register_simplecache_view("$type/$view");// see #5302
if (elgg_is_simplecache_enabled()) {
$url = elgg_get_site_url() . "cache/$type/$viewtype/$view.$lastcache.$type";
} else {
@@ -222,7 +223,7 @@ function elgg_get_simplecache_url($type, $view) {
/**
* Regenerates the simple cache.
*
- * @warning This does not invalidate the cache, but actively resets it.
+ * @warning This does not invalidate the cache, but actively rebuilds it.
*
* @param string $viewtype Optional viewtype to regenerate. Defaults to all valid viewtypes.
*
@@ -444,7 +445,7 @@ function _elgg_cache_init() {
if ($CONFIG->system_cache_enabled && !$CONFIG->i18n_loaded_from_cache) {
reload_all_translations();
foreach ($CONFIG->translations as $lang => $map) {
- elgg_save_system_cache("$lang.php", serialize($map));
+ elgg_save_system_cache("$lang.lang", serialize($map));
}
}
}
diff --git a/engine/lib/calendar.php b/engine/lib/calendar.php
index 9a06c5292..e6f95934c 100644
--- a/engine/lib/calendar.php
+++ b/engine/lib/calendar.php
@@ -39,6 +39,8 @@ function get_day_end($day = null, $month = null, $year = null) {
/**
* Return the notable entities for a given time period.
*
+ * @todo this function also accepts an array(type => subtypes) for 3rd arg. Should we document this?
+ *
* @param int $start_time The start time as a unix timestamp.
* @param int $end_time The end time as a unix timestamp.
* @param string $type The type of entity (eg "user", "object" etc)
diff --git a/engine/lib/configuration.php b/engine/lib/configuration.php
index 305aa00b6..55e5bbd36 100644
--- a/engine/lib/configuration.php
+++ b/engine/lib/configuration.php
@@ -36,6 +36,7 @@ function elgg_get_site_url($site_guid = 0) {
if (!$site instanceof ElggSite) {
return false;
}
+ /* @var ElggSite $site */
return $site->url;
}
@@ -91,23 +92,29 @@ function elgg_get_config($name, $site_guid = 0) {
return $CONFIG->$name;
}
- if ($site_guid === NULL) {
+ if ($site_guid === null) {
// installation wide setting
$value = datalist_get($name);
} else {
- // site specific setting
- if ($site_guid == 0) {
- $site_guid = (int) $CONFIG->site_id;
+ // hit DB only if we're not sure if value exists or not
+ if (!isset($CONFIG->site_config_loaded)) {
+ // site specific setting
+ if ($site_guid == 0) {
+ $site_guid = (int) $CONFIG->site_id;
+ }
+ $value = get_config($name, $site_guid);
+ } else {
+ $value = null;
}
- $value = get_config($name, $site_guid);
}
- if ($value !== false) {
- $CONFIG->$name = $value;
- return $value;
+ // @todo document why we don't cache false
+ if ($value === false) {
+ return null;
}
- return null;
+ $CONFIG->$name = $value;
+ return $value;
}
/**
@@ -132,7 +139,7 @@ function elgg_set_config($name, $value) {
/**
* Save a configuration setting
*
- * @param string $name Configuration name (cannot be greater than 32 characters)
+ * @param string $name Configuration name (cannot be greater than 255 characters)
* @param mixed $value Configuration value. Should be string for installation setting
* @param int $site_guid NULL for installation setting, 0 for default site
*
@@ -167,7 +174,7 @@ function elgg_save_config($name, $value, $site_guid = 0) {
/**
* Check that installation has completed and the database is populated.
*
- * @throws InstallationException
+ * @throws InstallationException|DatabaseException
* @return void
* @access private
*/
@@ -175,7 +182,7 @@ function verify_installation() {
global $CONFIG;
if (isset($CONFIG->installed)) {
- return $CONFIG->installed;
+ return;
}
try {
@@ -221,9 +228,9 @@ function datalist_get($name) {
$name = trim($name);
- // cannot store anything longer than 32 characters in db, so catch here
- if (elgg_strlen($name) > 32) {
- elgg_log("The name length for configuration variables cannot be greater than 32", "ERROR");
+ // cannot store anything longer than 255 characters in db, so catch here
+ if (elgg_strlen($name) > 255) {
+ elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
}
@@ -280,7 +287,7 @@ function datalist_get($name) {
function datalist_set($name, $value) {
global $CONFIG, $DATALIST_CACHE;
- // cannot store anything longer than 32 characters in db, so catch before we set
+ // cannot store anything longer than 255 characters in db, so catch before we set
if (elgg_strlen($name) > 255) {
elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
@@ -326,7 +333,7 @@ function datalist_set($name, $value) {
* This will cause the run once function to be run on all installations. To perform
* additional upgrades, create new functions for each release.
*
- * @warning The function name cannot be longer than 32 characters long due to
+ * @warning The function name cannot be longer than 255 characters long due to
* the current schema for the datalist table.
*
* @internal A datalist entry $functioname is created with the value of time().
@@ -401,7 +408,7 @@ function unset_config($name, $site_guid = 0) {
* @param string $value Its value
* @param int $site_guid Optionally, the GUID of the site (current site is assumed by default)
*
- * @return 0
+ * @return bool
* @todo The config table doens't have numeric primary keys so insert_data returns 0.
* @todo Use "INSERT ... ON DUPLICATE KEY UPDATE" instead of trying to delete then add.
* @see unset_config()
@@ -413,9 +420,9 @@ function set_config($name, $value, $site_guid = 0) {
$name = trim($name);
- // cannot store anything longer than 32 characters in db, so catch before we set
- if (elgg_strlen($name) > 32) {
- elgg_log("The name length for configuration variables cannot be greater than 32", "ERROR");
+ // cannot store anything longer than 255 characters in db, so catch before we set
+ if (elgg_strlen($name) > 255) {
+ elgg_log("The name length for configuration variables cannot be greater than 255", "ERROR");
return false;
}
@@ -479,9 +486,9 @@ function get_config($name, $site_guid = 0) {
// @todo these haven't really been implemented in Elgg 1.8. Complete in 1.9.
// show dep message
if ($new_name) {
- // $msg = "Config value $name has been renamed as $new_name";
+ // $msg = "Config value $name has been renamed as $new_name";
$name = $new_name;
- // elgg_deprecated_notice($msg, $dep_version);
+ // elgg_deprecated_notice($msg, $dep_version);
}
// decide from where to return the value
@@ -558,6 +565,8 @@ function _elgg_load_site_config() {
$CONFIG->url = $CONFIG->wwwroot;
get_all_config();
+ // gives hint to elgg_get_config function how to approach missing values
+ $CONFIG->site_config_loaded = true;
}
/**
diff --git a/engine/lib/cron.php b/engine/lib/cron.php
index f7a032f4a..4f3d05b93 100644
--- a/engine/lib/cron.php
+++ b/engine/lib/cron.php
@@ -26,11 +26,10 @@ function cron_init() {
* @param array $page Pages
*
* @return bool
+ * @throws CronException
* @access private
*/
function cron_page_handler($page) {
- global $CONFIG;
-
if (!isset($page[0])) {
forward();
}
@@ -51,7 +50,6 @@ function cron_page_handler($page) {
$params['time'] = time();
// Data to return to
- $std_out = "";
$old_stdout = "";
ob_start();
diff --git a/engine/lib/database.php b/engine/lib/database.php
index 7d90b30b8..a7949788d 100644
--- a/engine/lib/database.php
+++ b/engine/lib/database.php
@@ -12,15 +12,19 @@
/**
* Query cache for all queries.
*
- * Each query and its results are stored in this array as:
+ * Each query and its results are stored in this cache as:
* <code>
- * $DB_QUERY_CACHE[$query] => array(result1, result2, ... resultN)
+ * $DB_QUERY_CACHE[query hash] => array(result1, result2, ... resultN)
* </code>
+ * @see elgg_query_runner() for details on the hash.
*
- * @global array $DB_QUERY_CACHE
+ * @warning Elgg used to set this as an empty array to turn off the cache
+ *
+ * @global ElggLRUCache|null $DB_QUERY_CACHE
+ * @access private
*/
global $DB_QUERY_CACHE;
-$DB_QUERY_CACHE = array();
+$DB_QUERY_CACHE = null;
/**
* Queries to be executed upon shutdown.
@@ -38,6 +42,7 @@ $DB_QUERY_CACHE = array();
* </code>
*
* @global array $DB_DELAYED_QUERIES
+ * @access private
*/
global $DB_DELAYED_QUERIES;
$DB_DELAYED_QUERIES = array();
@@ -48,7 +53,8 @@ $DB_DELAYED_QUERIES = array();
* Each database link created with establish_db_link($name) is stored in
* $dblink as $dblink[$name] => resource. Use get_db_link($name) to retrieve it.
*
- * @global array $dblink
+ * @global resource[] $dblink
+ * @access private
*/
global $dblink;
$dblink = array();
@@ -59,6 +65,7 @@ $dblink = array();
* Each call to the database increments this counter.
*
* @global integer $dbcalls
+ * @access private
*/
global $dbcalls;
$dbcalls = 0;
@@ -72,11 +79,12 @@ $dbcalls = 0;
* resource. eg "read", "write", or "readwrite".
*
* @return void
+ * @throws DatabaseException
* @access private
*/
function establish_db_link($dblinkname = "readwrite") {
// Get configuration, and globalise database link
- global $CONFIG, $dblink, $DB_QUERY_CACHE, $dbcalls;
+ global $CONFIG, $dblink, $DB_QUERY_CACHE;
if ($dblinkname != "readwrite" && isset($CONFIG->db[$dblinkname])) {
if (is_array($CONFIG->db[$dblinkname])) {
@@ -120,7 +128,8 @@ function establish_db_link($dblinkname = "readwrite") {
// Set up cache if global not initialized and query cache not turned off
if ((!$DB_QUERY_CACHE) && (!$db_cache_off)) {
- $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache');
+ // @todo if we keep this cache in 1.9, expose the size as a config parameter
+ $DB_QUERY_CACHE = new ElggLRUCache(200);
}
}
@@ -134,7 +143,7 @@ function establish_db_link($dblinkname = "readwrite") {
* @access private
*/
function setup_db_connections() {
- global $CONFIG, $dblink;
+ global $CONFIG;
if (!empty($CONFIG->db->split)) {
establish_db_link('read');
@@ -197,7 +206,7 @@ function db_delayedexecution_shutdown_hook() {
*
* @param string $dblinktype The type of link we want: "read", "write" or "readwrite".
*
- * @return object Database link
+ * @return resource Database link
* @access private
*/
function get_db_link($dblinktype) {
@@ -216,7 +225,7 @@ function get_db_link($dblinktype) {
/**
* Execute an EXPLAIN for $query.
*
- * @param str $query The query to explain
+ * @param string $query The query to explain
* @param mixed $link The database link resource to user.
*
* @return mixed An object of the query's result, or FALSE
@@ -240,14 +249,14 @@ function explain_query($query, $link) {
* {@link $dbcalls} is incremented and the query is saved into the {@link $DB_QUERY_CACHE}.
*
* @param string $query The query
- * @param link $dblink The DB link
+ * @param resource $dblink The DB link
*
- * @return The result of mysql_query()
+ * @return resource result of mysql_query()
* @throws DatabaseException
* @access private
*/
function execute_query($query, $dblink) {
- global $CONFIG, $dbcalls;
+ global $dbcalls;
if ($query == NULL) {
throw new DatabaseException(elgg_echo('DatabaseException:InvalidQuery'));
@@ -275,7 +284,7 @@ function execute_query($query, $dblink) {
* the raw result from {@link mysql_query()}.
*
* @param string $query The query to execute
- * @param resource $dblink The database link to use or the link type (read | write)
+ * @param resource|string $dblink The database link to use or the link type (read | write)
* @param string $handler A callback function to pass the results array to
*
* @return true
@@ -386,20 +395,18 @@ function get_data_row($query, $callback = "") {
* @access private
*/
function elgg_query_runner($query, $callback = null, $single = false) {
- global $CONFIG, $DB_QUERY_CACHE;
+ global $DB_QUERY_CACHE;
// Since we want to cache results of running the callback, we need to
// need to namespace the query with the callback and single result request.
- // http://trac.elgg.org/ticket/4049
+ // https://github.com/elgg/elgg/issues/4049
$hash = (string)$callback . (int)$single . $query;
// Is cached?
if ($DB_QUERY_CACHE) {
- $cached_query = $DB_QUERY_CACHE[$hash];
-
- if ($cached_query !== FALSE) {
+ if (isset($DB_QUERY_CACHE[$hash])) {
elgg_log("DB query $query results returned from cache (hash: $hash)", 'NOTICE');
- return $cached_query;
+ return $DB_QUERY_CACHE[$hash];
}
}
@@ -410,7 +417,7 @@ function elgg_query_runner($query, $callback = null, $single = false) {
// test for callback once instead of on each iteration.
// @todo check profiling to see if this needs to be broken out into
- // explicit cases instead of checking in the interation.
+ // explicit cases instead of checking in the iteration.
$is_callable = is_callable($callback);
while ($row = mysql_fetch_object($result)) {
if ($is_callable) {
@@ -451,18 +458,12 @@ function elgg_query_runner($query, $callback = null, $single = false) {
* @access private
*/
function insert_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- }
-
- elgg_log("Query cache invalidated", 'NOTICE');
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return mysql_insert_id($dblink);
@@ -472,7 +473,7 @@ function insert_data($query) {
}
/**
- * Update a row in the database.
+ * Update the database.
*
* @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.
*
@@ -482,17 +483,12 @@ function insert_data($query) {
* @access private
*/
function update_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- elgg_log("Query cache invalidated", 'NOTICE');
- }
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return TRUE;
@@ -502,7 +498,7 @@ function update_data($query) {
}
/**
- * Remove a row from the database.
+ * Remove data from the database.
*
* @note Altering the DB invalidates all queries in {@link $DB_QUERY_CACHE}.
*
@@ -512,17 +508,12 @@ function update_data($query) {
* @access private
*/
function delete_data($query) {
- global $CONFIG, $DB_QUERY_CACHE;
elgg_log("DB query $query", 'NOTICE');
$dblink = get_db_link('write');
- // Invalidate query cache
- if ($DB_QUERY_CACHE) {
- $DB_QUERY_CACHE->clear();
- elgg_log("Query cache invalidated", 'NOTICE');
- }
+ _elgg_invalidate_query_cache();
if (execute_query("$query", $dblink)) {
return mysql_affected_rows($dblink);
@@ -531,6 +522,22 @@ function delete_data($query) {
return FALSE;
}
+/**
+ * Invalidate the query cache
+ *
+ * @access private
+ */
+function _elgg_invalidate_query_cache() {
+ global $DB_QUERY_CACHE;
+ if ($DB_QUERY_CACHE instanceof ElggLRUCache) {
+ $DB_QUERY_CACHE->clear();
+ elgg_log("Query cache invalidated", 'NOTICE');
+ } elseif ($DB_QUERY_CACHE) {
+ // In case someone sets the cache to an array and primes it with data
+ $DB_QUERY_CACHE = array();
+ elgg_log("Query cache invalidated", 'NOTICE');
+ }
+}
/**
* Return tables matching the database prefix {@link $CONFIG->dbprefix}% in the currently
@@ -638,7 +645,7 @@ function run_sql_script($scriptlocation) {
$statement = str_replace("prefix_", $CONFIG->dbprefix, $statement);
if (!empty($statement)) {
try {
- $result = update_data($statement);
+ update_data($statement);
} catch (DatabaseException $e) {
$errors[] = $e->getMessage();
}
@@ -661,7 +668,7 @@ function run_sql_script($scriptlocation) {
/**
* Format a query string for logging
- *
+ *
* @param string $query Query string
* @return string
* @access private
diff --git a/engine/lib/deprecated-1.7.php b/engine/lib/deprecated-1.7.php
index 519eea89d..ee95b5611 100644
--- a/engine/lib/deprecated-1.7.php
+++ b/engine/lib/deprecated-1.7.php
@@ -1137,6 +1137,7 @@ function make_register_object($register_name, $register_value, $children_array =
* @param int $guid GUID
*
* @return 1
+ * @deprecated 1.7
*/
function delete_object_entity($guid) {
system_message(elgg_echo('deprecatedfunction', array('delete_user_entity')));
@@ -1154,6 +1155,7 @@ function delete_object_entity($guid) {
* @param int $guid User GUID
*
* @return 1
+ * @deprecated 1.7
*/
function delete_user_entity($guid) {
system_message(elgg_echo('deprecatedfunction', array('delete_user_entity')));
diff --git a/engine/lib/deprecated-1.8.php b/engine/lib/deprecated-1.8.php
index 4b9d41543..91068d047 100644
--- a/engine/lib/deprecated-1.8.php
+++ b/engine/lib/deprecated-1.8.php
@@ -87,7 +87,7 @@ function list_entities_from_access_id($access_id, $entity_type = "", $entity_sub
elgg_deprecated_notice("All list_entities* functions were deprecated in 1.8. Use elgg_list_entities* instead.", 1.8);
echo elgg_list_entities_from_access_id(array('access_id' => $access_id,
- 'types' => $entity_type, 'subtypes' => $entity_subtype, 'owner_guids' => $owner_guid,
+ 'type' => $entity_type, 'subtype' => $entity_subtype, 'owner_guids' => $owner_guid,
'limit' => $limit, 'full_view' => $fullview, 'list_type_toggle' => $listtypetoggle,
'pagination' => $pagination,));
}
@@ -1314,8 +1314,8 @@ function list_entities_from_metadata($meta_name, $meta_value = "", $entity_type
$options = array(
'metadata_name' => $meta_name,
'metadata_value' => $meta_value,
- 'types' => $entity_type,
- 'subtypes' => $entity_subtype,
+ 'type' => $entity_type,
+ 'subtype' => $entity_subtype,
'limit' => $limit,
'offset' => $offset,
'count' => TRUE,
@@ -2120,8 +2120,8 @@ $fullview = true, $listtypetoggle = false, $pagination = true, $order_by = '') {
'relationship' => $relationship,
'relationship_guid' => $relationship_guid,
'inverse_relationship' => $inverse_relationship,
- 'types' => $type,
- 'subtypes' => $subtype,
+ 'type' => $type,
+ 'subtype' => $subtype,
'owner_guid' => $owner_guid,
'order_by' => $order_by,
'limit' => $limit,
@@ -2566,9 +2566,9 @@ $owner_guid = "", $owner_relationship = "") {
'relationship' => $owner_relationship,
'relationship_guid' => $owner_guid[0],
'inverse_relationship' => FALSE,
- 'types' => 'user',
- 'subtypes' => $subtype,
- 'limit' => 9999))
+ 'type' => 'user',
+ 'subtype' => $subtype,
+ 'limit' => false))
) {
$friendsarray = array();
@@ -2721,8 +2721,8 @@ function get_site_collections($site_guid, $subtype = "", $limit = 10, $offset =
'relationship' => 'member_of_site',
'relationship_guid' => $site_guid,
'inverse_relationship' => TRUE,
- 'types' => 'collection',
- 'subtypes' => $subtype,
+ 'type' => 'collection',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -3414,6 +3414,7 @@ function list_annotations($entity_guid, $name = "", $limit = 25, $asc = true) {
* @param unknown_type $timeupper
* @param unknown_type $calculation
* @internal Don't use this at all.
+ * @deprecated 1.8 Use elgg_get_annotations()
*/
function elgg_deprecated_annotation_calculation($entity_guid = 0, $entity_type = "", $entity_subtype = "",
$name = "", $value = "", $value_type = "", $owner_guid = 0, $timelower = 0,
@@ -4667,6 +4668,7 @@ function display_widget(ElggObject $widget) {
*
* @param ElggEntity $entity
* @return int Number of comments
+ * @deprecated 1.8 Use ElggEntity->countComments()
*/
function elgg_count_comments($entity) {
elgg_deprecated_notice('elgg_count_comments() is deprecated by ElggEntity->countComments()', 1.8);
@@ -4772,3 +4774,47 @@ function default_page_handler($page, $handler) {
return FALSE;
}
+
+/**
+ * Invalidate this class's entry in the cache.
+ *
+ * @param int $guid The entity guid
+ *
+ * @return void
+ * @access private
+ * @deprecated 1.8
+ */
+function invalidate_cache_for_entity($guid) {
+ elgg_deprecated_notice('invalidate_cache_for_entity() is a private function and should not be used.', 1.8);
+ _elgg_invalidate_cache_for_entity($guid);
+}
+
+/**
+ * Cache an entity.
+ *
+ * Stores an entity in $ENTITY_CACHE;
+ *
+ * @param ElggEntity $entity Entity to cache
+ *
+ * @return void
+ * @access private
+ * @deprecated 1.8
+ */
+function cache_entity(ElggEntity $entity) {
+ elgg_deprecated_notice('cache_entity() is a private function and should not be used.', 1.8);
+ _elgg_cache_entity($entity);
+}
+
+/**
+ * Retrieve a entity from the cache.
+ *
+ * @param int $guid The guid
+ *
+ * @return ElggEntity|bool false if entity not cached, or not fully loaded
+ * @access private
+ * @deprecated 1.8
+ */
+function retrieve_cached_entity($guid) {
+ elgg_deprecated_notice('retrieve_cached_entity() is a private function and should not be used.', 1.8);
+ return _elgg_retrieve_cached_entity($guid);
+}
diff --git a/engine/lib/deprecated-1.9.php b/engine/lib/deprecated-1.9.php
new file mode 100644
index 000000000..31d03428f
--- /dev/null
+++ b/engine/lib/deprecated-1.9.php
@@ -0,0 +1,582 @@
+<?php
+/**
+ * Return a timestamp for the start of a given day (defaults today).
+ *
+ * @param int $day Day
+ * @param int $month Month
+ * @param int $year Year
+ *
+ * @return int
+ * @access private
+ * @deprecated 1.9
+ */
+function get_day_start($day = null, $month = null, $year = null) {
+ elgg_deprecated_notice('get_day_start() has been deprecated', 1.9);
+ return mktime(0, 0, 0, $month, $day, $year);
+}
+
+/**
+ * Return a timestamp for the end of a given day (defaults today).
+ *
+ * @param int $day Day
+ * @param int $month Month
+ * @param int $year Year
+ *
+ * @return int
+ * @access private
+ * @deprecated 1.9
+ */
+function get_day_end($day = null, $month = null, $year = null) {
+ elgg_deprecated_notice('get_day_end() has been deprecated', 1.9);
+ return mktime(23, 59, 59, $month, $day, $year);
+}
+
+/**
+ * Return the notable entities for a given time period.
+ *
+ * @param int $start_time The start time as a unix timestamp.
+ * @param int $end_time The end time as a unix timestamp.
+ * @param string $type The type of entity (eg "user", "object" etc)
+ * @param string $subtype The arbitrary subtype of the entity
+ * @param int $owner_guid The GUID of the owning user
+ * @param string $order_by The field to order by; by default, time_created desc
+ * @param int $limit The number of entities to return; 10 by default
+ * @param int $offset The indexing offset, 0 by default
+ * @param boolean $count Set to true to get a count instead of entities. Defaults to false.
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any.
+ * @param mixed $container_guid Container or containers to get entities from (default: any).
+ *
+ * @return array|false
+ * @access private
+ * @deprecated 1.9
+ */
+function get_notable_entities($start_time, $end_time, $type = "", $subtype = "", $owner_guid = 0,
+$order_by = "asc", $limit = 10, $offset = 0, $count = false, $site_guid = 0,
+$container_guid = null) {
+ elgg_deprecated_notice('get_notable_entities() has been deprecated', 1.9);
+ global $CONFIG;
+
+ if ($subtype === false || $subtype === null || $subtype === 0) {
+ return false;
+ }
+
+ $start_time = (int)$start_time;
+ $end_time = (int)$end_time;
+ $order_by = sanitise_string($order_by);
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+ $site_guid = (int) $site_guid;
+ if ($site_guid == 0) {
+ $site_guid = $CONFIG->site_guid;
+ }
+
+ $where = array();
+
+ if (is_array($type)) {
+ $tempwhere = "";
+ if (sizeof($type)) {
+ foreach ($type as $typekey => $subtypearray) {
+ foreach ($subtypearray as $subtypeval) {
+ $typekey = sanitise_string($typekey);
+ if (!empty($subtypeval)) {
+ $subtypeval = (int) get_subtype_id($typekey, $subtypeval);
+ } else {
+ $subtypeval = 0;
+ }
+ if (!empty($tempwhere)) {
+ $tempwhere .= " or ";
+ }
+ $tempwhere .= "(e.type = '{$typekey}' and e.subtype = {$subtypeval})";
+ }
+ }
+ }
+ if (!empty($tempwhere)) {
+ $where[] = "({$tempwhere})";
+ }
+ } else {
+ $type = sanitise_string($type);
+ $subtype = get_subtype_id($type, $subtype);
+
+ if ($type != "") {
+ $where[] = "e.type='$type'";
+ }
+
+ if ($subtype !== "") {
+ $where[] = "e.subtype=$subtype";
+ }
+ }
+
+ if ($owner_guid != "") {
+ if (!is_array($owner_guid)) {
+ $owner_array = array($owner_guid);
+ $owner_guid = (int) $owner_guid;
+ $where[] = "e.owner_guid = '$owner_guid'";
+ } else if (sizeof($owner_guid) > 0) {
+ $owner_array = array_map('sanitise_int', $owner_guid);
+ // Cast every element to the owner_guid array to int
+ $owner_guid = implode(",", $owner_guid);
+ $where[] = "e.owner_guid in ({$owner_guid})";
+ }
+ if (is_null($container_guid)) {
+ $container_guid = $owner_array;
+ }
+ }
+
+ if ($site_guid > 0) {
+ $where[] = "e.site_guid = {$site_guid}";
+ }
+
+ if (!is_null($container_guid)) {
+ if (is_array($container_guid)) {
+ foreach ($container_guid as $key => $val) {
+ $container_guid[$key] = (int) $val;
+ }
+ $where[] = "e.container_guid in (" . implode(",", $container_guid) . ")";
+ } else {
+ $container_guid = (int) $container_guid;
+ $where[] = "e.container_guid = {$container_guid}";
+ }
+ }
+
+ // Add the calendar stuff
+ $cal_join = "
+ JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id
+
+ JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id
+ ";
+ $where[] = "cal_start_name.string='calendar_start'";
+ $where[] = "cal_start_value.string>=$start_time";
+ $where[] = "cal_end_name.string='calendar_end'";
+ $where[] = "cal_end_value.string <= $end_time";
+
+
+ if (!$count) {
+ $query = "SELECT e.* from {$CONFIG->dbprefix}entities e $cal_join where ";
+ } else {
+ $query = "SELECT count(e.guid) as total from {$CONFIG->dbprefix}entities e $cal_join where ";
+ }
+ foreach ($where as $w) {
+ $query .= " $w and ";
+ }
+
+ $query .= get_access_sql_suffix('e'); // Add access controls
+
+ if (!$count) {
+ $query .= " order by n.calendar_start $order_by";
+ // Add order and limit
+ if ($limit) {
+ $query .= " limit $offset, $limit";
+ }
+ $dt = get_data($query, "entity_row_to_elggstar");
+
+ return $dt;
+ } else {
+ $total = get_data_row($query);
+ return $total->total;
+ }
+}
+
+/**
+ * Return the notable entities for a given time period based on an item of metadata.
+ *
+ * @param int $start_time The start time as a unix timestamp.
+ * @param int $end_time The end time as a unix timestamp.
+ * @param mixed $meta_name Metadata name
+ * @param mixed $meta_value Metadata value
+ * @param string $entity_type The type of entity to look for, eg 'site' or 'object'
+ * @param string $entity_subtype The subtype of the entity.
+ * @param int $owner_guid Owner GUID
+ * @param int $limit Limit
+ * @param int $offset Offset
+ * @param string $order_by Optional ordering.
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any.
+ * @param bool $count If true, returns count instead of entities. (Default: false)
+ *
+ * @return int|array A list of entities, or a count if $count is set to true
+ * @access private
+ * @deprecated 1.9
+ */
+function get_notable_entities_from_metadata($start_time, $end_time, $meta_name, $meta_value = "",
+$entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "",
+$site_guid = 0, $count = false) {
+ elgg_deprecated_notice('get_notable_entities_from_metadata() has been deprecated', 1.9);
+
+ global $CONFIG;
+
+ $meta_n = get_metastring_id($meta_name);
+ $meta_v = get_metastring_id($meta_value);
+
+ $start_time = (int)$start_time;
+ $end_time = (int)$end_time;
+ $entity_type = sanitise_string($entity_type);
+ $entity_subtype = get_subtype_id($entity_type, $entity_subtype);
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+ if ($order_by == "") {
+ $order_by = "e.time_created desc";
+ }
+ $order_by = sanitise_string($order_by);
+ $site_guid = (int) $site_guid;
+ if ((is_array($owner_guid) && (count($owner_guid)))) {
+ foreach ($owner_guid as $key => $guid) {
+ $owner_guid[$key] = (int) $guid;
+ }
+ } else {
+ $owner_guid = (int) $owner_guid;
+ }
+
+ if ($site_guid == 0) {
+ $site_guid = $CONFIG->site_guid;
+ }
+
+ //$access = get_access_list();
+
+ $where = array();
+
+ if ($entity_type != "") {
+ $where[] = "e.type='$entity_type'";
+ }
+
+ if ($entity_subtype) {
+ $where[] = "e.subtype=$entity_subtype";
+ }
+
+ if ($meta_name != "") {
+ $where[] = "m.name_id='$meta_n'";
+ }
+
+ if ($meta_value != "") {
+ $where[] = "m.value_id='$meta_v'";
+ }
+
+ if ($site_guid > 0) {
+ $where[] = "e.site_guid = {$site_guid}";
+ }
+
+ if (is_array($owner_guid)) {
+ $where[] = "e.container_guid in (" . implode(",", $owner_guid) . ")";
+ } else if ($owner_guid > 0) {
+ $where[] = "e.container_guid = {$owner_guid}";
+ }
+
+ // Add the calendar stuff
+ $cal_join = "
+ JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id
+
+ JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id
+ ";
+
+ $where[] = "cal_start_name.string='calendar_start'";
+ $where[] = "cal_start_value.string>=$start_time";
+ $where[] = "cal_end_name.string='calendar_end'";
+ $where[] = "cal_end_value.string <= $end_time";
+
+ if (!$count) {
+ $query = "SELECT distinct e.* ";
+ } else {
+ $query = "SELECT count(distinct e.guid) as total ";
+ }
+
+ $query .= "from {$CONFIG->dbprefix}entities e"
+ . " JOIN {$CONFIG->dbprefix}metadata m on e.guid = m.entity_guid $cal_join where";
+
+ foreach ($where as $w) {
+ $query .= " $w and ";
+ }
+
+ // Add access controls
+ $query .= get_access_sql_suffix("e");
+ $query .= ' and ' . get_access_sql_suffix("m");
+
+ if (!$count) {
+ // Add order and limit
+ $query .= " order by $order_by limit $offset, $limit";
+ return get_data($query, "entity_row_to_elggstar");
+ } else {
+ if ($row = get_data_row($query)) {
+ return $row->total;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Return the notable entities for a given time period based on their relationship.
+ *
+ * @param int $start_time The start time as a unix timestamp.
+ * @param int $end_time The end time as a unix timestamp.
+ * @param string $relationship The relationship eg "friends_of"
+ * @param int $relationship_guid The guid of the entity to use query
+ * @param bool $inverse_relationship Reverse the normal function of the query to say
+ * "give me all entities for whom $relationship_guid is a
+ * $relationship of"
+ * @param string $type Entity type
+ * @param string $subtype Entity subtype
+ * @param int $owner_guid Owner GUID
+ * @param string $order_by Optional Order by
+ * @param int $limit Limit
+ * @param int $offset Offset
+ * @param boolean $count If true returns a count of entities (default false)
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any
+ *
+ * @return array|int|false An array of entities, or the number of entities, or false on failure
+ * @access private
+ * @deprecated 1.9
+ */
+function get_noteable_entities_from_relationship($start_time, $end_time, $relationship,
+$relationship_guid, $inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0,
+$order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) {
+ elgg_deprecated_notice('get_noteable_entities_from_relationship() has been deprecated', 1.9);
+
+ global $CONFIG;
+
+ $start_time = (int)$start_time;
+ $end_time = (int)$end_time;
+ $relationship = sanitise_string($relationship);
+ $relationship_guid = (int)$relationship_guid;
+ $inverse_relationship = (bool)$inverse_relationship;
+ $type = sanitise_string($type);
+ $subtype = get_subtype_id($type, $subtype);
+ $owner_guid = (int)$owner_guid;
+ if ($order_by == "") {
+ $order_by = "time_created desc";
+ }
+ $order_by = sanitise_string($order_by);
+ $limit = (int)$limit;
+ $offset = (int)$offset;
+ $site_guid = (int) $site_guid;
+ if ($site_guid == 0) {
+ $site_guid = $CONFIG->site_guid;
+ }
+
+ //$access = get_access_list();
+
+ $where = array();
+
+ if ($relationship != "") {
+ $where[] = "r.relationship='$relationship'";
+ }
+ if ($relationship_guid) {
+ $where[] = $inverse_relationship ?
+ "r.guid_two='$relationship_guid'" : "r.guid_one='$relationship_guid'";
+ }
+ if ($type != "") {
+ $where[] = "e.type='$type'";
+ }
+ if ($subtype) {
+ $where[] = "e.subtype=$subtype";
+ }
+ if ($owner_guid != "") {
+ $where[] = "e.container_guid='$owner_guid'";
+ }
+ if ($site_guid > 0) {
+ $where[] = "e.site_guid = {$site_guid}";
+ }
+
+ // Add the calendar stuff
+ $cal_join = "
+ JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id
+
+ JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id
+ JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id
+ ";
+ $where[] = "cal_start_name.string='calendar_start'";
+ $where[] = "cal_start_value.string>=$start_time";
+ $where[] = "cal_end_name.string='calendar_end'";
+ $where[] = "cal_end_value.string <= $end_time";
+
+ // Select what we're joining based on the options
+ $joinon = "e.guid = r.guid_one";
+ if (!$inverse_relationship) {
+ $joinon = "e.guid = r.guid_two";
+ }
+
+ if ($count) {
+ $query = "SELECT count(distinct e.guid) as total ";
+ } else {
+ $query = "SELECT distinct e.* ";
+ }
+ $query .= " from {$CONFIG->dbprefix}entity_relationships r"
+ . " JOIN {$CONFIG->dbprefix}entities e on $joinon $cal_join where ";
+
+ foreach ($where as $w) {
+ $query .= " $w and ";
+ }
+ // Add access controls
+ $query .= get_access_sql_suffix("e");
+ if (!$count) {
+ $query .= " order by $order_by limit $offset, $limit"; // Add order and limit
+ return get_data($query, "entity_row_to_elggstar");
+ } else {
+ if ($count = get_data_row($query)) {
+ return $count->total;
+ }
+ }
+ return false;
+}
+
+/**
+ * Get all entities for today.
+ *
+ * @param string $type The type of entity (eg "user", "object" etc)
+ * @param string $subtype The arbitrary subtype of the entity
+ * @param int $owner_guid The GUID of the owning user
+ * @param string $order_by The field to order by; by default, time_created desc
+ * @param int $limit The number of entities to return; 10 by default
+ * @param int $offset The indexing offset, 0 by default
+ * @param boolean $count If true returns a count of entities (default false)
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any
+ * @param mixed $container_guid Container(s) to get entities from (default: any).
+ *
+ * @return array|false
+ * @access private
+ * @deprecated 1.9
+ */
+function get_todays_entities($type = "", $subtype = "", $owner_guid = 0, $order_by = "",
+$limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null) {
+ elgg_deprecated_notice('get_todays_entities() has been deprecated', 1.9);
+
+ $day_start = get_day_start();
+ $day_end = get_day_end();
+
+ return get_notable_entities($day_start, $day_end, $type, $subtype, $owner_guid, $order_by,
+ $limit, $offset, $count, $site_guid, $container_guid);
+}
+
+/**
+ * Get entities for today from metadata.
+ *
+ * @param mixed $meta_name Metadata name
+ * @param mixed $meta_value Metadata value
+ * @param string $entity_type The type of entity to look for, eg 'site' or 'object'
+ * @param string $entity_subtype The subtype of the entity.
+ * @param int $owner_guid Owner GUID
+ * @param int $limit Limit
+ * @param int $offset Offset
+ * @param string $order_by Optional ordering.
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any.
+ * @param bool $count If true, returns count instead of entities. (Default: false)
+ *
+ * @return int|array A list of entities, or a count if $count is set to true
+ * @access private
+ * @deprecated 1.9
+ */
+function get_todays_entities_from_metadata($meta_name, $meta_value = "", $entity_type = "",
+$entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", $site_guid = 0,
+$count = false) {
+ elgg_deprecated_notice('get_todays_entities_from_metadata() has been deprecated', 1.9);
+
+ $day_start = get_day_start();
+ $day_end = get_day_end();
+
+ return get_notable_entities_from_metadata($day_start, $day_end, $meta_name, $meta_value,
+ $entity_type, $entity_subtype, $owner_guid, $limit, $offset, $order_by, $site_guid, $count);
+}
+
+/**
+ * Get entities for today from a relationship
+ *
+ * @param string $relationship The relationship eg "friends_of"
+ * @param int $relationship_guid The guid of the entity to use query
+ * @param bool $inverse_relationship Reverse the normal function of the query to say
+ * "give me all entities for whom $relationship_guid is a
+ * $relationship of"
+ * @param string $type Entity type
+ * @param string $subtype Entity subtype
+ * @param int $owner_guid Owner GUID
+ * @param string $order_by Optional Order by
+ * @param int $limit Limit
+ * @param int $offset Offset
+ * @param boolean $count If true returns a count of entities (default false)
+ * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any
+ *
+ * @return array|int|false An array of entities, or the number of entities, or false on failure
+ * @access private
+ * @deprecated 1.9
+ */
+function get_todays_entities_from_relationship($relationship, $relationship_guid,
+$inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0,
+$order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) {
+ elgg_deprecated_notice('get_todays_entities_from_relationship() has been deprecated', 1.9);
+
+ $day_start = get_day_start();
+ $day_end = get_day_end();
+
+ return get_notable_entities_from_relationship($day_start, $day_end, $relationship,
+ $relationship_guid, $inverse_relationship, $type, $subtype, $owner_guid, $order_by,
+ $limit, $offset, $count, $site_guid);
+}
+
+/**
+ * Returns a viewable list of entities for a given time period.
+ *
+ * @see elgg_view_entity_list
+ *
+ * @param int $start_time The start time as a unix timestamp.
+ * @param int $end_time The end time as a unix timestamp.
+ * @param string $type The type of entity (eg "user", "object" etc)
+ * @param string $subtype The arbitrary subtype of the entity
+ * @param int $owner_guid The GUID of the owning user
+ * @param int $limit The number of entities to return; 10 by default
+ * @param boolean $fullview Whether or not to display the full view (default: true)
+ * @param boolean $listtypetoggle Whether or not to allow gallery view
+ * @param boolean $navigation Display pagination? Default: true
+ *
+ * @return string A viewable list of entities
+ * @access private
+ * @deprecated 1.9
+ */
+function list_notable_entities($start_time, $end_time, $type= "", $subtype = "", $owner_guid = 0,
+$limit = 10, $fullview = true, $listtypetoggle = false, $navigation = true) {
+ elgg_deprecated_notice('list_notable_entities() has been deprecated', 1.9);
+
+ $offset = (int) get_input('offset');
+ $count = get_notable_entities($start_time, $end_time, $type, $subtype,
+ $owner_guid, "", $limit, $offset, true);
+
+ $entities = get_notable_entities($start_time, $end_time, $type, $subtype,
+ $owner_guid, "", $limit, $offset);
+
+ return elgg_view_entity_list($entities, $count, $offset, $limit,
+ $fullview, $listtypetoggle, $navigation);
+}
+
+/**
+ * Return a list of today's entities.
+ *
+ * @see list_notable_entities
+ *
+ * @param string $type The type of entity (eg "user", "object" etc)
+ * @param string $subtype The arbitrary subtype of the entity
+ * @param int $owner_guid The GUID of the owning user
+ * @param int $limit The number of entities to return; 10 by default
+ * @param boolean $fullview Whether or not to display the full view (default: true)
+ * @param boolean $listtypetoggle Whether or not to allow gallery view
+ * @param boolean $navigation Display pagination? Default: true
+ *
+ * @return string A viewable list of entities
+ * @access private
+ * @deprecated 1.9
+ */
+function list_todays_entities($type= "", $subtype = "", $owner_guid = 0, $limit = 10,
+$fullview = true, $listtypetoggle = false, $navigation = true) {
+ elgg_deprecated_notice('list_todays_entities() has been deprecated', 1.9);
+
+ $day_start = get_day_start();
+ $day_end = get_day_end();
+
+ return list_notable_entities($day_start, $day_end, $type, $subtype, $owner_guid, $limit,
+ $fullview, $listtypetoggle, $navigation);
+}
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 3026a78e3..34111c69d 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -93,10 +93,17 @@ function elgg_register_library($name, $location) {
* @return void
* @throws InvalidParameterException
* @since 1.8.0
+ * @todo return boolean in 1.9 to indicate whether the library has been loaded
*/
function elgg_load_library($name) {
global $CONFIG;
+ static $loaded_libraries = array();
+
+ if (in_array($name, $loaded_libraries)) {
+ return;
+ }
+
if (!isset($CONFIG->libraries)) {
$CONFIG->libraries = array();
}
@@ -113,6 +120,8 @@ function elgg_load_library($name) {
);
throw new InvalidParameterException($error);
}
+
+ $loaded_libraries[] = $name;
}
/**
@@ -124,12 +133,11 @@ function elgg_load_library($name) {
* @param string $location URL to forward to browser to. Can be path relative to the network's URL.
* @param string $reason Short explanation for why we're forwarding
*
- * @return False False if headers have been sent. Terminates execution if forwarding.
+ * @return false False if headers have been sent. Terminates execution if forwarding.
+ * @throws SecurityException
*/
function forward($location = "", $reason = 'system') {
- global $CONFIG;
-
- if (!headers_sent()) {
+ if (!headers_sent($file, $line)) {
if ($location === REFERER) {
$location = $_SERVER['HTTP_REFERER'];
}
@@ -148,7 +156,7 @@ function forward($location = "", $reason = 'system') {
exit;
}
} else {
- throw new SecurityException(elgg_echo('SecurityException:ForwardFailedToRedirect'));
+ throw new SecurityException(elgg_echo('SecurityException:ForwardFailedToRedirect', array($file, $line)));
}
}
@@ -384,7 +392,7 @@ function elgg_load_external_file($type, $name) {
$item->url = '';
$item->location = '';
- $priority = $CONFIG->externals[$type]->add($item);
+ $CONFIG->externals[$type]->add($item);
$CONFIG->externals_map[$type][$name] = $item;
}
}
@@ -528,7 +536,7 @@ function sanitise_filepath($path, $append_slash = TRUE) {
* @param string $register Types of message: "error", "success" (default: success)
* @param bool $count Count the number of messages (default: false)
*
- * @return true|false|array Either the array of messages, or a response regarding
+ * @return bool|array Either the array of messages, or a response regarding
* whether the message addition was successful.
* @todo Clean up. Separate registering messages and retrieving them.
*/
@@ -562,7 +570,7 @@ function system_messages($message = null, $register = "success", $count = false)
return sizeof($_SESSION['msg'][$register]);
} else {
$count = 0;
- foreach ($_SESSION['msg'] as $register => $submessages) {
+ foreach ($_SESSION['msg'] as $submessages) {
$count += sizeof($submessages);
}
return $count;
@@ -671,7 +679,7 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
global $CONFIG;
if (empty($event) || empty($object_type)) {
- return FALSE;
+ return false;
}
if (!isset($CONFIG->events)) {
@@ -684,8 +692,8 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
$CONFIG->events[$event][$object_type] = array();
}
- if (!is_callable($callback)) {
- return FALSE;
+ if (!is_callable($callback, true)) {
+ return false;
}
$priority = max((int) $priority, 0);
@@ -695,7 +703,7 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
}
$CONFIG->events[$event][$object_type][$priority] = $callback;
ksort($CONFIG->events[$event][$object_type]);
- return TRUE;
+ return true;
}
/**
@@ -710,9 +718,12 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority
*/
function elgg_unregister_event_handler($event, $object_type, $callback) {
global $CONFIG;
- foreach ($CONFIG->events[$event][$object_type] as $key => $event_callback) {
- if ($event_callback == $callback) {
- unset($CONFIG->events[$event][$object_type][$key]);
+
+ if (isset($CONFIG->events[$event]) && isset($CONFIG->events[$event][$object_type])) {
+ foreach ($CONFIG->events[$event][$object_type] as $key => $event_callback) {
+ if ($event_callback == $callback) {
+ unset($CONFIG->events[$event][$object_type][$key]);
+ }
}
}
}
@@ -735,7 +746,7 @@ function elgg_unregister_event_handler($event, $object_type, $callback) {
* @tip When referring to events, the preferred syntax is "event, type".
*
* @internal Only rarely should events be changed, added, or removed in core.
- * When making changes to events, be sure to first create a ticket in trac.
+ * When making changes to events, be sure to first create a ticket on Github.
*
* @internal @tip Think of $object_type as the primary namespace element, and
* $event as the secondary namespace.
@@ -770,14 +781,14 @@ function elgg_trigger_event($event, $object_type, $object = null) {
foreach ($events as $callback_list) {
if (is_array($callback_list)) {
foreach ($callback_list as $callback) {
- if (call_user_func_array($callback, $args) === FALSE) {
- return FALSE;
+ if (is_callable($callback) && (call_user_func_array($callback, $args) === false)) {
+ return false;
}
}
}
}
- return TRUE;
+ return true;
}
/**
@@ -836,7 +847,7 @@ function elgg_trigger_event($event, $object_type, $object = null) {
*
* @param string $hook The name of the hook
* @param string $type The type of the hook
- * @param callback $callback The name of a valid function or an array with object and method
+ * @param callable $callback The name of a valid function or an array with object and method
* @param int $priority The priority - 500 is default, lower numbers called first
*
* @return bool
@@ -850,7 +861,7 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
global $CONFIG;
if (empty($hook) || empty($type)) {
- return FALSE;
+ return false;
}
if (!isset($CONFIG->hooks)) {
@@ -863,8 +874,8 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
$CONFIG->hooks[$hook][$type] = array();
}
- if (!is_callable($callback)) {
- return FALSE;
+ if (!is_callable($callback, true)) {
+ return false;
}
$priority = max((int) $priority, 0);
@@ -874,7 +885,7 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
}
$CONFIG->hooks[$hook][$type][$priority] = $callback;
ksort($CONFIG->hooks[$hook][$type]);
- return TRUE;
+ return true;
}
/**
@@ -882,16 +893,19 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =
*
* @param string $hook The name of the hook
* @param string $entity_type The name of the type of entity (eg "user", "object" etc)
- * @param callback $callback The PHP callback to be removed
+ * @param callable $callback The PHP callback to be removed
*
* @return void
* @since 1.8.0
*/
function elgg_unregister_plugin_hook_handler($hook, $entity_type, $callback) {
global $CONFIG;
- foreach ($CONFIG->hooks[$hook][$entity_type] as $key => $hook_callback) {
- if ($hook_callback == $callback) {
- unset($CONFIG->hooks[$hook][$entity_type][$key]);
+
+ if (isset($CONFIG->hooks[$hook]) && isset($CONFIG->hooks[$hook][$entity_type])) {
+ foreach ($CONFIG->hooks[$hook][$entity_type] as $key => $hook_callback) {
+ if ($hook_callback == $callback) {
+ unset($CONFIG->hooks[$hook][$entity_type][$key]);
+ }
}
}
}
@@ -970,10 +984,12 @@ function elgg_trigger_plugin_hook($hook, $type, $params = null, $returnvalue = n
foreach ($hooks as $callback_list) {
if (is_array($callback_list)) {
foreach ($callback_list as $hookcallback) {
- $args = array($hook, $type, $returnvalue, $params);
- $temp_return_value = call_user_func_array($hookcallback, $args);
- if (!is_null($temp_return_value)) {
- $returnvalue = $temp_return_value;
+ if (is_callable($hookcallback)) {
+ $args = array($hook, $type, $returnvalue, $params);
+ $temp_return_value = call_user_func_array($hookcallback, $args);
+ if (!is_null($temp_return_value)) {
+ $returnvalue = $temp_return_value;
+ }
}
}
}
@@ -1052,6 +1068,7 @@ function _elgg_php_exception_handler($exception) {
* @param array $vars An array that points to the active symbol table where error occurred
*
* @return true
+ * @throws Exception
* @access private
* @todo Replace error_log calls with elgg_log calls.
*/
@@ -1070,7 +1087,11 @@ function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
case E_WARNING :
case E_USER_WARNING :
case E_RECOVERABLE_ERROR: // (e.g. type hint violation)
- error_log("PHP WARNING: $error");
+
+ // check if the error wasn't suppressed by the error control operator (@)
+ if (error_reporting()) {
+ error_log("PHP WARNING: $error");
+ }
break;
default:
@@ -1173,6 +1194,11 @@ function elgg_dump($value, $to_screen = TRUE, $level = 'NOTICE') {
$to_screen = FALSE;
}
+ // Do not want to write to JS or CSS pages
+ if (elgg_in_context('js') || elgg_in_context('css')) {
+ $to_screen = FALSE;
+ }
+
if ($to_screen == TRUE) {
echo '<pre>';
print_r($value);
@@ -1280,8 +1306,6 @@ function elgg_deprecated_notice($msg, $dep_version, $backtrace_level = 1) {
* @return string The current page URL.
*/
function current_page_url() {
- global $CONFIG;
-
$url = parse_url(elgg_get_site_url());
$page = $url['scheme'] . "://";
@@ -1326,7 +1350,7 @@ function full_url() {
"" : (":" . $_SERVER["SERVER_PORT"]);
// This is here to prevent XSS in poorly written browsers used by 80% of the population.
- // {@trac [5813]}
+ // https://github.com/Elgg/Elgg/commit/0c947e80f512cb0a482b1864fd0a6965c8a0cd4a
$quotes = array('\'', '"');
$encoded = array('%27', '%22');
@@ -1342,7 +1366,7 @@ function full_url() {
* @param array $parts Associative array of URL components like parse_url() returns
* @param bool $html_encode HTML Encode the url?
*
- * @return str Full URL
+ * @return string Full URL
* @since 1.7.0
*/
function elgg_http_build_url(array $parts, $html_encode = TRUE) {
@@ -1373,10 +1397,10 @@ function elgg_http_build_url(array $parts, $html_encode = TRUE) {
* add tokens to the action. The form view automatically handles
* tokens.
*
- * @param str $url Full action URL
- * @param bool $html_encode HTML encode the url? (default: false)
+ * @param string $url Full action URL
+ * @param bool $html_encode HTML encode the url? (default: false)
*
- * @return str URL with action tokens
+ * @return string URL with action tokens
* @since 1.7.0
* @link http://docs.elgg.org/Tutorials/Actions
*/
@@ -1428,17 +1452,17 @@ function elgg_http_remove_url_query_element($url, $element) {
}
$url_array['query'] = http_build_query($query);
- $string = elgg_http_build_url($url_array);
+ $string = elgg_http_build_url($url_array, false);
return $string;
}
/**
* Adds an element or elements to a URL's query string.
*
- * @param str $url The URL
- * @param array $elements Key/value pairs to add to the URL
+ * @param string $url The URL
+ * @param array $elements Key/value pairs to add to the URL
*
- * @return str The new URL with the query strings added
+ * @return string The new URL with the query strings added
* @since 1.7.0
*/
function elgg_http_add_url_query_elements($url, array $elements) {
@@ -1475,8 +1499,6 @@ function elgg_http_add_url_query_elements($url, array $elements) {
* @since 1.8.0
*/
function elgg_http_url_is_identical($url1, $url2, $ignore_params = array('offset', 'limit')) {
- global $CONFIG;
-
// if the server portion is missing but it starts with / then add the url in.
// @todo use elgg_normalize_url()
if (elgg_substr($url1, 0, 1) == '/') {
@@ -1575,7 +1597,7 @@ function elgg_http_url_is_identical($url1, $url2, $ignore_params = array('offset
* @param bool $strict Return array key if it's set, even if empty. If false,
* return $default if the array key is unset or empty.
*
- * @return void
+ * @return mixed
* @since 1.8.0
*/
function elgg_extract($key, array $array, $default = null, $strict = true) {
@@ -1615,7 +1637,7 @@ $sort_type = SORT_LOCALE_STRING) {
$sort = array();
- foreach ($array as $k => $v) {
+ foreach ($array as $v) {
if (isset($v[$element])) {
$sort[] = strtolower($v[$element]);
} else {
@@ -1634,7 +1656,7 @@ $sort_type = SORT_LOCALE_STRING) {
*
* @param string $ini_get_arg The INI setting
*
- * @return true|false Depending on whether it's on or off
+ * @return bool Depending on whether it's on or off
*/
function ini_get_bool($ini_get_arg) {
$temp = strtolower(ini_get($ini_get_arg));
@@ -1650,7 +1672,7 @@ function ini_get_bool($ini_get_arg) {
*
* @tip Use this for arithmetic when determining if a file can be uploaded.
*
- * @param str $setting The php.ini setting
+ * @param string $setting The php.ini setting
*
* @return int
* @since 1.7.0
@@ -1665,8 +1687,10 @@ function elgg_get_ini_setting_in_bytes($setting) {
switch($last) {
case 'g':
$val *= 1024;
+ // fallthrough intentional
case 'm':
$val *= 1024;
+ // fallthrough intentional
case 'k':
$val *= 1024;
}
@@ -1823,7 +1847,7 @@ function elgg_ajax_page_handler($page) {
*
* @param array $page The page array
*
- * @return void
+ * @return bool
* @elgg_pagehandler css
* @access private
*/
@@ -1879,7 +1903,7 @@ function elgg_cacheable_view_page_handler($page, $type) {
header("Content-type: $content_type");
// @todo should js be cached when simple cache turned off
- //header('Expires: ' . date('r', time() + 864000));
+ //header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+10 days")), true);
//header("Pragma: public");
//header("Cache-Control: public");
//header("Content-Length: " . strlen($return));
@@ -1887,6 +1911,7 @@ function elgg_cacheable_view_page_handler($page, $type) {
echo $return;
return true;
}
+ return false;
}
/**
@@ -2208,7 +2233,7 @@ function elgg_init() {
* @param array $params empty
*
* @elgg_plugin_hook unit_tests system
- * @return void
+ * @return array
* @access private
*/
function elgg_api_test($hook, $type, $value, $params) {
@@ -2220,7 +2245,10 @@ function elgg_api_test($hook, $type, $value, $params) {
}
/**#@+
- * Controlls access levels on ElggEntity entities, metadata, and annotations.
+ * Controls access levels on ElggEntity entities, metadata, and annotations.
+ *
+ * @warning ACCESS_DEFAULT is a place holder for the input/access view. Do not
+ * use it when saving an entity.
*
* @var int
*/
@@ -2254,7 +2282,7 @@ define('ELGG_ENTITIES_NO_VALUE', 0);
* referring page.
*
* @see forward
- * @var unknown_type
+ * @var int -1
*/
define('REFERRER', -1);
diff --git a/engine/lib/entities.php b/engine/lib/entities.php
index abfe07276..4fcf1c657 100644
--- a/engine/lib/entities.php
+++ b/engine/lib/entities.php
@@ -17,13 +17,50 @@ global $ENTITY_CACHE;
$ENTITY_CACHE = array();
/**
- * Cache subtypes and related class names once loaded.
+ * GUIDs of entities banned from the entity cache (during this request)
*
- * @global array $SUBTYPE_CACHE
+ * @global array $ENTITY_CACHE_DISABLED_GUIDS
+ * @access private
+ */
+global $ENTITY_CACHE_DISABLED_GUIDS;
+$ENTITY_CACHE_DISABLED_GUIDS = array();
+
+/**
+ * Cache subtypes and related class names.
+ *
+ * @global array|null $SUBTYPE_CACHE array once populated from DB, initially null
* @access private
*/
global $SUBTYPE_CACHE;
-$SUBTYPE_CACHE = NULL;
+$SUBTYPE_CACHE = null;
+
+/**
+ * Remove this entity from the entity cache and make sure it is not re-added
+ *
+ * @param int $guid The entity guid
+ *
+ * @access private
+ * @todo this is a workaround until #5604 can be implemented
+ */
+function _elgg_disable_caching_for_entity($guid) {
+ global $ENTITY_CACHE_DISABLED_GUIDS;
+
+ _elgg_invalidate_cache_for_entity($guid);
+ $ENTITY_CACHE_DISABLED_GUIDS[$guid] = true;
+}
+
+/**
+ * Allow this entity to be stored in the entity cache
+ *
+ * @param int $guid The entity guid
+ *
+ * @access private
+ */
+function _elgg_enable_caching_for_entity($guid) {
+ global $ENTITY_CACHE_DISABLED_GUIDS;
+
+ unset($ENTITY_CACHE_DISABLED_GUIDS[$guid]);
+}
/**
* Invalidate this class's entry in the cache.
@@ -33,12 +70,14 @@ $SUBTYPE_CACHE = NULL;
* @return void
* @access private
*/
-function invalidate_cache_for_entity($guid) {
+function _elgg_invalidate_cache_for_entity($guid) {
global $ENTITY_CACHE;
$guid = (int)$guid;
unset($ENTITY_CACHE[$guid]);
+
+ elgg_get_metadata_cache()->clear($guid);
}
/**
@@ -49,14 +88,40 @@ function invalidate_cache_for_entity($guid) {
* @param ElggEntity $entity Entity to cache
*
* @return void
- * @see retrieve_cached_entity()
- * @see invalidate_cache_for_entity()
+ * @see _elgg_retrieve_cached_entity()
+ * @see _elgg_invalidate_cache_for_entity()
* @access private
+ * @todo Use an ElggCache object
*/
-function cache_entity(ElggEntity $entity) {
- global $ENTITY_CACHE;
+function _elgg_cache_entity(ElggEntity $entity) {
+ global $ENTITY_CACHE, $ENTITY_CACHE_DISABLED_GUIDS;
+
+ // Don't cache non-plugin entities while access control is off, otherwise they could be
+ // exposed to users who shouldn't see them when control is re-enabled.
+ if (!($entity instanceof ElggPlugin) && elgg_get_ignore_access()) {
+ return;
+ }
+
+ $guid = $entity->getGUID();
+ if (isset($ENTITY_CACHE_DISABLED_GUIDS[$guid])) {
+ return;
+ }
+
+ // Don't store too many or we'll have memory problems
+ // @todo Pick a less arbitrary limit
+ if (count($ENTITY_CACHE) > 256) {
+ $random_guid = array_rand($ENTITY_CACHE);
+
+ unset($ENTITY_CACHE[$random_guid]);
+
+ // Purge separate metadata cache. Original idea was to do in entity destructor, but that would
+ // have caused a bunch of unnecessary purges at every shutdown. Doing it this way we have no way
+ // to know that the expunged entity will be GCed (might be another reference living), but that's
+ // OK; the metadata will reload if necessary.
+ elgg_get_metadata_cache()->clear($random_guid);
+ }
- $ENTITY_CACHE[$entity->guid] = $entity;
+ $ENTITY_CACHE[$guid] = $entity;
}
/**
@@ -64,16 +129,14 @@ function cache_entity(ElggEntity $entity) {
*
* @param int $guid The guid
*
- * @return void
- * @see cache_entity()
- * @see invalidate_cache_for_entity()
+ * @return ElggEntity|bool false if entity not cached, or not fully loaded
+ * @see _elgg_cache_entity()
+ * @see _elgg_invalidate_cache_for_entity()
* @access private
*/
-function retrieve_cached_entity($guid) {
+function _elgg_retrieve_cached_entity($guid) {
global $ENTITY_CACHE;
- $guid = (int)$guid;
-
if (isset($ENTITY_CACHE[$guid])) {
if ($ENTITY_CACHE[$guid]->isFullyLoaded()) {
return $ENTITY_CACHE[$guid];
@@ -84,31 +147,6 @@ function retrieve_cached_entity($guid) {
}
/**
- * As retrieve_cached_entity, but returns the result as a stdClass
- * (compatible with load functions that expect a database row.)
- *
- * @param int $guid The guid
- *
- * @return mixed
- * @todo unused
- * @access private
- */
-function retrieve_cached_entity_row($guid) {
- $obj = retrieve_cached_entity($guid);
- if ($obj) {
- $tmp = new stdClass;
-
- foreach ($obj as $k => $v) {
- $tmp->$k = $v;
- }
-
- return $tmp;
- }
-
- return false;
-}
-
-/**
* Return the id for a given subtype.
*
* ElggEntity objects have a type and a subtype. Subtypes
@@ -133,29 +171,23 @@ function retrieve_cached_entity_row($guid) {
* @access private
*/
function get_subtype_id($type, $subtype) {
- global $CONFIG, $SUBTYPE_CACHE;
+ global $SUBTYPE_CACHE;
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
-
- if ($subtype == "") {
- return FALSE;
+ if (!$subtype) {
+ return false;
}
- // @todo use the cache before hitting database
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes
- where type='$type' and subtype='$subtype'");
-
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
- $SUBTYPE_CACHE[$result->id] = $result;
+ // use the cache before hitting database
+ $result = _elgg_retrieve_cached_subtype($type, $subtype);
+ if ($result !== null) {
return $result->id;
}
- return FALSE;
+ return false;
}
/**
@@ -163,35 +195,67 @@ function get_subtype_id($type, $subtype) {
*
* @param int $subtype_id Subtype ID
*
- * @return string Subtype name
+ * @return string|false Subtype name, false if subtype not found
* @link http://docs.elgg.org/DataModel/Entities/Subtypes
* @see get_subtype_from_id()
* @access private
*/
function get_subtype_from_id($subtype_id) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $subtype_id = (int)$subtype_id;
+ global $SUBTYPE_CACHE;
if (!$subtype_id) {
return false;
}
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
if (isset($SUBTYPE_CACHE[$subtype_id])) {
return $SUBTYPE_CACHE[$subtype_id]->subtype;
}
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id");
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
+ return false;
+}
- $SUBTYPE_CACHE[$subtype_id] = $result;
- return $result->subtype;
+/**
+ * Retrieve subtype from the cache.
+ *
+ * @param string $type
+ * @param string $subtype
+ * @return stdClass|null
+ *
+ * @access private
+ */
+function _elgg_retrieve_cached_subtype($type, $subtype) {
+ global $SUBTYPE_CACHE;
+
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
}
- return false;
+ foreach ($SUBTYPE_CACHE as $obj) {
+ if ($obj->type === $type && $obj->subtype === $subtype) {
+ return $obj;
+ }
+ }
+ return null;
+}
+
+/**
+ * Fetch all suptypes from DB to local cache.
+ *
+ * @access private
+ */
+function _elgg_populate_subtype_cache() {
+ global $CONFIG, $SUBTYPE_CACHE;
+
+ $results = get_data("SELECT * FROM {$CONFIG->dbprefix}entity_subtypes");
+
+ $SUBTYPE_CACHE = array();
+ foreach ($results as $row) {
+ $SUBTYPE_CACHE[$row->id] = $row;
+ }
}
/**
@@ -210,25 +274,19 @@ function get_subtype_from_id($subtype_id) {
* @access private
*/
function get_subtype_class($type, $subtype) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
+ global $SUBTYPE_CACHE;
- // @todo use the cache before going to the database
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes
- where type='$type' and subtype='$subtype'");
-
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
-
- $SUBTYPE_CACHE[$result->id] = $result;
- return $result->class;
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
+ // use the cache before going to the database
+ $obj = _elgg_retrieve_cached_subtype($type, $subtype);
+ if ($obj) {
+ return $obj->class;
}
- return NULL;
+ return null;
}
/**
@@ -242,29 +300,21 @@ function get_subtype_class($type, $subtype) {
* @access private
*/
function get_subtype_class_from_id($subtype_id) {
- global $CONFIG, $SUBTYPE_CACHE;
-
- $subtype_id = (int)$subtype_id;
+ global $SUBTYPE_CACHE;
if (!$subtype_id) {
- return false;
+ return null;
}
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
+ }
+
if (isset($SUBTYPE_CACHE[$subtype_id])) {
return $SUBTYPE_CACHE[$subtype_id]->class;
}
- $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id");
-
- if ($result) {
- if (!$SUBTYPE_CACHE) {
- $SUBTYPE_CACHE = array();
- }
- $SUBTYPE_CACHE[$subtype_id] = $result;
- return $result->class;
- }
-
- return NULL;
+ return null;
}
/**
@@ -290,21 +340,32 @@ function get_subtype_class_from_id($subtype_id) {
* @see get_entity()
*/
function add_subtype($type, $subtype, $class = "") {
- global $CONFIG;
- $type = sanitise_string($type);
- $subtype = sanitise_string($subtype);
- $class = sanitise_string($class);
+ global $CONFIG, $SUBTYPE_CACHE;
- // Short circuit if no subtype is given
- if ($subtype == "") {
+ if (!$subtype) {
return 0;
}
$id = get_subtype_id($type, $subtype);
- if ($id == 0) {
- return insert_data("insert into {$CONFIG->dbprefix}entity_subtypes"
- . " (type, subtype, class) values ('$type','$subtype','$class')");
+ if (!$id) {
+ // In cache we store non-SQL-escaped strings because that's what's returned by query
+ $cache_obj = (object) array(
+ 'type' => $type,
+ 'subtype' => $subtype,
+ 'class' => $class,
+ );
+
+ $type = sanitise_string($type);
+ $subtype = sanitise_string($subtype);
+ $class = sanitise_string($class);
+
+ $id = insert_data("INSERT INTO {$CONFIG->dbprefix}entity_subtypes"
+ . " (type, subtype, class) VALUES ('$type', '$subtype', '$class')");
+
+ // add entry to cache
+ $cache_obj->id = $id;
+ $SUBTYPE_CACHE[$id] = $cache_obj;
}
return $id;
@@ -313,6 +374,10 @@ function add_subtype($type, $subtype, $class = "") {
/**
* Removes a registered ElggEntity type, subtype, and classname.
*
+ * @warning You do not want to use this function. If you want to unregister
+ * a class for a subtype, use update_subtype(). Using this function will
+ * permanently orphan all the objects created with the specified subtype.
+ *
* @param string $type Type
* @param string $subtype Subtype
*
@@ -342,22 +407,31 @@ function remove_subtype($type, $subtype) {
function update_subtype($type, $subtype, $class = '') {
global $CONFIG, $SUBTYPE_CACHE;
- if (!$id = get_subtype_id($type, $subtype)) {
- return FALSE;
+ $id = get_subtype_id($type, $subtype);
+ if (!$id) {
+ return false;
+ }
+
+ if ($SUBTYPE_CACHE === null) {
+ _elgg_populate_subtype_cache();
}
+
+ $unescaped_class = $class;
+
$type = sanitise_string($type);
$subtype = sanitise_string($subtype);
-
- $result = update_data("UPDATE {$CONFIG->dbprefix}entity_subtypes
+ $class = sanitise_string($class);
+
+ $success = update_data("UPDATE {$CONFIG->dbprefix}entity_subtypes
SET type = '$type', subtype = '$subtype', class = '$class'
WHERE id = $id
");
- if ($result && isset($SUBTYPE_CACHE[$id])) {
- $SUBTYPE_CACHE[$id]->class = $class;
+ if ($success && isset($SUBTYPE_CACHE[$id])) {
+ $SUBTYPE_CACHE[$id]->class = $unescaped_class;
}
- return $result;
+ return $success;
}
/**
@@ -375,7 +449,7 @@ function update_subtype($type, $subtype, $class = '') {
* @param int $time_created The time creation timestamp
*
* @return bool
- * @link http://docs.elgg.org/DataModel/Entities
+ * @throws InvalidParameterException
* @access private
*/
function update_entity($guid, $owner_guid, $access_id, $container_guid = null, $time_created = null) {
@@ -398,6 +472,10 @@ function update_entity($guid, $owner_guid, $access_id, $container_guid = null, $
$time_created = (int) $time_created;
}
+ if ($access_id == ACCESS_DEFAULT) {
+ throw new InvalidParameterException('ACCESS_DEFAULT is not a valid access level. See its documentation in elgglib.h');
+ }
+
if ($entity && $entity->canEdit()) {
if (elgg_trigger_event('update', $entity->type, $entity)) {
$ret = update_data("UPDATE {$CONFIG->dbprefix}entities
@@ -474,6 +552,7 @@ function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'al
// If still not approved, see if the user is a member of the group
// @todo this should be moved to the groups plugin/library
if (!$return && $user && $container instanceof ElggGroup) {
+ /* @var ElggGroup $container */
if ($container->isMember($user)) {
$return = true;
}
@@ -523,7 +602,6 @@ $container_guid = 0) {
$type = sanitise_string($type);
$subtype_id = add_subtype($type, $subtype);
$owner_guid = (int)$owner_guid;
- $access_id = (int)$access_id;
$time = time();
if ($site_guid == 0) {
$site_guid = $CONFIG->site_guid;
@@ -532,6 +610,10 @@ $container_guid = 0) {
if ($container_guid == 0) {
$container_guid = $owner_guid;
}
+ $access_id = (int)$access_id;
+ if ($access_id == ACCESS_DEFAULT) {
+ throw new InvalidParameterException('ACCESS_DEFAULT is not a valid access level. See its documentation in elgglib.h');
+ }
$user_guid = elgg_get_logged_in_user_guid();
if (!can_write_to_container($user_guid, $owner_guid, $type, $subtype)) {
@@ -589,12 +671,14 @@ function get_entity_as_row($guid) {
*
* @param stdClass $row The row of the entry in the entities table.
*
- * @return object|false
+ * @return ElggEntity|false
* @link http://docs.elgg.org/DataModel/Entities
* @see get_entity_as_row()
* @see add_subtype()
* @see get_entity()
* @access private
+ *
+ * @throws ClassException|InstallationException
*/
function entity_row_to_elggstar($row) {
if (!($row instanceof stdClass)) {
@@ -672,29 +756,59 @@ function entity_row_to_elggstar($row) {
* @link http://docs.elgg.org/DataModel/Entities
*/
function get_entity($guid) {
- static $newentity_cache;
- $new_entity = false;
+ // This should not be a static local var. Notice that cache writing occurs in a completely
+ // different instance outside this function.
+ // @todo We need a single Memcache instance with a shared pool of namespace wrappers. This function would pull an instance from the pool.
+ static $shared_cache;
- // We could also use: if (!(int) $guid) { return FALSE },
+ // We could also use: if (!(int) $guid) { return FALSE },
// but that evaluates to a false positive for $guid = TRUE.
// This is a bit slower, but more thorough.
if (!is_numeric($guid) || $guid === 0 || $guid === '0') {
- return FALSE;
+ return false;
+ }
+
+ // Check local cache first
+ $new_entity = _elgg_retrieve_cached_entity($guid);
+ if ($new_entity) {
+ return $new_entity;
}
- if ((!$newentity_cache) && (is_memcache_available())) {
- $newentity_cache = new ElggMemcache('new_entity_cache');
+ // Check shared memory cache, if available
+ if (null === $shared_cache) {
+ if (is_memcache_available()) {
+ $shared_cache = new ElggMemcache('new_entity_cache');
+ } else {
+ $shared_cache = false;
+ }
}
- if ($newentity_cache) {
- $new_entity = $newentity_cache->load($guid);
+ // until ACLs in memcache, DB query is required to determine access
+ $entity_row = get_entity_as_row($guid);
+ if (!$entity_row) {
+ return false;
}
- if ($new_entity) {
- return $new_entity;
+ if ($shared_cache) {
+ $cached_entity = $shared_cache->load($guid);
+ // @todo store ACLs in memcache https://github.com/elgg/elgg/issues/3018#issuecomment-13662617
+ if ($cached_entity) {
+ // @todo use ACL and cached entity access_id to determine if user can see it
+ return $cached_entity;
+ }
}
- return entity_row_to_elggstar(get_entity_as_row($guid));
+ // don't let incomplete entities cause fatal exceptions
+ try {
+ $new_entity = entity_row_to_elggstar($entity_row);
+ } catch (IncompleteEntityException $e) {
+ return false;
+ }
+
+ if ($new_entity) {
+ _elgg_cache_entity($new_entity);
+ }
+ return $new_entity;
}
/**
@@ -819,6 +933,8 @@ function elgg_get_entities(array $options = array()) {
'joins' => array(),
'callback' => 'entity_row_to_elggstar',
+
+ '__ElggBatch' => null,
);
$options = array_merge($defaults, $options);
@@ -935,7 +1051,32 @@ function elgg_get_entities(array $options = array()) {
$query .= " LIMIT $offset, $limit";
}
- $dt = get_data($query, $options['callback']);
+ if ($options['callback'] === 'entity_row_to_elggstar') {
+ $dt = _elgg_fetch_entities_from_sql($query, $options['__ElggBatch']);
+ } else {
+ $dt = get_data($query, $options['callback']);
+ }
+
+ if ($dt) {
+ // populate entity and metadata caches
+ $guids = array();
+ foreach ($dt as $item) {
+ // A custom callback could result in items that aren't ElggEntity's, so check for them
+ if ($item instanceof ElggEntity) {
+ _elgg_cache_entity($item);
+ // plugins usually have only settings
+ if (!$item instanceof ElggPlugin) {
+ $guids[] = $item->guid;
+ }
+ }
+ }
+ // @todo Without this, recursive delete fails. See #4568
+ reset($dt);
+
+ if ($guids) {
+ elgg_get_metadata_cache()->populateFromEntities($guids);
+ }
+ }
return $dt;
} else {
$total = get_data_row($query);
@@ -944,6 +1085,104 @@ function elgg_get_entities(array $options = array()) {
}
/**
+ * Return entities from an SQL query generated by elgg_get_entities.
+ *
+ * @param string $sql
+ * @param ElggBatch $batch
+ * @return ElggEntity[]
+ *
+ * @access private
+ * @throws LogicException
+ */
+function _elgg_fetch_entities_from_sql($sql, ElggBatch $batch = null) {
+ static $plugin_subtype;
+ if (null === $plugin_subtype) {
+ $plugin_subtype = get_subtype_id('object', 'plugin');
+ }
+
+ // Keys are types, values are columns that, if present, suggest that the secondary
+ // table is already JOINed
+ $types_to_optimize = array(
+ 'object' => 'title',
+ 'user' => 'password',
+ 'group' => 'name',
+ );
+
+ $rows = get_data($sql);
+
+ // guids to look up in each type
+ $lookup_types = array();
+ // maps GUIDs to the $rows key
+ $guid_to_key = array();
+
+ if (isset($rows[0]->type, $rows[0]->subtype)
+ && $rows[0]->type === 'object'
+ && $rows[0]->subtype == $plugin_subtype) {
+ // Likely the entire resultset is plugins, which have already been optimized
+ // to JOIN the secondary table. In this case we allow retrieving from cache,
+ // but abandon the extra queries.
+ $types_to_optimize = array();
+ }
+
+ // First pass: use cache where possible, gather GUIDs that we're optimizing
+ foreach ($rows as $i => $row) {
+ if (empty($row->guid) || empty($row->type)) {
+ throw new LogicException('Entity row missing guid or type');
+ }
+ if ($entity = _elgg_retrieve_cached_entity($row->guid)) {
+ $rows[$i] = $entity;
+ continue;
+ }
+ if (isset($types_to_optimize[$row->type])) {
+ // check if row already looks JOINed.
+ if (isset($row->{$types_to_optimize[$row->type]})) {
+ // Row probably already contains JOINed secondary table. Don't make another query just
+ // to pull data that's already there
+ continue;
+ }
+ $lookup_types[$row->type][] = $row->guid;
+ $guid_to_key[$row->guid] = $i;
+ }
+ }
+ // Do secondary queries and merge rows
+ if ($lookup_types) {
+ $dbprefix = elgg_get_config('dbprefix');
+
+ foreach ($lookup_types as $type => $guids) {
+ $set = "(" . implode(',', $guids) . ")";
+ $sql = "SELECT * FROM {$dbprefix}{$type}s_entity WHERE guid IN $set";
+ $secondary_rows = get_data($sql);
+ if ($secondary_rows) {
+ foreach ($secondary_rows as $secondary_row) {
+ $key = $guid_to_key[$secondary_row->guid];
+ // cast to arrays to merge then cast back
+ $rows[$key] = (object)array_merge((array)$rows[$key], (array)$secondary_row);
+ }
+ }
+ }
+ }
+ // Second pass to finish conversion
+ foreach ($rows as $i => $row) {
+ if ($row instanceof ElggEntity) {
+ continue;
+ } else {
+ try {
+ $rows[$i] = entity_row_to_elggstar($row);
+ } catch (IncompleteEntityException $e) {
+ // don't let incomplete entities throw fatal errors
+ unset($rows[$i]);
+
+ // report incompletes to the batch process that spawned this query
+ if ($batch) {
+ $batch->reportIncompleteEntity($row);
+ }
+ }
+ }
+ }
+ return $rows;
+}
+
+/**
* Returns SQL where clause for type and subtype on main entity table
*
* @param string $table Entity table prefix as defined in SELECT...FROM entities $table
@@ -1012,13 +1251,24 @@ function elgg_get_entity_type_subtype_where_sql($table, $types, $subtypes, $pair
$subtype_ids = array();
if ($subtypes) {
foreach ($subtypes as $subtype) {
- // check that the subtype is valid (with ELGG_ENTITIES_NO_VALUE being a valid subtype)
- if (ELGG_ENTITIES_NO_VALUE === $subtype || $subtype_id = get_subtype_id($type, $subtype)) {
- $subtype_ids[] = (ELGG_ENTITIES_NO_VALUE === $subtype) ? ELGG_ENTITIES_NO_VALUE : $subtype_id;
- } else {
- $valid_subtypes_count--;
- elgg_log("Type-subtype '$type:$subtype' does not exist!", 'NOTICE');
+ // check that the subtype is valid
+ if (!$subtype && ELGG_ENTITIES_NO_VALUE === $subtype) {
+ // subtype value is 0
+ $subtype_ids[] = ELGG_ENTITIES_NO_VALUE;
+ } elseif (!$subtype) {
+ // subtype is ignored.
+ // this handles ELGG_ENTITIES_ANY_VALUE, '', and anything falsy that isn't 0
continue;
+ } else {
+ $subtype_id = get_subtype_id($type, $subtype);
+
+ if ($subtype_id) {
+ $subtype_ids[] = $subtype_id;
+ } else {
+ $valid_subtypes_count--;
+ elgg_log("Type-subtype '$type:$subtype' does not exist!", 'NOTICE');
+ continue;
+ }
}
}
@@ -1109,7 +1359,7 @@ function elgg_get_entity_type_subtype_where_sql($table, $types, $subtypes, $pair
* best to provide in table.column format.
* @param NULL|array $guids Array of GUIDs.
*
- * @return false|str
+ * @return false|string
* @since 1.8.0
* @access private
*/
@@ -1158,7 +1408,7 @@ function elgg_get_guid_based_where_sql($column, $guids) {
* @param NULL|int $time_updated_upper Time updated upper limit
* @param NULL|int $time_updated_lower Time updated lower limit
*
- * @return FALSE|str FALSE on fail, string on success.
+ * @return FALSE|string FALSE on fail, string on success.
* @since 1.7.0
* @access private
*/
@@ -1223,8 +1473,10 @@ function elgg_list_entities(array $options = array(), $getter = 'elgg_get_entiti
global $autofeed;
$autofeed = true;
+ $offset_key = isset($options['offset_key']) ? $options['offset_key'] : 'offset';
+
$defaults = array(
- 'offset' => (int) max(get_input('offset', 0), 0),
+ 'offset' => (int) max(get_input($offset_key, 0), 0),
'limit' => (int) max(get_input('limit', 10), 0),
'full_view' => TRUE,
'list_type_toggle' => FALSE,
@@ -1254,13 +1506,15 @@ function elgg_list_entities(array $options = array(), $getter = 'elgg_get_entiti
*
* @tip Use this to generate a list of archives by month for when entities were added or updated.
*
+ * @todo document how to pass in array for $subtype
+ *
* @warning Months are returned in the form YYYYMM.
*
* @param string $type The type of entity
* @param string $subtype The subtype of entity
- * @param int $container_guid The container GUID that the entinties belong to
+ * @param int $container_guid The container GUID that the entities belong to
* @param int $site_guid The site GUID
- * @param str $order_by Order_by SQL order by clause
+ * @param string $order_by Order_by SQL order by clause
*
* @return array|false Either an array months as YYYYMM, or false on failure
*/
@@ -1408,6 +1662,7 @@ function disable_entity($guid, $reason = "", $recursive = true) {
$entity->disableMetadata();
$entity->disableAnnotations();
+ _elgg_invalidate_cache_for_entity($guid);
$res = update_data("UPDATE {$CONFIG->dbprefix}entities
SET enabled = 'no'
@@ -1423,8 +1678,8 @@ function disable_entity($guid, $reason = "", $recursive = true) {
/**
* Enable an entity.
*
- * @warning In order to enable an entity using ElggEntity::enable(),
- * you must first use {@link access_show_hidden_entities()}.
+ * @warning In order to enable an entity, you must first use
+ * {@link access_show_hidden_entities()}.
*
* @param int $guid GUID of entity to enable
* @param bool $recursive Recursively enable all entities disabled with the entity?
@@ -1505,7 +1760,7 @@ function delete_entity($guid, $recursive = true) {
// delete cache
if (isset($ENTITY_CACHE[$guid])) {
- invalidate_cache_for_entity($guid);
+ _elgg_invalidate_cache_for_entity($guid);
}
// If memcache is available then delete this entry from the cache
@@ -1552,6 +1807,10 @@ function delete_entity($guid, $recursive = true) {
elgg_set_ignore_access($ia);
}
+ $entity_disable_override = access_get_show_hidden_status();
+ access_show_hidden_entities(true);
+ $ia = elgg_set_ignore_access(true);
+
// Now delete the entity itself
$entity->deleteMetadata();
$entity->deleteOwnedMetadata();
@@ -1559,6 +1818,9 @@ function delete_entity($guid, $recursive = true) {
$entity->deleteOwnedAnnotations();
$entity->deleteRelationships();
+ access_show_hidden_entities($entity_disable_override);
+ elgg_set_ignore_access($ia);
+
elgg_delete_river(array('subject_guid' => $guid));
elgg_delete_river(array('object_guid' => $guid));
remove_all_private_settings($guid);
@@ -1604,7 +1866,7 @@ function delete_entity($guid, $recursive = true) {
* @param string $returnvalue Return value from previous hook
* @param array $params The parameters, passed 'guid' and 'varname'
*
- * @return void
+ * @return ElggMetadata|null
* @elgg_plugin_hook_handler volatile metadata
* @todo investigate more.
* @access private
@@ -1649,6 +1911,8 @@ function volatile_data_export_plugin_hook($hook, $entity_type, $returnvalue, $pa
* @elgg_event_handler export all
* @return mixed
* @access private
+ *
+ * @throws InvalidParameterException|InvalidClassException
*/
function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
// Sanity check values
@@ -1691,6 +1955,8 @@ function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
* @return ElggEntity the unsaved entity which should be populated by items.
* @todo Remove this.
* @access private
+ *
+ * @throws ClassException|InstallationException|ImportException
*/
function oddentity_to_elggentity(ODDEntity $element) {
$class = $element->getAttribute('class');
@@ -1702,7 +1968,7 @@ function oddentity_to_elggentity(ODDEntity $element) {
if (!$tmp) {
// Construct new class with owner from session
$classname = get_subtype_class($class, $subclass);
- if ($classname != "") {
+ if ($classname) {
if (class_exists($classname)) {
$tmp = new $classname();
@@ -1762,11 +2028,13 @@ function oddentity_to_elggentity(ODDEntity $element) {
* @elgg_plugin_hook_handler import all
* @todo document
* @access private
+ *
+ * @throws ImportException
*/
function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
$element = $params['element'];
- $tmp = NULL;
+ $tmp = null;
if ($element instanceof ODDEntity) {
$tmp = oddentity_to_elggentity($element);
@@ -1808,8 +2076,6 @@ function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) {
* @link http://docs.elgg.org/Entities/AccessControl
*/
function can_edit_entity($entity_guid, $user_guid = 0) {
- global $CONFIG;
-
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
if (!$user) {
@@ -1862,7 +2128,7 @@ function can_edit_entity_metadata($entity_guid, $user_guid = 0, $metadata = null
$return = null;
- if ($metadata->owner_guid == 0) {
+ if ($metadata && ($metadata->owner_guid == 0)) {
$return = true;
}
if (is_null($return)) {
@@ -1933,7 +2199,7 @@ function get_entity_url($entity_guid) {
* @param string $entity_subtype The entity subtype
* @param string $function_name The function to register
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see get_entity_url()
* @see ElggEntity::getURL()
* @since 1.8.0
@@ -1941,7 +2207,7 @@ function get_entity_url($entity_guid) {
function elgg_register_entity_url_handler($entity_type, $entity_subtype, $function_name) {
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -1969,7 +2235,7 @@ function elgg_register_entity_url_handler($entity_type, $entity_subtype, $functi
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype to register (may be blank)
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see get_registered_entity_types()
* @link http://docs.elgg.org/Search
* @link http://docs.elgg.org/Tutorials/Search
@@ -2006,7 +2272,7 @@ function elgg_register_entity_type($type, $subtype = null) {
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype to register (may be blank)
*
- * @return true|false Depending on success
+ * @return bool Depending on success
* @see elgg_register_entity_type()
*/
function unregister_entity_type($type, $subtype) {
@@ -2073,7 +2339,7 @@ function get_registered_entity_types($type = null) {
* @param string $type The type of entity (object, site, user, group)
* @param string $subtype The subtype (may be blank)
*
- * @return true|false Depending on whether or not the type has been registered
+ * @return bool Depending on whether or not the type has been registered
*/
function is_registered_entity_type($type, $subtype = null) {
global $CONFIG;
@@ -2203,6 +2469,7 @@ function elgg_instanceof($entity, $type = NULL, $subtype = NULL, $class = NULL)
$return = ($entity instanceof ElggEntity);
if ($type) {
+ /* @var ElggEntity $entity */
$return = $return && ($entity->getType() == $type);
}
@@ -2262,18 +2529,25 @@ function update_entity_last_action($guid, $posted = NULL) {
function entities_gc() {
global $CONFIG;
- $tables = array ('sites_entity', 'objects_entity', 'groups_entity', 'users_entity');
+ $tables = array(
+ 'site' => 'sites_entity',
+ 'object' => 'objects_entity',
+ 'group' => 'groups_entity',
+ 'user' => 'users_entity'
+ );
- foreach ($tables as $table) {
- delete_data("DELETE from {$CONFIG->dbprefix}{$table}
- where guid NOT IN (SELECT guid from {$CONFIG->dbprefix}entities)");
+ foreach ($tables as $type => $table) {
+ delete_data("DELETE FROM {$CONFIG->dbprefix}{$table}
+ WHERE guid NOT IN (SELECT guid FROM {$CONFIG->dbprefix}entities)");
+ delete_data("DELETE FROM {$CONFIG->dbprefix}entities
+ WHERE type = '$type' AND guid NOT IN (SELECT guid FROM {$CONFIG->dbprefix}{$table})");
}
}
/**
* Runs unit tests for the entity objects.
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/export.php b/engine/lib/export.php
index ae9be95ce..ecc894e63 100644
--- a/engine/lib/export.php
+++ b/engine/lib/export.php
@@ -11,7 +11,7 @@
*
* @param mixed $object The object either an ElggEntity, ElggRelationship or ElggExtender
*
- * @return the UUID or false
+ * @return string|false the UUID or false
*/
function get_uuid_from_object($object) {
if ($object instanceof ElggEntity) {
@@ -40,8 +40,6 @@ function get_uuid_from_object($object) {
* @return string
*/
function guid_to_uuid($guid) {
- global $CONFIG;
-
return elgg_get_site_url() . "export/opendd/$guid/";
}
@@ -53,8 +51,6 @@ function guid_to_uuid($guid) {
* @return bool
*/
function is_uuid_this_domain($uuid) {
- global $CONFIG;
-
if (strpos($uuid, elgg_get_site_url()) === 0) {
return true;
}
@@ -67,7 +63,7 @@ function is_uuid_this_domain($uuid) {
*
* @param string $uuid A unique ID
*
- * @return mixed
+ * @return ElggEntity|false
*/
function get_entity_from_uuid($uuid) {
$uuid = sanitise_string($uuid);
@@ -117,18 +113,19 @@ function _process_element(ODD $odd) {
global $IMPORTED_DATA, $IMPORTED_OBJECT_COUNTER;
// See if anyone handles this element, return true if it is.
+ $to_be_serialised = null;
if ($odd) {
$handled = elgg_trigger_plugin_hook("import", "all", array("element" => $odd), $to_be_serialised);
- }
- // If not, then see if any of its sub elements are handled
- if ($handled) {
- // Increment validation counter
- $IMPORTED_OBJECT_COUNTER ++;
- // Return the constructed object
- $IMPORTED_DATA[] = $handled;
+ // If not, then see if any of its sub elements are handled
+ if ($handled) {
+ // Increment validation counter
+ $IMPORTED_OBJECT_COUNTER ++;
+ // Return the constructed object
+ $IMPORTED_DATA[] = $handled;
- return true;
+ return true;
+ }
}
return false;
@@ -167,7 +164,7 @@ function exportAsArray($guid) {
*
* @param int $guid The GUID.
*
- * @return xml
+ * @return string XML
* @see ElggEntity for an example of its usage.
* @access private
*/
@@ -184,7 +181,7 @@ function export($guid) {
* @param string $xml XML string
*
* @return bool
- * @throws Exception if there was a problem importing the data.
+ * @throws ImportException if there was a problem importing the data.
* @access private
*/
function import($xml) {
diff --git a/engine/lib/extender.php b/engine/lib/extender.php
index 43421342c..8323bd3ce 100644
--- a/engine/lib/extender.php
+++ b/engine/lib/extender.php
@@ -86,6 +86,7 @@ function oddmetadata_to_elggextender(ElggEntity $entity, ODDMetaData $element) {
* @return null
* @elgg_plugin_hook_handler volatile metadata
* @todo investigate more.
+ * @throws ImportException
* @access private
*/
function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params) {
@@ -94,6 +95,7 @@ function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
$tmp = NULL;
if ($element instanceof ODDMetaData) {
+ /* @var ODDMetaData $element */
// Recall entity
$entity_uuid = $element->getAttribute('entity_uuid');
$entity = get_entity_from_uuid($entity_uuid);
@@ -124,38 +126,45 @@ function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
* @return bool
*/
function can_edit_extender($extender_id, $type, $user_guid = 0) {
- if (!elgg_is_logged_in()) {
- return false;
+ // @todo Since Elgg 1.0, Elgg has returned false from can_edit_extender()
+ // if no user was logged in. This breaks the access override. This is a
+ // temporary work around. This function needs to be rewritten in Elgg 1.9
+ if (!elgg_check_access_overrides($user_guid)) {
+ if (!elgg_is_logged_in()) {
+ return false;
+ }
}
$user_guid = (int)$user_guid;
- $user = get_entity($user_guid);
+ $user = get_user($user_guid);
if (!$user) {
$user = elgg_get_logged_in_user_entity();
+ $user_guid = elgg_get_logged_in_user_guid();
}
$functionname = "elgg_get_{$type}_from_id";
if (is_callable($functionname)) {
- $extender = $functionname($extender_id);
+ $extender = call_user_func($functionname, $extender_id);
} else {
return false;
}
- if (!is_a($extender, "ElggExtender")) {
+ if (!($extender instanceof ElggExtender)) {
return false;
}
+ /* @var ElggExtender $extender */
// If the owner is the specified user, great! They can edit.
- if ($extender->getOwnerGUID() == $user->getGUID()) {
+ if ($extender->getOwnerGUID() == $user_guid) {
return true;
}
// If the user can edit the entity this is attached to, great! They can edit.
- if (can_edit_entity($extender->entity_guid, $user->getGUID())) {
+ if (can_edit_entity($extender->entity_guid, $user_guid)) {
return true;
}
- // Trigger plugin hooks
+ // Trigger plugin hook - note that $user may be null
$params = array('entity' => $extender->getEntity(), 'user' => $user);
return elgg_trigger_plugin_hook('permissions_check', $type, $params, false);
}
@@ -175,7 +184,7 @@ function elgg_register_extender_url_handler($extender_type, $extender_name, $fun
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -228,7 +237,7 @@ function get_extender_url(ElggExtender $extender) {
if ($url == "") {
$nameid = $extender->id;
if ($type == 'volatile') {
- $nameid == $extender->name;
+ $nameid = $extender->name;
}
$url = "export/$view/$guid/$type/$nameid/";
}
diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php
index 93a127257..a3c7ba439 100644
--- a/engine/lib/filestore.php
+++ b/engine/lib/filestore.php
@@ -308,8 +308,6 @@ function get_image_resize_parameters($width, $height, $options) {
function file_delete($guid) {
if ($file = get_entity($guid)) {
if ($file->canEdit()) {
- $container = get_entity($file->container_guid);
-
$thumbnail = $file->thumbnail;
$smallthumb = $file->smallthumb;
$largethumb = $file->largethumb;
@@ -383,7 +381,7 @@ function file_get_general_file_type($mimetype) {
/**
* Delete a directory and all its contents
*
- * @param str $directory Directory to delete
+ * @param string $directory Directory to delete
*
* @return bool
*/
@@ -500,7 +498,7 @@ function filestore_init() {
/**
* Unit tests for files
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/group.php b/engine/lib/group.php
index feb1f1e7f..6ded8a825 100644
--- a/engine/lib/group.php
+++ b/engine/lib/group.php
@@ -33,6 +33,7 @@ function get_group_entity_as_row($guid) {
* @param string $description Description
*
* @return bool
+ * @access private
*/
function create_group_entity($guid, $name, $description) {
global $CONFIG;
@@ -169,7 +170,7 @@ function get_group_members($group_guid, $limit = 10, $offset = 0, $site_guid = 0
'relationship' => 'member',
'relationship_guid' => $group_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
+ 'type' => 'user',
'limit' => $limit,
'offset' => $offset,
'count' => $count,
@@ -239,56 +240,52 @@ function leave_group($group_guid, $user_guid) {
*/
function get_users_membership($user_guid) {
$options = array(
+ 'type' => 'group',
'relationship' => 'member',
'relationship_guid' => $user_guid,
- 'inverse_relationship' => FALSE
+ 'inverse_relationship' => false,
+ 'limit' => false,
);
return elgg_get_entities_from_relationship($options);
}
/**
- * Checks access to a group.
+ * May the current user access item(s) on this page? If the page owner is a group,
+ * membership, visibility, and logged in status are taken into account.
*
* @param boolean $forward If set to true (default), will forward the page;
* if set to false, will return true or false.
*
- * @return true|false If $forward is set to false.
+ * @return bool If $forward is set to false.
*/
function group_gatekeeper($forward = true) {
- $allowed = true;
- $url = '';
-
- if ($group = elgg_get_page_owner_entity()) {
- if ($group instanceof ElggGroup) {
- $url = $group->getURL();
- if (!$group->isPublicMembership()) {
- // closed group so must be member or an admin
-
- if (!elgg_is_logged_in()) {
- $allowed = false;
- if ($forward == true) {
- $_SESSION['last_forward_from'] = current_page_url();
- register_error(elgg_echo('loggedinrequired'));
- forward('', 'login');
- }
- } else if (!$group->isMember(elgg_get_logged_in_user_entity())) {
- $allowed = false;
- }
- // Admin override
- if (elgg_is_admin_logged_in()) {
- $allowed = true;
- }
- }
- }
+ $page_owner_guid = elgg_get_page_owner_guid();
+ if (!$page_owner_guid) {
+ return true;
}
+ $visibility = ElggGroupItemVisibility::factory($page_owner_guid);
- if ($forward && $allowed == false) {
- register_error(elgg_echo('membershiprequired'));
- forward($url, 'member');
+ if (!$visibility->shouldHideItems) {
+ return true;
+ }
+ if ($forward) {
+ // only forward to group if user can see it
+ $group = get_entity($page_owner_guid);
+ $forward_url = $group ? $group->getURL() : '';
+
+ if (!elgg_is_logged_in()) {
+ $_SESSION['last_forward_from'] = current_page_url();
+ $forward_reason = 'login';
+ } else {
+ $forward_reason = 'member';
+ }
+
+ register_error(elgg_echo($visibility->reasonHidden));
+ forward($forward_url, $forward_reason);
}
- return $allowed;
+ return false;
}
/**
diff --git a/engine/lib/input.php b/engine/lib/input.php
index 6d1646e1a..80b0b8766 100644
--- a/engine/lib/input.php
+++ b/engine/lib/input.php
@@ -60,8 +60,8 @@ function get_input($variable, $default = NULL, $filter_result = TRUE) {
*
* Note: this function does not handle nested arrays (ex: form input of param[m][n])
*
- * @param string $variable The name of the variable
- * @param string $value The value of the variable
+ * @param string $variable The name of the variable
+ * @param string|string[] $value The value of the variable
*
* @return void
*/
@@ -226,6 +226,8 @@ function elgg_clear_sticky_value($form_name, $variable) {
/**
* Page handler for autocomplete endpoint.
*
+ * @todo split this into functions/objects, this is way too big
+ *
* /livesearch?q=<query>
*
* Other options include:
@@ -233,6 +235,7 @@ function elgg_clear_sticky_value($form_name, $variable) {
* match_owner int 0/1
* limit int default is 10
*
+ * @param array $page
* @return string JSON string is returned and then exit
* @access private
*/
@@ -265,10 +268,8 @@ function input_livesearch_page_handler($page) {
}
if (get_input('match_owner', false)) {
- $owner_guid = $user->getGUID();
$owner_where = 'AND e.owner_guid = ' . $user->getGUID();
} else {
- $owner_guid = null;
$owner_where = '';
}
@@ -289,7 +290,9 @@ function input_livesearch_page_handler($page) {
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggUser $entity */
if (!$entity) {
continue;
}
@@ -338,7 +341,9 @@ function input_livesearch_page_handler($page) {
";
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggGroup $entity */
if (!$entity) {
continue;
}
@@ -385,7 +390,9 @@ function input_livesearch_page_handler($page) {
if ($entities = get_data($query)) {
foreach ($entities as $entity) {
+ // @todo use elgg_get_entities (don't query in a loop!)
$entity = get_entity($entity->guid);
+ /* @var ElggUser $entity */
if (!$entity) {
continue;
}
diff --git a/engine/lib/languages.php b/engine/lib/languages.php
index 15c48f902..61ba91ddb 100644
--- a/engine/lib/languages.php
+++ b/engine/lib/languages.php
@@ -50,8 +50,11 @@ function elgg_echo($message_key, $args = array(), $language = "") {
$string = $CONFIG->translations[$language][$message_key];
} else if (isset($CONFIG->translations["en"][$message_key])) {
$string = $CONFIG->translations["en"][$message_key];
+ $lang = $CONFIG->translations["en"][$language];
+ elgg_log(sprintf('Missing %s translation for "%s" language key', $lang, $message_key), 'NOTICE');
} else {
$string = $message_key;
+ elgg_log(sprintf('Missing English translation for "%s" language key', $message_key), 'NOTICE');
}
// only pass through if we have arguments to allow backward compatibility
@@ -74,7 +77,7 @@ function elgg_echo($message_key, $args = array(), $language = "") {
* @param string $country_code Standard country code (eg 'en', 'nl', 'es')
* @param array $language_array Formatted array of strings
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function add_translation($country_code, $language_array) {
global $CONFIG;
@@ -101,8 +104,6 @@ function add_translation($country_code, $language_array) {
* @return string The language code for the site/user or "en" if not set
*/
function get_current_language() {
- global $CONFIG;
-
$language = get_language();
if (!$language) {
@@ -138,6 +139,9 @@ function get_language() {
return false;
}
+/**
+ * @access private
+ */
function _elgg_load_translations() {
global $CONFIG;
@@ -145,7 +149,7 @@ function _elgg_load_translations() {
$loaded = true;
$languages = array_unique(array('en', get_current_language()));
foreach ($languages as $language) {
- $data = elgg_load_system_cache("$language.php");
+ $data = elgg_load_system_cache("$language.lang");
if ($data) {
add_translation($language, unserialize($data));
} else {
@@ -174,7 +178,7 @@ function _elgg_load_translations() {
* @param bool $load_all If true all languages are loaded, if
* false only the current language + en are loaded
*
- * @return void
+ * @return bool success
*/
function register_translations($path, $load_all = false) {
global $CONFIG;
@@ -226,23 +230,37 @@ function register_translations($path, $load_all = false) {
/**
* Reload all translations from all registered paths.
*
- * This is only called by functions which need to know all possible translations, namely the
- * statistic gathering ones.
+ * This is only called by functions which need to know all possible translations.
*
* @todo Better on demand loading based on language_paths array
*
- * @return bool
+ * @return void
*/
function reload_all_translations() {
global $CONFIG;
static $LANG_RELOAD_ALL_RUN;
if ($LANG_RELOAD_ALL_RUN) {
- return null;
+ return;
}
- foreach ($CONFIG->language_paths as $path => $dummy) {
- register_translations($path, true);
+ if ($CONFIG->i18n_loaded_from_cache) {
+ $cache = elgg_get_system_cache();
+ $cache_dir = $cache->getVariable("cache_path");
+ $filenames = elgg_get_file_list($cache_dir, array(), array(), array(".lang"));
+ foreach ($filenames as $filename) {
+ if (preg_match('/([a-z]+)\.[^.]+$/', $filename, $matches)) {
+ $language = $matches[1];
+ $data = elgg_load_system_cache("$language.lang");
+ if ($data) {
+ add_translation($language, unserialize($data));
+ }
+ }
+ }
+ } else {
+ foreach ($CONFIG->language_paths as $path => $dummy) {
+ register_translations($path, true);
+ }
}
$LANG_RELOAD_ALL_RUN = true;
@@ -334,14 +352,3 @@ function get_missing_language_keys($language) {
return false;
}
-
-/**
- * Initialize the language library
- * @access private
- */
-function elgg_languages_init() {
- $lang = get_current_language();
- elgg_register_simplecache_view("js/languages/$lang");
-}
-
-elgg_register_event_handler('init', 'system', 'elgg_languages_init');
diff --git a/engine/lib/location.php b/engine/lib/location.php
index 5b889509b..1534c7d7b 100644
--- a/engine/lib/location.php
+++ b/engine/lib/location.php
@@ -101,7 +101,7 @@ function elgg_get_entities_from_location(array $options = array()) {
$long_min = $long - $long_distance;
$long_max = $long + $long_distance;
- $where = array();
+ $wheres = array();
$wheres[] = "lat_name.string='geo:lat'";
$wheres[] = "lat_value.string >= $lat_min";
$wheres[] = "lat_value.string <= $lat_max";
@@ -139,7 +139,7 @@ function elgg_get_entities_from_location(array $options = array()) {
/**
* Returns a viewable list of entities from location
*
- * @param array $options
+ * @param array $options Options array
*
* @see elgg_list_entities()
* @see elgg_get_entities_from_location()
diff --git a/engine/lib/mb_wrapper.php b/engine/lib/mb_wrapper.php
index c2f5503e0..68fa69005 100644
--- a/engine/lib/mb_wrapper.php
+++ b/engine/lib/mb_wrapper.php
@@ -11,7 +11,7 @@ if (is_callable('mb_internal_encoding')) {
* NOTE: This differs from parse_str() by returning the results
* instead of placing them in the local scope!
*
- * @param str $str The string
+ * @param string $str The string
*
* @return array
* @since 1.7.0
diff --git a/engine/lib/memcache.php b/engine/lib/memcache.php
index f79fba4a9..79b87e850 100644
--- a/engine/lib/memcache.php
+++ b/engine/lib/memcache.php
@@ -35,3 +35,23 @@ function is_memcache_available() {
return $memcache_available;
}
+
+/**
+ * Invalidate an entity in memcache
+ *
+ * @param int $entity_guid The GUID of the entity to invalidate
+ *
+ * @return void
+ * @access private
+ */
+function _elgg_invalidate_memcache_for_entity($entity_guid) {
+ static $newentity_cache;
+
+ if ((!$newentity_cache) && (is_memcache_available())) {
+ $newentity_cache = new ElggMemcache('new_entity_cache');
+ }
+
+ if ($newentity_cache) {
+ $newentity_cache->delete($entity_guid);
+ }
+} \ No newline at end of file
diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php
index 0ff3a43dc..fdb1b85f6 100644
--- a/engine/lib/metadata.php
+++ b/engine/lib/metadata.php
@@ -12,7 +12,7 @@
*
* @param stdClass $row An object from the database
*
- * @return stdClass or ElggMetadata
+ * @return stdClass|ElggMetadata
* @access private
*/
function row_to_elggmetadata($row) {
@@ -30,7 +30,7 @@ function row_to_elggmetadata($row) {
*
* @param int $id The id of the metadata object being retrieved.
*
- * @return false|ElggMetadata
+ * @return ElggMetadata|false FALSE if not found
*/
function elgg_get_metadata_from_id($id) {
return elgg_get_metastring_based_object_from_id($id, 'metadata');
@@ -64,7 +64,7 @@ function elgg_delete_metadata_by_id($id) {
* @param int $access_id Default is ACCESS_PRIVATE
* @param bool $allow_multiple Allow multiple values for one key. Default is FALSE
*
- * @return int/bool id of metadata or FALSE if failure
+ * @return int|false id of metadata or FALSE if failure
*/
function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_guid = 0,
$access_id = ACCESS_PRIVATE, $allow_multiple = false) {
@@ -90,8 +90,6 @@ function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_g
$access_id = (int)$access_id;
- $id = false;
-
$query = "SELECT * from {$CONFIG->dbprefix}metadata"
. " WHERE entity_guid = $entity_guid and name_id=" . add_metastring($name) . " limit 1";
@@ -106,34 +104,33 @@ function create_metadata($entity_guid, $name, $value, $value_type = '', $owner_g
} else {
// Support boolean types
if (is_bool($value)) {
- if ($value) {
- $value = 1;
- } else {
- $value = 0;
- }
+ $value = (int) $value;
}
// Add the metastrings
- $value = add_metastring($value);
- if (!$value) {
+ $value_id = add_metastring($value);
+ if (!$value_id) {
return false;
}
- $name = add_metastring($name);
- if (!$name) {
+ $name_id = add_metastring($name);
+ if (!$name_id) {
return false;
}
// If ok then add it
$query = "INSERT into {$CONFIG->dbprefix}metadata"
. " (entity_guid, name_id, value_id, value_type, owner_guid, time_created, access_id)"
- . " VALUES ($entity_guid, '$name','$value','$value_type', $owner_guid, $time, $access_id)";
+ . " VALUES ($entity_guid, '$name_id','$value_id','$value_type', $owner_guid, $time, $access_id)";
$id = insert_data($query);
if ($id !== false) {
$obj = elgg_get_metadata_from_id($id);
if (elgg_trigger_event('create', 'metadata', $obj)) {
+
+ elgg_get_metadata_cache()->save($entity_guid, $name, $value, $allow_multiple);
+
return $id;
} else {
elgg_delete_metadata_by_id($id);
@@ -175,6 +172,7 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
}
if ($metabyname_memcache) {
+ // @todo fix memcache (name_id is not a property of ElggMetadata)
$metabyname_memcache->delete("{$md->entity_guid}:{$md->name_id}");
}
@@ -187,35 +185,32 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
$access_id = (int)$access_id;
- $access = get_access_sql_suffix();
-
// Support boolean types (as integers)
if (is_bool($value)) {
- if ($value) {
- $value = 1;
- } else {
- $value = 0;
- }
+ $value = (int) $value;
}
// Add the metastring
- $value = add_metastring($value);
- if (!$value) {
+ $value_id = add_metastring($value);
+ if (!$value_id) {
return false;
}
- $name = add_metastring($name);
- if (!$name) {
+ $name_id = add_metastring($name);
+ if (!$name_id) {
return false;
}
// If ok then add it
$query = "UPDATE {$CONFIG->dbprefix}metadata"
- . " set name_id='$name', value_id='$value', value_type='$value_type', access_id=$access_id,"
+ . " set name_id='$name_id', value_id='$value_id', value_type='$value_type', access_id=$access_id,"
. " owner_guid=$owner_guid where id=$id";
$result = update_data($query);
if ($result !== false) {
+
+ elgg_get_metadata_cache()->save($md->entity_guid, $name, $value);
+
// @todo this event tells you the metadata has been updated, but does not
// let you do anything about it. What is needed is a plugin hook before
// the update that passes old and new values.
@@ -234,7 +229,7 @@ function update_metadata($id, $name, $value, $value_type, $owner_guid, $access_i
* associative arrays and there is no guarantee on the ordering in the array.
*
* @param int $entity_guid The entity to attach the metadata to
- * @param string $name_and_values Associative array - a value can be a string, number, bool
+ * @param array $name_and_values Associative array - a value can be a string, number, bool
* @param string $value_type 'text', 'integer', or '' for automatic detection
* @param int $owner_guid GUID of entity that owns the metadata
* @param int $access_id Default is ACCESS_PRIVATE
@@ -282,10 +277,18 @@ $access_id = ACCESS_PRIVATE, $allow_multiple = false) {
* all metadata that match the query instead of returning
* ElggMetadata objects.
*
- * @return mixed
+ * @return ElggMetadata[]|mixed
* @since 1.8.0
*/
function elgg_get_metadata(array $options = array()) {
+
+ // @todo remove support for count shortcut - see #4393
+ // support shortcut of 'count' => true for 'metadata_calculation' => 'count'
+ if (isset($options['count']) && $options['count']) {
+ $options['metadata_calculation'] = 'count';
+ unset($options['count']);
+ }
+
$options['metastring_type'] = 'metadata';
return elgg_get_metastring_based_objects($options);
}
@@ -297,19 +300,22 @@ function elgg_get_metadata(array $options = array()) {
* This requires at least one constraint: metadata_owner_guid(s),
* metadata_name(s), metadata_value(s), or guid(s) must be set.
*
- * @warning This returns null on no ops.
- *
* @param array $options An options array. {@see elgg_get_metadata()}
- * @return mixed Null if the metadata name is invalid. Bool on success or fail.
+ * @return bool|null true on success, false on failure, null if no metadata to delete.
* @since 1.8.0
*/
function elgg_delete_metadata(array $options) {
if (!elgg_is_valid_options_for_batch_operation($options, 'metadata')) {
return false;
}
-
$options['metastring_type'] = 'metadata';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback', false);
+ $result = elgg_batch_metastring_based_objects($options, 'elgg_batch_delete_callback', false);
+
+ // This moved last in case an object's constructor sets metadata. Currently the batch
+ // delete process has to create the entity to delete its metadata. See #5214
+ elgg_get_metadata_cache()->invalidateByOptions('delete', $options);
+
+ return $result;
}
/**
@@ -317,10 +323,8 @@ function elgg_delete_metadata(array $options) {
*
* @warning Unlike elgg_get_metadata() this will not accept an empty options array!
*
- * @warning This returns null on no ops.
- *
* @param array $options An options array. {@See elgg_get_metadata()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata disabled.
* @since 1.8.0
*/
function elgg_disable_metadata(array $options) {
@@ -328,8 +332,14 @@ function elgg_disable_metadata(array $options) {
return false;
}
+ elgg_get_metadata_cache()->invalidateByOptions('disable', $options);
+
+ // if we can see hidden (disabled) we need to use the offset
+ // otherwise we risk an infinite loop if there are more than 50
+ $inc_offset = access_get_show_hidden_status();
+
$options['metastring_type'] = 'metadata';
- return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', false);
+ return elgg_batch_metastring_based_objects($options, 'elgg_batch_disable_callback', $inc_offset);
}
/**
@@ -337,10 +347,11 @@ function elgg_disable_metadata(array $options) {
*
* @warning Unlike elgg_get_metadata() this will not accept an empty options array!
*
- * @warning This returns null on no ops.
+ * @warning In order to enable metadata, you must first use
+ * {@link access_show_hidden_entities()}.
*
* @param array $options An options array. {@See elgg_get_metadata()}
- * @return mixed
+ * @return bool|null true on success, false on failure, null if no metadata enabled.
* @since 1.8.0
*/
function elgg_enable_metadata(array $options) {
@@ -348,6 +359,8 @@ function elgg_enable_metadata(array $options) {
return false;
}
+ elgg_get_metadata_cache()->invalidateByOptions('enable', $options);
+
$options['metastring_type'] = 'metadata';
return elgg_batch_metastring_based_objects($options, 'elgg_batch_enable_callback');
}
@@ -361,13 +374,24 @@ function elgg_enable_metadata(array $options) {
* options available to elgg_get_entities(). Supports
* the singular option shortcut.
*
- * NB: Using metadata_names and metadata_values results in a
+ * @note Using metadata_names and metadata_values results in a
* "names IN (...) AND values IN (...)" clause. This is subtly
* differently than default multiple metadata_name_value_pairs, which use
* "(name = value) AND (name = value)" clauses.
*
* When in doubt, use name_value_pairs.
*
+ * To ask for entities that do not have a metadata value, use a custom
+ * where clause like this:
+ *
+ * $options['wheres'][] = "NOT EXISTS (
+ * SELECT 1 FROM {$dbprefix}metadata md
+ * WHERE md.entity_guid = e.guid
+ * AND md.name_id = $name_metastring_id
+ * AND md.value_id = $value_metastring_id)";
+ *
+ * Note the metadata name and value has been denormalized in the above example.
+ *
* @see elgg_get_entities
*
* @param array $options Array in format:
@@ -382,9 +406,11 @@ function elgg_enable_metadata(array $options) {
* 'operand' => '=',
* 'case_sensitive' => TRUE
* )
- * Currently if multiple values are sent via
+ * Currently if multiple values are sent via
* an array (value => array('value1', 'value2')
* the pair's operand will be forced to "IN".
+ * If passing "IN" as the operand and a string as the value,
+ * the value must be a properly quoted and escaped string.
*
* metadata_name_value_pairs_operator => NULL|STR The operator to use for combining
* (name = value) OPERATOR (name = value); default AND
@@ -400,7 +426,7 @@ function elgg_enable_metadata(array $options) {
*
* metadata_owner_guids => NULL|ARR guids for metadata owners
*
- * @return mixed If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
function elgg_get_entities_from_metadata(array $options = array()) {
@@ -438,18 +464,18 @@ function elgg_get_entities_from_metadata(array $options = array()) {
* This function is reused for annotations because the tables are
* exactly the same.
*
- * @param string $e_table Entities table name
- * @param string $n_table Normalized metastrings table name (Where entities,
+ * @param string $e_table Entities table name
+ * @param string $n_table Normalized metastrings table name (Where entities,
* values, and names are joined. annotations / metadata)
- * @param arr|null $names Array of names
- * @param arr|null $values Array of values
- * @param arr|null $pairs Array of names / values / operands
- * @param and|or $pair_operator Operator to use to join the where clauses for pairs
- * @param bool $case_sensitive Case sensitive metadata names?
- * @param arr|null $order_by_metadata Array of names / direction
- * @param arr|null $owner_guids Array of owner GUIDs
- *
- * @return FALSE|array False on fail, array('joins', 'wheres')
+ * @param array|null $names Array of names
+ * @param array|null $values Array of values
+ * @param array|null $pairs Array of names / values / operands
+ * @param string $pair_operator ("AND" or "OR") Operator to use to join the where clauses for pairs
+ * @param bool $case_sensitive Case sensitive metadata names?
+ * @param array|null $order_by_metadata Array of names / direction
+ * @param array|null $owner_guids Array of owner GUIDs
+ *
+ * @return false|array False on fail, array('joins', 'wheres')
* @since 1.7.0
* @access private
*/
@@ -596,6 +622,8 @@ $owner_guids = NULL) {
// if the operand is IN don't quote it because quoting should be done already.
if (is_numeric($pair['value'])) {
$value = sanitise_string($pair['value']);
+ } else if (is_bool($pair['value'])) {
+ $value = (int) $pair['value'];
} else if (is_array($pair['value'])) {
$values_array = array();
@@ -721,6 +749,8 @@ function elgg_list_entities_from_metadata($options) {
*
* @return array
* @access private
+ *
+ * @throws InvalidParameterException
*/
function export_metadata_plugin_hook($hook, $entity_type, $returnvalue, $params) {
// Sanity check values
@@ -732,15 +762,13 @@ function export_metadata_plugin_hook($hook, $entity_type, $returnvalue, $params)
throw new InvalidParameterException(elgg_echo('InvalidParameterException:NonArrayReturnValue'));
}
- $guid = (int)$params['guid'];
- $name = $params['name'];
-
$result = elgg_get_metadata(array(
- 'guid' => $guid,
- 'limit' => 0
+ 'guid' => (int)$params['guid'],
+ 'limit' => 0,
));
if ($result) {
+ /* @var ElggMetadata[] $result */
foreach ($result as $r) {
$returnvalue[] = $r->export();
}
@@ -762,10 +790,10 @@ function string_to_tag_array($string) {
$ar = explode(",", $string);
$ar = array_map('trim', $ar);
$ar = array_filter($ar, 'is_not_null');
+ $ar = array_map('strip_tags', $ar);
return $ar;
}
return false;
-
}
/**
@@ -878,6 +906,50 @@ function elgg_register_metadata_url_handler($extender_name, $function) {
return elgg_register_extender_url_handler('metadata', $extender_name, $function);
}
+/**
+ * Get the global metadata cache instance
+ *
+ * @return ElggVolatileMetadataCache
+ *
+ * @access private
+ */
+function elgg_get_metadata_cache() {
+ global $CONFIG;
+ if (empty($CONFIG->local_metadata_cache)) {
+ $CONFIG->local_metadata_cache = new ElggVolatileMetadataCache();
+ }
+ return $CONFIG->local_metadata_cache;
+}
+
+/**
+ * Invalidate the metadata cache based on options passed to various *_metadata functions
+ *
+ * @param string $action Action performed on metadata. "delete", "disable", or "enable"
+ * @param array $options Options passed to elgg_(delete|disable|enable)_metadata
+ * @return void
+ */
+function elgg_invalidate_metadata_cache($action, array $options) {
+ // remove as little as possible, optimizing for common cases
+ $cache = elgg_get_metadata_cache();
+ if (empty($options['guid'])) {
+ // safest to clear everything unless we want to make this even more complex :(
+ $cache->flush();
+ } else {
+ if (empty($options['metadata_name'])) {
+ // safest to clear the whole entity
+ $cache->clear($options['guid']);
+ } else {
+ switch ($action) {
+ case 'delete':
+ $cache->markEmpty($options['guid'], $options['metadata_name']);
+ break;
+ default:
+ $cache->markUnknown($options['guid'], $options['metadata_name']);
+ }
+ }
+ }
+}
+
/** Register the hook */
elgg_register_plugin_hook_handler("export", "all", "export_metadata_plugin_hook", 2);
@@ -901,5 +973,6 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'metadata_test');
function metadata_test($hook, $type, $value, $params) {
global $CONFIG;
$value[] = $CONFIG->path . 'engine/tests/api/metadata.php';
+ $value[] = $CONFIG->path . 'engine/tests/api/metadata_cache.php';
return $value;
-} \ No newline at end of file
+}
diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php
index cf6dd4d98..57d876c06 100644
--- a/engine/lib/metastrings.php
+++ b/engine/lib/metastrings.php
@@ -67,7 +67,7 @@ function get_metastring_id($string, $case_sensitive = TRUE) {
}
$row = FALSE;
- $metaStrings = get_data($query, "entity_row_to_elggstar");
+ $metaStrings = get_data($query);
if (is_array($metaStrings)) {
if (sizeof($metaStrings) > 1) {
$ids = array();
@@ -389,11 +389,6 @@ function elgg_get_metastring_based_objects($options) {
$selects = $options['selects'];
- // allow count shortcut
- if ($options['count']) {
- $options['metastring_calculation'] = 'count';
- }
-
// For performance reasons we don't want the joins required for metadata / annotations
// unless we're going through one of their callbacks.
// this means we expect the functions passing different callbacks to pass their required joins.
@@ -426,9 +421,11 @@ function elgg_get_metastring_based_objects($options) {
if ($metastring_clauses) {
$wheres = array_merge($wheres, $metastring_clauses['wheres']);
$joins = array_merge($joins, $metastring_clauses['joins']);
+ } else {
+ $wheres[] = get_access_sql_suffix('n_table');
}
- if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
+ if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE && !$options['count']) {
$selects = array_unique($selects);
// evalutate selects
$select_str = '';
@@ -439,6 +436,9 @@ function elgg_get_metastring_based_objects($options) {
}
$query = "SELECT DISTINCT n_table.*{$select_str} FROM {$db_prefix}$type n_table";
+ } elseif ($options['count']) {
+ // count is over the entities
+ $query = "SELECT count(DISTINCT e.guid) as calculation FROM {$db_prefix}$type n_table";
} else {
$query = "SELECT {$options['metastring_calculation']}(v.string) as calculation FROM {$db_prefix}$type n_table";
}
@@ -467,7 +467,7 @@ function elgg_get_metastring_based_objects($options) {
$defaults['order_by']);
}
- if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
+ if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE && !$options['count']) {
if (isset($options['group_by'])) {
$options['group_by'] = sanitise_string($options['group_by']);
$query .= " GROUP BY {$options['group_by']}";
@@ -515,21 +515,16 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
&& !$ids
&& (!$pairs && $pairs !== 0)) {
- return '';
+ return array();
}
$db_prefix = elgg_get_config('dbprefix');
- // join counter for incremental joins.
- $i = 1;
-
// binary forces byte-to-byte comparision of strings, making
// it case- and diacritical-mark- sensitive.
// only supported on values.
$binary = ($case_sensitive) ? ' BINARY ' : '';
- $access = get_access_sql_suffix($table);
-
$return = array (
'joins' => array (),
'wheres' => array()
@@ -594,13 +589,15 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
}
if ($names_where && $values_where) {
- $wheres[] = "($names_where AND $values_where AND $access)";
+ $wheres[] = "($names_where AND $values_where)";
} elseif ($names_where) {
- $wheres[] = "($names_where AND $access)";
+ $wheres[] = $names_where;
} elseif ($values_where) {
- $wheres[] = "($values_where AND $access)";
+ $wheres[] = $values_where;
}
+ $wheres[] = get_access_sql_suffix($table);
+
if ($where = implode(' AND ', $wheres)) {
$return['wheres'][] = "($where)";
}
@@ -663,9 +660,10 @@ function elgg_normalize_metastrings_options(array $options = array()) {
*
* @param int $id The object's ID
* @param string $enabled Value to set to: yes or no
- * @param string $type The type of table to use: metadata or anntations
+ * @param string $type The type of table to use: metadata or annotations
*
* @return bool
+ * @throws InvalidParameterException
* @since 1.8.0
* @access private
*/
@@ -740,7 +738,7 @@ function elgg_batch_metastring_based_objects(array $options, $callback, $inc_off
*
* @param int $id The metastring-based object's ID
* @param string $type The type: annotation or metadata
- * @return mixed
+ * @return ElggMetadata|ElggAnnotation
*
* @since 1.8.0
* @access private
@@ -806,6 +804,7 @@ function elgg_delete_metastring_based_object_by_id($id, $type) {
}
if ($metabyname_memcache) {
+ // @todo why name_id? is that even populated?
$metabyname_memcache->delete("{$obj->entity_guid}:{$obj->name_id}");
}
}
diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php
index 4ff009bfb..ab9cc05e8 100644
--- a/engine/lib/navigation.php
+++ b/engine/lib/navigation.php
@@ -126,6 +126,7 @@ function elgg_unregister_menu_item($menu_name, $item_name) {
}
foreach ($CONFIG->menus[$menu_name] as $index => $menu_object) {
+ /* @var ElggMenuItem $menu_object */
if ($menu_object->getName() == $item_name) {
unset($CONFIG->menus[$menu_name][$index]);
return true;
@@ -151,7 +152,8 @@ function elgg_is_menu_item_registered($menu_name, $item_name) {
return false;
}
- foreach ($CONFIG->menus[$menu_name] as $index => $menu_object) {
+ foreach ($CONFIG->menus[$menu_name] as $menu_object) {
+ /* @var ElggMenuItem $menu_object */
if ($menu_object->getName() == $item_name) {
return true;
}
@@ -216,7 +218,7 @@ function elgg_push_breadcrumb($title, $link = NULL) {
}
// avoid key collisions.
- $CONFIG->breadcrumbs[] = array('title' => $title, 'link' => $link);
+ $CONFIG->breadcrumbs[] = array('title' => elgg_get_excerpt($title, 100), 'link' => $link);
}
/**
@@ -308,6 +310,37 @@ function elgg_site_menu_setup($hook, $type, $return, $params) {
$return['more'] = array_splice($return['default'], $max_display_items);
}
}
+
+ // check if we have anything selected
+ $selected = false;
+ foreach ($return as $section) {
+ foreach ($section as $item) {
+ if ($item->getSelected()) {
+ $selected = true;
+ break 2;
+ }
+ }
+ }
+
+ if (!$selected) {
+ // nothing selected, match name to context or match url
+ $current_url = current_page_url();
+ foreach ($return as $section_name => $section) {
+ foreach ($section as $key => $item) {
+ // only highlight internal links
+ if (strpos($item->getHref(), elgg_get_site_url()) === 0) {
+ if ($item->getName() == elgg_get_context()) {
+ $return[$section_name][$key]->setSelected(true);
+ break 2;
+ }
+ if ($item->getHref() == $current_url) {
+ $return[$section_name][$key]->setSelected(true);
+ break 2;
+ }
+ }
+ }
+ }
+ }
return $return;
}
@@ -319,6 +352,7 @@ function elgg_site_menu_setup($hook, $type, $return, $params) {
function elgg_river_menu_setup($hook, $type, $return, $params) {
if (elgg_is_logged_in()) {
$item = $params['item'];
+ /* @var ElggRiverItem $item */
$object = $item->getObjectEntity();
// comments and non-objects cannot be commented on or liked
if (!elgg_in_context('widgets') && $item->annotation_id == 0) {
@@ -335,6 +369,18 @@ function elgg_river_menu_setup($hook, $type, $return, $params) {
$return[] = ElggMenuItem::factory($options);
}
}
+
+ if (elgg_is_admin_logged_in()) {
+ $options = array(
+ 'name' => 'delete',
+ 'href' => elgg_add_action_tokens_to_url("action/river/delete?id=$item->id"),
+ 'text' => elgg_view_icon('delete'),
+ 'title' => elgg_echo('delete'),
+ 'confirm' => elgg_echo('deleteconfirm'),
+ 'priority' => 200,
+ );
+ $return[] = ElggMenuItem::factory($options);
+ }
}
return $return;
@@ -350,6 +396,7 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {
}
$entity = $params['entity'];
+ /* @var ElggEntity $entity */
$handler = elgg_extract('handler', $params, false);
// access
@@ -395,6 +442,7 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {
function elgg_widget_menu_setup($hook, $type, $return, $params) {
$widget = $params['entity'];
+ /* @var ElggWidget $widget */
$show_edit = elgg_extract('show_edit', $params, true);
$collapse = array(
@@ -443,6 +491,7 @@ function elgg_widget_menu_setup($hook, $type, $return, $params) {
*/
function elgg_annotation_menu_setup($hook, $type, $return, $params) {
$annotation = $params['annotation'];
+ /* @var ElggAnnotation $annotation */
if ($annotation->name == 'generic_comment' && $annotation->canEdit()) {
$url = elgg_http_add_url_query_elements('action/comments/delete', array(
diff --git a/engine/lib/notification.php b/engine/lib/notification.php
index 18faff27f..be0c359d4 100644
--- a/engine/lib/notification.php
+++ b/engine/lib/notification.php
@@ -38,7 +38,7 @@ $NOTIFICATION_HANDLERS = array();
function register_notification_handler($method, $handler, $params = NULL) {
global $NOTIFICATION_HANDLERS;
- if (is_callable($handler)) {
+ if (is_callable($handler, true)) {
$NOTIFICATION_HANDLERS[$method] = new stdClass;
$NOTIFICATION_HANDLERS[$method]->handler = $handler;
@@ -86,7 +86,7 @@ function unregister_notification_handler($method) {
* @throws NotificationException
*/
function notify_user($to, $from, $subject, $message, array $params = NULL, $methods_override = "") {
- global $NOTIFICATION_HANDLERS, $CONFIG;
+ global $NOTIFICATION_HANDLERS;
// Sanitise
if (!is_array($to)) {
@@ -110,12 +110,15 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Are we overriding delivery?
$methods = $methods_override;
if (!$methods) {
- $tmp = (array)get_user_notification_settings($guid);
+ $tmp = get_user_notification_settings($guid);
$methods = array();
- foreach ($tmp as $k => $v) {
- // Add method if method is turned on for user!
- if ($v) {
- $methods[] = $k;
+ // $tmp may be false. don't cast
+ if (is_object($tmp)) {
+ foreach ($tmp as $k => $v) {
+ // Add method if method is turned on for user!
+ if ($v) {
+ $methods[] = $k;
+ }
}
}
}
@@ -131,8 +134,9 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Extract method details from list
$details = $NOTIFICATION_HANDLERS[$method];
$handler = $details->handler;
+ /* @var callable $handler */
- if ((!$NOTIFICATION_HANDLERS[$method]) || (!$handler)) {
+ if ((!$NOTIFICATION_HANDLERS[$method]) || (!$handler) || (!is_callable($handler))) {
error_log(elgg_echo('NotificationException:NoHandlerFound', array($method)));
}
@@ -140,7 +144,7 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
// Trigger handler and retrieve result.
try {
- $result[$guid][$method] = $handler(
+ $result[$guid][$method] = call_user_func($handler,
$from ? get_entity($from) : NULL, // From entity
get_entity($guid), // To entity
$subject, // The subject
@@ -164,7 +168,7 @@ function notify_user($to, $from, $subject, $message, array $params = NULL, $meth
*
* @param int $user_guid The user id
*
- * @return stdClass
+ * @return stdClass|false
*/
function get_user_notification_settings($user_guid = 0) {
$user_guid = (int)$user_guid;
@@ -173,7 +177,8 @@ function get_user_notification_settings($user_guid = 0) {
$user_guid = elgg_get_logged_in_user_guid();
}
- // @todo: holy crap, really?
+ // @todo: there should be a better way now that metadata is cached. E.g. just query for MD names, then
+ // query user object directly
$all_metadata = elgg_get_metadata(array(
'guid' => $user_guid,
'limit' => 0
@@ -236,6 +241,7 @@ function set_user_notification_setting($user_guid, $method, $value) {
* @param array $params Optional parameters (none taken in this instance)
*
* @return bool
+ * @throws NotificationException
* @access private
*/
function email_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message,
@@ -262,7 +268,7 @@ array $params = NULL) {
$to = $to->email;
// From
- $site = get_entity($CONFIG->site_guid);
+ $site = elgg_get_site_entity();
// If there's an email address, use it - but only if its not from a user.
if (!($from instanceof ElggUser) && $from->email) {
$from = $from->email;
@@ -287,6 +293,7 @@ array $params = NULL) {
* @param array $params Optional parameters (none used in this function)
*
* @return bool
+ * @throws NotificationException
* @since 1.7.2
*/
function elgg_send_email($from, $to, $subject, $body, array $params = NULL) {
@@ -343,6 +350,8 @@ function elgg_send_email($from, $to, $subject, $body, array $params = NULL) {
// Sanitise subject by stripping line endings
$subject = preg_replace("/(\r\n|\r|\n)/", " ", $subject);
+ // this is because Elgg encodes everything and matches what is done with body
+ $subject = html_entity_decode($subject, ENT_COMPAT, 'UTF-8'); // Decode any html entities
if (is_callable('mb_encode_mimeheader')) {
$subject = mb_encode_mimeheader($subject, "UTF-8", "B");
}
@@ -421,7 +430,7 @@ function register_notification_object($entity_type, $object_subtype, $language_n
* @param int $user_guid The GUID of the user who wants to follow a user's content
* @param int $author_guid The GUID of the user whose content the user wants to follow
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function register_notification_interest($user_guid, $author_guid) {
return add_entity_relationship($user_guid, 'notify', $author_guid);
@@ -433,7 +442,7 @@ function register_notification_interest($user_guid, $author_guid) {
* @param int $user_guid The GUID of the user who is following a user's content
* @param int $author_guid The GUID of the user whose content the user wants to unfollow
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function remove_notification_interest($user_guid, $author_guid) {
return remove_entity_relationship($user_guid, 'notify', $author_guid);
@@ -449,12 +458,13 @@ function remove_notification_interest($user_guid, $author_guid) {
* @param string $object_type mixed
* @param mixed $object The object created
*
- * @return void
+ * @return bool
* @access private
*/
function object_notifications($event, $object_type, $object) {
// We only want to trigger notification events for ElggEntities
if ($object instanceof ElggEntity) {
+ /* @var ElggEntity $object */
// Get config data
global $CONFIG, $SESSION, $NOTIFICATION_HANDLERS;
@@ -491,9 +501,10 @@ function object_notifications($event, $object_type, $object) {
'relationship' => 'notify' . $method,
'relationship_guid' => $object->container_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
- 'limit' => 99999
+ 'type' => 'user',
+ 'limit' => false
));
+ /* @var ElggUser[] $interested_users */
if ($interested_users && is_array($interested_users)) {
foreach ($interested_users as $user) {
diff --git a/engine/lib/objects.php b/engine/lib/objects.php
index f186c66cb..ff3cc733f 100644
--- a/engine/lib/objects.php
+++ b/engine/lib/objects.php
@@ -31,6 +31,7 @@ function get_object_entity_as_row($guid) {
* @param string $description The object's description
*
* @return bool
+ * @access private
*/
function create_object_entity($guid, $title, $description) {
global $CONFIG;
@@ -92,16 +93,16 @@ function get_object_sites($object_guid, $limit = 10, $offset = 0) {
return elgg_get_entities_from_relationship(array(
'relationship' => 'member_of_site',
'relationship_guid' => $object_guid,
- 'types' => 'site',
+ 'type' => 'site',
'limit' => $limit,
- 'offset' => $offset
+ 'offset' => $offset,
));
}
/**
* Runs unit tests for ElggObject
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/opendd.php b/engine/lib/opendd.php
index f00ea6aab..7d635a295 100644
--- a/engine/lib/opendd.php
+++ b/engine/lib/opendd.php
@@ -7,6 +7,8 @@
* @version 0.4
*/
+// @codingStandardsIgnoreStart
+
/**
* Attempt to construct an ODD object out of a XmlElement or sub-elements.
*
@@ -103,3 +105,5 @@ function ODD_Import($xml) {
function ODD_Export(ODDDocument $document) {
return "$document";
}
+
+// @codingStandardsIgnoreEnd
diff --git a/engine/lib/output.php b/engine/lib/output.php
index 7bfc4be6e..de4f911fb 100644
--- a/engine/lib/output.php
+++ b/engine/lib/output.php
@@ -12,29 +12,34 @@
*
* @param string $text The input string
*
- * @return string The output stirng with formatted links
- **/
+ * @return string The output string with formatted links
+ */
function parse_urls($text) {
+
+ // URI specification: http://www.ietf.org/rfc/rfc3986.txt
+ // This varies from the specification in the following ways:
+ // * Supports non-ascii characters
+ // * Does not allow parentheses and single quotes
+ // * Cuts off commas, exclamation points, and periods off as last character
+
// @todo this causes problems with <attr = "val">
- // must be ing <attr="val"> format (no space).
+ // must be in <attr="val"> format (no space).
// By default htmlawed rewrites tags to this format.
// if PHP supported conditional negative lookbehinds we could use this:
// $r = preg_replace_callback('/(?<!=)(?<![ ])?(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i',
- //
- // we can put , in the list of excluded char but need to keep . because of domain names.
- // it is removed in the callback.
- $r = preg_replace_callback('/(?<!=)(?<!["\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\'\!\(\),]+)/i',
+ $r = preg_replace_callback('/(?<![=\/"\'])((ht|f)tps?:\/\/[^\s\r\n\t<>"\']+)/i',
create_function(
'$matches',
'
$url = $matches[1];
- $period = \'\';
- if (substr($url, -1, 1) == \'.\') {
- $period = \'.\';
- $url = trim($url, \'.\');
+ $punc = "";
+ $last = substr($url, -1, 1);
+ if (in_array($last, array(".", "!", ",", "(", ")"))) {
+ $punc = $last;
+ $url = rtrim($url, ".!,()");
}
$urltext = str_replace("/", "/<wbr />", $url);
- return "<a href=\"$url\">$urltext</a>$period";
+ return "<a href=\"$url\" rel=\"nofollow\">$urltext</a>$punc";
'
), $text);
@@ -43,51 +48,26 @@ function parse_urls($text) {
/**
* Create paragraphs from text with line spacing
- * Borrowed from Wordpress.
*
* @param string $pee The string
- * @param bool $br Add BRs?
+ * @deprecated Use elgg_autop instead
+ * @todo Add deprecation warning in 1.9
*
- * @todo Rewrite
* @return string
**/
-function autop($pee, $br = 1) {
- $pee = $pee . "\n"; // just to make things a little easier, pad the end
- $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
- // Space things out a little
- $allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
- $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
- $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
- $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
- if (strpos($pee, '<object') !== false) {
- $pee = preg_replace('|\s*<param([^>]*)>\s*|', "<param$1>", $pee); // no pee inside object/embed
- $pee = preg_replace('|\s*</embed>\s*|', '</embed>', $pee);
- }
- $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
- $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end
- $pee = preg_replace('|<p>\s*?</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
- $pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee);
- $pee = preg_replace('|<p>|', "$1<p>", $pee);
- $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
- $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
- $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
- $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
- $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
- $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
- if ($br) {
- $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', create_function('$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);'), $pee);
- $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
- $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
- }
- $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
- $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
- //if (strpos($pee, '<pre') !== false) {
- // mind the space between the ? and >. Only there because of the comment.
- // $pee = preg_replace_callback('!(<pre.*? >)(.*?)</pre>!is', 'clean_pre', $pee );
- //}
- $pee = preg_replace("|\n</p>$|", '</p>', $pee);
-
- return $pee;
+function autop($pee) {
+ return elgg_autop($pee);
+}
+
+/**
+ * Create paragraphs from text with line spacing
+ *
+ * @param string $string The string
+ *
+ * @return string
+ **/
+function elgg_autop($string) {
+ return ElggAutoP::getInstance()->process($string);
}
/**
@@ -249,7 +229,6 @@ function elgg_normalize_url($url) {
$php_5_3_0_to_5_3_2 = version_compare(PHP_VERSION, '5.3.0', '>=') &&
version_compare(PHP_VERSION, '5.3.3', '<');
- $validated = false;
if ($php_5_2_13_and_below || $php_5_3_0_to_5_3_2) {
$tmp_address = str_replace("-", "", $url);
$validated = filter_var($tmp_address, FILTER_VALIDATE_URL);
@@ -271,8 +250,8 @@ function elgg_normalize_url($url) {
// '?query=test', #target
return $url;
- } elseif (stripos($url, 'javascript:') === 0) {
- // 'javascript:'
+ } elseif (stripos($url, 'javascript:') === 0 || stripos($url, 'mailto:') === 0) {
+ // 'javascript:' and 'mailto:'
// Not covered in FILTER_VALIDATE_URL
return $url;
@@ -310,9 +289,9 @@ function elgg_get_friendly_title($title) {
return $result;
}
- // handle some special cases
- $title = str_replace('&amp;', 'and', $title);
-
+ // titles are often stored HTML encoded
+ $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
+
$title = ElggTranslit::urlize($title);
return $title;
@@ -384,7 +363,7 @@ function elgg_get_friendly_time($time) {
/**
* Strip tags and offer plugins the chance.
* Plugins register for output:strip_tags plugin hook.
- * Original string included in $params['original_string']
+ * Original string included in $params['original_string']
*
* @param string $string Formatted string
*
@@ -398,3 +377,93 @@ function elgg_strip_tags($string) {
return $string;
}
+
+/**
+ * Apply html_entity_decode() to a string while re-entitising HTML
+ * special char entities to prevent them from being decoded back to their
+ * unsafe original forms.
+ *
+ * This relies on html_entity_decode() not translating entities when
+ * doing so leaves behind another entity, e.g. &amp;gt; if decoded would
+ * create &gt; which is another entity itself. This seems to escape the
+ * usual behaviour where any two paired entities creating a HTML tag are
+ * usually decoded, i.e. a lone &gt; is not decoded, but &lt;foo&gt; would
+ * be decoded to <foo> since it creates a full tag.
+ *
+ * Note: This function is poorly explained in the manual - which is really
+ * bad given its potential for misuse on user input already escaped elsewhere.
+ * Stackoverflow is littered with advice to use this function in the precise
+ * way that would lead to user input being capable of injecting arbitrary HTML.
+ *
+ * @param string $string
+ *
+ * @return string
+ *
+ * @author Pádraic Brady
+ * @copyright Copyright (c) 2010 Pádraic Brady (http://blog.astrumfutura.com)
+ * @license Released under dual-license GPL2/MIT by explicit permission of Pádraic Brady
+ *
+ * @access private
+ */
+function _elgg_html_decode($string) {
+ $string = str_replace(
+ array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'),
+ array('&amp;gt;', '&amp;lt;', '&amp;amp;', '&amp;quot;', '&amp;#039;'),
+ $string
+ );
+ $string = html_entity_decode($string, ENT_NOQUOTES, 'UTF-8');
+ $string = str_replace(
+ array('&amp;gt;', '&amp;lt;', '&amp;amp;', '&amp;quot;', '&amp;#039;'),
+ array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'),
+ $string
+ );
+ return $string;
+}
+
+/**
+ * Prepares query string for output to prevent CSRF attacks.
+ *
+ * @param string $string
+ * @return string
+ *
+ * @access private
+ */
+function _elgg_get_display_query($string) {
+ //encode <,>,&, quotes and characters above 127
+ if (function_exists('mb_convert_encoding')) {
+ $display_query = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8');
+ } else {
+ // if no mbstring extension, we just strip characters
+ $display_query = preg_replace("/[^\x01-\x7F]/", "", $string);
+ }
+ return htmlspecialchars($display_query, ENT_QUOTES, 'UTF-8', false);
+}
+
+/**
+ * Unit tests for Output
+ *
+ * @param string $hook unit_test
+ * @param string $type system
+ * @param mixed $value Array of tests
+ * @param mixed $params Params
+ *
+ * @return array
+ * @access private
+ */
+function output_unit_test($hook, $type, $value, $params) {
+ global $CONFIG;
+ $value[] = $CONFIG->path . 'engine/tests/api/output.php';
+ return $value;
+}
+
+/**
+ * Initialise the Output subsystem.
+ *
+ * @return void
+ * @access private
+ */
+function output_init() {
+ elgg_register_plugin_hook_handler('unit_test', 'system', 'output_unit_test');
+}
+
+elgg_register_event_handler('init', 'system', 'output_init');
diff --git a/engine/lib/pagehandler.php b/engine/lib/pagehandler.php
index ba7518a77..0cf99b6fe 100644
--- a/engine/lib/pagehandler.php
+++ b/engine/lib/pagehandler.php
@@ -45,7 +45,10 @@ function page_handler($handler, $page) {
$page = $request['segments'];
$result = false;
- if (isset($CONFIG->pagehandler) && !empty($handler) && isset($CONFIG->pagehandler[$handler])) {
+ if (isset($CONFIG->pagehandler)
+ && !empty($handler)
+ && isset($CONFIG->pagehandler[$handler])
+ && is_callable($CONFIG->pagehandler[$handler])) {
$function = $CONFIG->pagehandler[$handler];
$result = call_user_func($function, $page, $handler);
}
@@ -76,14 +79,15 @@ function page_handler($handler, $page) {
* @param string $handler The page type to handle
* @param string $function Your function name
*
- * @return true|false Depending on success
+ * @return bool Depending on success
*/
function elgg_register_page_handler($handler, $function) {
global $CONFIG;
+
if (!isset($CONFIG->pagehandler)) {
$CONFIG->pagehandler = array();
}
- if (is_callable($function)) {
+ if (is_callable($function, true)) {
$CONFIG->pagehandler[$handler] = $function;
return true;
}
diff --git a/engine/lib/pageowner.php b/engine/lib/pageowner.php
index 0cf0e0625..bd63d08c6 100644
--- a/engine/lib/pageowner.php
+++ b/engine/lib/pageowner.php
@@ -29,7 +29,9 @@ function elgg_get_page_owner_guid($guid = 0) {
// return guid of page owner entity
$guid = elgg_trigger_plugin_hook('page_owner', 'system', NULL, 0);
- $page_owner_guid = $guid;
+ if ($guid) {
+ $page_owner_guid = $guid;
+ }
return $guid;
}
@@ -37,17 +39,23 @@ function elgg_get_page_owner_guid($guid = 0) {
/**
* Gets the owner entity for the current page.
*
- * @return ElggEntity|false The current page owner or false if none.
+ * @note Access is disabled when getting the page owner entity.
+ *
+ * @return ElggUser|ElggGroup|false The current page owner or false if none.
*
* @since 1.8.0
*/
function elgg_get_page_owner_entity() {
$guid = elgg_get_page_owner_guid();
if ($guid > 0) {
- return get_entity($guid);
+ $ia = elgg_set_ignore_access(true);
+ $owner = get_entity($guid);
+ elgg_set_ignore_access($ia);
+
+ return $owner;
}
- return FALSE;
+ return false;
}
/**
@@ -75,6 +83,8 @@ function elgg_set_page_owner_guid($guid) {
* <handler>/edit/<entity guid>
* <handler>/group/<group guid>
*
+ * @note Access is disabled while finding the page owner for the group gatekeeper functions.
+ *
*
* @param string $hook 'page_owner'
* @param string $entity_type 'system'
@@ -90,6 +100,8 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
return $returnvalue;
}
+ $ia = elgg_set_ignore_access(true);
+
$username = get_input("username");
if ($username) {
// @todo using a username of group:<guid> is deprecated
@@ -97,11 +109,13 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
preg_match('/group\:([0-9]+)/i', $username, $matches);
$guid = $matches[1];
if ($entity = get_entity($guid)) {
+ elgg_set_ignore_access($ia);
return $entity->getGUID();
}
}
if ($user = get_user_by_username($username)) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
}
@@ -109,6 +123,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
$owner = get_input("owner_guid");
if ($owner) {
if ($user = get_entity($owner)) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
}
@@ -130,6 +145,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'friends':
$user = get_user_by_username($segments[2]);
if ($user) {
+ elgg_set_ignore_access($ia);
return $user->getGUID();
}
break;
@@ -137,6 +153,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'edit':
$entity = get_entity($segments[2]);
if ($entity) {
+ elgg_set_ignore_access($ia);
return $entity->getContainerGUID();
}
break;
@@ -144,6 +161,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
case 'group':
$entity = get_entity($segments[2]);
if ($entity) {
+ elgg_set_ignore_access($ia);
return $entity->getGUID();
}
break;
@@ -151,7 +169,7 @@ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params)
}
}
- return $returnvalue;
+ elgg_set_ignore_access($ia);
}
/**
diff --git a/engine/lib/pam.php b/engine/lib/pam.php
index 4f9f44278..1c9c3bfe1 100644
--- a/engine/lib/pam.php
+++ b/engine/lib/pam.php
@@ -30,7 +30,9 @@ $_PAM_HANDLERS = array();
* failure, return false or throw an exception. Returning nothing indicates that
* the handler wants to be skipped.
*
- * @param string $handler The handler function in the format
+ * Note, $handler must be string callback (not an array/Closure).
+ *
+ * @param string $handler Callable global handler function in the format ()
* pam_handler($credentials = NULL);
* @param string $importance The importance - "sufficient" (default) or "required"
* @param string $policy The policy type, default is "user"
@@ -45,7 +47,8 @@ function register_pam_handler($handler, $importance = "sufficient", $policy = "u
$_PAM_HANDLERS[$policy] = array();
}
- if (is_callable($handler)) {
+ // @todo remove requirement that $handle be a global function
+ if (is_string($handler) && is_callable($handler, true)) {
$_PAM_HANDLERS[$policy][$handler] = new stdClass;
$_PAM_HANDLERS[$policy][$handler]->handler = $handler;
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php
index d5cd4fe76..d5d3db466 100644
--- a/engine/lib/plugins.php
+++ b/engine/lib/plugins.php
@@ -91,7 +91,9 @@ function elgg_get_plugin_ids_in_dir($dir = null) {
* @access private
*/
function elgg_generate_plugin_entities() {
+ // @todo $site unused, can remove?
$site = get_config('site');
+
$dir = elgg_get_plugins_path();
$db_prefix = elgg_get_config('dbprefix');
@@ -107,6 +109,7 @@ function elgg_generate_plugin_entities() {
$old_access = access_get_show_hidden_status();
access_show_hidden_entities(true);
$known_plugins = elgg_get_entities_from_relationship($options);
+ /* @var ElggPlugin[] $known_plugins */
if (!$known_plugins) {
$known_plugins = array();
@@ -138,7 +141,7 @@ function elgg_generate_plugin_entities() {
$index = $id_map[$plugin_id];
$plugin = $known_plugins[$index];
// was this plugin deleted and its entity disabled?
- if ($plugin->enabled != 'yes') {
+ if (!$plugin->isEnabled()) {
$plugin->enable();
$plugin->deactivate();
$plugin->setPriority('last');
@@ -176,13 +179,31 @@ function elgg_generate_plugin_entities() {
}
/**
+ * Cache a reference to this plugin by its ID
+ *
+ * @param ElggPlugin $plugin
+ *
+ * @access private
+ */
+function _elgg_cache_plugin_by_id(ElggPlugin $plugin) {
+ $map = (array) elgg_get_config('plugins_by_id_map');
+ $map[$plugin->getID()] = $plugin;
+ elgg_set_config('plugins_by_id_map', $map);
+}
+
+/**
* Returns an ElggPlugin object with the path $path.
*
* @param string $plugin_id The id (dir name) of the plugin. NOT the guid.
- * @return mixed ElggPlugin or false.
+ * @return ElggPlugin|false
* @since 1.8.0
*/
function elgg_get_plugin_from_id($plugin_id) {
+ $map = (array) elgg_get_config('plugins_by_id_map');
+ if (isset($map[$plugin_id])) {
+ return $map[$plugin_id];
+ }
+
$plugin_id = sanitize_string($plugin_id);
$db_prefix = get_config('dbprefix');
@@ -190,6 +211,7 @@ function elgg_get_plugin_from_id($plugin_id) {
'type' => 'object',
'subtype' => 'plugin',
'joins' => array("JOIN {$db_prefix}objects_entity oe on oe.guid = e.guid"),
+ 'selects' => array("oe.title", "oe.description"),
'wheres' => array("oe.title = '$plugin_id'"),
'limit' => 1
);
@@ -241,6 +263,8 @@ function elgg_get_max_plugin_priority() {
$data = get_data($q);
if ($data) {
$max = $data[0]->max;
+ } else {
+ $max = 1;
}
// can't have a priority of 0.
@@ -287,13 +311,11 @@ function elgg_is_active_plugin($plugin_id, $site_guid = null) {
* @access private
*/
function elgg_load_plugins() {
- global $CONFIG;
-
$plugins_path = elgg_get_plugins_path();
- $start_flags = ELGG_PLUGIN_INCLUDE_START
- | ELGG_PLUGIN_REGISTER_VIEWS
- | ELGG_PLUGIN_REGISTER_LANGUAGES
- | ELGG_PLUGIN_REGISTER_CLASSES;
+ $start_flags = ELGG_PLUGIN_INCLUDE_START |
+ ELGG_PLUGIN_REGISTER_VIEWS |
+ ELGG_PLUGIN_REGISTER_LANGUAGES |
+ ELGG_PLUGIN_REGISTER_CLASSES;
if (!$plugins_path) {
return false;
@@ -341,7 +363,7 @@ function elgg_load_plugins() {
*
* @param string $status The status of the plugins. active, inactive, or all.
* @param mixed $site_guid Optional site guid
- * @return array
+ * @return ElggPlugin[]
* @since 1.8.0
* @access private
*/
@@ -422,6 +444,7 @@ function elgg_set_plugin_priorities(array $order) {
// though we do start with 1
$order = array_values($order);
+ $missing_plugins = array();
foreach ($plugins as $plugin) {
$plugin_id = $plugin->getID();
@@ -512,6 +535,8 @@ function elgg_namespace_plugin_private_setting($type, $name, $id = null) {
* @return string|false Plugin name, or false if no plugin name was called
* @since 1.8.0
* @access private
+ *
+ * @todo get rid of this
*/
function elgg_get_calling_plugin_id($mainfilename = false) {
if (!$mainfilename) {
@@ -618,19 +643,18 @@ function elgg_get_plugins_provides($type = null, $name = null) {
* @access private
*/
function elgg_check_plugins_provides($type, $name, $version = null, $comparison = 'ge') {
- if (!$provided = elgg_get_plugins_provides($type, $name)) {
+ $provided = elgg_get_plugins_provides($type, $name);
+ if (!$provided) {
return array(
'status' => false,
'version' => ''
);
}
- if ($provided) {
- if ($version) {
- $status = version_compare($provided['version'], $version, $comparison);
- } else {
- $status = true;
- }
+ if ($version) {
+ $status = version_compare($provided['version'], $version, $comparison);
+ } else {
+ $status = true;
}
return array(
@@ -840,9 +864,9 @@ function elgg_set_plugin_user_setting($name, $value, $user_guid = null, $plugin_
/**
* Unsets a user-specific plugin setting
*
- * @param str $name Name of the setting
- * @param int $user_guid Defaults to logged in user
- * @param str $plugin_id Defaults to contextual plugin name
+ * @param string $name Name of the setting
+ * @param int $user_guid Defaults to logged in user
+ * @param string $plugin_id Defaults to contextual plugin name
*
* @return bool
* @since 1.8.0
@@ -920,6 +944,7 @@ function elgg_set_plugin_setting($name, $value, $plugin_id = null) {
*
* @return mixed
* @since 1.8.0
+ * @todo make $plugin_id required in future version
*/
function elgg_get_plugin_setting($name, $plugin_id = null) {
if ($plugin_id) {
@@ -1065,7 +1090,7 @@ function plugin_run_once() {
/**
* Runs unit tests for the entity objects.
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
@@ -1080,6 +1105,49 @@ function plugins_test($hook, $type, $value, $params) {
}
/**
+ * Checks on deactivate plugin event if disabling it won't create unmet dependencies and blocks disable in such case.
+ *
+ * @param string $event deactivate
+ * @param string $type plugin
+ * @param array $params Parameters array containing entry with ELggPlugin instance under 'plugin_entity' key
+ * @return bool false to block plugin deactivation action
+ *
+ * @access private
+ */
+function _plugins_deactivate_dependency_check($event, $type, $params) {
+ $plugin_id = $params['plugin_entity']->getManifest()->getPluginID();
+ $plugin_name = $params['plugin_entity']->getManifest()->getName();
+
+ $active_plugins = elgg_get_plugins();
+
+ $dependents = array();
+ foreach ($active_plugins as $plugin) {
+ $manifest = $plugin->getManifest();
+ $requires = $manifest->getRequires();
+
+ foreach ($requires as $required) {
+ if ($required['type'] == 'plugin' && $required['name'] == $plugin_id) {
+ // there are active dependents
+ $dependents[$manifest->getPluginID()] = $plugin;
+ }
+ }
+ }
+
+ if ($dependents) {
+ $list = '<ul>';
+ // construct error message and prevent disabling
+ foreach ($dependents as $dependent) {
+ $list .= '<li>' . $dependent->getManifest()->getName() . '</li>';
+ }
+ $list .= '</ul>';
+
+ register_error(elgg_echo('ElggPlugin:Dependencies:ActiveDependent', array($plugin_name, $list)));
+
+ return false;
+ }
+}
+
+/**
* Initialize the plugin system
* Listens to system init and registers actions
*
@@ -1090,6 +1158,10 @@ function plugin_init() {
run_function_once("plugin_run_once");
elgg_register_plugin_hook_handler('unit_test', 'system', 'plugins_test');
+
+ // note - plugins are booted by the time this handler is registered
+ // deactivation due to error may have already occurred
+ elgg_register_event_handler('deactivate', 'plugin', '_plugins_deactivate_dependency_check');
elgg_register_action("plugins/settings/save", '', 'admin');
elgg_register_action("plugins/usersettings/save");
diff --git a/engine/lib/private_settings.php b/engine/lib/private_settings.php
index 1fa9bdb66..7541f7b3b 100644
--- a/engine/lib/private_settings.php
+++ b/engine/lib/private_settings.php
@@ -349,11 +349,6 @@ function set_private_setting($entity_guid, $name, $value) {
$name = sanitise_string($name);
$value = sanitise_string($value);
- $entity = get_entity($entity_guid);
- if (!$entity instanceof ElggEntity) {
- return false;
- }
-
$result = insert_data("INSERT into {$CONFIG->dbprefix}private_settings
(entity_guid, name, value) VALUES
($entity_guid, '$name', '$value')
diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php
index f50c4a485..b0cd627fc 100644
--- a/engine/lib/relationships.php
+++ b/engine/lib/relationships.php
@@ -12,7 +12,7 @@
*
* @param stdClass $row Database row from the relationship table
*
- * @return stdClass or ElggMetadata
+ * @return ElggRelationship|stdClass
* @access private
*/
function row_to_elggrelationship($row) {
@@ -28,7 +28,7 @@ function row_to_elggrelationship($row) {
*
* @param int $id The ID of a relationship
*
- * @return mixed
+ * @return ElggRelationship|false
*/
function get_relationship($id) {
global $CONFIG;
@@ -109,7 +109,7 @@ function add_entity_relationship($guid_one, $relationship, $guid_two) {
* @param string $relationship The type of relationship
* @param int $guid_two The GUID of the entity the relationship is with
*
- * @return object|false Depending on success
+ * @return ElggRelationship|false Depending on success
*/
function check_entity_relationship($guid_one, $relationship, $guid_two) {
global $CONFIG;
@@ -123,7 +123,7 @@ function check_entity_relationship($guid_one, $relationship, $guid_two) {
AND relationship='$relationship'
AND guid_two=$guid_two limit 1";
- $row = get_data_row($query);
+ $row = row_to_elggrelationship(get_data_row($query));
if ($row) {
return $row;
}
@@ -220,7 +220,7 @@ function remove_entity_relationships($guid_one, $relationship = "", $inverse = f
* @param int $guid The GUID of the relationship owner
* @param bool $inverse_relationship Inverse relationship owners?
*
- * @return mixed
+ * @return ElggRelationship[]
*/
function get_entity_relationships($guid, $inverse_relationship = FALSE) {
global $CONFIG;
@@ -239,6 +239,15 @@ function get_entity_relationships($guid, $inverse_relationship = FALSE) {
* Also accepts all options available to elgg_get_entities() and
* elgg_get_entities_from_metadata().
*
+ * To ask for entities that do not have a particulat relationship to an entity,
+ * use a custom where clause like the following:
+ *
+ * $options['wheres'][] = "NOT EXISTS (
+ * SELECT 1 FROM {$db_prefix}entity_relationships
+ * WHERE guid_one = e.guid
+ * AND relationship = '$relationship'
+ * )";
+ *
* @see elgg_get_entities
* @see elgg_get_entities_from_metadata
*
@@ -250,7 +259,7 @@ function get_entity_relationships($guid, $inverse_relationship = FALSE) {
*
* inverse_relationship => BOOL Inverse the relationship
*
- * @return mixed If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed If count, int. If not count, array. false on errors.
* @since 1.7.0
*/
function elgg_get_entities_from_relationship($options) {
@@ -307,7 +316,7 @@ function elgg_get_entities_from_relationship($options) {
* Provide in table.column format.
* @param string $relationship Relationship string
* @param int $relationship_guid Entity guid to check
- * @param string $inverse_relationship Inverse relationship check?
+ * @param bool $inverse_relationship Inverse relationship check?
*
* @return mixed
* @since 1.7.0
@@ -354,7 +363,7 @@ $relationship_guid = NULL, $inverse_relationship = FALSE) {
/**
* Returns a viewable list of entities by relationship
*
- * @param array $options
+ * @param array $options Options array for retrieval of entities
*
* @see elgg_list_entities()
* @see elgg_get_entities_from_relationship()
@@ -372,7 +381,7 @@ function elgg_list_entities_from_relationship(array $options = array()) {
*
* @param array $options An options array compatible with
* elgg_get_entities_from_relationship()
- * @return mixed int If count, int. If not count, array. false on errors.
+ * @return ElggEntity[]|mixed int If count, int. If not count, array. false on errors.
* @since 1.8.0
*/
function elgg_get_entities_from_relationship_count(array $options = array()) {
@@ -389,7 +398,7 @@ function elgg_get_entities_from_relationship_count(array $options = array()) {
*
* @param array $options Options array
*
- * @return array
+ * @return string
* @since 1.8.0
*/
function elgg_list_entities_from_relationship_count($options) {
@@ -407,7 +416,7 @@ function elgg_list_entities_from_relationship_count($options) {
function elgg_register_relationship_url_handler($relationship_type, $function_name) {
global $CONFIG;
- if (!is_callable($function_name)) {
+ if (!is_callable($function_name, true)) {
return false;
}
@@ -490,7 +499,7 @@ function already_attached($guid_one, $guid_two) {
* @param int $guid Entity GUID
* @param string $type The type of object to return e.g. 'file', 'friend_of' etc
*
- * @return an array of objects
+ * @return ElggEntity[]
* @access private
*/
function get_attachments($guid, $type = "") {
@@ -498,7 +507,7 @@ function get_attachments($guid, $type = "") {
'relationship' => 'attached',
'relationship_guid' => $guid,
'inverse_relationship' => false,
- 'types' => $type,
+ 'type' => $type,
'subtypes' => '',
'owner_guid' => 0,
'order_by' => 'time_created desc',
@@ -562,9 +571,8 @@ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
if ($element instanceof ODDRelationship) {
$tmp = new ElggRelationship();
$tmp->import($element);
-
- return $tmp;
}
+ return $tmp;
}
/**
@@ -577,11 +585,10 @@ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
*
* @elgg_event_handler export all
* @return mixed
+ * @throws InvalidParameterException
* @access private
*/
function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $params) {
- global $CONFIG;
-
// Sanity check values
if ((!is_array($params)) && (!isset($params['guid']))) {
throw new InvalidParameterException(elgg_echo('InvalidParameterException:GUIDNotForExport'));
@@ -615,9 +622,9 @@ function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par
* @access private
*/
function relationship_notification_hook($event, $type, $object) {
-
+ /* @var ElggRelationship $object */
$user_one = get_entity($object->guid_one);
- $user_two = get_entity($object->guid_two);
+ /* @var ElggUser $user_one */
return notify_user($object->guid_two,
$object->guid_one,
diff --git a/engine/lib/river.php b/engine/lib/river.php
index 711832f70..e92040eb7 100644
--- a/engine/lib/river.php
+++ b/engine/lib/river.php
@@ -120,7 +120,7 @@ $posted = 0, $annotation_id = 0) {
* subtypes => STR|ARR Entity subtype string(s)
* type_subtype_pairs => ARR Array of type => subtype pairs where subtype
* can be an array of subtype strings
- *
+ *
* posted_time_lower => INT The lower bound on the time posted
* posted_time_upper => INT The upper bound on the time posted
*
@@ -361,6 +361,7 @@ function elgg_get_river(array $options = array()) {
}
$river_items = get_data($query, 'elgg_row_to_elgg_river_item');
+ _elgg_prefetch_river_entities($river_items);
return $river_items;
} else {
@@ -370,11 +371,56 @@ function elgg_get_river(array $options = array()) {
}
/**
+ * Prefetch entities that will be displayed in the river.
+ *
+ * @param ElggRiverItem[] $river_items
+ * @access private
+ */
+function _elgg_prefetch_river_entities(array $river_items) {
+ // prefetch objects and subjects
+ $guids = array();
+ foreach ($river_items as $item) {
+ if ($item->subject_guid && !_elgg_retrieve_cached_entity($item->subject_guid)) {
+ $guids[$item->subject_guid] = true;
+ }
+ if ($item->object_guid && !_elgg_retrieve_cached_entity($item->object_guid)) {
+ $guids[$item->object_guid] = true;
+ }
+ }
+ if ($guids) {
+ // avoid creating oversized query
+ // @todo how to better handle this?
+ $guids = array_slice($guids, 0, 300, true);
+ // return value unneeded, just priming cache
+ elgg_get_entities(array(
+ 'guids' => array_keys($guids),
+ 'limit' => 0,
+ ));
+ }
+
+ // prefetch object containers
+ $guids = array();
+ foreach ($river_items as $item) {
+ $object = $item->getObjectEntity();
+ if ($object->container_guid && !_elgg_retrieve_cached_entity($object->container_guid)) {
+ $guids[$object->container_guid] = true;
+ }
+ }
+ if ($guids) {
+ $guids = array_slice($guids, 0, 300, true);
+ elgg_get_entities(array(
+ 'guids' => array_keys($guids),
+ 'limit' => 0,
+ ));
+ }
+}
+
+/**
* List river items
*
* @param array $options Any options from elgg_get_river() plus:
* pagination => BOOL Display pagination links (true)
-
+ *
* @return string
* @since 1.8.0
*/
@@ -388,8 +434,13 @@ function elgg_list_river(array $options = array()) {
'pagination' => TRUE,
'list_class' => 'elgg-list-river elgg-river', // @todo remove elgg-river in Elgg 1.9
);
-
+
$options = array_merge($defaults, $options);
+
+ if (!$options["limit"] && !$options["offset"]) {
+ // no need for pagination if listing is unlimited
+ $options["pagination"] = false;
+ }
$options['count'] = TRUE;
$count = elgg_get_river($options);
@@ -399,6 +450,7 @@ function elgg_list_river(array $options = array()) {
$options['count'] = $count;
$options['items'] = $items;
+
return elgg_view('page/components/list', $options);
}
@@ -454,6 +506,7 @@ function elgg_get_river_type_subtype_where_sql($table, $types, $subtypes, $pairs
return '';
}
+ $wheres = array();
$types_wheres = array();
$subtypes_wheres = array();
@@ -598,7 +651,7 @@ function update_river_access_by_object($object_guid, $access_id) {
}
/**
- * Page handler for activiy
+ * Page handler for activity
*
* @param array $page
* @return bool
@@ -617,10 +670,6 @@ function elgg_river_page_handler($page) {
}
set_input('page_type', $page_type);
- // content filter code here
- $entity_type = '';
- $entity_subtype = '';
-
require_once("{$CONFIG->path}pages/river.php");
return true;
}
@@ -643,9 +692,11 @@ function elgg_river_init() {
elgg_register_page_handler('activity', 'elgg_river_page_handler');
$item = new ElggMenuItem('activity', elgg_echo('activity'), 'activity');
elgg_register_menu_item('site', $item);
-
+
elgg_register_widget_type('river_widget', elgg_echo('river:widget:title'), elgg_echo('river:widget:description'));
+ elgg_register_action('river/delete', '', 'admin');
+
elgg_register_plugin_hook_handler('unit_test', 'system', 'elgg_river_test');
}
diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php
index 72ca0a1c2..e3d5ce9cd 100644
--- a/engine/lib/sessions.php
+++ b/engine/lib/sessions.php
@@ -87,6 +87,9 @@ function elgg_is_admin_logged_in() {
*/
function elgg_is_admin_user($user_guid) {
global $CONFIG;
+
+ $user_guid = (int)$user_guid;
+
// cannot use magic metadata here because of recursion
// must support the old way of getting admin from metadata
@@ -286,8 +289,6 @@ function check_rate_limit_exceeded($user_guid) {
* @throws LoginException
*/
function login(ElggUser $user, $persistent = false) {
- global $CONFIG;
-
// User is banned, return false.
if ($user->isBanned()) {
throw new LoginException(elgg_echo('LoginException:BannedUser'));
@@ -325,6 +326,12 @@ function login(ElggUser $user, $persistent = false) {
set_last_login($_SESSION['guid']);
reset_login_failure_count($user->guid); // Reset any previous failed login attempts
+ // if memcache is enabled, invalidate the user in memcache @see https://github.com/Elgg/Elgg/issues/3143
+ if (is_memcache_available()) {
+ // this needs to happen with a shutdown function because of the timing with set_last_login()
+ register_shutdown_function("_elgg_invalidate_memcache_for_entity", $_SESSION['guid']);
+ }
+
return true;
}
@@ -334,8 +341,6 @@ function login(ElggUser $user, $persistent = false) {
* @return bool
*/
function logout() {
- global $CONFIG;
-
if (isset($_SESSION['user'])) {
if (!elgg_trigger_event('logout', 'user', $_SESSION['user'])) {
return false;
@@ -616,10 +621,8 @@ function _elgg_session_destroy($id) {
global $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
- return(@unlink($sess_file));
+ return @unlink($sess_file);
}
-
- return false;
}
/**
diff --git a/engine/lib/sites.php b/engine/lib/sites.php
index 850092cad..3de0eccc2 100644
--- a/engine/lib/sites.php
+++ b/engine/lib/sites.php
@@ -18,11 +18,19 @@
function elgg_get_site_entity($site_guid = 0) {
global $CONFIG;
+ $result = false;
+
if ($site_guid == 0) {
- return $CONFIG->site;
+ $site = $CONFIG->site;
+ } else {
+ $site = get_entity($site_guid);
+ }
+
+ if ($site instanceof ElggSite) {
+ $result = $site;
}
- return get_entity($site_guid);
+ return $result;
}
/**
@@ -50,6 +58,7 @@ function get_site_entity_as_row($guid) {
* @param string $url URL of the site
*
* @return bool
+ * @access private
*/
function create_site_entity($guid, $name, $description, $url) {
global $CONFIG;
@@ -109,8 +118,6 @@ function create_site_entity($guid, $name, $description, $url) {
* @return bool
*/
function add_site_user($site_guid, $user_guid) {
- global $CONFIG;
-
$site_guid = (int)$site_guid;
$user_guid = (int)$user_guid;
@@ -141,8 +148,6 @@ function remove_site_user($site_guid, $user_guid) {
* @return mixed
*/
function add_site_object($site_guid, $object_guid) {
- global $CONFIG;
-
$site_guid = (int)$site_guid;
$object_guid = (int)$object_guid;
@@ -183,8 +188,8 @@ function get_site_objects($site_guid, $subtype = "", $limit = 10, $offset = 0) {
'relationship' => 'member_of_site',
'relationship_guid' => $site_guid,
'inverse_relationship' => TRUE,
- 'types' => 'object',
- 'subtypes' => $subtype,
+ 'type' => 'object',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -233,7 +238,7 @@ function get_site_domain($guid) {
/**
* Unit tests for sites
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/statistics.php b/engine/lib/statistics.php
index 5ee640549..4cb0bb0b8 100644
--- a/engine/lib/statistics.php
+++ b/engine/lib/statistics.php
@@ -95,15 +95,20 @@ function get_number_users($show_deactivated = false) {
* @return string
*/
function get_online_users() {
- $count = find_active_users(600, 10, 0, true);
- $objects = find_active_users(600, 10);
+ $limit = max(0, (int) get_input("limit", 10));
+ $offset = max(0, (int) get_input("offset", 0));
+
+ $count = find_active_users(600, $limit, $offset, true);
+ $objects = find_active_users(600, $limit, $offset);
if ($objects) {
return elgg_view_entity_list($objects, array(
'count' => $count,
- 'limit' => 10
+ 'limit' => $limit,
+ 'offset' => $offset
));
}
+ return '';
}
/**
diff --git a/engine/lib/system_log.php b/engine/lib/system_log.php
index 53fa24557..84302632e 100644
--- a/engine/lib/system_log.php
+++ b/engine/lib/system_log.php
@@ -10,6 +10,8 @@
/**
* Retrieve the system log based on a number of parameters.
*
+ * @todo too many args, and the first arg is too confusing
+ *
* @param int|array $by_user The guid(s) of the user(s) who initiated the event.
* Use 0 for unowned entries. Anything else falsey means anyone.
* @param string $event The event you are searching on.
@@ -22,12 +24,12 @@
* @param int $timebefore Lower time limit
* @param int $timeafter Upper time limit
* @param int $object_id GUID of an object
- * @param str $ip_address The IP address.
+ * @param string $ip_address The IP address.
* @return mixed
*/
-function get_system_log($by_user = "", $event = "", $class = "", $type = "", $subtype = "",
-$limit = 10, $offset = 0, $count = false, $timebefore = 0, $timeafter = 0, $object_id = 0,
-$ip_address = false) {
+function get_system_log($by_user = "", $event = "", $class = "", $type = "", $subtype = "", $limit = 10,
+ $offset = 0, $count = false, $timebefore = 0, $timeafter = 0, $object_id = 0,
+ $ip_address = "") {
global $CONFIG;
@@ -166,6 +168,7 @@ function system_log($object, $event) {
if ($object instanceof Loggable) {
+ /* @var ElggEntity|ElggExtender $object */
if (datalist_get('version') < 2012012000) {
// this is a site that doesn't have the ip_address column yet
return;
@@ -184,7 +187,16 @@ function system_log($object, $event) {
$object_subtype = $object->getSubtype();
$event = sanitise_string($event);
$time = time();
- $ip_address = sanitise_string($_SERVER['REMOTE_ADDR']);
+
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $ip_address = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
+ } elseif (!empty($_SERVER['HTTP_X_REAL_IP'])) {
+ $ip_address = array_pop(explode(',', $_SERVER['HTTP_X_REAL_IP']));
+ } else {
+ $ip_address = $_SERVER['REMOTE_ADDR'];
+ }
+ $ip_address = sanitise_string($ip_address);
+
$performed_by = elgg_get_logged_in_user_guid();
if (isset($object->access_id)) {
diff --git a/engine/lib/tags.php b/engine/lib/tags.php
index a0887d0f3..586a9b9e4 100644
--- a/engine/lib/tags.php
+++ b/engine/lib/tags.php
@@ -48,7 +48,7 @@ function calculate_tag_size($min, $max, $number_of_tags, $buckets = 6) {
* @param array $tags The array of tags.
* @param int $buckets The number of buckets
*
- * @return An associated array of tags with a weighting, this can then be mapped to a display class.
+ * @return array An associated array of tags with a weighting, this can then be mapped to a display class.
* @access private
*/
function generate_tag_cloud(array $tags, $buckets = 6) {
@@ -114,8 +114,8 @@ function generate_tag_cloud(array $tags, $buckets = 6) {
*
* joins => array() Additional joins
*
- * @return false/array - if no tags or error, false
- * otherwise, array of objects with ->tag and ->total values
+ * @return object[]|false If no tags or error, false
+ * otherwise, array of objects with ->tag and ->total values
* @since 1.7.1
*/
function elgg_get_tags(array $options = array()) {
@@ -172,6 +172,7 @@ function elgg_get_tags(array $options = array()) {
// catch for tags that were spaces
$wheres[] = "msv.string != ''";
+ $sanitised_tags = array();
foreach ($options['tag_names'] as $tag) {
$sanitised_tags[] = '"' . sanitise_string($tag) . '"';
}
diff --git a/engine/lib/upgrade.php b/engine/lib/upgrade.php
index f0874a483..158ec9ec1 100644
--- a/engine/lib/upgrade.php
+++ b/engine/lib/upgrade.php
@@ -17,8 +17,9 @@
* @access private
*/
function upgrade_code($version, $quiet = FALSE) {
+ // do not remove - upgrade scripts depend on this
global $CONFIG;
-
+
$version = (int) $version;
$upgrade_path = elgg_get_config('path') . 'engine/lib/upgrades/';
$processed_upgrades = elgg_get_processed_upgrades();
@@ -244,7 +245,7 @@ function version_upgrade() {
// No version number? Oh snap...this is an upgrade from a clean installation < 1.7.
// Run all upgrades without error reporting and hope for the best.
- // See http://trac.elgg.org/elgg/ticket/1432 for more.
+ // See https://github.com/elgg/elgg/issues/1432 for more.
$quiet = !$dbversion;
// Note: Database upgrades are deprecated as of 1.8. Use code upgrades. See #1433
@@ -291,7 +292,6 @@ function elgg_upgrade_bootstrap_17_to_18() {
'2011010101.php',
);
- $upgrades_17 = array();
$upgrade_files = elgg_get_upgrade_files();
$processed_upgrades = array();
@@ -311,3 +311,55 @@ function elgg_upgrade_bootstrap_17_to_18() {
return elgg_set_processed_upgrades($processed_upgrades);
}
+
+/**
+ * Creates a table {prefix}upgrade_lock that is used as a mutex for upgrades.
+ *
+ * @see _elgg_upgrade_lock()
+ *
+ * @return bool
+ * @access private
+ */
+function _elgg_upgrade_lock() {
+ global $CONFIG;
+
+ if (!_elgg_upgrade_is_locked()) {
+ // lock it
+ insert_data("create table {$CONFIG->dbprefix}upgrade_lock (id INT)");
+ elgg_log('Locked for upgrade.', 'NOTICE');
+ return true;
+ }
+
+ elgg_log('Cannot lock for upgrade: already locked.', 'WARNING');
+ return false;
+}
+
+/**
+ * Unlocks upgrade.
+ *
+ * @see _elgg_upgrade_lock()
+ *
+ * @access private
+ */
+function _elgg_upgrade_unlock() {
+ global $CONFIG;
+ delete_data("drop table {$CONFIG->dbprefix}upgrade_lock");
+ elgg_log('Upgrade unlocked.', 'NOTICE');
+}
+
+/**
+ * Checks if upgrade is locked
+ *
+ * @return bool
+ * @access private
+ */
+function _elgg_upgrade_is_locked() {
+ global $CONFIG;
+
+ $is_locked = count(get_data("show tables like '{$CONFIG->dbprefix}upgrade_lock'"));
+
+ // @todo why?
+ _elgg_invalidate_query_cache();
+
+ return $is_locked;
+}
diff --git a/engine/lib/upgrades/2009102801.php b/engine/lib/upgrades/2009102801.php
index cab9a6835..3ad113fb2 100644
--- a/engine/lib/upgrades/2009102801.php
+++ b/engine/lib/upgrades/2009102801.php
@@ -203,14 +203,15 @@ function user_file_matrix($guid) {
return "$time_created/$user->guid/";
}
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE;
+global $ENTITY_CACHE, $CONFIG;
/**
* Upgrade file locations
*/
$users = mysql_query("SELECT guid, username
FROM {$CONFIG->dbprefix}users_entity WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$to = $CONFIG->dataroot . user_file_matrix($user->guid);
foreach (array('1_0', '1_1', '1_6') as $version) {
diff --git a/engine/lib/upgrades/2010033101.php b/engine/lib/upgrades/2010033101.php
index 0bffee001..4779295fd 100644
--- a/engine/lib/upgrades/2010033101.php
+++ b/engine/lib/upgrades/2010033101.php
@@ -1,7 +1,7 @@
<?php
/**
- * Conditional upgrade for UTF8 as described in http://trac.elgg.org/ticket/1928
+ * Conditional upgrade for UTF8 as described in https://github.com/elgg/elgg/issues/1928
*/
// get_version() returns the code version.
diff --git a/engine/lib/upgrades/2010052601.php b/engine/lib/upgrades/2010052601.php
index 5b477910f..a9cca6dc5 100644
--- a/engine/lib/upgrades/2010052601.php
+++ b/engine/lib/upgrades/2010052601.php
@@ -9,14 +9,14 @@ $params = array('type' => 'group',
$groups = elgg_get_entities($params);
if ($groups) {
foreach ($groups as $group) {
- $group->name = html_entity_decode($group->name, ENT_COMPAT, 'UTF-8');
- $group->description = html_entity_decode($group->description, ENT_COMPAT, 'UTF-8');
- $group->briefdescription = html_entity_decode($group->briefdescription, ENT_COMPAT, 'UTF-8');
- $group->website = html_entity_decode($group->website, ENT_COMPAT, 'UTF-8');
+ $group->name = _elgg_html_decode($group->name);
+ $group->description = _elgg_html_decode($group->description);
+ $group->briefdescription = _elgg_html_decode($group->briefdescription);
+ $group->website = _elgg_html_decode($group->website);
if ($group->interests) {
$tags = $group->interests;
- foreach ($tags as $index=>$tag) {
- $tags[$index] = html_entity_decode($tag, ENT_COMPAT, 'UTF-8');
+ foreach ($tags as $index => $tag) {
+ $tags[$index] = _elgg_html_decode($tag);
}
$group->interests = $tags;
}
diff --git a/engine/lib/upgrades/2010061501.php b/engine/lib/upgrades/2010061501.php
index 9ff7d3102..744c28fd5 100644
--- a/engine/lib/upgrades/2010061501.php
+++ b/engine/lib/upgrades/2010061501.php
@@ -45,7 +45,7 @@ if ($dbversion < 2009100701) {
}
}
- global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE;
+ global $ENTITY_CACHE;
/**
Upgrade file locations
@@ -60,7 +60,9 @@ if ($dbversion < 2009100701) {
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''", $link);
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
+
$to = $CONFIG->dataroot . user_file_matrix($user->guid);
foreach (array('1_0', '1_1', '1_6') as $version) {
diff --git a/engine/lib/upgrades/2010071001.php b/engine/lib/upgrades/2010071001.php
index 1b5d379d8..5594493a8 100644
--- a/engine/lib/upgrades/2010071001.php
+++ b/engine/lib/upgrades/2010071001.php
@@ -30,11 +30,12 @@ function user_file_matrix_2010071001($guid) {
$sizes = array('large', 'medium', 'small', 'tiny', 'master', 'topbar');
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE, $CONFIG;
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$user_directory = user_file_matrix_2010071001($user->guid);
if (!$user_directory) {
diff --git a/engine/lib/upgrades/2010071002.php b/engine/lib/upgrades/2010071002.php
index 30bd6538c..52aa15ef5 100644
--- a/engine/lib/upgrades/2010071002.php
+++ b/engine/lib/upgrades/2010071002.php
@@ -4,12 +4,13 @@
*/
// loop through all users checking collections and notifications
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE, $CONFIG;
global $NOTIFICATION_HANDLERS;
$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity
WHERE username != ''");
while ($user = mysql_fetch_object($users)) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
$user = get_entity($user->guid);
foreach ($NOTIFICATION_HANDLERS as $method => $foo) {
diff --git a/engine/lib/upgrades/2010121602.php b/engine/lib/upgrades/2010121602.php
index 2d55c8214..5b0996b5e 100644
--- a/engine/lib/upgrades/2010121602.php
+++ b/engine/lib/upgrades/2010121602.php
@@ -4,7 +4,7 @@
*/
$query = "UPDATE {$CONFIG->dbprefix}river
- SET view='river/annotation/generic_comment/create', action_type='create'
+ SET view='river/annotation/generic_comment/create'
WHERE view='annotation/annotate' AND action_type='comment'";
update_data($query);
diff --git a/engine/lib/upgrades/2011010101.php b/engine/lib/upgrades/2011010101.php
index a1ee92622..f4411ee20 100644
--- a/engine/lib/upgrades/2011010101.php
+++ b/engine/lib/upgrades/2011010101.php
@@ -93,4 +93,6 @@ $processed_upgrades[] = '2011010101.php';
$processed_upgrades = array_unique($processed_upgrades);
elgg_set_processed_upgrades($processed_upgrades);
+_elgg_upgrade_unlock();
+
forward('upgrade.php');
diff --git a/engine/lib/upgrades/2011052801.php b/engine/lib/upgrades/2011052801.php
index 8084bc06c..b5a8e1018 100644
--- a/engine/lib/upgrades/2011052801.php
+++ b/engine/lib/upgrades/2011052801.php
@@ -2,7 +2,7 @@
/**
* Make sure all users have the relationship member_of_site
*/
-global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG;
+global $ENTITY_CACHE;
$db_prefix = get_config('dbprefix');
$limit = 100;
@@ -17,7 +17,8 @@ $q = "SELECT e.* FROM {$db_prefix}entities e
$users = get_data($q);
while ($users) {
- $DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array();
+ $ENTITY_CACHE = array();
+ _elgg_invalidate_query_cache();
// do manually to not trigger any events because these aren't new users.
foreach ($users as $user) {
diff --git a/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php b/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
index 07732f261..780038c32 100644
--- a/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
+++ b/engine/lib/upgrades/2012041801-1.8.3-multiple_user_tokens-852225f7fd89f6c5.php
@@ -3,7 +3,7 @@
* Elgg 1.8.3 upgrade 2012041801
* multiple_user_tokens
*
- * Fixes http://trac.elgg.org/ticket/4291
+ * Fixes https://github.com/elgg/elgg/issues/4291
* Removes the unique index on users_apisessions for user_guid and site_guid
*/
diff --git a/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php b/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php
new file mode 100644
index 000000000..8eccf05e2
--- /dev/null
+++ b/engine/lib/upgrades/2013030600-1.8.13-update_user_location-8999eb8bf1bdd9a3.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Elgg 1.8.14 upgrade 2013030600
+ * update_user_location
+ *
+ * Before Elgg 1.8, a location like "London, England" would be stored as an array.
+ * This script turns that back into a string.
+ */
+
+$ia = elgg_set_ignore_access(true);
+$options = array(
+ 'type' => 'user',
+ 'limit' => 0,
+);
+$batch = new ElggBatch('elgg_get_entities', $options);
+
+foreach ($batch as $entity) {
+ _elgg_invalidate_query_cache();
+
+ if (is_array($entity->location)) {
+ $entity->location = implode(', ', $entity->location);
+ }
+}
+elgg_set_ignore_access($ia);
diff --git a/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php b/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php
new file mode 100644
index 000000000..ee99bdbc8
--- /dev/null
+++ b/engine/lib/upgrades/2013051700-1.8.15-add_missing_group_index-52a63a3a3ffaced2.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013051700
+ * add_missing_group_index
+ *
+ * Some Elgg sites are missing the groups_entity full text index on name and
+ * description. This checks if it exists and adds it if it does not.
+ */
+
+$db_prefix = elgg_get_config('dbprefix');
+
+$full_text_index_exists = false;
+$results = get_data("SHOW INDEX FROM {$db_prefix}groups_entity");
+if ($results) {
+ foreach ($results as $result) {
+ if ($result->Index_type === 'FULLTEXT') {
+ $full_text_index_exists = true;
+ }
+ }
+}
+
+if ($full_text_index_exists == false) {
+ $query = "ALTER TABLE {$db_prefix}groups_entity
+ ADD FULLTEXT name_2 (name, description)";
+ if (!update_data($query)) {
+ elgg_log("Failed to add full text index to groups_entity table", 'ERROR');
+ }
+}
diff --git a/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php b/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php
new file mode 100644
index 000000000..d333a6cd2
--- /dev/null
+++ b/engine/lib/upgrades/2013052900-1.8.15-ipv6_in_syslog-f5c2cc0196e9e731.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013052900
+ * ipv6_in_syslog
+ *
+ * Upgrade the ip column in system_log to be able to store ipv6 addresses
+ */
+
+$db_prefix = elgg_get_config('dbprefix');
+$q = "ALTER TABLE {$db_prefix}system_log MODIFY COLUMN ip_address varchar(46) NOT NULL";
+
+update_data($q); \ No newline at end of file
diff --git a/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php b/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php
new file mode 100644
index 000000000..538d74dd6
--- /dev/null
+++ b/engine/lib/upgrades/2013060900-1.8.15-site_secret-404fc165cf9e0ac9.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Elgg 1.8.15 upgrade 2013060900
+ * site_secret
+ *
+ * Description
+ */
+
+$strength = _elgg_get_site_secret_strength();
+
+if ($strength !== 'strong') {
+ // a new key is needed immediately
+ register_translations(elgg_get_root_path() . 'languages/');
+
+ elgg_add_admin_notice('weak_site_key', elgg_echo("upgrade:site_secret_warning:$strength"));
+}
diff --git a/engine/lib/upgrades/create_upgrade.php b/engine/lib/upgrades/create_upgrade.php
index 3652e18a2..b34f31b7e 100644
--- a/engine/lib/upgrades/create_upgrade.php
+++ b/engine/lib/upgrades/create_upgrade.php
@@ -93,7 +93,7 @@ if (!$h) {
die("Could not open file $upgrade_file");
}
-if (!fputs($h, $upgrade_code)) {
+if (!fwrite($h, $upgrade_code)) {
die("Could not write to $upgrade_file");
} else {
elgg_set_version_dot_php_version($upgrade_version);
@@ -128,8 +128,9 @@ function elgg_set_version_dot_php_version($version) {
rewind($h);
- fputs($h, $out);
+ fwrite($h, $out);
fclose($h);
+ return true;
}
/**
diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php
index e4069fb53..0e36dc46d 100644
--- a/engine/lib/user_settings.php
+++ b/engine/lib/user_settings.php
@@ -265,9 +265,9 @@ function elgg_set_user_default_access() {
* @access private
*/
function usersettings_pagesetup() {
- if (elgg_get_context() == "settings") {
- $user = elgg_get_page_owner_entity();
+ $user = elgg_get_page_owner_entity();
+ if ($user && elgg_get_context() == "settings") {
$params = array(
'name' => '1_account',
'text' => elgg_echo('usersettings:user:opt:linktext'),
@@ -308,7 +308,7 @@ function usersettings_page_handler($page) {
$user = get_user_by_username($page[1]);
elgg_set_page_owner_guid($user->guid);
} else {
- $user = elgg_get_logged_in_user_guid();
+ $user = elgg_get_logged_in_user_entity();
elgg_set_page_owner_guid($user->guid);
}
@@ -332,6 +332,7 @@ function usersettings_page_handler($page) {
require $path;
return true;
}
+ return false;
}
/**
diff --git a/engine/lib/users.php b/engine/lib/users.php
index 527eff3cd..a8fb9121c 100644
--- a/engine/lib/users.php
+++ b/engine/lib/users.php
@@ -44,6 +44,7 @@ function get_user_entity_as_row($guid) {
* @param string $code A code
*
* @return bool
+ * @access private
*/
function create_user_entity($guid, $name, $username, $password, $salt, $email, $language, $code) {
global $CONFIG;
@@ -236,7 +237,7 @@ function make_user_admin($user_guid) {
}
$r = update_data("UPDATE {$CONFIG->dbprefix}users_entity set admin='yes' where guid=$user_guid");
- invalidate_cache_for_entity($user_guid);
+ _elgg_invalidate_cache_for_entity($user_guid);
return $r;
}
@@ -272,7 +273,7 @@ function remove_user_admin($user_guid) {
}
$r = update_data("UPDATE {$CONFIG->dbprefix}users_entity set admin='no' where guid=$user_guid");
- invalidate_cache_for_entity($user_guid);
+ _elgg_invalidate_cache_for_entity($user_guid);
return $r;
}
@@ -289,7 +290,7 @@ function remove_user_admin($user_guid) {
* @param int $limit Number of results to return
* @param int $offset Any indexing offset
*
- * @return false|array On success, an array of ElggSites
+ * @return ElggSite[]|false On success, an array of ElggSites
*/
function get_user_sites($user_guid, $limit = 10, $offset = 0) {
$user_guid = (int)$user_guid;
@@ -301,7 +302,7 @@ function get_user_sites($user_guid, $limit = 10, $offset = 0) {
'relationship' => 'member_of_site',
'relationship_guid' => $user_guid,
'inverse_relationship' => FALSE,
- 'types' => 'site',
+ 'type' => 'site',
'limit' => $limit,
'offset' => $offset,
));
@@ -342,8 +343,6 @@ function user_add_friend($user_guid, $friend_guid) {
* @return bool Depending on success
*/
function user_remove_friend($user_guid, $friend_guid) {
- global $CONFIG;
-
$user_guid = (int) $user_guid;
$friend_guid = (int) $friend_guid;
@@ -378,7 +377,7 @@ function user_is_friend($user_guid, $friend_guid) {
* @param int $limit Number of results to return (default 10)
* @param int $offset Indexing offset, if any
*
- * @return false|array Either an array of ElggUsers or false, depending on success
+ * @return ElggUser[]|false Either an array of ElggUsers or false, depending on success
*/
function get_user_friends($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0) {
@@ -386,8 +385,8 @@ $offset = 0) {
return elgg_get_entities_from_relationship(array(
'relationship' => 'friend',
'relationship_guid' => $user_guid,
- 'types' => 'user',
- 'subtypes' => $subtype,
+ 'type' => 'user',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -401,7 +400,7 @@ $offset = 0) {
* @param int $limit Number of results to return (default 10)
* @param int $offset Indexing offset, if any
*
- * @return false|array Either an array of ElggUsers or false, depending on success
+ * @return ElggUser[]|false Either an array of ElggUsers or false, depending on success
*/
function get_user_friends_of($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0) {
@@ -410,8 +409,8 @@ $offset = 0) {
'relationship' => 'friend',
'relationship_guid' => $user_guid,
'inverse_relationship' => TRUE,
- 'types' => 'user',
- 'subtypes' => $subtype,
+ 'type' => 'user',
+ 'subtype' => $subtype,
'limit' => $limit,
'offset' => $offset
));
@@ -427,7 +426,7 @@ $offset = 0) {
* @param int $timelower The earliest time the entity can have been created. Default: all
* @param int $timeupper The latest time the entity can have been created. Default: all
*
- * @return false|array An array of ElggObjects or false, depending on success
+ * @return ElggObject[]|false An array of ElggObjects or false, depending on success
*/
function get_user_friends_objects($user_guid, $subtype = ELGG_ENTITIES_ANY_VALUE, $limit = 10,
$offset = 0, $timelower = 0, $timeupper = 0) {
@@ -554,13 +553,18 @@ function get_user($guid) {
function get_user_by_username($username) {
global $CONFIG, $USERNAME_TO_GUID_MAP_CACHE;
+ // Fixes #6052. Username is frequently sniffed from the path info, which,
+ // unlike $_GET, is not URL decoded. If the username was not URL encoded,
+ // this is harmless.
+ $username = rawurldecode($username);
+
$username = sanitise_string($username);
$access = get_access_sql_suffix('e');
// Caching
if ((isset($USERNAME_TO_GUID_MAP_CACHE[$username]))
- && (retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]))) {
- return retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]);
+ && (_elgg_retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]))) {
+ return _elgg_retrieve_cached_entity($USERNAME_TO_GUID_MAP_CACHE[$username]);
}
$query = "SELECT e.* from {$CONFIG->dbprefix}users_entity u
@@ -593,9 +597,9 @@ function get_user_by_code($code) {
// Caching
if ((isset($CODE_TO_GUID_MAP_CACHE[$code]))
- && (retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]))) {
+ && (_elgg_retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]))) {
- return retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]);
+ return _elgg_retrieve_cached_entity($CODE_TO_GUID_MAP_CACHE[$code]);
}
$query = "SELECT e.* from {$CONFIG->dbprefix}users_entity u
@@ -674,25 +678,22 @@ function find_active_users($seconds = 600, $limit = 10, $offset = 0, $count = fa
* @return bool
*/
function send_new_password_request($user_guid) {
- global $CONFIG;
-
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
- if ($user) {
+ if ($user instanceof ElggUser) {
// generate code
$code = generate_random_cleartext_password();
$user->setPrivateSetting('passwd_conf_code', $code);
-
// generate link
- $link = $CONFIG->site->url . "resetpassword?u=$user_guid&c=$code";
+ $link = elgg_get_site_url() . "resetpassword?u=$user_guid&c=$code";
// generate email
$email = elgg_echo('email:resetreq:body', array($user->name, $_SERVER['REMOTE_ADDR'], $link));
- return notify_user($user->guid, $CONFIG->site->guid,
- elgg_echo('email:resetreq:subject'), $email, NULL, 'email');
+ return notify_user($user->guid, elgg_get_site_entity()->guid,
+ elgg_echo('email:resetreq:subject'), $email, array(), 'email');
}
return false;
@@ -709,19 +710,18 @@ function send_new_password_request($user_guid) {
* @return bool
*/
function force_user_password_reset($user_guid, $password) {
- global $CONFIG;
-
$user = get_entity($user_guid);
+ if ($user instanceof ElggUser) {
+ $ia = elgg_set_ignore_access();
- if ($user) {
- $salt = generate_random_cleartext_password(); // Reset the salt
- $user->salt = $salt;
+ $user->salt = generate_random_cleartext_password();
+ $hash = generate_user_password($user, $password);
+ $user->password = $hash;
+ $result = (bool)$user->save();
- $hash = generate_user_password($user, $password);
+ elgg_set_ignore_access($ia);
- $query = "UPDATE {$CONFIG->dbprefix}users_entity
- set password='$hash', salt='$salt' where guid=$user_guid";
- return update_data($query);
+ return $result;
}
return false;
@@ -741,7 +741,7 @@ function execute_new_password_request($user_guid, $conf_code) {
$user_guid = (int)$user_guid;
$user = get_entity($user_guid);
- if ($user) {
+ if ($user instanceof ElggUser) {
$saved_code = $user->getPrivateSetting('passwd_conf_code');
if ($saved_code && $saved_code == $conf_code) {
@@ -755,7 +755,7 @@ function execute_new_password_request($user_guid, $conf_code) {
$email = elgg_echo('email:resetpassword:body', array($user->name, $password));
return notify_user($user->guid, $CONFIG->site->guid,
- elgg_echo('email:resetpassword:subject'), $email, NULL, 'email');
+ elgg_echo('email:resetpassword:subject'), $email, array(), 'email');
}
}
}
@@ -840,7 +840,7 @@ function validate_username($username) {
for ($n = 0; $n < strlen($blacklist2); $n++) {
if (strpos($username, $blacklist2[$n]) !== false) {
$msg = elgg_echo('registration:invalidchars', array($blacklist2[$n], $blacklist2));
- $msg = htmlentities($msg, ENT_COMPAT, 'UTF-8');
+ $msg = htmlspecialchars($msg, ENT_QUOTES, 'UTF-8');
throw new RegistrationException($msg);
}
}
@@ -907,13 +907,11 @@ function validate_email_address($address) {
* @param string $invitecode An invite code from a friend
*
* @return int|false The new user's GUID; false on failure
+ * @throws RegistrationException
*/
function register_user($username, $password, $name, $email,
$allow_multiple_emails = false, $friend_guid = 0, $invitecode = '') {
- // Load the configuration
- global $CONFIG;
-
// no need to trim password.
$username = trim($username);
$name = trim(strip_tags($name));
@@ -1030,7 +1028,7 @@ function elgg_get_user_validation_status($user_guid) {
'metadata_name' => 'validated'
));
if ($md == false) {
- return;
+ return null;
}
if ($md[0]->value) {
@@ -1066,10 +1064,10 @@ function collections_submenu_items() {
* @return bool
* @access private
*/
-function friends_page_handler($page_elements, $handler) {
+function friends_page_handler($segments, $handler) {
elgg_set_context('friends');
- if (isset($page_elements[0]) && $user = get_user_by_username($page_elements[0])) {
+ if (isset($segments[0]) && $user = get_user_by_username($segments[0])) {
elgg_set_page_owner_guid($user->getGUID());
}
if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) {
@@ -1098,6 +1096,7 @@ function friends_page_handler($page_elements, $handler) {
* @access private
*/
function collections_page_handler($page_elements) {
+ gatekeeper();
elgg_set_context('friends');
$base = elgg_get_config('path');
if (isset($page_elements[0])) {
@@ -1196,13 +1195,11 @@ function set_last_login($user_guid) {
* @param string $object_type user
* @param ElggUser $object User object
*
- * @return bool
+ * @return void
* @access private
*/
function user_create_hook_add_site_relationship($event, $object_type, $object) {
- global $CONFIG;
-
- add_entity_relationship($object->getGUID(), 'member_of_site', $CONFIG->site->getGUID());
+ add_entity_relationship($object->getGUID(), 'member_of_site', elgg_get_site_entity()->guid);
}
/**
@@ -1232,6 +1229,7 @@ function user_avatar_hook($hook, $entity_type, $returnvalue, $params) {
*/
function elgg_user_hover_menu($hook, $type, $return, $params) {
$user = $params['entity'];
+ /* @var ElggUser $user */
if (elgg_is_logged_in()) {
if (elgg_get_logged_in_user_guid() != $user->guid) {
@@ -1308,7 +1306,12 @@ function elgg_user_hover_menu($hook, $type, $return, $params) {
/**
* Setup the menu shown with an entity
*
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
* @return array
+ *
* @access private
*/
function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
@@ -1320,6 +1323,7 @@ function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
if (!elgg_instanceof($entity, 'user')) {
return $return;
}
+ /* @var ElggUser $entity */
if ($entity->isBanned()) {
$banned = elgg_echo('banned');
@@ -1333,9 +1337,10 @@ function elgg_users_setup_entity_menu($hook, $type, $return, $params) {
} else {
$return = array();
if (isset($entity->location)) {
+ $location = htmlspecialchars($entity->location, ENT_QUOTES, 'UTF-8', false);
$options = array(
'name' => 'location',
- 'text' => "<span>$entity->location</span>",
+ 'text' => "<span>$location</span>",
'href' => false,
'priority' => 150,
);
@@ -1586,7 +1591,7 @@ function users_init() {
/**
* Runs unit tests for ElggObject
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
diff --git a/engine/lib/views.php b/engine/lib/views.php
index b00334062..1142461fe 100644
--- a/engine/lib/views.php
+++ b/engine/lib/views.php
@@ -101,15 +101,15 @@ function elgg_get_viewtype() {
return $CURRENT_SYSTEM_VIEWTYPE;
}
- $viewtype = get_input('view', NULL);
- if ($viewtype) {
+ $viewtype = get_input('view', '', false);
+ if (is_string($viewtype) && $viewtype !== '') {
// only word characters allowed.
- if (!preg_match('[\W]', $viewtype)) {
+ if (!preg_match('/\W/', $viewtype)) {
return $viewtype;
}
}
- if (isset($CONFIG->view) && !empty($CONFIG->view)) {
+ if (!empty($CONFIG->view)) {
return $CONFIG->view;
}
@@ -218,7 +218,7 @@ function elgg_register_ajax_view($view) {
/**
* Unregister a view for ajax calls
- *
+ *
* @param string $view The view name
* @return void
* @since 1.8.3
@@ -258,8 +258,6 @@ function elgg_get_view_location($view, $viewtype = '') {
} else {
return $CONFIG->views->locations[$viewtype][$view];
}
-
- return false;
}
/**
@@ -329,7 +327,7 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
$location = $CONFIG->views->locations[$viewtype][$view];
}
- if (file_exists($location . "{$viewtype}/{$view}.php")) {
+ if (file_exists("{$location}{$viewtype}/{$view}.php")) {
return true;
}
@@ -371,14 +369,14 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
* view, $view_name plugin hook.
*
* @warning Any variables in $_SESSION will override passed vars
- * upon name collision. See {@trac #2124}.
+ * upon name collision. See https://github.com/Elgg/Elgg/issues/2124
*
* @param string $view The name and location of the view to use
* @param array $vars Variables to pass to the view.
* @param boolean $bypass If set to true, elgg_view will bypass any specified
* alternative template handler; by default, it will
* hand off to this if requested (see set_template_handler)
- * @param boolean $debug If set to true, the viewer will complain if it can't find a view
+ * @param boolean $ignored This argument is ignored and will be removed eventually
* @param string $viewtype If set, forces the viewtype for the elgg_view call to be
* this value (default: standard detection)
*
@@ -386,18 +384,30 @@ function elgg_view_exists($view, $viewtype = '', $recurse = true) {
* @see set_template_handler()
* @example views/elgg_view.php
* @link http://docs.elgg.org/View
- * @todo $debug isn't used.
- * @todo $usercache is redundant.
*/
-function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $viewtype = '') {
+function elgg_view($view, $vars = array(), $bypass = false, $ignored = false, $viewtype = '') {
global $CONFIG;
- static $usercache;
-
- $view = (string)$view;
+ if (!is_string($view) || !is_string($viewtype)) {
+ elgg_log("View and Viewtype in views must be a strings: $view", 'NOTICE');
+ return '';
+ }
// basic checking for bad paths
if (strpos($view, '..') !== false) {
- return false;
+ return '';
+ }
+
+ if (!is_array($vars)) {
+ elgg_log("Vars in views must be an array: $view", 'ERROR');
+ $vars = array();
+ }
+
+ // Get the current viewtype
+ if ($viewtype === '') {
+ $viewtype = elgg_get_viewtype();
+ } elseif (preg_match('/\W/', $viewtype)) {
+ // Viewtypes can only be alphanumeric
+ return '';
}
$view_orig = $view;
@@ -408,19 +418,6 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
elgg_trigger_event('pagesetup', 'system');
}
- if (!is_array($usercache)) {
- $usercache = array();
- }
-
- if (!is_array($vars)) {
- elgg_log("Vars in views must be an array: $view", 'ERROR');
- $vars = array();
- }
-
- if (empty($vars)) {
- $vars = array();
- }
-
// @warning - plugin authors: do not expect user, config, and url to be
// set by elgg_view() in the future. Instead, use elgg_get_logged_in_user_entity(),
// elgg_get_config(), and elgg_get_site_url() in your views.
@@ -475,16 +472,6 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
}
}
- // Get the current viewtype
- if (empty($viewtype)) {
- $viewtype = elgg_get_viewtype();
- }
-
- // Viewtypes can only be alphanumeric
- if (preg_match('[\W]', $viewtype)) {
- return '';
- }
-
// Set up any extensions to the requested view
if (isset($CONFIG->views->extensions[$view])) {
$viewlist = $CONFIG->views->extensions[$view];
@@ -496,19 +483,21 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
ob_start();
foreach ($viewlist as $priority => $view) {
+
$view_location = elgg_get_view_location($view, $viewtype);
$view_file = "$view_location$viewtype/$view.php";
- $default_location = elgg_get_view_location($view, 'default');
- $default_view_file = "{$default_location}default/$view.php";
-
// try to include view
if (!file_exists($view_file) || !include($view_file)) {
// requested view does not exist
$error = "$viewtype/$view view does not exist.";
// attempt to load default view
- if ($viewtype != 'default' && elgg_does_viewtype_fallback($viewtype)) {
+ if ($viewtype !== 'default' && elgg_does_viewtype_fallback($viewtype)) {
+
+ $default_location = elgg_get_view_location($view, 'default');
+ $default_view_file = "{$default_location}default/$view.php";
+
if (file_exists($default_view_file) && include($default_view_file)) {
// default view found
$error .= " Using default/$view instead.";
@@ -533,7 +522,7 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
// backward compatibility with less granular hook will be gone in 2.0
$content_tmp = elgg_trigger_plugin_hook('display', 'view', $params, $content);
- if ($content_tmp != $content) {
+ if ($content_tmp !== $content) {
$content = $content_tmp;
elgg_deprecated_notice('The display:view plugin hook is deprecated by view:view_name', 1.8);
}
@@ -559,33 +548,32 @@ function elgg_view($view, $vars = array(), $bypass = false, $debug = false, $vie
* @param string $view_extension This view is added to $view
* @param int $priority The priority, from 0 to 1000,
* to add at (lowest numbers displayed first)
- * @param string $viewtype Not used
*
* @return void
* @since 1.7.0
* @link http://docs.elgg.org/Views/Extend
* @example views/extend.php
*/
-function elgg_extend_view($view, $view_extension, $priority = 501, $viewtype = '') {
+function elgg_extend_view($view, $view_extension, $priority = 501) {
global $CONFIG;
if (!isset($CONFIG->views)) {
- $CONFIG->views = new stdClass;
- }
-
- if (!isset($CONFIG->views->extensions)) {
- $CONFIG->views->extensions = array();
- }
-
- if (!isset($CONFIG->views->extensions[$view])) {
- $CONFIG->views->extensions[$view][500] = "{$view}";
+ $CONFIG->views = (object) array(
+ 'extensions' => array(),
+ );
+ $CONFIG->views->extensions[$view][500] = (string)$view;
+ } else {
+ if (!isset($CONFIG->views->extensions[$view])) {
+ $CONFIG->views->extensions[$view][500] = (string)$view;
+ }
}
+ // raise priority until it doesn't match one already registered
while (isset($CONFIG->views->extensions[$view][$priority])) {
$priority++;
}
- $CONFIG->views->extensions[$view][$priority] = "{$view_extension}";
+ $CONFIG->views->extensions[$view][$priority] = (string)$view_extension;
ksort($CONFIG->views->extensions[$view]);
}
@@ -601,14 +589,6 @@ function elgg_extend_view($view, $view_extension, $priority = 501, $viewtype = '
function elgg_unextend_view($view, $view_extension) {
global $CONFIG;
- if (!isset($CONFIG->views)) {
- return FALSE;
- }
-
- if (!isset($CONFIG->views->extensions)) {
- return FALSE;
- }
-
if (!isset($CONFIG->views->extensions[$view])) {
return FALSE;
}
@@ -815,7 +795,7 @@ function elgg_view_menu($menu_name, array $vars = array()) {
* - bool 'full_view' Whether to show a full or condensed view.
*
* @tip This function can automatically appends annotations to entities if in full
- * view and a handler is registered for the entity:annotate. See {@trac 964} and
+ * view and a handler is registered for the entity:annotate. See https://github.com/Elgg/Elgg/issues/964 and
* {@link elgg_view_entity_annotations()}.
*
* @param ElggEntity $entity The entity to display
@@ -1012,6 +992,11 @@ function elgg_view_annotation(ElggAnnotation $annotation, array $vars = array(),
function elgg_view_entity_list($entities, $vars = array(), $offset = 0, $limit = 10, $full_view = true,
$list_type_toggle = true, $pagination = true) {
+ if (!$vars["limit"] && !$vars["offset"]) {
+ // no need for pagination if listing is unlimited
+ $vars["pagination"] = false;
+ }
+
if (!is_int($offset)) {
$offset = (int)get_input('offset', 0);
}
@@ -1084,8 +1069,13 @@ function elgg_view_annotation_list($annotations, array $vars = array()) {
'full_view' => true,
'offset_key' => 'annoff',
);
-
+
$vars = array_merge($defaults, $vars);
+
+ if (!$vars["limit"] && !$vars["offset"]) {
+ // no need for pagination if listing is unlimited
+ $vars["pagination"] = false;
+ }
return elgg_view('page/components/list', $vars);
}
@@ -1105,10 +1095,6 @@ function elgg_view_annotation_list($annotations, array $vars = array()) {
* @todo Change the hook name.
*/
function elgg_view_entity_annotations(ElggEntity $entity, $full_view = true) {
- if (!$entity) {
- return false;
- }
-
if (!($entity instanceof ElggEntity)) {
return false;
}
@@ -1131,7 +1117,7 @@ function elgg_view_entity_annotations(ElggEntity $entity, $full_view = true) {
* This is a shortcut for {@elgg_view page/elements/title}.
*
* @param string $title The page title
- * @param string $vars View variables (was submenu be displayed? (deprecated))
+ * @param array $vars View variables (was submenu be displayed? (deprecated))
*
* @return string The HTML (etc)
*/
@@ -1203,7 +1189,7 @@ function elgg_view_comments($entity, $add_comment = true, array $vars = array())
*
* @param string $image The icon and other information
* @param string $body Description content
- * @param string $vars Additional parameters for the view
+ * @param array $vars Additional parameters for the view
*
* @return string
* @since 1.8.0
@@ -1230,7 +1216,6 @@ function elgg_view_image_block($image, $body, $vars = array()) {
* @since 1.8.0
*/
function elgg_view_module($type, $title, $body, array $vars = array()) {
-
$vars['class'] = elgg_extract('class', $vars, '') . " elgg-module-$type";
$vars['title'] = $title;
$vars['body'] = $body;
@@ -1243,11 +1228,15 @@ function elgg_view_module($type, $title, $body, array $vars = array()) {
* @param ElggRiverItem $item A river item object
* @param array $vars An array of variables for the view
*
- * @return string|false Depending on success
+ * @return string returns empty string if could not be rendered
*/
function elgg_view_river_item($item, array $vars = array()) {
+ if (!($item instanceof ElggRiverItem)) {
+ return '';
+ }
// checking default viewtype since some viewtypes do not have unique views per item (rss)
- if (!$item || !$item->getView() || !elgg_view_exists($item->getView(), 'default')) {
+ $view = $item->getView();
+ if (!$view || !elgg_view_exists($view, 'default')) {
return '';
}
@@ -1258,6 +1247,17 @@ function elgg_view_river_item($item, array $vars = array()) {
return '';
}
+ // @todo this needs to be cleaned up
+ // Don't hide objects in closed groups that a user can see.
+ // see https://github.com/elgg/elgg/issues/4789
+ // else {
+ // // hide based on object's container
+ // $visibility = ElggGroupItemVisibility::factory($object->container_guid);
+ // if ($visibility->shouldHideItems) {
+ // return '';
+ // }
+ // }
+
$vars['item'] = $item;
return elgg_view('river/item', $vars);
@@ -1320,7 +1320,7 @@ function elgg_view_form($action, $form_vars = array(), $body_vars = array()) {
/**
* View an item in a list
*
- * @param object $item ElggEntity or ElggAnnotation
+ * @param ElggEntity|ElggAnnotation $item
* @param array $vars Additional parameters for the rendering
*
* @return string
@@ -1339,22 +1339,22 @@ function elgg_view_list_item($item, array $vars = array()) {
return elgg_view_river_item($item, $vars);
}
- return false;
+ return '';
}
/**
* View one of the elgg sprite icons
- *
+ *
* Shorthand for <span class="elgg-icon elgg-icon-$name"></span>
- *
+ *
* @param string $name The specific icon to display
* @param string $class Additional class: float, float-alt, or custom class
- *
+ *
* @return string The html for displaying an icon
*/
function elgg_view_icon($name, $class = '') {
// @todo deprecate boolean in Elgg 1.9
- if (is_bool($class) && $class === true) {
+ if ($class === true) {
$class = 'float';
}
return "<span class=\"elgg-icon elgg-icon-$name $class\"></span>";
@@ -1403,7 +1403,8 @@ function elgg_view_access_collections($owner_guid) {
*/
function set_template_handler($function_name) {
global $CONFIG;
- if (!empty($function_name) && is_callable($function_name)) {
+
+ if (is_callable($function_name)) {
$CONFIG->template_handler = $function_name;
return true;
}
@@ -1462,17 +1463,13 @@ function elgg_get_views($dir, $base) {
*/
function elgg_view_tree($view_root, $viewtype = "") {
global $CONFIG;
- static $treecache;
+ static $treecache = array();
// Get viewtype
if (!$viewtype) {
$viewtype = elgg_get_viewtype();
}
- // Has the treecache been initialised?
- if (!isset($treecache)) {
- $treecache = array();
- }
// A little light internal caching
if (!empty($treecache[$view_root])) {
return $treecache[$view_root];
@@ -1516,17 +1513,13 @@ function elgg_view_tree($view_root, $viewtype = "") {
* @param string $base_location_path The base views directory to use with elgg_set_view_location()
* @param string $viewtype The type of view we're looking at (default, rss, etc)
*
- * @return void
+ * @return bool returns false if folder can't be read
* @since 1.7.0
* @see elgg_set_view_location()
* @todo This seems overly complicated.
* @access private
*/
function autoregister_views($view_base, $folder, $base_location_path, $viewtype) {
- if (!isset($i)) {
- $i = 0;
- }
-
if ($handle = opendir($folder)) {
while ($view = readdir($handle)) {
if (!in_array($view, array('.', '..', '.svn', 'CVS')) && !is_dir($folder . "/" . $view)) {
@@ -1567,7 +1560,7 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)
function elgg_views_add_rss_link() {
global $autofeed;
if (isset($autofeed) && $autofeed == true) {
- $url = full_url();
+ $url = current_page_url();
if (substr_count($url, '?')) {
$url .= "&view=rss";
} else {
@@ -1608,16 +1601,15 @@ function elgg_views_handle_deprecated_views() {
function elgg_views_boot() {
global $CONFIG;
- elgg_register_simplecache_view('css/elgg');
elgg_register_simplecache_view('css/ie');
elgg_register_simplecache_view('css/ie6');
elgg_register_simplecache_view('css/ie7');
- elgg_register_simplecache_view('js/elgg');
elgg_register_js('jquery', '/vendors/jquery/jquery-1.6.4.min.js', 'head');
elgg_register_js('jquery-ui', '/vendors/jquery/jquery-ui-1.8.16.min.js', 'head');
elgg_register_js('jquery.form', '/vendors/jquery/jquery.form.js');
-
+
+ elgg_register_simplecache_view('js/elgg');
$elgg_js_url = elgg_get_simplecache_url('js', 'elgg');
elgg_register_js('elgg', $elgg_js_url, 'head');
@@ -1626,14 +1618,17 @@ function elgg_views_boot() {
elgg_load_js('elgg');
elgg_register_simplecache_view('js/lightbox');
- elgg_register_simplecache_view('css/lightbox');
$lightbox_js_url = elgg_get_simplecache_url('js', 'lightbox');
elgg_register_js('lightbox', $lightbox_js_url);
+
+ elgg_register_simplecache_view('css/lightbox');
$lightbox_css_url = elgg_get_simplecache_url('css', 'lightbox');
elgg_register_css('lightbox', $lightbox_css_url);
+ elgg_register_simplecache_view('css/elgg');
$elgg_css_url = elgg_get_simplecache_url('css', 'elgg');
elgg_register_css('elgg', $elgg_css_url);
+
elgg_load_css('elgg');
elgg_register_ajax_view('js/languages');
@@ -1647,13 +1642,13 @@ function elgg_views_boot() {
$views = scandir($view_path);
foreach ($views as $view) {
- if ('.' !== substr($view, 0, 1) && is_dir($view_path . $view)) {
+ if ($view[0] !== '.' && is_dir($view_path . $view)) {
elgg_register_viewtype($view);
}
}
// set default icon sizes - can be overridden in settings.php or with plugin
- if (!elgg_get_config('icon_sizes')) {
+ if (!isset($CONFIG->icon_sizes)) {
$icon_sizes = array(
'topbar' => array('w' => 16, 'h' => 16, 'square' => TRUE, 'upscale' => TRUE),
'tiny' => array('w' => 25, 'h' => 25, 'square' => TRUE, 'upscale' => TRUE),
diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php
index da3ed76a9..51cad6f39 100644
--- a/engine/lib/web_services.php
+++ b/engine/lib/web_services.php
@@ -178,7 +178,7 @@ function authenticate_method($method) {
// check if user authentication is required
if ($API_METHODS[$method]["require_user_auth"] == true) {
if ($user_auth_result == false) {
- throw new APIException($user_pam->getFailureMessage());
+ throw new APIException($user_pam->getFailureMessage(), ErrorResult::$RESULT_FAIL_AUTHTOKEN);
}
}
@@ -232,6 +232,7 @@ function execute_method($method) {
$function = $API_METHODS[$method]["function"];
$serialised_parameters = trim($serialised_parameters, ", ");
+ // @todo document why we cannot use call_user_func_array here
$result = eval("return $function($serialised_parameters);");
// Sanity check result
@@ -1165,6 +1166,17 @@ function list_all_apis() {
* @access private
*/
function auth_gettoken($username, $password) {
+ // check if username is an email address
+ if (is_email_address($username)) {
+ $users = get_user_by_email($username);
+
+ // check if we have a unique user
+ if (is_array($users) && (count($users) == 1)) {
+ $username = $users[0]->username;
+ }
+ }
+
+ // validate username and password
if (true === elgg_authenticate($username, $password)) {
$token = create_user_token($username);
if ($token) {
@@ -1194,6 +1206,8 @@ $ERRORS = array();
*
* @return void
* @access private
+ *
+ * @throws Exception
*/
function _php_api_error_handler($errno, $errmsg, $filename, $linenum, $vars) {
global $ERRORS;
@@ -1264,25 +1278,23 @@ function service_handler($handler, $request) {
$request = explode('/', $request);
// after the handler, the first identifier is response format
- // ex) http://example.org/services/api/rest/xml/?method=test
- $reponse_format = array_shift($request);
+ // ex) http://example.org/services/api/rest/json/?method=test
+ $response_format = array_shift($request);
// Which view - xml, json, ...
- if ($reponse_format) {
- elgg_set_viewtype($reponse_format);
+ if ($response_format && elgg_is_valid_view_type($response_format)) {
+ elgg_set_viewtype($response_format);
} else {
- // default to xml
- elgg_set_viewtype("xml");
+ // default to json
+ elgg_set_viewtype("json");
}
if (!isset($CONFIG->servicehandler) || empty($handler)) {
// no handlers set or bad url
header("HTTP/1.0 404 Not Found");
exit;
- } else if (isset($CONFIG->servicehandler[$handler])
- && is_callable($CONFIG->servicehandler[$handler])) {
-
+ } else if (isset($CONFIG->servicehandler[$handler]) && is_callable($CONFIG->servicehandler[$handler])) {
$function = $CONFIG->servicehandler[$handler];
- $function($request, $handler);
+ call_user_func($function, $request, $handler);
} else {
// no handler for this web service
header("HTTP/1.0 404 Not Found");
@@ -1301,10 +1313,11 @@ function service_handler($handler, $request) {
*/
function register_service_handler($handler, $function) {
global $CONFIG;
+
if (!isset($CONFIG->servicehandler)) {
$CONFIG->servicehandler = array();
}
- if (is_callable($function)) {
+ if (is_callable($function, true)) {
$CONFIG->servicehandler[$handler] = $function;
return true;
}
@@ -1319,11 +1332,13 @@ function register_service_handler($handler, $function) {
*
* @param string $handler web services type
*
- * @return 1.7.0
+ * @return void
+ * @since 1.7.0
*/
function unregister_service_handler($handler) {
global $CONFIG;
- if (isset($CONFIG->servicehandler) && isset($CONFIG->servicehandler[$handler])) {
+
+ if (isset($CONFIG->servicehandler, $CONFIG->servicehandler[$handler])) {
unset($CONFIG->servicehandler[$handler]);
}
}
@@ -1333,6 +1348,8 @@ function unregister_service_handler($handler) {
*
* @return void
* @access private
+ *
+ * @throws SecurityException|APIException
*/
function rest_handler() {
global $CONFIG;
@@ -1387,7 +1404,7 @@ function rest_handler() {
/**
* Unit tests for API
*
- * @param sting $hook unit_test
+ * @param string $hook unit_test
* @param string $type system
* @param mixed $value Array of tests
* @param mixed $params Params
@@ -1397,6 +1414,7 @@ function rest_handler() {
*/
function api_unit_test($hook, $type, $value, $params) {
global $CONFIG;
+
$value[] = $CONFIG->path . 'engine/tests/services/api.php';
return $value;
}
@@ -1418,15 +1436,18 @@ function api_init() {
elgg_echo("system.api.list"), "GET", false, false);
// The authentication token api
- expose_function("auth.gettoken",
- "auth_gettoken", array(
- 'username' => array ('type' => 'string'),
- 'password' => array ('type' => 'string'),
- ),
- elgg_echo('auth.gettoken'),
- 'POST',
- false,
- false);
+ expose_function(
+ "auth.gettoken",
+ "auth_gettoken",
+ array(
+ 'username' => array ('type' => 'string'),
+ 'password' => array ('type' => 'string'),
+ ),
+ elgg_echo('auth.gettoken'),
+ 'POST',
+ false,
+ false
+ );
}
diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php
index d73dd6330..699462a1b 100644
--- a/engine/lib/widgets.php
+++ b/engine/lib/widgets.php
@@ -336,7 +336,7 @@ function elgg_default_widgets_init() {
*
* @param string $event The event
* @param string $type The type of object
- * @param object $entity The entity being created
+ * @param ElggEntity $entity The entity being created
* @return void
* @access private
*/
@@ -372,6 +372,7 @@ function elgg_create_default_widgets($event, $type, $entity) {
);
$widgets = elgg_get_entities_from_private_settings($options);
+ /* @var ElggWidget[] $widgets */
foreach ($widgets as $widget) {
// change the container and owner
diff --git a/engine/lib/xml.php b/engine/lib/xml.php
index 813bc4ee0..497459d83 100644
--- a/engine/lib/xml.php
+++ b/engine/lib/xml.php
@@ -101,47 +101,11 @@ function serialise_array_to_xml(array $data, $n = 0) {
/**
* Parse an XML file into an object.
- * Based on code from http://de.php.net/manual/en/function.xml-parse-into-struct.php by
- * efredricksen at gmail dot com
*
* @param string $xml The XML
*
- * @return object
+ * @return ElggXMLElement
*/
function xml_to_object($xml) {
- $parser = xml_parser_create();
-
- // Parse $xml into a structure
- xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
- xml_parse_into_struct($parser, $xml, $tags);
-
- xml_parser_free($parser);
-
- $elements = array();
- $stack = array();
-
- foreach ($tags as $tag) {
- $index = count($elements);
-
- if ($tag['type'] == "complete" || $tag['type'] == "open") {
- $elements[$index] = new XmlElement;
- $elements[$index]->name = $tag['tag'];
- $elements[$index]->attributes = elgg_extract('attributes', $tag, '');
- $elements[$index]->content = elgg_extract('value', $tag, '');
-
- if ($tag['type'] == "open") {
- $elements[$index]->children = array();
- $stack[count($stack)] = &$elements;
- $elements = &$elements[$index]->children;
- }
- }
-
- if ($tag['type'] == "close") {
- $elements = &$stack[count($stack) - 1];
- unset($stack[count($stack) - 1]);
- }
- }
-
- return $elements[0];
+ return new ElggXMLElement($xml);
}
diff --git a/engine/schema/mysql.sql b/engine/schema/mysql.sql
index 6c6e9db89..4714b71bb 100644
--- a/engine/schema/mysql.sql
+++ b/engine/schema/mysql.sql
@@ -361,7 +361,7 @@ CREATE TABLE `prefix_system_log` (
`access_id` int(11) NOT NULL,
`enabled` enum('yes','no') NOT NULL DEFAULT 'yes',
`time_created` int(11) NOT NULL,
- `ip_address` varchar(15) NOT NULL,
+ `ip_address` varchar(46) NOT NULL,
PRIMARY KEY (`id`),
KEY `object_id` (`object_id`),
KEY `object_class` (`object_class`),
diff --git a/engine/start.php b/engine/start.php
index 5f4bded45..55b8ffa5b 100644
--- a/engine/start.php
+++ b/engine/start.php
@@ -100,6 +100,15 @@ elgg_trigger_event('boot', 'system');
// Load the plugins that are active
elgg_load_plugins();
+
+// @todo move loading plugins into a single boot function that replaces 'boot', 'system' event
+// and then move this code in there.
+// This validates the view type - first opportunity to do it is after plugins load.
+$view_type = elgg_get_viewtype();
+if (!elgg_is_valid_view_type($view_type)) {
+ elgg_set_viewtype('default');
+}
+
// @todo deprecate as plugins can use 'init', 'system' event
elgg_trigger_event('plugins_boot', 'system');
diff --git a/engine/tests/api/access_collections.php b/engine/tests/api/access_collections.php
index bea995a6e..4acfae596 100644
--- a/engine/tests/api/access_collections.php
+++ b/engine/tests/api/access_collections.php
@@ -54,7 +54,6 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
}
public function testCreateGetDeleteACL() {
- global $DB_QUERY_CACHE;
$acl_name = 'test access collection';
$acl_id = create_access_collection($acl_name);
@@ -67,8 +66,6 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
$this->assertEqual($acl->id, $acl_id);
if ($acl) {
- $DB_QUERY_CACHE = array();
-
$this->assertEqual($acl->name, $acl_name);
$result = delete_access_collection($acl_id);
@@ -268,4 +265,26 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest {
$group->delete();
}
+
+ public function testAccessCaching() {
+ // create a new user to check against
+ $user = new ElggUser();
+ $user->username = 'access_test_user';
+ $user->save();
+
+ foreach (array('get_access_list', 'get_access_array') as $func) {
+ $cache = _elgg_get_access_cache();
+ $cache->clear();
+
+ // admin users run tests, so disable access
+ elgg_set_ignore_access(true);
+ $access = $func($user->getGUID());
+
+ elgg_set_ignore_access(false);
+ $access2 = $func($user->getGUID());
+ $this->assertNotEqual($access, $access2, "Access test for $func");
+ }
+
+ $user->delete();
+ }
}
diff --git a/engine/tests/api/annotations.php b/engine/tests/api/annotations.php
index 947292970..c0b0687cc 100644
--- a/engine/tests/api/annotations.php
+++ b/engine/tests/api/annotations.php
@@ -65,6 +65,86 @@ class ElggCoreAnnotationAPITest extends ElggCoreUnitTest {
$annotations = elgg_get_annotations($options);
$this->assertTrue(empty($annotations));
+ // nothing to delete so null returned
+ $this->assertNull(elgg_delete_annotations($options));
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggDisableAnnotations() {
+ $e = new ElggObject();
+ $e->save();
+
+ for ($i=0; $i<30; $i++) {
+ $e->annotate('test_annotation', rand(0,10000));
+ }
+
+ $options = array(
+ 'guid' => $e->getGUID(),
+ 'limit' => 0
+ );
+
+ $this->assertTrue(elgg_disable_annotations($options));
+
+ $annotations = elgg_get_annotations($options);
+ $this->assertTrue(empty($annotations));
+
+ access_show_hidden_entities(true);
+ $annotations = elgg_get_annotations($options);
+ $this->assertIdentical(30, count($annotations));
+ access_show_hidden_entities(false);
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggEnableAnnotations() {
+ $e = new ElggObject();
+ $e->save();
+
+ for ($i=0; $i<30; $i++) {
+ $e->annotate('test_annotation', rand(0,10000));
+ }
+
+ $options = array(
+ 'guid' => $e->getGUID(),
+ 'limit' => 0
+ );
+
+ $this->assertTrue(elgg_disable_annotations($options));
+
+ // cannot see any annotations so returns null
+ $this->assertNull(elgg_enable_annotations($options));
+
+ access_show_hidden_entities(true);
+ $this->assertTrue(elgg_enable_annotations($options));
+ access_show_hidden_entities(false);
+
+ $annotations = elgg_get_annotations($options);
+ $this->assertIdentical(30, count($annotations));
+
+ $this->assertTrue($e->delete());
+ }
+
+ public function testElggAnnotationExists() {
+ $e = new ElggObject();
+ $e->save();
+ $guid = $e->getGUID();
+
+ $this->assertFalse(elgg_annotation_exists($guid, 'test_annotation'));
+
+ $e->annotate('test_annotation', rand(0, 10000));
+ $this->assertTrue(elgg_annotation_exists($guid, 'test_annotation'));
+ // this metastring should always exist but an annotation of this name should not
+ $this->assertFalse(elgg_annotation_exists($guid, 'email'));
+
+ $options = array(
+ 'guid' => $guid,
+ 'limit' => 0
+ );
+ $this->assertTrue(elgg_disable_annotations($options));
+ $this->assertTrue(elgg_annotation_exists($guid, 'test_annotation'));
+
$this->assertTrue($e->delete());
+ $this->assertFalse(elgg_annotation_exists($guid, 'test_annotation'));
}
}
diff --git a/engine/tests/api/entity_getter_functions.php b/engine/tests/api/entity_getter_functions.php
index 9db248de9..fef9dc0c5 100644
--- a/engine/tests/api/entity_getter_functions.php
+++ b/engine/tests/api/entity_getter_functions.php
@@ -2648,7 +2648,7 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$name = 'test_annotation_' . rand(0, 9999);
$values = array();
$options = array(
- 'types' => 'object',
+ 'type' => 'object',
'subtypes' => $subtypes,
'limit' => 5
);
@@ -2687,7 +2687,7 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$order = array_keys($values);
$options = array(
- 'types' => 'object',
+ 'type' => 'object',
'subtypes' => $subtypes,
'limit' => 5,
'annotation_name' => $name,
@@ -2729,6 +2729,36 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
}
}
+ public function testElggGetEntitiesFromAnnotationCalculationCount() {
+ // add two annotations with a unique name to an entity
+ // then count the number of entities with that annotation name
+
+ $subtypes = $this->getRandomValidSubtypes(array('object'), 1);
+ $name = 'test_annotation_' . rand(0, 9999);
+ $values = array();
+ $options = array(
+ 'type' => 'object',
+ 'subtypes' => $subtypes,
+ 'limit' => 1
+ );
+ $es = elgg_get_entities($options);
+ $entity = $es[0];
+ $value = rand(0, 9999);
+ $entity->annotate($name, $value);
+ $value = rand(0, 9999);
+ $entity->annotate($name, $value);
+
+ $options = array(
+ 'type' => 'object',
+ 'subtypes' => $subtypes,
+ 'annotation_name' => $name,
+ 'calculation' => 'count',
+ 'count' => true,
+ );
+ $count = elgg_get_entities_from_annotation_calculation($options);
+ $this->assertEqual(1, $count);
+ }
+
public function testElggGetAnnotationsAnnotationNames() {
$options = array('annotation_names' => array());
$a_e_map = array();
@@ -2817,4 +2847,38 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest {
$entities = elgg_get_entities($options);
$this->assertFalse($entities);
}
+
+ public function testEGEEmptySubtypePlurality() {
+ $options = array(
+ 'type' => 'user',
+ 'subtypes' => ''
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtype' => ''
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtype' => array('')
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+
+ $options = array(
+ 'type' => 'user',
+ 'subtypes' => array('')
+ );
+
+ $entities = elgg_get_entities($options);
+ $this->assertTrue(is_array($entities));
+ }
}
diff --git a/engine/tests/api/helpers.php b/engine/tests/api/helpers.php
index 62e4471e0..414fb4145 100644
--- a/engine/tests/api/helpers.php
+++ b/engine/tests/api/helpers.php
@@ -519,7 +519,7 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
$this->assertIdentical($elements_sorted_string, $test_elements);
}
- // see http://trac.elgg.org/ticket/4288
+ // see https://github.com/elgg/elgg/issues/4288
public function testElggBatchIncOffset() {
// normal increment
$options = array(
@@ -578,6 +578,107 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
$this->assertEqual(11, $j);
}
+ public function testElggBatchReadHandlesBrokenEntities() {
+ $num_test_entities = 8;
+ $guids = array();
+ for ($i = $num_test_entities; $i > 0; $i--) {
+ $entity = new ElggObject();
+ $entity->type = 'object';
+ $entity->subtype = 'test_5357_subtype';
+ $entity->access_id = ACCESS_PUBLIC;
+ $entity->save();
+ $guids[] = $entity->guid;
+ _elgg_invalidate_cache_for_entity($entity->guid);
+ }
+
+ // break entities such that the first fetch has one incomplete
+ // and the second and third fetches have only incompletes!
+ $db_prefix = elgg_get_config('dbprefix');
+ delete_data("
+ DELETE FROM {$db_prefix}objects_entity
+ WHERE guid IN ({$guids[1]}, {$guids[2]}, {$guids[3]}, {$guids[4]}, {$guids[5]})
+ ");
+
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'test_5357_subtype',
+ 'order_by' => 'e.guid',
+ );
+
+ $entities_visited = array();
+ $batch = new ElggBatch('elgg_get_entities', $options, null, 2);
+ /* @var ElggEntity[] $batch */
+ foreach ($batch as $entity) {
+ $entities_visited[] = $entity->guid;
+ }
+
+ // The broken entities should not have been visited
+ $this->assertEqual($entities_visited, array($guids[0], $guids[6], $guids[7]));
+
+ // cleanup (including leftovers from previous tests)
+ $entity_rows = elgg_get_entities(array_merge($options, array(
+ 'callback' => '',
+ 'limit' => false,
+ )));
+ $guids = array();
+ foreach ($entity_rows as $row) {
+ $guids[] = $row->guid;
+ }
+ delete_data("DELETE FROM {$db_prefix}entities WHERE guid IN (" . implode(',', $guids) . ")");
+ delete_data("DELETE FROM {$db_prefix}objects_entity WHERE guid IN (" . implode(',', $guids) . ")");
+ }
+
+ public function testElggBatchDeleteHandlesBrokenEntities() {
+ $num_test_entities = 8;
+ $guids = array();
+ for ($i = $num_test_entities; $i > 0; $i--) {
+ $entity = new ElggObject();
+ $entity->type = 'object';
+ $entity->subtype = 'test_5357_subtype';
+ $entity->access_id = ACCESS_PUBLIC;
+ $entity->save();
+ $guids[] = $entity->guid;
+ _elgg_invalidate_cache_for_entity($entity->guid);
+ }
+
+ // break entities such that the first fetch has one incomplete
+ // and the second and third fetches have only incompletes!
+ $db_prefix = elgg_get_config('dbprefix');
+ delete_data("
+ DELETE FROM {$db_prefix}objects_entity
+ WHERE guid IN ({$guids[1]}, {$guids[2]}, {$guids[3]}, {$guids[4]}, {$guids[5]})
+ ");
+
+ $options = array(
+ 'type' => 'object',
+ 'subtype' => 'test_5357_subtype',
+ 'order_by' => 'e.guid',
+ );
+
+ $entities_visited = array();
+ $batch = new ElggBatch('elgg_get_entities', $options, null, 2, false);
+ /* @var ElggEntity[] $batch */
+ foreach ($batch as $entity) {
+ $entities_visited[] = $entity->guid;
+ $entity->delete();
+ }
+
+ // The broken entities should not have been visited
+ $this->assertEqual($entities_visited, array($guids[0], $guids[6], $guids[7]));
+
+ // cleanup (including leftovers from previous tests)
+ $entity_rows = elgg_get_entities(array_merge($options, array(
+ 'callback' => '',
+ 'limit' => false,
+ )));
+ $guids = array();
+ foreach ($entity_rows as $row) {
+ $guids[] = $row->guid;
+ }
+ delete_data("DELETE FROM {$db_prefix}entities WHERE guid IN (" . implode(',', $guids) . ")");
+ delete_data("DELETE FROM {$db_prefix}objects_entity WHERE guid IN (" . implode(',', $guids) . ")");
+ }
+
static function elgg_batch_callback_test($options, $reset = false) {
static $count = 1;
diff --git a/engine/tests/api/metadata.php b/engine/tests/api/metadata.php
index 9933263d1..d23510c6a 100644
--- a/engine/tests/api/metadata.php
+++ b/engine/tests/api/metadata.php
@@ -102,14 +102,14 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
$e = new ElggObject();
$e->save();
- for ($i=0; $i<30; $i++) {
- $name = "test_metadata" . rand(0, 10000);
+ for ($i = 0; $i < 30; $i++) {
+ $name = "test_metadata$i";
$e->$name = rand(0, 10000);
}
$options = array(
'guid' => $e->getGUID(),
- 'limit' => 0
+ 'limit' => 0,
);
$md = elgg_get_metadata($options);
@@ -123,9 +123,23 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
$e->delete();
}
+ /**
+ * https://github.com/Elgg/Elgg/issues/4867
+ */
+ public function testElggGetEntityMetadataWhereSqlWithFalseValue() {
+ $pair = array('name' => 'test' , 'value' => false);
+ $result = elgg_get_entity_metadata_where_sql('e', 'metadata', null, null, $pair);
+ $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+ $this->assertTrue(strpos($where, "msn1.string = 'test' AND BINARY msv1.string = 0") > 0);
+
+ $result = elgg_get_entity_metadata_where_sql('e', 'metadata', array('test'), array(false));
+ $where = preg_replace( '/\s+/', ' ', $result['wheres'][0]);
+ $this->assertTrue(strpos($where, "msn.string IN ('test')) AND ( BINARY msv.string IN ('0')"));
+ }
+
// Make sure metadata with multiple values is correctly deleted when re-written
// by another user
- // http://trac.elgg.org/ticket/2776
+ // https://github.com/elgg/elgg/issues/2776
public function test_elgg_metadata_multiple_values() {
$u1 = new ElggUser();
$u1->username = rand();
diff --git a/engine/tests/api/metadata_cache.php b/engine/tests/api/metadata_cache.php
new file mode 100644
index 000000000..7fb328169
--- /dev/null
+++ b/engine/tests/api/metadata_cache.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Elgg Test metadata cache
+ *
+ * @package Elgg
+ * @subpackage Test
+ */
+class ElggCoreMetadataCacheTest extends ElggCoreUnitTest {
+
+ /**
+ * @var ElggVolatileMetadataCache
+ */
+ protected $cache;
+
+ /**
+ * @var ElggObject
+ */
+ protected $obj1;
+
+ /**
+ * @var int
+ */
+ protected $guid1;
+
+ /**
+ * @var ElggObject
+ */
+ protected $obj2;
+
+ /**
+ * @var int
+ */
+ protected $guid2;
+
+ protected $name = 'test';
+ protected $value = 'test';
+ protected $ignoreAccess;
+
+ /**
+ * Called before each test method.
+ */
+ public function setUp() {
+ $this->ignoreAccess = elgg_set_ignore_access(false);
+
+ $this->cache = elgg_get_metadata_cache();
+
+ $this->obj1 = new ElggObject();
+ $this->obj1->save();
+ $this->guid1 = $this->obj1->guid;
+
+ $this->obj2 = new ElggObject();
+ $this->obj2->save();
+ $this->guid2 = $this->obj2->guid;
+ }
+
+ /**
+ * Called after each test method.
+ */
+ public function tearDown() {
+ $this->obj1->delete();
+ $this->obj2->delete();
+
+ elgg_set_ignore_access($this->ignoreAccess);
+ }
+
+ public function testBasicApi() {
+ // test de-coupled instance
+ $cache = new ElggVolatileMetadataCache();
+ $cache->setIgnoreAccess(false);
+ $guid = 1;
+
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+
+ $cache->markEmpty($guid, $this->name);
+ $this->assertTrue($cache->isKnown($guid, $this->name));
+ $this->assertNull($cache->load($guid, $this->name));
+
+ $cache->markUnknown($guid, $this->name);
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+
+ $cache->save($guid, $this->name, $this->value);
+ $this->assertIdentical($cache->load($guid, $this->name), $this->value);
+
+ $cache->save($guid, $this->name, 1, true);
+ $this->assertIdentical($cache->load($guid, $this->name), array($this->value, 1));
+
+ $cache->clear($guid);
+ $this->assertFalse($cache->isKnown($guid, $this->name));
+ }
+
+ public function testReadsAreCached() {
+ // test that reads fill cache
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->cache->flush();
+
+ $this->obj1->getMetaData($this->name);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), $this->value);
+ }
+
+ public function testWritesAreCached() {
+ // delete should mark cache as known to be empty
+ $this->obj1->deleteMetadata($this->name);
+ $this->assertTrue($this->cache->isKnown($this->guid1, $this->name));
+ $this->assertNull($this->cache->load($this->guid1, $this->name));
+
+ // without name, delete should invalidate the entire entity
+ $this->cache->save($this->guid1, $this->name, $this->value);
+ elgg_delete_metadata(array(
+ 'guid' => $this->guid1,
+ ));
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+
+ // test set
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), $this->value);
+
+ // test set multiple
+ $this->obj1->setMetaData($this->name, 1, 'integer', true);
+ $this->assertIdentical($this->cache->load($this->guid1, $this->name), array($this->value, 1));
+
+ // writes when access is ignore should invalidate
+ $tmp_ignore = elgg_set_ignore_access(true);
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+ elgg_set_ignore_access($tmp_ignore);
+ }
+
+ public function testDisableAndEnable() {
+ // both should mark cache unknown
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->obj1->disableMetadata($this->name);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+
+ $this->cache->save($this->guid1, $this->name, $this->value);
+ $this->obj1->enableMetadata($this->name);
+ $this->assertFalse($this->cache->isKnown($this->guid1, $this->name));
+ }
+
+ public function testPopulateFromEntities() {
+ // test populating cache from set of entities
+ $this->obj1->setMetaData($this->name, $this->value);
+ $this->obj1->setMetaData($this->name, 4, 'integer', true);
+ $this->obj1->setMetaData("{$this->name}-2", "{$this->value}-2");
+ $this->obj2->setMetaData($this->name, $this->value);
+
+ $this->cache->flush();
+ $this->cache->populateFromEntities(array($this->guid1, $this->guid2));
+
+ $expected = array();
+ $expected[$this->name][] = $this->value;
+ $expected[$this->name][] = 4;
+ $expected["{$this->name}-2"] = "{$this->value}-2";
+ $this->assertIdentical($this->cache->loadAll($this->guid1), $expected);
+
+ $expected = array();
+ $expected[$this->name] = $this->value;
+ $this->assertIdentical($this->cache->loadAll($this->guid2), $expected);
+ }
+
+ public function testFilterHeavyEntities() {
+ $big_str = str_repeat('-', 5000);
+ $this->obj2->setMetaData($this->name, array($big_str, $big_str));
+
+ $guids = array($this->guid1, $this->guid2);
+ $expected = array($this->guid1);
+ $actual = $this->cache->filterMetadataHeavyEntities($guids, 6000);
+ $this->assertIdentical($actual, $expected);
+ }
+
+ public function testCreateMetadataInvalidates() {
+ $this->obj1->foo = 1;
+ create_metadata($this->guid1, 'foo', 2, '', elgg_get_logged_in_user_guid(), ACCESS_FRIENDS);
+
+ $this->assertEqual($this->obj1->foo, 2);
+ }
+}
diff --git a/engine/tests/api/metastrings.php b/engine/tests/api/metastrings.php
index 0a8945084..5efdab972 100644
--- a/engine/tests/api/metastrings.php
+++ b/engine/tests/api/metastrings.php
@@ -55,8 +55,11 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
* Called after each test method.
*/
public function tearDown() {
- // do not allow SimpleTest to interpret Elgg notices as exceptions
- $this->swallowErrors();
+ access_show_hidden_entities(true);
+ elgg_delete_annotations(array(
+ 'guid' => $this->object->guid,
+ ));
+ access_show_hidden_entities(false);
}
/**
@@ -98,6 +101,31 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
}
}
+ public function testGetMetastringObjectFromIDWithDisabledAnnotation() {
+ $name = 'test_annotation_name' . rand();
+ $value = 'test_annotation_value' . rand();
+ $id = create_annotation($this->object->guid, $name, $value);
+ $annotation = elgg_get_annotation_from_id($id);
+ $this->assertTrue($annotation->disable());
+
+ $test = elgg_get_metastring_based_object_from_id($id, 'annotation');
+ $this->assertEqual(false, $test);
+ }
+
+ public function testGetMetastringBasedObjectWithDisabledAnnotation() {
+ $name = 'test_annotation_name' . rand();
+ $value = 'test_annotation_value' . rand();
+ $id = create_annotation($this->object->guid, $name, $value);
+ $annotation = elgg_get_annotation_from_id($id);
+ $this->assertTrue($annotation->disable());
+
+ $test = elgg_get_metastring_based_objects(array(
+ 'metastring_type' => 'annotations',
+ 'guid' => $this->object->guid,
+ ));
+ $this->assertEqual(array(), $test);
+ }
+
public function testEnableDisableByID() {
$db_prefix = elgg_get_config('dbprefix');
$annotations = $this->createAnnotations(1);
@@ -119,7 +147,6 @@ class ElggCoreMetastringsTest extends ElggCoreUnitTest {
// enable
$ashe = access_get_show_hidden_status();
access_show_hidden_entities(true);
- flush();
$this->assertTrue(elgg_set_metastring_based_object_enabled_by_id($id, 'yes', $type));
$test = get_data($q);
diff --git a/engine/tests/api/output.php b/engine/tests/api/output.php
new file mode 100644
index 000000000..c3d5aa8c6
--- /dev/null
+++ b/engine/tests/api/output.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Test case for ElggAutoP functionality.
+ */
+class ElggCoreOutputAutoPTest extends ElggCoreUnitTest {
+
+ /**
+ * @var ElggAutoP
+ */
+ protected $_autop;
+
+ public function setUp() {
+ $this->_autop = new ElggAutoP();
+ }
+
+ public function testDomRoundtrip() {
+ $d = dir(dirname(dirname(__FILE__)) . '/test_files/output/autop');
+ $in = file_get_contents($d->path . "/domdoc_in.html");
+ $exp = file_get_contents($d->path . "/domdoc_exp.html");
+ $exp = $this->flattenString($exp);
+
+ $doc = new DOMDocument();
+ libxml_use_internal_errors(true);
+ $doc->loadHTML("<html><meta http-equiv='content-type' content='text/html; charset=utf-8'><body>"
+ . $in . '</body></html>');
+ $serialized = $doc->saveHTML();
+ list(,$out) = explode('<body>', $serialized, 2);
+ list($out) = explode('</body>', $out, 2);
+ $out = $this->flattenString($out);
+
+ $this->assertEqual($exp, $out, "DOMDocument's parsing/serialization roundtrip");
+ }
+
+ public function testProcess() {
+ $data = $this->provider();
+ foreach ($data as $row) {
+ list($test, $in, $exp) = $row;
+ $exp = $this->flattenString($exp);
+ $out = $this->_autop->process($in);
+ $out = $this->flattenString($out);
+
+ $this->assertEqual($exp, $out, "Equality case {$test}");
+ }
+ }
+
+ public function provider() {
+ $d = dir(dirname(dirname(__FILE__)) . '/test_files/output/autop');
+ $tests = array();
+ while (false !== ($entry = $d->read())) {
+ if (preg_match('/^([a-z\\-]+)\.in\.html$/i', $entry, $m)) {
+ $tests[] = $m[1];
+ }
+ }
+
+ $data = array();
+ foreach ($tests as $test) {
+ $data[] = array(
+ $test,
+ file_get_contents($d->path . '/' . "{$test}.in.html"),
+ file_get_contents($d->path . '/' . "{$test}.exp.html"),
+ );
+ }
+ return $data;
+ }
+
+ /**
+ * Different versions of PHP return different whitespace between tags.
+ * Removing all line breaks normalizes that.
+ */
+ public function flattenString($string) {
+ $r = preg_replace('/[\n\r]+/', '', $string);
+ return $r;
+ }
+} \ No newline at end of file
diff --git a/engine/tests/api/plugins.php b/engine/tests/api/plugins.php
index 8ecb0a46c..d0f111c48 100644
--- a/engine/tests/api/plugins.php
+++ b/engine/tests/api/plugins.php
@@ -68,6 +68,9 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest {
'blurb' => 'A concise description.',
'description' => 'A longer, more interesting description.',
'website' => 'http://www.elgg.org/',
+ 'repository' => 'https://github.com/Elgg/Elgg',
+ 'bugtracker' => 'https://github.com/elgg/elgg/issues',
+ 'donations' => 'http://elgg.org/supporter.php',
'copyright' => '(C) Elgg Foundation 2011',
'license' => 'GNU General Public License version 2',
@@ -164,6 +167,21 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest {
$this->assertEqual($this->manifest18->getWebsite(), 'http://www.elgg.org/');
$this->assertEqual($this->manifest17->getWebsite(), 'http://www.elgg.org/');
}
+
+ public function testElggPluginManifestGetRepository() {
+ $this->assertEqual($this->manifest18->getRepositoryURL(), 'https://github.com/Elgg/Elgg');
+ $this->assertEqual($this->manifest17->getRepositoryURL(), '');
+ }
+
+ public function testElggPluginManifestGetBugtracker() {
+ $this->assertEqual($this->manifest18->getBugTrackerURL(), 'https://github.com/elgg/elgg/issues');
+ $this->assertEqual($this->manifest17->getBugTrackerURL(), '');
+ }
+
+ public function testElggPluginManifestGetDonationsPage() {
+ $this->assertEqual($this->manifest18->getDonationsPageURL(), 'http://elgg.org/supporter.php');
+ $this->assertEqual($this->manifest17->getDonationsPageURL(), '');
+ }
public function testElggPluginManifestGetCopyright() {
$this->assertEqual($this->manifest18->getCopyright(), '(C) Elgg Foundation 2011');
diff --git a/engine/tests/objects/entities.php b/engine/tests/objects/entities.php
index 248b85c9e..bac72079e 100644
--- a/engine/tests/objects/entities.php
+++ b/engine/tests/objects/entities.php
@@ -271,7 +271,7 @@ class ElggCoreEntityTest extends ElggCoreUnitTest {
$this->save_entity();
// test deleting incorrectly
- // @link http://trac.elgg.org/ticket/2273
+ // @link https://github.com/elgg/elgg/issues/2273
$this->assertNull($this->entity->deleteMetadata('impotent'));
$this->assertEqual($this->entity->important, 'indeed!');
diff --git a/engine/tests/objects/objects.php b/engine/tests/objects/objects.php
index 915594e0a..263ab2414 100644
--- a/engine/tests/objects/objects.php
+++ b/engine/tests/objects/objects.php
@@ -194,7 +194,7 @@ class ElggCoreObjectTest extends ElggCoreUnitTest {
$old = elgg_set_ignore_access(true);
}
- // see http://trac.elgg.org/ticket/1196
+ // see https://github.com/elgg/elgg/issues/1196
public function testElggEntityRecursiveDisableWhenLoggedOut() {
$e1 = new ElggObject();
$e1->access_id = ACCESS_PUBLIC;
diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php
index a3573acb6..8a1033ac4 100644
--- a/engine/tests/objects/users.php
+++ b/engine/tests/objects/users.php
@@ -65,6 +65,9 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
$attributes['code'] = NULL;
$attributes['banned'] = 'no';
$attributes['admin'] = 'no';
+ $attributes['prev_last_action'] = NULL;
+ $attributes['last_login'] = NULL;
+ $attributes['prev_last_login'] = NULL;
ksort($attributes);
$entity_attributes = $this->user->expose_attributes();
@@ -142,7 +145,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
}
public function testElggUserNameCache() {
- // Trac #1305
+ // issue https://github.com/elgg/elgg/issues/1305
// very unlikely a user would have this username
$name = (string)time();
@@ -156,6 +159,22 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
$this->assertFalse($user);
}
+ public function testGetUserByUsernameAcceptsUrlEncoded() {
+ $username = (string)time();
+ $this->user->username = $username;
+ $guid = $this->user->save();
+
+ // percent encode first letter
+ $first_letter = $username[0];
+ $first_letter = str_pad('%' . dechex(ord($first_letter)), 2, '0', STR_PAD_LEFT);
+ $username = $first_letter . substr($username, 1);
+
+ $user = get_user_by_username($username);
+ $this->assertTrue((bool) $user);
+ $this->assertEqual($guid, $user->guid);
+
+ $this->user->delete();
+ }
public function testElggUserMakeAdmin() {
global $CONFIG;
diff --git a/engine/tests/regression/trac_bugs.php b/engine/tests/regression/trac_bugs.php
index 691433a41..689275661 100644
--- a/engine/tests/regression/trac_bugs.php
+++ b/engine/tests/regression/trac_bugs.php
@@ -1,7 +1,7 @@
<?php
/**
- * Elgg Regression Tests -- Trac Bugfixes
- * Any bugfixes from Trac that require testing belong here.
+ * Elgg Regression Tests -- GitHub Bugfixes
+ * Any bugfixes from GitHub that require testing belong here.
*
* @package Elgg
* @subpackage Test
@@ -201,26 +201,28 @@ class ElggCoreRegressionBugsTest extends ElggCoreUnitTest {
}
/**
- * http://trac.elgg.org/ticket/3210 - Don't remove -s in friendly titles
- * http://trac.elgg.org/ticket/2276 - improve char encoding
+ * https://github.com/elgg/elgg/issues/3210 - Don't remove -s in friendly titles
+ * https://github.com/elgg/elgg/issues/2276 - improve char encoding
*/
public function test_friendly_title() {
$cases = array(
+ // acid test
+ "B&N > Amazon, OK? <bold> 'hey!' $34"
+ => "bn-amazon-ok-bold-hey-34",
+
// hyphen, underscore and ASCII whitespace replaced by separator,
// other non-alphanumeric ASCII removed
- "a-a_a a\na\ra\ta\va!a\"a#a\$a%a&a'a(a)a*a+a,a.a/a:a;a<a=a>a?a@a[a\\a]a^a`a{a|a}a~a"
- => "a-a-a-a-a-a-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-
+ "a-a_a a\na\ra\ta\va!a\"a#a\$a%aa'a(a)a*a+a,a.a/a:a;a=a?a@a[a\\a]a^a`a{a|a}a~a"
+ => "a-a-a-a-a-a-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+
// separators trimmed
- "-_ hello _-" => "hello",
+ "-_ hello _-"
+ => "hello",
// accents removed, lower case, other multibyte chars are URL encoded
"I\xC3\xB1t\xC3\xABrn\xC3\xA2ti\xC3\xB4n\xC3\xA0liz\xC3\xA6ti\xC3\xB8n, AND \xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"
// Iñtërnâtiônàlizætiøn, AND 日本語
=> 'internationalizaetion-and-%E6%97%A5%E6%9C%AC%E8%AA%9E',
-
- // some HTML entity replacements
- "Me &amp; You" => 'me-and-you',
);
// where available, string is converted to NFC before transliteration
@@ -234,4 +236,170 @@ class ElggCoreRegressionBugsTest extends ElggCoreUnitTest {
$this->assertIdentical($expected, $friendly_title);
}
}
+
+ /**
+ * Test #5369 -- parse_urls()
+ * https://github.com/Elgg/Elgg/issues/5369
+ */
+ public function test_parse_urls() {
+
+ $cases = array(
+ 'no.link.here' =>
+ 'no.link.here',
+ 'simple link http://example.org test' =>
+ 'simple link <a href="http://example.org" rel="nofollow">http:/<wbr />/<wbr />example.org</a> test',
+ 'non-ascii http://ñew.org/ test' =>
+ 'non-ascii <a href="http://ñew.org/" rel="nofollow">http:/<wbr />/<wbr />ñew.org/<wbr /></a> test',
+
+ // section 2.1
+ 'percent encoded http://example.org/a%20b test' =>
+ 'percent encoded <a href="http://example.org/a%20b" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />a%20b</a> test',
+ // section 2.2: skipping single quote and parenthese
+ 'reserved characters http://example.org/:/?#[]@!$&*+,;= test' =>
+ 'reserved characters <a href="http://example.org/:/?#[]@!$&*+,;=" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />:/<wbr />?#[]@!$&*+,;=</a> test',
+ // section 2.3
+ 'unreserved characters http://example.org/a1-._~ test' =>
+ 'unreserved characters <a href="http://example.org/a1-._~" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />a1-._~</a> test',
+
+ 'parameters http://example.org/?val[]=1&val[]=2 test' =>
+ 'parameters <a href="http://example.org/?val[]=1&val[]=2" rel="nofollow">http:/<wbr />/<wbr />example.org/<wbr />?val[]=1&val[]=2</a> test',
+ 'port http://example.org:80/ test' =>
+ 'port <a href="http://example.org:80/" rel="nofollow">http:/<wbr />/<wbr />example.org:80/<wbr /></a> test',
+
+ 'parentheses (http://www.google.com) test' =>
+ 'parentheses (<a href="http://www.google.com" rel="nofollow">http:/<wbr />/<wbr />www.google.com</a>) test',
+ 'comma http://elgg.org, test' =>
+ 'comma <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>, test',
+ 'period http://elgg.org. test' =>
+ 'period <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>. test',
+ 'exclamation http://elgg.org! test' =>
+ 'exclamation <a href="http://elgg.org" rel="nofollow">http:/<wbr />/<wbr />elgg.org</a>! test',
+
+ 'already anchor <a href="http://twitter.com/">twitter</a> test' =>
+ 'already anchor <a href="http://twitter.com/">twitter</a> test',
+
+ 'ssl https://example.org/ test' =>
+ 'ssl <a href="https://example.org/" rel="nofollow">https:/<wbr />/<wbr />example.org/<wbr /></a> test',
+ 'ftp ftp://example.org/ test' =>
+ 'ftp <a href="ftp://example.org/" rel="nofollow">ftp:/<wbr />/<wbr />example.org/<wbr /></a> test',
+
+ 'web archive anchor <a href="http://web.archive.org/web/20000229040250/http://www.google.com/">google</a>' =>
+ 'web archive anchor <a href="http://web.archive.org/web/20000229040250/http://www.google.com/">google</a>',
+
+ 'single quotes already anchor <a href=\'http://www.yahoo.com\'>yahoo</a>' =>
+ 'single quotes already anchor <a href=\'http://www.yahoo.com\'>yahoo</a>',
+
+ 'unquoted already anchor <a href=http://www.yahoo.com>yahoo</a>' =>
+ 'unquoted already anchor <a href=http://www.yahoo.com>yahoo</a>',
+
+ 'parens in uri http://thedailywtf.com/Articles/A-(Long-Overdue)-BuildMaster-Introduction.aspx' =>
+ 'parens in uri <a href="http://thedailywtf.com/Articles/A-(Long-Overdue)-BuildMaster-Introduction.aspx" rel="nofollow">http:/<wbr />/<wbr />thedailywtf.com/<wbr />Articles/<wbr />A-(Long-Overdue)-BuildMaster-Introduction.aspx</a>'
+ );
+ foreach ($cases as $input => $output) {
+ $this->assertEqual($output, parse_urls($input));
+ }
+ }
+
+ /**
+ * Ensure additional select columns do not end up in entity attributes.
+ *
+ * https://github.com/Elgg/Elgg/issues/5538
+ */
+ public function test_extra_columns_dont_appear_in_attributes() {
+ global $ENTITY_CACHE;
+
+ // may not have groups in DB - let's create one
+ $group = new ElggGroup();
+ $group->name = 'test_group';
+ $group->access_id = ACCESS_PUBLIC;
+ $this->assertTrue($group->save() !== false);
+
+ // entity cache interferes with our test
+ $ENTITY_CACHE = array();
+
+ foreach (array('site', 'user', 'group', 'object') as $type) {
+ $entities = elgg_get_entities(array(
+ 'type' => $type,
+ 'selects' => array('1 as _nonexistent_test_column'),
+ 'limit' => 1,
+ ));
+ if (!$this->assertTrue($entities, "Query for '$type' did not return an entity.")) {
+ continue;
+ }
+ $entity = $entities[0];
+ $this->assertNull($entity->_nonexistent_test_column, "Additional select columns are leaking to attributes for '$type'");
+ }
+
+ $group->delete();
+ }
+
+ /**
+ * Ensure that ElggBatch doesn't go into infinite loop when disabling annotations recursively when show hidden is enabled.
+ *
+ * https://github.com/Elgg/Elgg/issues/5952
+ */
+ public function test_disabling_annotations_infinite_loop() {
+
+ //let's have some entity
+ $group = new ElggGroup();
+ $group->name = 'test_group';
+ $group->access_id = ACCESS_PUBLIC;
+ $this->assertTrue($group->save() !== false);
+
+ $total = 51;
+ //add some annotations
+ for ($cnt = 0; $cnt < $total; $cnt++) {
+ $group->annotate('test_annotation', 'value_' . $total);
+ }
+
+ //disable them
+ $show_hidden = access_get_show_hidden_status();
+ access_show_hidden_entities(true);
+ $options = array(
+ 'guid' => $group->guid,
+ 'limit' => $total, //using strict limit to avoid real infinite loop and just see ElggBatch limiting on it before finishing the work
+ );
+ elgg_disable_annotations($options);
+ access_show_hidden_entities($show_hidden);
+
+ //confirm all being disabled
+ $annotations = $group->getAnnotations(array(
+ 'limit' => $total,
+ ));
+ foreach ($annotations as $annotation) {
+ $this->assertTrue($annotation->enabled == 'no');
+ }
+
+ //delete group and annotations
+ $group->delete();
+ }
+
+ public function test_ElggXMLElement_does_not_load_external_entities() {
+ $elLast = libxml_disable_entity_loader(false);
+
+ // build payload that should trigger loading of external entity
+ $payload = file_get_contents(dirname(dirname(__FILE__)) . '/test_files/xxe/request.xml');
+ $path = realpath(dirname(dirname(__FILE__)) . '/test_files/xxe/external_entity.txt');
+ $path = str_replace('\\', '/', $path);
+ if ($path[0] != '/') {
+ $path = '/' . $path;
+ }
+ $path = 'file://' . $path;
+ $payload = sprintf($payload, $path);
+
+ // make sure we can actually this in this environment
+ $element = new SimpleXMLElement($payload);
+ $can_load_entity = preg_match('/secret/', (string)$element->methodName);
+
+ $this->skipUnless($can_load_entity, "XXE vulnerability cannot be tested on this system");
+
+ if ($can_load_entity) {
+ $el = new ElggXMLElement($payload);
+ $chidren = $el->getChildren();
+ $content = $chidren[0]->getContent();
+ $this->assertNoPattern('/secret/', $content);
+ }
+
+ libxml_disable_entity_loader($elLast);
+ }
}
diff --git a/engine/tests/test_files/output/autop/block-a.exp.norun.html b/engine/tests/test_files/output/autop/block-a.exp.norun.html
new file mode 100644
index 000000000..addf29dec
--- /dev/null
+++ b/engine/tests/test_files/output/autop/block-a.exp.norun.html
@@ -0,0 +1,6 @@
+
+<p>HTML5 allows A to contain block-level content</p>
+<a href="foo"><h3>A treated as block</h3>
+<p>Read more</p>
+</a>
+<p><a href="foo">A treated as<br /> inline</a></p>
diff --git a/engine/tests/test_files/output/autop/block-a.in.norun.html b/engine/tests/test_files/output/autop/block-a.in.norun.html
new file mode 100644
index 000000000..fc2dac43a
--- /dev/null
+++ b/engine/tests/test_files/output/autop/block-a.in.norun.html
@@ -0,0 +1,9 @@
+HTML5 allows A to contain block-level content
+<a href="foo">
+
+ <h3>A treated as block</h3>
+
+ Read more
+</a>
+<a href="foo">A treated as
+ inline</a>
diff --git a/engine/tests/test_files/output/autop/domdoc_exp.html b/engine/tests/test_files/output/autop/domdoc_exp.html
new file mode 100644
index 000000000..8480c1083
--- /dev/null
+++ b/engine/tests/test_files/output/autop/domdoc_exp.html
@@ -0,0 +1,46 @@
+›
+Vietnamese - Tiếng Việt
+
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em> <span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+ <p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul><li>Unordered</li>
+ <li>List</li>
+</ul><p>Paragraph between lists</p>
+<ol><li>Ordered</li>
+ <li>List</li>
+</ol><p>Paragraph between lists</p>
+<ul><li>OL list</li>
+ <li>nested<ol><li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul><p>Paragraph between lists</p>
+<table border="0"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=0</td>
+ </tr></tbody></table><p>Paragraph</p>
+<ol><li>UL list</li>
+ <li>nested
+ <ul><li>inside a</li>
+ <li>OL list</li>
+ </ul></li>
+</ol><p>Paragraph between tables</p>
+<table border="1" cellpadding="5"><tbody><tr><td>Table with border=1</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>cellpadding = 5</td>
+ </tr></tbody></table><p>Paragraph between tables</p>
+<table border="2"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=2</td>
+ </tr></tbody></table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/domdoc_in.html b/engine/tests/test_files/output/autop/domdoc_in.html
new file mode 100644
index 000000000..4c465b435
--- /dev/null
+++ b/engine/tests/test_files/output/autop/domdoc_in.html
@@ -0,0 +1,80 @@
+&#8250;
+&nbsp;
+Vietnamese - Tiếng Việt
+
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+ <p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul>
+ <li>Unordered</li>
+ <li>List</li>
+</ul>
+<p>Paragraph between lists</p>
+<ol>
+ <li>Ordered</li>
+ <li>List</li>
+</ol>
+<p>Paragraph between lists</p>
+<ul>
+ <li>OL list</li>
+ <li>nested<ol>
+ <li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+<p>Paragraph between lists</p>
+<table border="0">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=0</td>
+ </tr>
+ </tbody>
+</table>
+<p>Paragraph</p>
+<ol>
+ <li>UL list</li>
+ <li>nested
+ <ul>
+ <li>inside a</li>
+ <li>OL list</li>
+ </ul>
+ </li>
+</ol>
+<p>Paragraph between tables</p>
+<table border="1" cellpadding="5">
+ <tbody>
+ <tr>
+ <td>Table with border=1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>cellpadding = 5</td>
+ </tr>
+ </tbody>
+</table>
+<p>Paragraph between tables</p>
+<table border="2">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=2</td>
+ </tr>
+ </tbody>
+</table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/typical-post.exp.html b/engine/tests/test_files/output/autop/typical-post.exp.html
new file mode 100644
index 000000000..f9d75a114
--- /dev/null
+++ b/engine/tests/test_files/output/autop/typical-post.exp.html
@@ -0,0 +1,84 @@
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<p><img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150">Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.</p>
+
+<p>Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.</p>
+<h3>Donec at massa ante, sagittis fermentum urna.</h3><blockquote>
+<p>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.</p>
+
+<p>[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150">[/caption]</p>
+
+<p>Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.</p>
+
+<p>Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</p>
+</blockquote>
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.</p>
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre><ul><li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+<p>Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.</p>
+
+<p><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<p><img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150">Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.</p>
+
+<p>Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.</p>
+<h3>Donec at massa ante, sagittis fermentum urna.</h3><blockquote>
+<p>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.</p>
+
+<p>[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150">[/caption]</p>
+
+<p>Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.</p>
+
+<p>Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</p>
+</blockquote>
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.</p>
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre><ul><li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+<p>Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.</p>
+
+<p><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
diff --git a/engine/tests/test_files/output/autop/typical-post.in.html b/engine/tests/test_files/output/autop/typical-post.in.html
new file mode 100644
index 000000000..6e4984cc4
--- /dev/null
+++ b/engine/tests/test_files/output/autop/typical-post.in.html
@@ -0,0 +1,89 @@
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150" />Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.
+
+Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.
+<h3>Donec at massa ante, sagittis fermentum urna.</h3>
+<blockquote>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.
+
+[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150" />[/caption]
+
+Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.
+
+Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</blockquote>
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.
+
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre>
+<ul>
+ <li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.
+
+<object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object>
+
+<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
+<img class="alignright size-thumbnail wp-image-905" title="Surest Things mixing session in Adobe Audition" src="http://www.mrclay.org/wp-content/uploads/2010/09/surestThings_audition-150x150.png" alt="screenshot of Audition mixing session" width="150" height="150" />Vivamus enim ante, <em>mattis eget imperdiet nec, pharetra vel velit.</em> Sed at euismod nibh. Praesent lacus tellus, <a href="http://google.com/">posuere et convallis</a> a, <strong>mollis et tellus. Suspendisse potenti</strong>. Phasellus tincidunt dignissim est eget mattis. Vestibulum lacinia <del>condimentum tellus, non vestibulum erat dapibus</del> quis. Aliquam arcu nibh, viverra adipiscing eleifend quis, pretium vitae ipsum.
+
+Curabitur turpis ante, <span style="color: #993300;">congue ac dapibus quis, vehicula ac orci.</span> Nunc luctus neque non massa porta sed pharetra ante accumsan. <a href="http://google.com/">Nam suscipit</a> risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor.
+<h3>Donec at massa ante, sagittis fermentum urna.</h3>
+<blockquote>Mauris volutpat est id massa volutpat lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in nisl mauris. In aliquet pretium nisl, vel convallis neque cursus vitae. Curabitur id mauris in urna gravida ornare.
+
+[caption id="attachment_719" align="alignleft" width="150" caption="Ibanez AGB140 Bass"]<img class="size-thumbnail wp-image-719" title="Ibanez AGB140 Bass" src="http://www.mrclay.org/wp-content/uploads/2010/04/agb140-e1271773766573-150x150.jpg" alt="Ibanez AGB140 Bass" width="150" height="150" />[/caption]
+
+Aenean <a href="http://google.com/">aliquet cursus purus sed gravida. Cras auctor euismod justo, ac dictum purus facilisis dignissim.</a> Quisque facilisis porta sem, ac suscipit quam molestie nec. Pellentesque quis hendrerit enim. Vivamus tempor erat diam. Sed eu felis nunc. Cras posuere lorem commodo turpis mollis sagittis. Mauris lobortis nunc felis.
+
+Maecenas elit lorem, varius sed condimentum ac, cursus et magna. Nam ut massa id augue consectetur porttitor eleifend in nunc. Curabitur cursus varius dictum. Vestibulum vel justo et neque tempus placerat a vel sapien.</blockquote>
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim ante, mattis eget imperdiet nec, <a href="http://google.com/">pharetra </a>vel velit. Sed at euismod nibh. Praesent lacus tellus, posuere et convallis a, mollis et tellus.
+
+<pre><code>&lt;?php
+class DataTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provider
+ */
+ public function testAdd($a, $b, $c)
+ {
+ $this-&gt;assertEquals($c, $a + $b);
+ }
+
+ public function provider()
+ {
+ return array(
+ array(0, 0, 0),
+ array(0, 1, 1),
+ array(1, 0, 1),
+ array(1, 1, 3)
+ );
+ }
+}</code></pre>
+<ul>
+ <li>Suspendisse potenti. Phasellus tincidunt dignissim est eget mattis.</li>
+ <li>Vestibulum lacinia condimentum tellus, non vestibulum erat dapibus quis.</li>
+ <li>Aliquam arcu nibh, <a href="http://google.com/">viverra</a> adipiscing eleifend quis, pretium vitae ipsum.</li>
+ <li>Curabitur turpis ante, congue ac <a href="http://google.com/">dapibus quis</a>, vehicula ac orci.</li>
+</ul>
+Nunc luctus neque non massa porta sed pharetra ante accumsan. Nam suscipit risus quis libero convallis viverra. Ut at arcu enim, vel pharetra dolor. Donec at massa ante, sagittis fermentum urna.
+
+<object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zW9YOMaVTFI?fs=1&amp;hl=en_US" allowfullscreen="true" allowscriptaccess="always"></embed></object> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wp-welcome.exp.html b/engine/tests/test_files/output/autop/wp-welcome.exp.html
new file mode 100644
index 000000000..2f612e3dd
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wp-welcome.exp.html
@@ -0,0 +1,22 @@
+
+<p>Welcome to WordPress! This post contains important information. After you read it, you can make it private to hide it from visitors but still have the information handy for future reference.</p>
+
+<p>First things first:</p>
+<ul><li><a href="%1%24s" title="Subscribe to the WordPress mailing list for Release Notifications">Subscribe to the WordPress mailing list for release notifications</a></li>
+</ul>
+<p>As a subscriber, you will receive an email every time an update is available (and only then). This will make it easier to keep your site up to date, and secure from evildoers.<br />When a new version is released, <a href="%2%24s" title="If you are already logged in, this will take you directly to the Dashboard">log in to the Dashboard</a> and follow the instructions.<br />Upgrading is a couple of clicks!</p>
+
+<p>Then you can start enjoying the WordPress experience:</p>
+<ul><li>Edit your personal information at <a href="%3%24s" title="Edit settings like your password, your display name and your contact information">Users &#8250; Your Profile</a></li>
+ <li>Start publishing at <a href="%4%24s" title="Create a new post">Posts &#8250; Add New</a> and at <a href="%5%24s" title="Create a new page">Pages &#8250; Add New</a></li>
+ <li>Browse and install plugins at <a href="%6%24s" title="Browse and install plugins at the official WordPress repository directly from your Dashboard">Plugins &#8250; Add New</a></li>
+ <li>Browse and install themes at <a href="%7%24s" title="Browse and install themes at the official WordPress repository directly from your Dashboard">Appearance &#8250; Add New Themes</a></li>
+ <li>Modify and prettify your website&#8217;s links at <a href="%8%24s" title="For example, select a link structure like: http://example.com/1999/12/post-name">Settings &#8250; Permalinks</a></li>
+ <li>Import content from another system or WordPress site at <a href="%9%24s" title="WordPress comes with importers for the most common publishing systems">Tools &#8250; Import</a></li>
+ <li>Find answers to your questions at the <a href="%10%24s" title="The official WordPress documentation, maintained by the WordPress community">WordPress Codex</a></li>
+</ul>
+<p>To keep this post for reference, <a href="%11%24s" title="Click to edit the content and settings of this post">click to edit it</a>, go to the Publish box and change its Visibility from Public to Private.</p>
+
+<p>Thank you for selecting WordPress. We wish you happy publishing!</p>
+
+<p>PS. Not yet subscribed for update notifications? <a href="%1%24s" title="Subscribe to the WordPress mailing list for Release Notifications">Do it now!</a></p>
diff --git a/engine/tests/test_files/output/autop/wp-welcome.in.html b/engine/tests/test_files/output/autop/wp-welcome.in.html
new file mode 100644
index 000000000..338ede73f
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wp-welcome.in.html
@@ -0,0 +1,25 @@
+Welcome to WordPress! This post contains important information. After you read it, you can make it private to hide it from visitors but still have the information handy for future reference.
+
+First things first:
+<ul>
+ <li><a href="%1$s" title="Subscribe to the WordPress mailing list for Release Notifications">Subscribe to the WordPress mailing list for release notifications</a></li>
+</ul>
+As a subscriber, you will receive an email every time an update is available (and only then). This will make it easier to keep your site up to date, and secure from evildoers.
+When a new version is released, <a href="%2$s" title="If you are already logged in, this will take you directly to the Dashboard">log in to the Dashboard</a> and follow the instructions.
+Upgrading is a couple of clicks!
+
+Then you can start enjoying the WordPress experience:
+<ul>
+ <li>Edit your personal information at <a href="%3$s" title="Edit settings like your password, your display name and your contact information">Users &#8250; Your Profile</a></li>
+ <li>Start publishing at <a href="%4$s" title="Create a new post">Posts &#8250; Add New</a> and at <a href="%5$s" title="Create a new page">Pages &#8250; Add New</a></li>
+ <li>Browse and install plugins at <a href="%6$s" title="Browse and install plugins at the official WordPress repository directly from your Dashboard">Plugins &#8250; Add New</a></li>
+ <li>Browse and install themes at <a href="%7$s" title="Browse and install themes at the official WordPress repository directly from your Dashboard">Appearance &#8250; Add New Themes</a></li>
+ <li>Modify and prettify your website&#8217;s links at <a href="%8$s" title="For example, select a link structure like: http://example.com/1999/12/post-name">Settings &#8250; Permalinks</a></li>
+ <li>Import content from another system or WordPress site at <a href="%9$s" title="WordPress comes with importers for the most common publishing systems">Tools &#8250; Import</a></li>
+ <li>Find answers to your questions at the <a href="%10$s" title="The official WordPress documentation, maintained by the WordPress community">WordPress Codex</a></li>
+</ul>
+To keep this post for reference, <a href="%11$s" title="Click to edit the content and settings of this post">click to edit it</a>, go to the Publish box and change its Visibility from Public to Private.
+
+Thank you for selecting WordPress. We wish you happy publishing!
+
+PS. Not yet subscribed for update notifications? <a href="%1$s" title="Subscribe to the WordPress mailing list for Release Notifications">Do it now!</a>
diff --git a/engine/tests/test_files/output/autop/wpautop-fails.exp.html b/engine/tests/test_files/output/autop/wpautop-fails.exp.html
new file mode 100644
index 000000000..d018db4ff
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wpautop-fails.exp.html
@@ -0,0 +1,31 @@
+
+<p>paragraph</p>
+
+<p>paragraph</p>
+<div class="whatever"><blockquote>
+<p>paragraph</p>
+</blockquote>
+<p>line</p>
+</div>
+<p>paragraph</p>
+<ul><li>line</li>
+<li>paragraph
+
+paragraph</li>
+</ul>
+<p>paragraph<br />line<br />line</p>
+<pre>Honor
+this whitespace
+</pre>
+<p>paragraph</p>
+<style><!--
+Do not alter!
+--></style>
+<p>paragraph <!-- do not alter --></p>
+<dl><dt>term</dt> <dd>paragraph
+
+<a href="xx"> <img src="yy"></a>
+
+paragraph</dd> </dl><div><a href="xx"> <img src="yy"></a></div>
+<p>Hello <a href="link"><br /><br />World</a></p>
+<p id="abc">Paragraph</p><div>Line</div> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wpautop-fails.in.html b/engine/tests/test_files/output/autop/wpautop-fails.in.html
new file mode 100644
index 000000000..9aa24be59
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wpautop-fails.in.html
@@ -0,0 +1,41 @@
+
+paragraph
+
+paragraph <div class="whatever"><blockquote>
+ paragraph
+ </blockquote>
+ line
+</div>
+
+paragraph
+<ul>
+<li>line</li>
+<li>paragraph
+
+paragraph</li>
+</ul>
+paragraph
+line<br>
+ line
+<pre>Honor
+this whitespace
+</pre>
+paragraph
+<style><!--
+Do not alter!
+--></style>
+paragraph <!-- do not alter -->
+<dl> <dt>term</dt> <dd>paragraph
+
+<a href="xx"> <img src="yy" /> </a>
+
+paragraph</dd> </dl>
+<div><a href="xx"> <img src="yy" /> </a></div>
+
+Hello <a href="link">
+
+World</a>
+
+<p id="abc">Paragraph</p>
+
+<div>Line</div> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wysiwyg-test.exp.html b/engine/tests/test_files/output/autop/wysiwyg-test.exp.html
new file mode 100644
index 000000000..1f23d6154
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wysiwyg-test.exp.html
@@ -0,0 +1,51 @@
+
+<p>&nbps;<br />&#8820;</p>
+<h1>h1</h1>
+<p>Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span></p>
+<h2>h2</h2>
+<p>Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span></p>
+<h3>h3</h3>
+<p>Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span></p>
+<blockquote>
+<p>Blockquoted paragraph</p>
+</blockquote>
+<p>Paragraph following blockquote</p>
+<ul><li>Unordered</li>
+ <li>List</li>
+</ul>
+<p>Paragraph between lists</p>
+<ol><li>Ordered</li>
+ <li>List</li>
+</ol>
+<p>Paragraph between lists</p>
+<ul><li>OL list</li>
+ <li>nested
+ <ol><li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+<p>Paragraph between lists</p>
+<table border="0"><tbody><tr></tr><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=0</td>
+ </tr></tbody></table>
+<p>Paragraph</p>
+<ol><li>UL list</li>
+ <li>nested
+ <ul><li>inside a</li>
+ <li>OL list</li>
+ </ul></li>
+</ol>
+<p>Paragraph between tables</p>
+<table border="1" cellpadding="5"><tbody><tr><td>Table with border=1</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>cellpadding = 5</td>
+ </tr></tbody></table>
+<p>Paragraph between tables</p>
+<table border="2"><tbody><tr><td>Table with</td>
+ <td></td>
+ </tr><tr><td></td>
+ <td>border=2</td>
+ </tr></tbody></table> \ No newline at end of file
diff --git a/engine/tests/test_files/output/autop/wysiwyg-test.in.html b/engine/tests/test_files/output/autop/wysiwyg-test.in.html
new file mode 100644
index 000000000..733b0e2ec
--- /dev/null
+++ b/engine/tests/test_files/output/autop/wysiwyg-test.in.html
@@ -0,0 +1,79 @@
+&nbps;
+&#8820;
+<h1>h1</h1>
+Paragraph <a href="http://google.com/">link</a> <strong>Bold</strong> <em>italic</em> <em><strong>bolditalic</strong></em>&nbsp;<span style="background-color: #ffff00; "></span>
+<h2>h2</h2>
+Paragraph <span style="font-size: xx-small;">size1</span> <span style="font-size: x-small;">size2</span> <span style="font-size: medium;">size4</span>
+<h3>h3</h3>
+Paragraph <span style="text-decoration: underline;">underline</span> <span style="text-decoration: line-through;">strikethrough</span> <span style="color: #ff0000;">color</span> <span style="background-color: #ffff00; ">background</span>
+<blockquote>Blockquoted paragraph</blockquote>
+Paragraph following blockquote
+<ul>
+ <li>Unordered</li>
+ <li>List</li>
+</ul>
+Paragraph between lists
+<ol>
+ <li>Ordered</li>
+ <li>List</li>
+</ol>
+Paragraph between lists
+<ul>
+ <li>OL list</li>
+ <li>nested
+ <ol>
+ <li>inside a</li>
+ <li>UL list</li>
+ </ol></li>
+</ul>
+Paragraph between lists
+<table border="0">
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=0</td>
+ </tr>
+ </tbody>
+</table>
+Paragraph
+<ol>
+ <li>UL list</li>
+ <li>nested
+ <ul>
+ <li>inside a</li>
+ <li>OL list</li>
+ </ul>
+ </li>
+</ol>
+Paragraph between tables
+<table border="1" cellpadding="5">
+ <tbody>
+ <tr>
+ <td>Table with border=1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>cellpadding = 5</td>
+ </tr>
+ </tbody>
+</table>
+Paragraph between tables
+<table border="2">
+ <tbody>
+ <tr>
+ <td>Table with</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>border=2</td>
+ </tr>
+ </tbody>
+</table> \ No newline at end of file
diff --git a/engine/tests/test_files/plugin_18/manifest.xml b/engine/tests/test_files/plugin_18/manifest.xml
index 9654b6422..c8b407511 100644
--- a/engine/tests/test_files/plugin_18/manifest.xml
+++ b/engine/tests/test_files/plugin_18/manifest.xml
@@ -6,6 +6,9 @@
<blurb>A concise description.</blurb>
<description>A longer, more interesting description.</description>
<website>http://www.elgg.org/</website>
+ <repository>https://github.com/Elgg/Elgg</repository>
+ <bugtracker>https://github.com/elgg/elgg/issues</bugtracker>
+ <donations>http://elgg.org/supporter.php</donations>
<copyright>(C) Elgg Foundation 2011</copyright>
<license>GNU General Public License version 2</license>
diff --git a/engine/tests/test_files/xxe/external_entity.txt b/engine/tests/test_files/xxe/external_entity.txt
new file mode 100644
index 000000000..536aca34d
--- /dev/null
+++ b/engine/tests/test_files/xxe/external_entity.txt
@@ -0,0 +1 @@
+secret \ No newline at end of file
diff --git a/engine/tests/test_files/xxe/request.xml b/engine/tests/test_files/xxe/request.xml
new file mode 100644
index 000000000..4390f9db2
--- /dev/null
+++ b/engine/tests/test_files/xxe/request.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ELEMENT methodName ANY >
+<!ENTITY xxe SYSTEM "%s" >
+]>
+<methodCall>
+ <methodName>test&xxe;test</methodName>
+</methodCall>
diff --git a/gpl-plugins b/gpl-plugins
new file mode 100644
index 000000000..925ca6ec2
--- /dev/null
+++ b/gpl-plugins
@@ -0,0 +1,20 @@
+videolist
+dokuwiki
+friendrequest
+opensearch
+identica
+languages
+registrationterms
+custom_index_widgets
+river_privacy
+habitorio_theme
+lightpics
+colorbox
+event_calendar
+openid_client
+openid_server
+openid_api
+beechat
+simplepie
+profile_widgets
+html5
diff --git a/htaccess_dist b/htaccess_dist
index bf163c69e..44d129475 100644
--- a/htaccess_dist
+++ b/htaccess_dist
@@ -1,14 +1,11 @@
# Elgg htaccess directives
-# Copyright Curverider Ltd 2008-2009
-# License http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
-# Link http://elgg.org/
<Files "htaccess_dist">
order allow,deny
deny from all
</Files>
-# Don't listing directory
+# Don't allow listing directories
Options -Indexes
# Follow symbolic links
@@ -17,13 +14,28 @@ Options +FollowSymLinks
# Default handler
DirectoryIndex index.php
-# Turn on expiry
+
+############################
+# BROWSER CACHING
+
+# The expires module controls the Expires and Cache-Control headers. Elgg sets
+# these for dynamically generated files so this is just for static files.
<IfModule mod_expires.c>
ExpiresActive On
- ExpiresDefault "access plus 10 years"
+ ExpiresDefault "access plus 1 year"
</IfModule>
-# php 5, apache 1 and 2
+# Conditional requests are controlled through Last-Modified and ETag headers.
+# Elgg sets these on dynamically generated cacheable files so this is just for
+# static files. Note: Apache sends Last-Modified by default on static files so
+# I don't think we need to be sending ETag for these files.
+<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|css|ico)$">
+ FileETag MTime Size
+</FilesMatch>
+
+
+############################
+# PHP SETTINGS
<IfModule mod_php5.c>
# limit the maximum memory consumed by the php script to 64 MB
php_value memory_limit 64M
@@ -37,6 +49,10 @@ DirectoryIndex index.php
php_value display_errors 0
</IfModule>
+
+############################
+# COMPRESSION
+
# Turn on mod_gzip if available
<IfModule mod_gzip.c>
mod_gzip_on yes
@@ -75,13 +91,9 @@ DirectoryIndex index.php
</IfModule>
-# Configure ETags
-<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|ico)$">
- FileETag MTime Size
-</FilesMatch>
-# Add Proper MIME-Type for Favicon to allow expires to work
-AddType image/vnd.microsoft.icon .ico
+############################
+# REWRITE RULES
<IfModule mod_rewrite.c>
@@ -100,36 +112,44 @@ RewriteEngine on
#
#RewriteBase /
+
+# If your users receive the message "Sorry, logging in from a different domain is not permitted"
+# you must make sure your login form is served from the same hostname as your site pages.
+# See http://docs.elgg.org/wiki/Login_token_mismatch_error for more info.
+#
+# If you must add RewriteRules to change hostname, add them directly below (above all the others)
+
+
# In for backwards compatibility
-RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING}
-RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING}
-RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING} [L]
+RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING} [L]
+RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1 [L]
-RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING}
+RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING} [L]
-RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING}
+RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING} [L]
-RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING}
+RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING} [L]
-RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2
-RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2 [L]
+RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4 [L]
-RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php
-RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php
+RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php [L]
+RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php [L]
# rule for rewrite module test during install - can be removed after installation
-RewriteRule ^rewrite.php$ install.php
+RewriteRule ^rewrite.php$ install.php [L]
# Everything else that isn't a file gets routed through the page handler
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
-RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA]
+RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
-RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA]
+RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA,L]
</IfModule>
diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php
index 03c84a43e..78cdde90f 100644
--- a/install/ElggInstaller.php
+++ b/install/ElggInstaller.php
@@ -157,7 +157,7 @@ class ElggInstaller {
'password',
);
foreach ($requiredParams as $key) {
- if (!array_key_exists($key, $params)) {
+ if (empty($params[$key])) {
$msg = elgg_echo('install:error:requiredfield', array($key));
throw new InstallationException($msg);
}
@@ -1148,11 +1148,21 @@ class ElggInstaller {
foreach ($formVars as $field => $info) {
if ($info['required'] == TRUE && !$submissionVars[$field]) {
$name = elgg_echo("install:database:label:$field");
- register_error("$name is required");
+ register_error(elgg_echo('install:error:requiredfield', array($name)));
return FALSE;
}
}
+ // according to postgres documentation: SQL identifiers and key words must
+ // begin with a letter (a-z, but also letters with diacritical marks and
+ // non-Latin letters) or an underscore (_). Subsequent characters in an
+ // identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($).
+ // Refs #4994
+ if (!preg_match("/^[a-zA-Z_][\w]*$/", $submissionVars['dbprefix'])) {
+ register_error(elgg_echo('install:error:database_prefix'));
+ return FALSE;
+ }
+
return $this->checkDatabaseSettings(
$submissionVars['dbuser'],
$submissionVars['dbpassword'],
@@ -1404,7 +1414,7 @@ class ElggInstaller {
$submissionVars['wwwroot'] = sanitise_filepath($submissionVars['wwwroot']);
$site = new ElggSite();
- $site->name = $submissionVars['sitename'];
+ $site->name = strip_tags($submissionVars['sitename']);
$site->url = $submissionVars['wwwroot'];
$site->access_id = ACCESS_PUBLIC;
$site->email = $submissionVars['siteemail'];
@@ -1519,22 +1529,27 @@ class ElggInstaller {
protected function createAdminAccount($submissionVars, $login = FALSE) {
global $CONFIG;
- $guid = register_user(
- $submissionVars['username'],
- $submissionVars['password1'],
- $submissionVars['displayname'],
- $submissionVars['email']
- );
+ try {
+ $guid = register_user(
+ $submissionVars['username'],
+ $submissionVars['password1'],
+ $submissionVars['displayname'],
+ $submissionVars['email']
+ );
+ } catch (Exception $e) {
+ register_error($e->getMessage());
+ return false;
+ }
if (!$guid) {
register_error(elgg_echo('install:admin:cannot_create'));
- return FALSE;
+ return false;
}
$user = get_entity($guid);
if (!$user) {
register_error(elgg_echo('install:error:loadadmin'));
- return FALSE;
+ return false;
}
elgg_set_ignore_access(TRUE);
@@ -1543,7 +1558,7 @@ class ElggInstaller {
} else {
datalist_set('admin_registered', 1);
}
- elgg_set_ignore_access(FALSE);
+ elgg_set_ignore_access(false);
// add validation data to satisfy user validation plugins
create_metadata($guid, 'validated', TRUE, '', 0, ACCESS_PUBLIC);
diff --git a/install/ElggRewriteTester.php b/install/ElggRewriteTester.php
index c01510f60..ab68da2b7 100644
--- a/install/ElggRewriteTester.php
+++ b/install/ElggRewriteTester.php
@@ -154,6 +154,8 @@ class ElggRewriteTester {
if ($this->serverSupportsRemoteRead == FALSE) {
$msg = elgg_echo('install:warning:rewrite:unknown', array($url));
+ $msg .= elgg_view('install/js_rewrite_check', array('url' => $url));
+
return array(
'severity' => 'warning',
'message' => $msg,
@@ -165,6 +167,8 @@ class ElggRewriteTester {
$msg = "$serverString\n\n";
if (!isset($this->htaccessIssue)) {
$msg .= elgg_echo('install:error:rewrite:allowoverride');
+ $msg .= elgg_view('install/js_rewrite_check', array('url' => $url));
+
return array(
'severity' => 'failure',
'message' => $msg,
diff --git a/install/cli/sample_installer.php b/install/cli/sample_installer.php
index 954169a6a..a51f9aae4 100644
--- a/install/cli/sample_installer.php
+++ b/install/cli/sample_installer.php
@@ -1,12 +1,13 @@
<?php
+
/**
* Sample cli installer script
*/
-require_once(dirname(dirname(__FILE__)) . "/ElggInstaller.php");
-
-$installer = new ElggInstaller();
+// change to true to run this script. Change back to false when done.
+$enabled = false;
+// none of the following may be empty
$params = array(
// database parameters
'dbuser' => '',
@@ -26,5 +27,41 @@ $params = array(
'password' => '',
);
+
+// Do not edit below this line. //////////////////////////////
+
+
+if (!$enabled) {
+ echo "To enable this script, change \$enabled to true.\n";
+ echo "You *must* disable this script after a successful installation.\n";
+ exit;
+}
+
+if (PHP_SAPI !== 'cli') {
+ echo "You must use the command line to run this script.";
+ exit;
+}
+
+require_once(dirname(dirname(__FILE__)) . "/ElggInstaller.php");
+
+$installer = new ElggInstaller();
+
// install and create the .htaccess file
$installer->batchInstall($params, TRUE);
+
+// at this point installation has completed (otherwise an exception halted execution).
+// try to rewrite the script to disable it.
+if (is_writable(__FILE__)) {
+ $code = file_get_contents(__FILE__);
+ if (preg_match('~\\$enabled\\s*=\\s*(true|1)\\s*;~i', $code)) {
+ // looks safe to rewrite
+ $code = preg_replace('~\\$enabled\\s*=\\s*(true|1)\\s*;~i', '$enabled = false;', $code);
+ file_put_contents(__FILE__, $code);
+
+ echo "\nNote: This script has been disabled for your safety.\n";
+ exit;
+ }
+}
+
+echo "\nWarning: You *must* disable this script by setting \$enabled = false;.\n";
+echo "Leaving this script enabled could endanger your installation.\n";
diff --git a/install/js/install.js b/install/js/install.js
index 49b2be10c..37e5b0dc3 100644
--- a/install/js/install.js
+++ b/install/js/install.js
@@ -19,3 +19,24 @@ $(function() {
}
});
});
+
+elgg = {
+ installer: {}
+};
+
+/**
+ * Check the rewrite address for "success" and then allows the installation to proceed.
+ */
+elgg.installer.rewriteTest = function(url, success_msg, nextURL) {
+ $.ajax(url, {
+ success: function(data, status, xhr) {
+ if (data == 'success') {
+ $('.elgg-require-rewrite li').attr('class', 'pass');
+ $('.elgg-require-rewrite li').html('<p>' + success_msg + '</p>');
+ $('.elgg-install-nav a.elgg-state-disabled')
+ .removeClass('elgg-state-disabled')
+ .attr('href', nextURL);
+ }
+ }
+ });
+}
diff --git a/install/languages/en.php b/install/languages/en.php
index 3a692e020..531379b1e 100644
--- a/install/languages/en.php
+++ b/install/languages/en.php
@@ -124,6 +124,7 @@ If you are ready to proceed, click the Next button.",
'install:error:htaccess' => 'Unable to create an .htaccess',
'install:error:settings' => 'Unable to create the settings file',
'install:error:databasesettings' => 'Unable to connect to the database with these settings.',
+ 'install:error:database_prefix' => 'Invalid characters in database prefix',
'install:error:oldmysql' => 'MySQL must be version 5.0 or above. Your server is using %s.',
'install:error:nodatabase' => 'Unable to use database %s. It may not exist.',
'install:error:cannotloadtables' => 'Cannot load the database tables',
@@ -131,7 +132,7 @@ If you are ready to proceed, click the Next button.",
'install:error:readsettingsphp' => 'Unable to read engine/settings.example.php',
'install:error:writesettingphp' => 'Unable to write engine/settings.php',
'install:error:requiredfield' => '%s is required',
- 'install:error:relative_path' => 'We don\'t think "%s" is an absoluate path for your data directory',
+ 'install:error:relative_path' => 'We don\'t think "%s" is an absolute path for your data directory',
'install:error:datadirectoryexists' => 'Your data directory %s does not exist.',
'install:error:writedatadirectory' => 'Your data directory %s is not writable by the web server.',
'install:error:locationdatadirectory' => 'Your data directory %s must be outside of your install path for security.',
@@ -154,7 +155,7 @@ If you are ready to proceed, click the Next button.",
'install:error:rewrite:htaccess:cannot_copy' => 'A unknown error occurred while creating the .htaccess file. You need to manually copy htaccess_dist to .htaccess in Elgg\'s directory.',
'install:error:rewrite:altserver' => 'The rewrite rules test failed. You need to configure your web server with Elgg\'s rewrite rules and try again.',
'install:error:rewrite:unknown' => 'Oof. We couldn\'t figure out what kind of web server is running on your server and it failed the rewrite rules. We cannot offer any specific advice. Please check the troubleshooting link.',
- 'install:warning:rewrite:unknown' => 'Your server does not support automatic testing of the rewrite rules. You can continue the installation, but you may experience problems with your site. You can manually test the rewrite rules by clicking this link: <a href="%s" target="_blank">test</a>. You will see the word success if the rules are working.',
+ 'install:warning:rewrite:unknown' => 'Your server does not support automatic testing of the rewrite rules and your browser does not support checking via JavaScript. You can continue the installation, but you may experience problems with your site. You can manually test the rewrite rules by clicking this link: <a href="%s" target="_blank">test</a>. You will see the word success if the rules are working.',
);
add_translation("en", $english);
diff --git a/js/lib/elgglib.js b/js/lib/elgglib.js
index 81209ebd0..a8e187f1d 100644
--- a/js/lib/elgglib.js
+++ b/js/lib/elgglib.js
@@ -283,7 +283,7 @@ elgg.normalize_url = function(url) {
}
// 'javascript:'
- else if (url.indexOf('javascript:') === 0) {
+ else if (url.indexOf('javascript:') === 0 || url.indexOf('mailto:') === 0 ) {
return url;
}
@@ -347,8 +347,12 @@ elgg.system_messages = function(msgs, delay, type) {
msgs.forEach(appendMessage);
- $(messages_html.join('')).appendTo(systemMessages)
- .animate({opacity: '1.0'}, delay).fadeOut('slow');
+ if (type != 'error') {
+ $(messages_html.join('')).appendTo(systemMessages)
+ .animate({opacity: '1.0'}, delay).fadeOut('slow');
+ } else {
+ $(messages_html.join('')).appendTo(systemMessages);
+ }
};
/**
@@ -470,8 +474,8 @@ elgg.parse_str = function(string) {
re = /([^&=]+)=?([^&]*)/g;
while (result = re.exec(string)) {
- key = decodeURIComponent(result[1])
- value = decodeURIComponent(result[2])
+ key = decodeURIComponent(result[1].replace(/\+/g, ' '));
+ value = decodeURIComponent(result[2].replace(/\+/g, ' '));
params[key] = value;
}
diff --git a/js/lib/languages.js b/js/lib/languages.js
index a8ba72c31..d218cbc4f 100644
--- a/js/lib/languages.js
+++ b/js/lib/languages.js
@@ -4,6 +4,9 @@
*/
elgg.provide('elgg.config.translations');
+// default language - required by unit tests
+elgg.config.language = 'en';
+
/**
* Analagous to the php version. Merges translations for a
* given language into the current translations map.
@@ -25,13 +28,11 @@ elgg.reload_all_translations = function(language) {
var lang = language || elgg.get_language();
var url, options;
- if (elgg.config.simplecache_enabled) {
- url = 'cache/js/default/languages/' + lang + '.' + elgg.config.lastcache + '.js';
- options = {};
- } else {
- url = 'ajax/view/js/languages';
- options = {data: {language: lang}};
- }
+ url = 'ajax/view/js/languages';
+ options = {data: {language: lang}};
+ if (elgg.config.simplecache_enabled) {
+ options.data.lc = elgg.config.lastcache;
+ }
options['success'] = function(json) {
elgg.add_translation(lang, json);
diff --git a/js/lib/security.js b/js/lib/security.js
index 61aa1cfcd..9c12f8586 100644
--- a/js/lib/security.js
+++ b/js/lib/security.js
@@ -7,6 +7,8 @@ elgg.security.token = {};
elgg.security.tokenRefreshFailed = false;
+elgg.security.tokenRefreshTimer = null;
+
/**
* Sets the currently active security token and updates all forms and links on the current page.
*
@@ -30,31 +32,17 @@ elgg.security.setToken = function(json) {
};
/**
- * Security tokens time out, so lets refresh those every so often.
+ * Security tokens time out so we refresh those every so often.
*
- * @todo handle error and bad return data
+ * @private
*/
elgg.security.refreshToken = function() {
elgg.action('security/refreshtoken', function(data) {
-
- // @todo might want to move this to setToken() once http://trac.elgg.org/ticket/3127
- // is implemented. It's here right now to avoid soggy code.
- if (!data || !(data.output.__elgg_ts && data.output.__elgg_token)) {
- elgg.register_error(elgg.echo('js:security:token_refresh_failed', [elgg.get_site_url()]));
- elgg.security.tokenRefreshFailed = true;
-
- // don't setToken because we refresh every 5 minutes and tokens are good for 1
- // hour by default
- return;
- }
-
- // if had problems last time, let them know it's working now
- if (elgg.security.tokenRefreshFailed) {
- elgg.system_message(elgg.echo('js:security:token_refreshed', [elgg.get_site_url()]));
- elgg.security.tokenRefreshFailed = false;
+ if (data && data.output.__elgg_ts && data.output.__elgg_token) {
+ elgg.security.setToken(data.output);
+ } else {
+ clearInterval(elgg.security.tokenRefreshTimer);
}
-
- elgg.security.setToken(data.output);
});
};
@@ -112,9 +100,8 @@ elgg.security.addToken = function(data) {
};
elgg.security.init = function() {
- //refresh security token every 5 minutes
- //this is set in the js/elgg PHP view.
- setInterval(elgg.security.refreshToken, elgg.security.interval);
+ // elgg.security.interval is set in the js/elgg PHP view.
+ elgg.security.tokenRefreshTimer = setInterval(elgg.security.refreshToken, elgg.security.interval);
};
elgg.register_hook_handler('boot', 'system', elgg.security.init); \ No newline at end of file
diff --git a/js/lib/session.js b/js/lib/session.js
index fa3d60aa9..a8d52733c 100644
--- a/js/lib/session.js
+++ b/js/lib/session.js
@@ -14,9 +14,9 @@ elgg.provide('elgg.session');
* {string} options[domain]
* {boolean} options[secure]
*
- * @return {string} The value of the cookie, if only name is specified
+ * @return {string|undefined} The value of the cookie, if only name is specified. Undefined if no value set
*/
-elgg.session.cookie = function (name, value, options) {
+elgg.session.cookie = function(name, value, options) {
var cookies = [], cookie = [], i = 0, date, valid = true;
//elgg.session.cookie()
@@ -47,21 +47,19 @@ elgg.session.cookie = function (name, value, options) {
}
cookies.push(name + '=' + value);
-
- if (elgg.isNumber(options.expires)) {
- if (elgg.isNumber(options.expires)) {
- date = new Date();
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
- } else if (options.expires.toUTCString) {
- date = options.expires;
- } else {
- valid = false;
- }
-
- if (valid) {
- cookies.push('expires=' + date.toUTCString());
- }
- }
+
+ if (options.expires) {
+ if (elgg.isNumber(options.expires)) {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else if (options.expires.toUTCString) {
+ date = options.expires;
+ }
+
+ if (date) {
+ cookies.push('expires=' + date.toUTCString());
+ }
+ }
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
diff --git a/js/lib/ui.js b/js/lib/ui.js
index c26cbe389..413078b4f 100644
--- a/js/lib/ui.js
+++ b/js/lib/ui.js
@@ -10,7 +10,7 @@ elgg.ui.init = function () {
});
$('.elgg-system-messages li').animate({opacity: 0.9}, 6000);
- $('.elgg-system-messages li').fadeOut('slow');
+ $('.elgg-system-messages li.elgg-state-success').fadeOut('slow');
$('[rel=toggle]').live('click', elgg.ui.toggles);
@@ -257,7 +257,7 @@ elgg.ui.loginHandler = function(hook, type, params, options) {
* @return void
*/
elgg.ui.initDatePicker = function() {
- if ($('.elgg-input-date').length) {
+ var loadDatePicker = function() {
$('.elgg-input-date').datepicker({
// ISO-8601
dateFormat: 'yy-mm-dd',
@@ -273,9 +273,21 @@ elgg.ui.initDatePicker = function() {
}
}
});
+ };
+
+ if ($('.elgg-input-date').length && elgg.get_language() == 'en') {
+ loadDatePicker();
+ } else if ($('.elgg-input-date').length) {
+ elgg.get({
+ url: elgg.config.wwwroot + 'vendors/jquery/i18n/jquery.ui.datepicker-'+ elgg.get_language() +'.js',
+ dataType: "script",
+ cache: true,
+ success: loadDatePicker,
+ error: loadDatePicker // english language is already loaded.
+ });
}
};
elgg.register_hook_handler('init', 'system', elgg.ui.init);
elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);
-elgg.register_hook_handler('getOptions', 'ui.popup', elgg.ui.loginHandler); \ No newline at end of file
+elgg.register_hook_handler('getOptions', 'ui.popup', elgg.ui.loginHandler);
diff --git a/js/lib/ui.river.js b/js/lib/ui.river.js
index a56a664a4..c103fabb3 100644
--- a/js/lib/ui.river.js
+++ b/js/lib/ui.river.js
@@ -1,14 +1,14 @@
-elgg.provide('elgg.ui.river');
-
-elgg.ui.river.init = function() {
- $('#elgg-river-selector').change(function() {
- var url = window.location.href;
- if (window.location.search.length) {
- url = url.substring(0, url.indexOf('?'));
- }
- url += '?' + $(this).val();
- elgg.forward(url);
- });
-};
-
+elgg.provide('elgg.ui.river');
+
+elgg.ui.river.init = function() {
+ $('#elgg-river-selector').change(function() {
+ var url = window.location.href;
+ if (window.location.search.length) {
+ url = url.substring(0, url.indexOf('?'));
+ }
+ url += '?' + $(this).val();
+ elgg.forward(url);
+ });
+};
+
elgg.register_hook_handler('init', 'system', elgg.ui.river.init); \ No newline at end of file
diff --git a/js/lib/ui.userpicker.js b/js/lib/ui.userpicker.js
index 7298da114..669b84cdb 100644
--- a/js/lib/ui.userpicker.js
+++ b/js/lib/ui.userpicker.js
@@ -107,11 +107,11 @@ elgg.userpicker.viewUser = function(info) {
* @return Object
*/
elgg.userpicker.getSearchParams = function(obj) {
- if (obj.element.siblings('[name=match_on]').attr('checked')) {
+ if (obj.element.parent('.elgg-user-picker').find('input[name=match_on]').attr('checked')) {
return {'match_on[]': 'friends', 'term' : obj.term};
} else {
return {'match_on[]': 'users', 'term' : obj.term};
}
};
-elgg.register_hook_handler('init', 'system', elgg.userpicker.init); \ No newline at end of file
+elgg.register_hook_handler('init', 'system', elgg.userpicker.init);
diff --git a/js/lib/ui.widgets.js b/js/lib/ui.widgets.js
index b7d4b2fe4..26020bb4b 100644
--- a/js/lib/ui.widgets.js
+++ b/js/lib/ui.widgets.js
@@ -58,6 +58,7 @@ elgg.ui.widgets.add = function(event) {
handler: type,
owner_guid: elgg.get_page_owner_guid(),
context: $("input[name='widget_context']").val(),
+ show_access: $("input[name='show_access']").val(),
default_widgets: $("input[name='default_widgets']").val() || 0
},
success: function(json) {
diff --git a/js/tests/ElggLibTest.js b/js/tests/ElggLibTest.js
index a29ebf743..bd39e7fb3 100644
--- a/js/tests/ElggLibTest.js
+++ b/js/tests/ElggLibTest.js
@@ -78,6 +78,7 @@ ElggLibTest.prototype.testNormalizeUrl = function() {
['https://example.com', 'https://example.com'],
['http://example-time.com', 'http://example-time.com'],
['//example.com', '//example.com'],
+ ['mod/my_plugin/graphics/image.jpg', elgg.config.wwwroot + 'mod/my_plugin/graphics/image.jpg'],
['ftp://example.com/file', 'ftp://example.com/file'],
['mailto:brett@elgg.org', 'mailto:brett@elgg.org'],
@@ -99,7 +100,7 @@ ElggLibTest.prototype.testNormalizeUrl = function() {
['/mod/plugin/file.php', elgg.config.wwwroot + 'mod/plugin/file.php'],
['/mod/plugin/file.php?p=v&p2=v2', elgg.config.wwwroot + 'mod/plugin/file.php?p=v&p2=v2'],
['/rootfile.php', elgg.config.wwwroot + 'rootfile.php'],
- ['/rootfile.php?p=v&p2=v2', elgg.config.wwwroot + 'rootfile.php?p=v&p2=v2'],
+ ['/rootfile.php?p=v&p2=v2', elgg.config.wwwroot + 'rootfile.php?p=v&p2=v2']
].forEach(function(args) {
assertEquals(args[1], elgg.normalize_url(args[0]));
@@ -127,3 +128,13 @@ ElggLibTest.prototype.testParseUrl = function() {
});
};
+ElggLibTest.prototype.testParseStr = function() {
+
+ [
+ ["A+%2B+B=A+%2B+B", {"A + B": "A + B"}]
+
+ ].forEach(function(args) {
+ assertEquals(args[1], elgg.parse_str(args[0]));
+ });
+};
+
diff --git a/js/tests/README b/js/tests/README
index 4f86b27c6..f43c0c89d 100644
--- a/js/tests/README
+++ b/js/tests/README
@@ -12,9 +12,10 @@ based debuggers. Visit its wiki at the Google Code site for more information.
Sample Usage
============
1. Put jar file in the base directory of Elgg
- 2. Run the server: java -jar JsTestDriver-1.3.3d.jar --port 4224
+ 2. Run the server: java -jar JsTestDriver-1.3.5.jar --port 4224
3. Point a web browser at http://localhost:4224
- 4. Run the tests: java -jar JsTestDriver-1.3.3d.jar --config js/tests/jsTestDriver.conf --basePath . --tests all
+ 4. Click "Capture this browser"
+ 5. Run the tests: java -jar JsTestDriver-1.3.5.jar --config js/tests/jsTestDriver.conf --basePath . --tests all
Configuration Hints
diff --git a/languages/en.php b/languages/en.php
index 7cd091115..07407d1e1 100644
--- a/languages/en.php
+++ b/languages/en.php
@@ -105,6 +105,8 @@ $english = array(
'ElggPlugin:Dependencies:Priority:Before' => 'Before %s',
'ElggPlugin:Dependencies:Priority:Uninstalled' => '%s is not installed',
'ElggPlugin:Dependencies:Suggests:Unsatisfied' => 'Missing',
+
+ 'ElggPlugin:Dependencies:ActiveDependent' => 'There are other plugins that list %s as a dependency. You must disable the following plugins before disabling this one: %s',
'ElggPlugin:InvalidAndDeactivated' => '%s is an invalid plugin and has been deactivated.',
@@ -175,7 +177,7 @@ $english = array(
'ConfigurationException:NoSiteID' => "No site ID has been specified.",
'SecurityException:APIAccessDenied' => "Sorry, API access has been disabled by the administrator.",
'SecurityException:NoAuthMethods' => "No authentication methods were found that could authenticate this API request.",
- 'SecurityException:ForwardFailedToRedirect' => 'Redirect could not be issued due to headers already being sent. Halting execution for security. Search http://docs.elgg.org/ for more information.',
+ 'SecurityException:ForwardFailedToRedirect' => 'Redirect could not be issued due to headers already being sent. Halting execution for security. Output started in file %s at line %d. Search http://docs.elgg.org/ for more information.',
'InvalidParameterException:APIMethodOrFunctionNotSet' => "Method or function not set in call in expose_method()",
'InvalidParameterException:APIParametersArrayStructure' => "Parameters array structure is incorrect for call to expose method '%s'",
'InvalidParameterException:UnrecognisedHttpMethod' => "Unrecognised http method %s for api method '%s'",
@@ -229,6 +231,7 @@ $english = array(
'LoginException:PasswordFailure' => 'We could not log you in. Please check your username/email and password.',
'LoginException:AccountLocked' => 'Your account has been locked for too many log in failures.',
'LoginException:ChangePasswordFailure' => 'Failed current password check.',
+ 'LoginException:Unknown' => 'We could not log you in due to an unknown error.',
'deprecatedfunction' => 'Warning: This code uses the deprecated function \'%s\' and is not compatible with this version of Elgg',
@@ -358,6 +361,7 @@ $english = array(
'friendspicker:chararray' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'avatar' => 'Avatar',
+ 'avatar:noaccess' => "You're not allowed to edit this user's avatar",
'avatar:create' => 'Create your avatar',
'avatar:edit' => 'Edit avatar',
'avatar:preview' => 'Preview',
@@ -404,7 +408,8 @@ $english = array(
'profile:editdefault:delete:fail' => 'Removed default profile item field failed',
'profile:editdefault:delete:success' => 'Profile field deleted',
'profile:defaultprofile:reset' => 'Profile fields reset to the system default',
- 'profile:resetdefault' => 'Reset default profile',
+ 'profile:resetdefault' => 'Reset profile fields to system defaults',
+ 'profile:resetdefault:confirm' => 'Are you sure you want to delete your custom profile fields?',
'profile:explainchangefields' => "You can replace the existing profile fields with your own using the form below. \n\n Give the new profile field a label, for example, 'Favorite team', then select the field type (eg. text, url, tags), and click the 'Add' button. To re-order the fields drag on the handle next to the field label. To edit a field label - click on the label's text to make it editable. \n\n At any time you can revert back to the default profile set up, but you will lose any information already entered into custom fields on profile pages.",
'profile:editdefault:success' => 'New profile field added',
'profile:editdefault:fail' => 'Default profile could not be saved',
@@ -437,6 +442,8 @@ $english = array(
'river:ingroup' => 'in the group %s',
'river:none' => 'No activity',
'river:update' => 'Update for %s',
+ 'river:delete:success' => 'River item has been deleted',
+ 'river:delete:fail' => 'River item could not be deleted',
'river:widget:title' => "Activity",
'river:widget:description' => "Display latest activity",
@@ -579,6 +586,7 @@ $english = array(
'admin:users' => "Users",
'admin:users:online' => 'Currently Online',
'admin:users:newest' => 'Newest',
+ 'admin:users:admins' => 'Administrators',
'admin:users:add' => 'Add New User',
'admin:users:description' => "This admin panel allows you to control user settings for your site. Choose an option below to get started.",
'admin:users:adduser:label' => "Click here to add a new user...",
@@ -589,10 +597,24 @@ $english = array(
'admin:settings' => 'Settings',
'admin:settings:basic' => 'Basic Settings',
'admin:settings:advanced' => 'Advanced Settings',
+ 'admin:settings:advanced/site_secret' => 'Site Secret',
'admin:site:description' => "This admin panel allows you to control global settings for your site. Choose an option below to get started.",
+ 'admin:settings:advanced:site_secret' => 'Site Secret',
'admin:site:opt:linktext' => "Configure site...",
'admin:site:access:warning' => "Changing the access setting only affects the permissions on content created in the future.",
+ 'admin:site:secret:intro' => 'Elgg uses a key to create security tokens for various purposes.',
+ 'admin:site:secret_regenerated' => "Your site secret has been regenerated.",
+ 'admin:site:secret:regenerate' => "Regenerate site secret",
+ 'admin:site:secret:regenerate:help' => "Note: This may inconvenience some users by invalidating tokens used in \"remember me\" cookies, e-mail validation requests, invitation codes, etc.",
+ 'site_secret:current_strength' => 'Key Strength',
+ 'site_secret:strength:weak' => "Weak",
+ 'site_secret:strength_msg:weak' => "We strongly recommend that you regenerate your site secret.",
+ 'site_secret:strength:moderate' => "Moderate",
+ 'site_secret:strength_msg:moderate' => "We recommend you regenerate your site secret for the best site security.",
+ 'site_secret:strength:strong' => "Strong",
+ 'site_secret:strength_msg:strong' => "&#x2713; Your site secret is sufficiently strong.",
+
'admin:dashboard' => 'Dashboard',
'admin:widget:online_users' => 'Online users',
'admin:widget:online_users:help' => 'Lists the users currently on the site',
@@ -659,6 +681,7 @@ $english = array(
'admin:notices:could_not_delete' => 'Could not delete notice.',
+ 'item:object:admin_notice' => 'Admin notice',
'admin:options' => 'Admin options',
@@ -684,8 +707,11 @@ $english = array(
'admin:plugins:label:author' => "Author",
'admin:plugins:label:copyright' => "Copyright",
'admin:plugins:label:categories' => 'Categories',
- 'admin:plugins:label:licence' => "Licence",
+ 'admin:plugins:label:licence' => "License",
'admin:plugins:label:website' => "URL",
+ 'admin:plugins:label:repository' => "Code",
+ 'admin:plugins:label:bugtracker' => "Report issue",
+ 'admin:plugins:label:donate' => "Donate",
'admin:plugins:label:moreinfo' => 'more info',
'admin:plugins:label:version' => 'Version',
'admin:plugins:label:location' => 'Location',
@@ -727,6 +753,7 @@ $english = array(
'admin:statistics:label:numusers' => "Number of users",
'admin:statistics:label:numonline' => "Number of users online",
'admin:statistics:label:onlineusers' => "Users online now",
+ 'admin:statistics:label:admins'=>"Admins",
'admin:statistics:label:version' => "Elgg version",
'admin:statistics:label:version:release' => "Release",
'admin:statistics:label:version:version' => "Version",
@@ -875,6 +902,7 @@ $english = array(
'down' => 'Down',
'top' => 'Top',
'bottom' => 'Bottom',
+ 'back' => 'Back',
'invite' => "Invite",
@@ -891,6 +919,7 @@ $english = array(
'total' => 'Total',
'learnmore' => "Click here to learn more.",
+ 'unknown_error' => 'Unknown error',
'content' => "content",
'content:latest' => 'Latest activity',
@@ -1046,6 +1075,10 @@ Once you have logged in, we highly recommend that you change your password.
'upgrading' => 'Upgrading...',
'upgrade:db' => 'Your database was upgraded.',
'upgrade:core' => 'Your Elgg installation was upgraded.',
+ 'upgrade:unlock' => 'Unlock upgrade',
+ 'upgrade:unlock:confirm' => "The database is locked for another upgrade. Running concurrent upgrades is dangerous. You should only continue if you know there is not another upgrade running. Unlock?",
+ 'upgrade:locked' => "Cannot upgrade. Another upgrade is running. To clear the upgrade lock, visit the Admin section.",
+ 'upgrade:unlock:success' => "Upgrade unlocked successfully.",
'upgrade:unable_to_upgrade' => 'Unable to upgrade.',
'upgrade:unable_to_upgrade_info' =>
'This installation cannot be upgraded because legacy views
@@ -1060,6 +1093,8 @@ Once you have logged in, we highly recommend that you change your password.
'update:twitter_api:deactivated' => 'Twitter API (previously Twitter Service) was deactivated during the upgrade. Please activate it manually if required.',
'update:oauth_api:deactivated' => 'OAuth API (previously OAuth Lib) was deactivated during the upgrade. Please activate it manually if required.',
+ 'upgrade:site_secret_warning:moderate' => "You are encouraged to regenerate your site key to improve system security. See Configure &gt; Settings &gt; Site Secret",
+ 'upgrade:site_secret_warning:weak' => "You are strongly encouraged to regenerate your site key to improve system security. See Configure &gt; Settings &gt; Site Secret",
'deprecated:function' => '%s() was deprecated by %s()',
@@ -1126,7 +1161,7 @@ If you requested this, click on the link below. Otherwise ignore this email.
'comments:count' => "%s comments",
- 'riveraction:annotation:generic_comment' => '%s commented on %s',
+ 'river:comment:object:default' => '%s commented on %s',
'generic_comments:add' => "Leave a comment",
'generic_comments:post' => "Post comment",
@@ -1140,6 +1175,7 @@ If you requested this, click on the link below. Otherwise ignore this email.
'generic_comment:failure' => "An unexpected error occurred when adding your comment.",
'generic_comment:none' => 'No comments',
'generic_comment:title' => 'Comment by %s',
+ 'generic_comment:on' => '%s on %s',
'generic_comment:email:subject' => 'You have a new comment!',
'generic_comment:email:body' => "You have a new comment on your item \"%s\" from %s. It reads:
@@ -1173,10 +1209,11 @@ You cannot reply to this email.",
* Action gatekeeper
*/
'actiongatekeeper:missingfields' => 'Form is missing __token or __ts fields',
- 'actiongatekeeper:tokeninvalid' => "We encountered an error (token mismatch). This probably means that the page you were using expired.",
+ 'actiongatekeeper:tokeninvalid' => "The page you were using had expired. Please try again.",
'actiongatekeeper:timeerror' => 'The page you were using has expired. Please refresh and try again.',
'actiongatekeeper:pluginprevents' => 'A extension has prevented this form from being submitted.',
'actiongatekeeper:uploadexceeded' => 'The size of file(s) uploaded exceeded the limit set by your site administrator',
+ 'actiongatekeeper:crosssitelogin' => "Sorry, logging in from a different domain is not permitted. Please try again.",
/**
@@ -1195,7 +1232,7 @@ You cannot reply to this email.",
* Javascript
*/
- 'js:security:token_refresh_failed' => 'Cannot contact %s. You may experience problems saving content.',
+ 'js:security:token_refresh_failed' => 'Failed to contact %s. You may experience problems saving content. Please refresh this page.',
'js:security:token_refreshed' => 'Connection to %s restored!',
/**
diff --git a/mod/beechat/README b/mod/beechat/README
new file mode 100644
index 000000000..5ff3f8467
--- /dev/null
+++ b/mod/beechat/README
@@ -0,0 +1,23 @@
+Beechat the first XMPP chat for Elgg
+====================================
+
+Beechat is a facebook like chat for elgg using the XMPP protocol. It requires the XMPP serveur ejabberd.
+
+Installation
+------------
+
+French Documentation
+
+http://github.com/beechannels/beechat/wikis/guide-dinstallation
+
+English Documentation
+
+http://github.com/beechannels/beechat/wikis/setup-guide
+
+Feedback
+--------
+
+We are relying on the [GitHub issues tracker][issues] linked from above for
+feedback. File bugs or other issues [here][issues].
+
+[issues]: http://github.com/beechannels/beechat/issues
diff --git a/mod/beechat/actions/get_connection.php b/mod/beechat/actions/get_connection.php
new file mode 100644
index 000000000..a31174179
--- /dev/null
+++ b/mod/beechat/actions/get_connection.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+
+ global $SESSION;
+
+ if ($SESSION->offsetExists('beechat_conn'))
+ echo $SESSION->offsetGet('beechat_conn');
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_details.php b/mod/beechat/actions/get_details.php
new file mode 100644
index 000000000..4944fc4a9
--- /dev/null
+++ b/mod/beechat/actions/get_details.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ gatekeeper();
+ header('Content-type: application/json');
+ $user = $_SESSION['user'];
+ $t = array('username' => $user->username,
+ 'password' => $user->password);
+
+ echo json_encode($t);
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_icons.php b/mod/beechat/actions/get_icons.php
new file mode 100644
index 000000000..33d447e2e
--- /dev/null
+++ b/mod/beechat/actions/get_icons.php
@@ -0,0 +1,52 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+ global $CONFIG;
+
+ if (!empty($_POST['beechat_roster_items_usernames']))
+ {
+ $rosterItemsUsernames = explode(',', $_POST['beechat_roster_items_usernames']);
+ /*foreach ($rosterItemsUsernames as $rosterItem)
+ {
+ }*/
+ $userFriendsEntities = $_SESSION['user']->getFriends('', 0, 0);
+
+ $res = array();
+ foreach ($rosterItemsUsernames as $value)
+ {
+ $found = false;
+ $splitjid = explode('@', $value);
+ $jid_name = $splitjid[0];
+ $jid_host = $splitjid[1];
+ foreach ($userFriendsEntities as $friend)
+ {
+ if ((strtolower($friend->username) == strtolower($jid_name) && $jid_host == elgg_get_plugin_setting("domain", "beechat")))
+ {
+ $res[$value] = array('small' => $friend->getIcon('small'), 'tiny' => $friend->getIcon('tiny'));
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ $base = $CONFIG->wwwroot."mod/profile/graphics/default";
+ $res[$value] = array('small' => $base."small.gif", 'tiny' => $base."tiny.gif");
+ }
+ }
+ echo json_encode($res);
+ }
+ else
+ echo json_encode(null);
+
+ exit();
+
+?>
diff --git a/mod/beechat/actions/get_state.php b/mod/beechat/actions/get_state.php
new file mode 100644
index 000000000..6cfd2f725
--- /dev/null
+++ b/mod/beechat/actions/get_state.php
@@ -0,0 +1,21 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+
+ global $SESSION;
+
+ if ($SESSION->offsetExists('beechat_state'))
+ echo $SESSION->offsetGet('beechat_state');
+
+ exit();
+?>
diff --git a/mod/beechat/actions/get_statuses.php b/mod/beechat/actions/get_statuses.php
new file mode 100644
index 000000000..6f7620beb
--- /dev/null
+++ b/mod/beechat/actions/get_statuses.php
@@ -0,0 +1,41 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ header('Content-type: application/json');
+ gatekeeper();
+ $usernames = get_input('beechat_roster_items_usernames');
+ if (!empty($usernames))
+ {
+ $iconSize = 'small';
+ $rosterItemsUsernames = explode(',', $usernames);
+ $userFriendsEntities = $_SESSION['user']->getFriends('', 1000000000, 0);
+
+ $res = array();
+ foreach ($rosterItemsUsernames as $value)
+ {
+ foreach ($userFriendsEntities as $friend)
+ {
+ if (strtolower($friend->username) == strtolower($value))
+ {
+ $status = get_entities_from_metadata("state", "current", "object", "status", $friend->get('guid'));
+ $res[$value] = ($status != false) ? $status[0]->description : '';
+ break;
+ }
+ }
+ }
+ echo json_encode($res);
+ }
+ else
+ echo json_encode(null);
+
+ exit();
+
+?>
diff --git a/mod/beechat/actions/join_groupchat.php b/mod/beechat/actions/join_groupchat.php
new file mode 100644
index 000000000..c694d7957
--- /dev/null
+++ b/mod/beechat/actions/join_groupchat.php
@@ -0,0 +1,15 @@
+<?php
+
+$user = elgg_get_logged_in_user_entity();
+$group = get_entity(get_input('group_guid'));
+
+if ($user && $group) {
+ if (!check_entity_relationship($user->guid, 'groupchat', $group->guid)) {
+ error_log("joinen ok");
+ add_entity_relationship($user->guid, 'groupchat', $group->guid);
+}
+}
+echo "OK";
+error_log("join ok");
+
+?>
diff --git a/mod/beechat/actions/leave_groupchat.php b/mod/beechat/actions/leave_groupchat.php
new file mode 100644
index 000000000..e04ab8846
--- /dev/null
+++ b/mod/beechat/actions/leave_groupchat.php
@@ -0,0 +1,12 @@
+<?php
+
+$user = elgg_get_logged_in_user_entity();
+$group = get_entity(get_input('group_guid'));
+
+if ($user && $group) {
+ if (check_entity_relationship($user->guid, 'groupchat', $group->guid))
+ remove_entity_relationship($user->guid, 'groupchat', $group->guid);
+}
+error_log("leave ok");
+echo "OK";
+?>
diff --git a/mod/beechat/actions/save_state.php b/mod/beechat/actions/save_state.php
new file mode 100644
index 000000000..f8a61c580
--- /dev/null
+++ b/mod/beechat/actions/save_state.php
@@ -0,0 +1,29 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+// gatekeeper();
+
+ if (elgg_is_logged_in())
+ {
+
+ global $SESSION;
+
+ if (!empty($_POST['beechat_state']))
+ {
+ $SESSION->offsetSet('beechat_state', $_POST['beechat_state']);
+ }
+ elseif (!empty($_POST['beechat_conn']))
+ {
+ $SESSION->offsetSet('beechat_conn', get_input('beechat_conn'));
+ }
+ }
+ exit();
+?>
diff --git a/mod/beechat/classes/BeechatSync.php b/mod/beechat/classes/BeechatSync.php
new file mode 100644
index 000000000..e0a2f90b8
--- /dev/null
+++ b/mod/beechat/classes/BeechatSync.php
@@ -0,0 +1,37 @@
+<?php
+
+class BeechatSync {
+ static function onFriendCreate($event, $object_type, $relationship) {
+ if ($relationship->relationship == 'friendrequest') {
+ elgg_load_library('elgg:beechat');
+ $friend = get_entity($relationship->guid_two);
+ // create friend request
+ ejabberd_friend_request(elgg_get_logged_in_user_entity(), $friend);
+ }
+ }
+ static function onFriendDelete($event, $object_type, $relationship) {
+ if ($relationship->relationship == 'friendrequest') {
+ elgg_load_library('elgg:beechat');
+ $subject = get_entity($relationship->guid_two);
+ // here friend is guid_one because is the one initiating
+ $friend = get_entity($relationship->guid_one);
+ $friends = $friend->isFriendsWith($subject->guid);
+ if ($friends) {
+ // accept friend request
+ ejabberd_friend_accept(elgg_get_logged_in_user_entity(), $friend);
+ } else {
+ // decline friend request
+ ejabberd_friend_deny(elgg_get_logged_in_user_entity(), $friend);
+ }
+ }
+ elseif ($relationship->relationship == 'friend') {
+ elgg_load_library('elgg:beechat');
+ $subject = get_entity($relationship->guid_one);
+ $friend = get_entity($relationship->guid_two);
+ // delete friendship
+ ejabberd_friend_remove(elgg_get_logged_in_user_entity(), $friend);
+ }
+
+ }
+
+}
diff --git a/mod/beechat/disablechat.php b/mod/beechat/disablechat.php
new file mode 100644
index 000000000..490fb327b
--- /dev/null
+++ b/mod/beechat/disablechat.php
@@ -0,0 +1,8 @@
+<?php
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+ if (elgg_is_logged_in()) {
+ elgg_get_logged_in_user_entity()->chatenabled = false;
+ system_message(elgg_echo("beechat:disabled"));
+ }
+ forward($_SERVER['HTTP_REFERER']);
+?>
diff --git a/mod/beechat/enablechat.php b/mod/beechat/enablechat.php
new file mode 100644
index 000000000..5d3de7e2a
--- /dev/null
+++ b/mod/beechat/enablechat.php
@@ -0,0 +1,8 @@
+<?php
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+ if (elgg_is_logged_in()) {
+ elgg_get_logged_in_user_entity()->chatenabled = true;
+ system_message(elgg_echo("beechat:enabled"));
+ }
+ forward($_SERVER['HTTP_REFERER']);
+?>
diff --git a/mod/beechat/graphics/icons/bullet_arrow_down.png b/mod/beechat/graphics/icons/bullet_arrow_down.png
new file mode 100644
index 000000000..9b23c06d7
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_arrow_down.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_arrow_up.png b/mod/beechat/graphics/icons/bullet_arrow_up.png
new file mode 100644
index 000000000..24df0f421
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_arrow_up.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_black.png b/mod/beechat/graphics/icons/bullet_black.png
new file mode 100644
index 000000000..57619706d
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_black.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_blue.png b/mod/beechat/graphics/icons/bullet_blue.png
new file mode 100644
index 000000000..a7651ec8a
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_blue.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_delete.png b/mod/beechat/graphics/icons/bullet_delete.png
new file mode 100644
index 000000000..bd6271b24
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_delete.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_error.png b/mod/beechat/graphics/icons/bullet_error.png
new file mode 100644
index 000000000..bca2b491f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_error.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_green.png b/mod/beechat/graphics/icons/bullet_green.png
new file mode 100644
index 000000000..058ad261f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_green.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_orange.png b/mod/beechat/graphics/icons/bullet_orange.png
new file mode 100644
index 000000000..fa63024e5
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_orange.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_pink.png b/mod/beechat/graphics/icons/bullet_pink.png
new file mode 100644
index 000000000..0c9f73e3f
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_pink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_purple.png b/mod/beechat/graphics/icons/bullet_purple.png
new file mode 100644
index 000000000..52ba5036b
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_purple.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_red.png b/mod/beechat/graphics/icons/bullet_red.png
new file mode 100644
index 000000000..0cd803115
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_red.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_star.png b/mod/beechat/graphics/icons/bullet_star.png
new file mode 100644
index 000000000..fab774a32
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_star.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_white.png b/mod/beechat/graphics/icons/bullet_white.png
new file mode 100644
index 000000000..a9af8d44b
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_white.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/bullet_yellow.png b/mod/beechat/graphics/icons/bullet_yellow.png
new file mode 100644
index 000000000..6469cea7e
--- /dev/null
+++ b/mod/beechat/graphics/icons/bullet_yellow.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/chat_icon.png b/mod/beechat/graphics/icons/chat_icon.png
new file mode 100644
index 000000000..0e6d844bd
--- /dev/null
+++ b/mod/beechat/graphics/icons/chat_icon.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/cog_edit.png b/mod/beechat/graphics/icons/cog_edit.png
new file mode 100644
index 000000000..47b75a456
--- /dev/null
+++ b/mod/beechat/graphics/icons/cog_edit.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/comment_edit.png b/mod/beechat/graphics/icons/comment_edit.png
new file mode 100644
index 000000000..73db110df
--- /dev/null
+++ b/mod/beechat/graphics/icons/comment_edit.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_evilgrin.png b/mod/beechat/graphics/icons/emoticon_evilgrin.png
new file mode 100644
index 000000000..817bd509b
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_evilgrin.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_grin.png b/mod/beechat/graphics/icons/emoticon_grin.png
new file mode 100644
index 000000000..fc60c5e1c
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_grin.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_happy.png b/mod/beechat/graphics/icons/emoticon_happy.png
new file mode 100644
index 000000000..6b7336e17
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_happy.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_smile.png b/mod/beechat/graphics/icons/emoticon_smile.png
new file mode 100644
index 000000000..ade431851
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_smile.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_surprised.png b/mod/beechat/graphics/icons/emoticon_surprised.png
new file mode 100644
index 000000000..4520cfc55
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_surprised.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_tongue.png b/mod/beechat/graphics/icons/emoticon_tongue.png
new file mode 100644
index 000000000..ecafd2ffc
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_tongue.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_unhappy.png b/mod/beechat/graphics/icons/emoticon_unhappy.png
new file mode 100644
index 000000000..fd5d030ef
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_unhappy.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_waii.png b/mod/beechat/graphics/icons/emoticon_waii.png
new file mode 100644
index 000000000..458f93611
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_waii.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/emoticon_wink.png b/mod/beechat/graphics/icons/emoticon_wink.png
new file mode 100644
index 000000000..a631949b5
--- /dev/null
+++ b/mod/beechat/graphics/icons/emoticon_wink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/heart.png b/mod/beechat/graphics/icons/heart.png
new file mode 100644
index 000000000..d9ee53e59
--- /dev/null
+++ b/mod/beechat/graphics/icons/heart.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/house.png b/mod/beechat/graphics/icons/house.png
new file mode 100644
index 000000000..fed62219f
--- /dev/null
+++ b/mod/beechat/graphics/icons/house.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/muc_icon.png b/mod/beechat/graphics/icons/muc_icon.png
new file mode 100644
index 000000000..efdd60f12
--- /dev/null
+++ b/mod/beechat/graphics/icons/muc_icon.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/notification_pink.png b/mod/beechat/graphics/icons/notification_pink.png
new file mode 100644
index 000000000..f40c184f9
--- /dev/null
+++ b/mod/beechat/graphics/icons/notification_pink.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/pointer.png b/mod/beechat/graphics/icons/pointer.png
new file mode 100644
index 000000000..4e50a0f9a
--- /dev/null
+++ b/mod/beechat/graphics/icons/pointer.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/resultset_next.png b/mod/beechat/graphics/icons/resultset_next.png
new file mode 100644
index 000000000..e252606d3
--- /dev/null
+++ b/mod/beechat/graphics/icons/resultset_next.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/resultset_previous.png b/mod/beechat/graphics/icons/resultset_previous.png
new file mode 100644
index 000000000..18f9cc109
--- /dev/null
+++ b/mod/beechat/graphics/icons/resultset_previous.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/statuses.png b/mod/beechat/graphics/icons/statuses.png
new file mode 100644
index 000000000..e409f61a9
--- /dev/null
+++ b/mod/beechat/graphics/icons/statuses.png
Binary files differ
diff --git a/mod/beechat/graphics/icons/vcard.png b/mod/beechat/graphics/icons/vcard.png
new file mode 100644
index 000000000..c02f315d2
--- /dev/null
+++ b/mod/beechat/graphics/icons/vcard.png
Binary files differ
diff --git a/mod/beechat/languages/en.php b/mod/beechat/languages/en.php
new file mode 100644
index 000000000..38f03be98
--- /dev/null
+++ b/mod/beechat/languages/en.php
@@ -0,0 +1,45 @@
+<?php
+
+$en_array = array(
+ 'beechat:icons:home' => 'Home',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Available',
+ 'beechat:availability:dnd' => 'Do not disturb',
+ 'beechat:availability:away' => 'Away',
+ 'beechat:availability:xa' => 'Extended away',
+ 'beechat:availability:offline' => 'Offline',
+
+ 'beechat:connection:state:offline' => 'Offline',
+ 'beechat:connection:state:connecting' => 'Connecting...',
+ 'beechat:connection:state:authenticating' => 'Authenticating...',
+ 'beechat:connection:state:online' => 'Online',
+ 'beechat:connection:state:failed' => 'Failed',
+ 'beechat:connection:state:disconnecting' => 'Disconnecting...',
+
+ 'beechat:chat:self' => 'Me',
+ 'beechat:chat:composing' => ' is typing.',
+
+ 'beechat:box:minimize' => 'Minimize',
+ 'beechat:box:close' => 'Close',
+ 'beechat:box:showhide' => 'Show/Hide this chat window',
+ 'beechat:enabled' => 'Chat enabled',
+ 'beechat:disabled' => 'Chat disabled',
+ 'beechat:enablechat' => 'Enable chat',
+ 'beechat:disablechat' => 'Disable chat',
+ 'beechat:domain' => 'Chat domain',
+ 'beechat:groupdomain' => 'MUC domain',
+ 'beechat:chatroom' => 'Group chat',
+ 'beechat:dbname' => 'Database name',
+ 'beechat:dbhost' => 'Database host',
+ 'beechat:dbuser' => 'Database user',
+ 'beechat:dbuser' => 'notification:method:xmpp',
+ 'notification:method:xmpp' => 'Xmpp/Jabber',
+ 'beechat:dbpassword' => 'Database password',
+ 'beechat:xmlrpcip' => 'Ejabberd IP'
+ );
+
+add_translation('en', $en_array);
+
+?>
diff --git a/mod/beechat/languages/es.php b/mod/beechat/languages/es.php
new file mode 100644
index 000000000..78f009ce9
--- /dev/null
+++ b/mod/beechat/languages/es.php
@@ -0,0 +1,43 @@
+<?php
+
+$es_array = array(
+ 'beechat:icons:home' => 'Home',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Disponible',
+ 'beechat:availability:dnd' => 'No molestar',
+ 'beechat:availability:away' => 'Fuera',
+ 'beechat:availability:xa' => 'Fuera bastante tiempo',
+ 'beechat:availability:offline' => 'Desconectado',
+
+ 'beechat:connection:state:offline' => 'Desconectado',
+ 'beechat:connection:state:connecting' => 'Conectando...',
+ 'beechat:connection:state:authenticating' => 'Iniciando...',
+ 'beechat:connection:state:online' => 'Conectado',
+ 'beechat:connection:state:failed' => 'Fallo',
+ 'beechat:connection:state:disconnecting' => 'Desconectando...',
+
+ 'beechat:chat:self' => 'Yo',
+ 'beechat:chat:composing' => ' esta escribiendo.',
+
+ 'beechat:box:minimize' => 'Minimizar',
+ 'beechat:box:close' => 'Cerrar',
+ 'beechat:box:showhide' => 'Mostrar/Ocultar esta ventana de chat',
+ 'beechat:enabled' => 'Chat activado',
+ 'beechat:disabled' => 'Chat desactivado',
+ 'beechat:enablechat' => 'Activar chat',
+ 'beechat:disablechat' => 'Desactivar chat',
+ 'beechat:domain' => 'Dominio Chat',
+ 'beechat:groupdomain' => 'Dominio MUC',
+ 'beechat:chatroom' => 'Chat del grupo',
+ 'beechat:dbname' => 'Database name',
+ 'beechat:dbhost' => 'Database host',
+ 'beechat:dbuser' => 'Database user',
+ 'beechat:dbpassword' => 'Database password',
+ 'beechat:xmlrpcip' => 'Ejabberd IP'
+ );
+
+add_translation('es', $es_array);
+
+?>
diff --git a/mod/beechat/languages/fr.php b/mod/beechat/languages/fr.php
new file mode 100644
index 000000000..58b0eac3a
--- /dev/null
+++ b/mod/beechat/languages/fr.php
@@ -0,0 +1,32 @@
+<?php
+
+$fr_array = array(
+ 'beechat:icons:home' => 'Accueil',
+
+ 'beechat:contacts:button' => 'Chat',
+
+ 'beechat:availability:available' => 'Disponible',
+ 'beechat:availability:dnd' => 'Ne pas déranger',
+ 'beechat:availability:away' => 'Absent',
+ 'beechat:availability:xa' => 'Absence prolongée',
+ 'beechat:availability:offline' => 'Hors ligne',
+
+ 'beechat:connection:state:offline' => 'Hors ligne',
+ 'beechat:connection:state:connecting' => 'Connexion...',
+ 'beechat:connection:state:authenticating' => 'Authentification...',
+ 'beechat:connection:state:online' => 'En ligne',
+ 'beechat:connection:state:failed' => 'Échec',
+ 'beechat:connection:state:disconnecting' => 'Déconnexion...',
+
+ 'beechat:chat:self' => 'Moi',
+ 'beechat:chat:composing' => ' est en train d\'écrire.',
+
+ 'beechat:box:minimize' => 'Diminuer',
+ 'beechat:box:close' => 'Fermer',
+ 'beechat:box:showhide' => 'Montrer/Cacher cette fenêtre de chat'
+
+ );
+
+add_translation('fr', $fr_array);
+
+?>
diff --git a/mod/beechat/lib/beechat.php b/mod/beechat/lib/beechat.php
new file mode 100644
index 000000000..bf002d648
--- /dev/null
+++ b/mod/beechat/lib/beechat.php
@@ -0,0 +1,250 @@
+<?
+/*
+ allow_change_subj
+ allow_private_messages
+ allow_query_users
+ allow_user_invites
+ anonymous
+ logging
+ max_users
+ members_by_default
+ members_only
+ moderated
+ password
+ password_protected
+ persistent
+ public
+ public_list
+ title
+
+muc_room_set_affiliation struct[{name, String}, {service, String},
+ {jid, String}, {affiliation, Affiliation}] Integer
+
+
+*/
+ //$request = xmlrpc_encode_request('muc_online_rooms', "global", (array('encoding' => 'utf-8')));
+
+
+function ejabberd_xmlrpc_send($request)
+{
+ $context = stream_context_create(array('http' => array(
+ 'method' => "POST",
+ 'header' => "User-Agent: XMLRPC::Client mod_xmlrpc\r\n" .
+ "Content-Type: text/xml\r\n" .
+ "Content-Length: ".strlen($request),
+ 'content' => $request
+ )));
+
+ $file = file_get_contents("http://".elgg_get_plugin_setting("xmlrpcip", "beechat").":4560/RPC2", false, $context);
+
+ $response = xmlrpc_decode($file);
+ if (is_array($response) && xmlrpc_is_fault($response)) {
+ trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
+ } else {
+ // print_r($response);
+ }
+}
+
+function ejabberd_xmlrpc_command($command, $params)
+{
+ //error_log("send xmlrpc: ".$command);
+ $request = xmlrpc_encode_request($command, $params, (array('encoding' => 'utf-8')));
+ return ejabberd_xmlrpc_send($request);
+}
+
+function xmpp_escape($name) {
+ // http://xmpp.org/extensions/xep-0106.html#escaping
+ $name = str_replace(' ', '\\20', $name);
+ $name = str_replace('"', '\\22', $name);
+ $name = str_replace('&', '\\26', $name);
+ $name = str_replace("'", '\\27', $name);
+ $name = str_replace('/', '\\2f', $name);
+ $name = str_replace(';', '\\3a', $name);
+ $name = str_replace('<', '\\3c', $name);
+ $name = str_replace('>', '\\3e', $name);
+ $name = str_replace('@', '\\40', $name);
+ $name = str_replace('\\', '\\5c', $name);
+ return $name;
+}
+
+class EjabberdMucRoom {
+ function __construct($group) {
+ $this->group = $group;
+ }
+ function setOption($name, $value) {
+ $group = $this->group;
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "option"=>$name,
+ "value"=>$value);
+ ejabberd_xmlrpc_command('muc_room_change_option', $param);
+ }
+ function addMember($member) {
+ //"outcast" | "none" | "member" | "admin" | "owner"
+ $group = $this->group;
+ if ($member->guid === $group->owner_guid)
+ $affiliation = "owner";
+ elseif ($group->canEdit($member->guid))
+ $affiliation = "admin";
+ else
+ $affiliation = "member";
+ $this->setAffiliation($member, $affiliation);
+ }
+
+ function setAffiliation($member, $affiliation) {
+ $group = $this->group;
+ $param = array("name" => elgg_get_friendly_title($group->name),
+ "service" => elgg_get_plugin_setting("groupdomain", "beechat"),
+ "jid" => xmpp_escape($member->username) . '@' . elgg_get_plugin_setting("domain", "beechat"),
+ "affiliation" => $affiliation);
+ ejabberd_xmlrpc_command('muc_room_set_affiliation', $param);
+ //echo "set affiliation ".$member->username."<br/>";
+ }
+}
+
+function ejabberd_create_group($group)
+{
+ //echo "creating " . $group->name . "<br/>";
+ // create room
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "server"=>elgg_get_plugin_setting("domain", "beechat"));
+ ejabberd_xmlrpc_command('create_muc_room', $param);
+
+ // persistency
+
+ $room = new EjabberdMucRoom($group);
+ $room->setOption("persistent", true);
+ $room->setOption("title", $group->name);
+ // open to public?
+ if ($group->isPublicMembership()) {
+ $room->setOption("members_only", false);
+ }
+ else
+ $room->setOption("members_only", true);
+
+ if ($group->access_id === ACCESS_PUBLIC) {
+ $room->setOption("public_list", true);
+ $room->setOption("public", true);
+ }
+ else {
+ $room->setOption("public_list", false);
+ $room->setOption("public", false);
+ }
+ $members = $group->getMembers(0);
+ foreach($members as $member) {
+ $room->addMember($member);
+ }
+ $room->addMember(get_entity($group->owner_guid));
+}
+
+function ejabberd_destroy_group($group)
+{
+ $param=array("name"=>elgg_get_friendly_title($group->name),
+ "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
+ "server"=>elgg_get_plugin_setting("domain", "beechat"));
+ ejabberd_xmlrpc_command('delete_muc_room', $param);
+}
+
+function ejabberd_getjid($user, $do_external=false)
+{
+ if ($user->foreign || ($do_external && $user->alias && get_plugin_usersetting("usealias", $user->guid,"openid_client"))) {
+ if ($user->foreign)
+ $webid = $user->webid;
+ else
+ $webid = $user->alias;
+ if (strpos($webid, 'http') === 0) {
+ // http or https addresses
+ $hostparts = parse_url($webid);
+ $urlparts = explode('/', $webid);
+ $host = $hostparts['host'];
+ $username = $urlparts[count($urlparts)-1];
+ } else {
+ if (strpos($webid, ':') > 0) {
+ $webidparts = explode(':', $webid);
+ $hostparts = explode('@',$webidparts[1]);
+ } else {
+ $hostparts = explode('@',$webid);
+ }
+ $username = $hostparts[0];
+ $host = $hostparts[1];
+ }
+ }
+ else {
+ $username = $user->username;
+ $host = elgg_get_plugin_setting("domain", "beechat");
+ }
+ return xmpp_escape($username) . '@' . $host;
+}
+
+function ejabberd_friend_command($user, $friend, $command, $is_out) // $user adds $friend
+{
+ error_log(" * ".$friend->username."->".ejabberd_getjid($user)." ".$command);
+ if ($friend->foreign) {
+ error_log(" * beechat: friend is foreign!");
+ return;
+ }
+ $param = array("user" => elgg_get_friendly_title($friend->username),
+ "server" => elgg_get_plugin_setting("domain", "beechat"),
+ "from" => ejabberd_getjid($user),
+ "subs" => $command);
+ if ($is_out) {
+ error_log("out");
+ ejabberd_xmlrpc_command('send_roster_request_out', $param);
+ }
+ else {
+ $param['reason'] = 'unknown';
+ ejabberd_xmlrpc_command('send_roster_request_in', $param);
+ }
+}
+
+
+function ejabberd_friend_request($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_request');
+ ejabberd_friend_command($friend, $user, 'subscribe', true); // out:$user : $friend
+ error_log('ejabberd_friend_requested');
+}
+function ejabberd_friend_accept($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_accept');
+ ejabberd_friend_command($friend, $user, 'subscribed', true);
+ // following might be needed to have symmetry (and important for remote)
+ if ($friend->foreign) {
+ // following is needed for xmpp nodes
+ ejabberd_friend_command($friend, $user, 'subscribe', true);
+ }
+ // ejabberd_friend_command($friend, $user, 'subscribed', false);
+ // following can't be faked
+ if (!$friend->foreign)
+ ejabberd_friend_command($user, $friend, 'subscribed', true);
+ error_log('ejabberd_friend_accepted');
+}
+function ejabberd_friend_deny($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friedeny');
+ ejabberd_friend_command($friend, $user, 'unsubscribed', true);
+}
+function ejabberd_friend_remove($user, $friend) // $user adds $friend
+{
+ error_log('ejabberd_friend_remove');
+ if ($friend->foreign) {
+ ejabberd_friend_command($friend, $user, 'unsubscribed', true);
+ ejabberd_friend_command($friend, $user, 'unsubscribed', false);
+ }
+ else
+ ejabberd_friend_command($friend, $user, 'unsubscribed', false);
+ if (!$friend->foreign)
+ ejabberd_friend_command($user, $friend, 'unsubscribed', false);
+ error_log('ejabberd_friend_removed');
+}
+
+/*function ejabberd_send_chat($from, $to, $body) { // $user adds $friend
+ $param = array("body"=>$body,
+ "from"=>$from,
+ "to"=>$to);
+ ejabberd_xmlrpc_command('send_chat_message', $param);
+}*/
+
+
+?>
diff --git a/mod/beechat/manifest.xml b/mod/beechat/manifest.xml
new file mode 100644
index 000000000..ad948fdb4
--- /dev/null
+++ b/mod/beechat/manifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Beechat</name>
+ <author>Beechannels + Lorea dev</author>
+ <version>1.8.0</version>
+ <category>widget</category>
+ <description>XMPP chat for Elgg.</description>
+ <website>https://lorea.org</website>
+ <copyright>(C) Beechanels 2009, Lorea 2009-2013</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+</plugin_manifest>
diff --git a/mod/beechat/migrate.php b/mod/beechat/migrate.php
new file mode 100644
index 000000000..20bee7973
--- /dev/null
+++ b/mod/beechat/migrate.php
@@ -0,0 +1,88 @@
+<?php
+require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+global $CONFIG;
+admin_gatekeeper();
+
+// It's possible large upgrades could exceed the max execution time.
+set_time_limit(0);
+
+// get ejabberd db settings from elgg.
+$domain = elgg_get_plugin_setting("domain", "beechat");
+$dbname = elgg_get_plugin_setting("dbname", "beechat");
+$dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+$dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+$dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");
+
+$jabber_domain = $domain;
+
+$dbh_elgg = null;
+$dbh_ejabberd = null;
+
+$dsn_elgg = 'mysql:dbname='.$CONFIG->dbname.';host='.$CONFIG->dbhost;
+$dsn_ejabberd = 'mysql:dbname='.$dbname.';host='.$dbhost;
+
+$dbprefix = $CONFIG->dbprefix;
+
+$user = $dbuser;
+$password = $dbpassword;
+
+$relationship_type = 'friend';
+
+$counter = 0;
+
+try {
+ $dbh_elgg = new PDO($dsn_elgg, $CONFIG->dbuser, $CONFIG->dbpass);
+
+ $sql = 'SELECT guid, name, username FROM '.$dbprefix.'users_entity';
+ $sth = $dbh_elgg->prepare($sql);
+ $sth->execute();
+
+ $users = array();
+ while ($row = $sth->fetch(PDO::FETCH_ASSOC))
+ $users[$row['guid']] = $row;
+
+ $sql = 'SELECT guid_one, guid_two FROM '.$dbprefix.'entity_relationships ';
+ $sql .= 'WHERE relationship = ?;';
+ $sth = $dbh_elgg->prepare($sql);
+
+ $sth->bindParam(1, $relationship_type);
+ $sth->execute();
+
+ $dbh_ejabberd = new PDO($dsn_ejabberd, $user, $password);
+ $dbh_ejabberd->beginTransaction();
+
+ while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
+ $sql = 'INSERT INTO rosterusers (username, jid, nick, subscription, ask, server, type) VALUES (?, ?, ?, ?, ?, ?, ?);';
+ $sth_ejabberd = $dbh_ejabberd->prepare($sql);
+
+
+ $username = $users[$row['guid_one']]['username'];
+ $jid = $users[$row['guid_two']]['username'] . '@' . $jabber_domain;
+ $nick = $users[$row['guid_two']]['name'];
+ $subscription = 'B';
+ $ask = 'N';
+ $server = 'N';
+ $type = 'item';
+
+ $sth_ejabberd->execute(array($username, $jid, $nick, $subscription, $ask, $server, $type));
+
+ $counter += 1;
+ if ($counter % 1000 == 0) {
+ //error_log( $username . ' registered ' . $jid . ' as a friend in his roster.' . "\n");
+ error_log("importing relations into jabber: $counter");
+ }
+ }
+
+ $dbh_ejabberd->commit();
+
+ $dbh_elgg = null;
+ $dbh_ejabberd = null;
+} catch (PDOException $e) {
+ if ($dbh_ejabberd != null)
+ $dbh_ejabberd->rollBack();
+ echo $e->getMessage();
+}
+?>
+
+
diff --git a/mod/beechat/migrategroups.php b/mod/beechat/migrategroups.php
new file mode 100644
index 000000000..4e3ef3f2b
--- /dev/null
+++ b/mod/beechat/migrategroups.php
@@ -0,0 +1,18 @@
+<?
+require_once(dirname(__FILE__) . "/lib.php");
+
+admin_gatekeeper();
+
+// groups disabled for now
+exit();
+
+$groups = elgg_get_entities(array('types'=>'group','limit'=>0));
+elgg_set_ignore_access(true);
+foreach($groups as $group) {
+ echo "migrating " . $group->name . "<br/>";
+ ejabberd_create_group($group);
+}
+echo "done!";
+elgg_set_ignore_access(false);
+
+?>
diff --git a/mod/beechat/sounds/newmessage.wav b/mod/beechat/sounds/newmessage.wav
new file mode 100644
index 000000000..58cccd0e6
--- /dev/null
+++ b/mod/beechat/sounds/newmessage.wav
Binary files differ
diff --git a/mod/beechat/start.php b/mod/beechat/start.php
new file mode 100644
index 000000000..4e4e4bb40
--- /dev/null
+++ b/mod/beechat/start.php
@@ -0,0 +1,184 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+ GLOBAL $CONFIG;
+
+ function beechat_create_group($event, $object_type, $object)
+ {
+ elgg_load_library('elgg:beechat');
+ ejabberd_create_group($object);
+ }
+
+ function beechat_delete_group($event, $object_type, $object)
+ {
+ elgg_load_library('elgg:beechat');
+ ejabberd_destroy_group($object);
+ }
+
+ function beechat_member_add($event, $object_type, $object)
+ {
+ if ($object->relationship === "member") {
+ elgg_load_library('elgg:beechat');
+ $user = get_entity($object->guid_one);
+ $group = get_entity($object->guid_two);
+ $room = new EjabberdMucRoom($group);
+ $room->addMember($user);
+ }
+ }
+
+ function beechat_member_delete($event, $object_type, $object)
+ {
+ if ($object->relationship === "member") {
+ elgg_load_library('elgg:beechat');
+ $user = get_entity($object->guid_one);
+ $group = get_entity($object->guid_two);
+ $room = new EjabberdMucRoom($group);
+ $room->setAffiliation($user, "none");
+ }
+ }
+
+ function beechat_init()
+ {
+ $pluginspath = elgg_get_plugins_path();
+ elgg_register_library('elgg:beechat', $pluginspath . 'beechat/lib/beechat.php');
+
+ elgg_register_event_handler('pagesetup', 'system', 'beechat_pagesetup');
+ // group actions disabled for now
+ /*if (elgg_get_plugin_setting("groupdomain", "beechat")) {
+ register_elgg_event_handler('create', 'group', 'beechat_create_group');
+ register_elgg_event_handler('delete', 'group', 'beechat_delete_group');
+ }
+ register_elgg_event_handler('create', 'member', 'beechat_member_add');
+ register_elgg_event_handler('delete', 'relationship', 'beechat_member_delete');*/
+
+
+ $actions_path = $pluginspath . 'beechat/actions/';
+ //elgg_register_action('beechat/join_groupchat', $actions_path . 'join_groupchat.php');
+ //elgg_register_action('beechat/leave_groupchat', $actions_path . 'leave_groupchat.php');
+ elgg_register_action('beechat/get_statuses', $actions_path . 'get_statuses.php');
+ elgg_register_action('beechat/get_icons', $actions_path . 'get_icons.php');
+ elgg_register_action('beechat/get_details', $actions_path . 'get_details.php');
+ elgg_register_action('beechat/get_connection', $actions_path . 'get_connection.php');
+ elgg_register_action('beechat/get_state', $actions_path . 'get_state.php');
+ elgg_register_action('beechat/save_state', $actions_path . 'save_state.php');
+
+ /*register_elgg_event_handler('create', 'friendrequest', 'beechat_xmpp_add_friendx');
+ #register_plugin_hook('action', 'friends/add', 'beechat_xmpp_add_friend', 1000);
+ register_plugin_hook('river_update', 'river_update', 'beechat_xmpp_approve_friendx');
+ register_plugin_hook('river_update_foreign', 'river_update', 'beechat_xmpp_approve_friendx');
+ #register_plugin_hook('action', 'friendrequest/approve', 'beechat_xmpp_approve_friend', 1000);
+
+
+ register_plugin_hook('action', 'friendrequest/decline', 'beechat_xmpp_decline_friend', 1000);
+ register_plugin_hook('action', 'friends/remove', 'beechat_xmpp_remove_friend', 1000);*/
+
+ // new friend sync
+ elgg_register_event_handler('delete', 'friend', array('BeechatSync', 'onFriendDelete'));
+ //elgg_register_event_handler('create', 'friendrequest', array('BeechatSync', 'onFriendCreate'));
+ elgg_register_event_handler('delete', 'friendrequest', array('BeechatSync', 'onFriendDelete'));
+
+
+
+ elgg_extend_view('js/initialise_elgg', 'js/json2.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.cookie.min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.scrollTo-min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.serialScroll-min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/b64.js');
+ elgg_extend_view('js/initialise_elgg', 'js/sha1.js');
+ elgg_extend_view('js/initialise_elgg', 'js/md5.js');
+ elgg_extend_view('js/initialise_elgg', 'js/strophe.min.js');
+ elgg_extend_view('js/initialise_elgg', 'js/strophe.muc.js');
+ elgg_extend_view('js/initialise_elgg', 'js/jquery.tools.min.js');
+ elgg_extend_view('css', 'beechat/screen.css');
+ elgg_extend_view('js/initialise_elgg', 'beechat/beechat.js');
+ elgg_extend_view('page/elements/head', 'beechat/beechat.userjs');
+
+ elgg_extend_view('page/elements/foot', 'beechat/beechat');
+
+ $domain = elgg_get_plugin_setting("domain", "beechat");
+ //$group_domain = elgg_get_plugin_setting("groupdomain", "beechat");
+ /*$dbname = elgg_get_plugin_setting("dbname", "beechat");
+ $dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+ $dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+ $dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");*/
+
+ global $CONFIG;
+ $CONFIG->chatsettings['domain'] = $domain;
+ //$CONFIG->chatsettings['groupdomain'] = $group_domain;
+
+ register_notification_handler('xmpp', 'beechat_notifications');
+ // register_plugin_hook('notify:entity:message','object','beechat_notifications_msg');
+ }
+
+ function beechat_notifications($from, $to, $subject, $topic, $params = array()) {
+ ejabberd_send_chat($to, "<div>".$topic."</div>");
+ }
+
+
+ function beechat_friendly_title($title) {
+ // need this because otherwise seems elgg
+ // gets in some problem trying to call the view
+ //$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);
+ $title = preg_replace("/[^\w ]/","",$title);
+ $title = str_replace(" ","-",$title);
+ $title = str_replace("--","-",$title);
+ $title = trim($title);
+ $title = strtolower($title);
+ return $title;
+ }
+
+ function beechat_pagesetup()
+ {
+ global $CONFIG;
+ /*if (elgg_get_context() == 'group_profile' && elgg_is_logged_in()) {
+ if (elgg_get_plugin_setting("groupdomain", "beechat")) {
+ $user = elgg_get_logged_in_user_entity();
+ $group = elgg_get_page_owner_entity();
+ if (!$group || !($group instanceof ElggGroup))
+ return;
+ if ($user->chatenabled && elgg_get_plugin_setting("groupdomain", "beechat")) {
+ if ($group->isPublicMembership() || $group->isMember($user)) {
+ $item = new ElggMenuItem('chatroom', elgg_echo('beechat:chatroom'), "javascript:g_beechat_user.joinRoom('".beechat_friendly_title($group->name)."@".$CONFIG->chatsettings['groupdomain']."', '".$group->guid."')");
+ elgg_register_menu_item('page', 'item');
+ }
+ }
+ }
+ }
+ else*/if (elgg_get_context() == 'settings' && elgg_is_logged_in()) {
+ $is_enabled = elgg_get_logged_in_user_entity()->chatenabled;
+ $action = $is_enabled ? 'disable' : 'enable';
+ elgg_register_menu_item('page', array(
+ 'name' => 'beechat',
+ 'text'=> elgg_echo("beechat:{$action}chat"),
+ 'href' => $CONFIG->wwwroot . "mod/beechat/{$action}chat.php",
+ ));
+ }
+ }
+
+
+ function ejabberd_send_chat($user, $body) { // $user adds $friend
+ $from = 'notify@'.elgg_get_plugin_setting("domain", "beechat").'/net';
+ if ($user->alias) {
+
+ }
+ elgg_load_library('elgg:beechat');
+ $to = ejabberd_getjid($user, true);
+ //xmlrpc_set_type(&$body, "base64");
+ $param = array("body" => $body,
+ "from" => $from,
+ "to" => $to);
+ ejabberd_xmlrpc_command('send_html_message', $param);
+ }
+
+
+
+
+elgg_register_event_handler('init', 'system', 'beechat_init');
diff --git a/mod/beechat/views/default/beechat/beechat.js.php b/mod/beechat/views/default/beechat/beechat.js.php
new file mode 100644
index 000000000..09f4e8852
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.js.php
@@ -0,0 +1,2498 @@
+/**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+/** Globals
+ *
+ */
+g_beechat_user = null;
+g_beechat_roster_items = null;
+g_beechat_rooms = new Array();
+
+function debugXMPP(msg) {
+ try {
+ //console.log(msg)
+ }
+ catch (err) {
+ }
+ //$('#layout_footer').html($('#layout_footer').html()+'<br/>'+msg);
+}
+
+/** Class: BeeChat
+ * An object container for all BeeChat mod functions
+ *
+ */
+BeeChat = {
+ BOSH_SERVICE: '/http-bind/',
+ DOMAIN: '<?php echo $vars['config']->chatsettings['domain'] ?>',
+ RESOURCE: 'beebac',
+ INACTIVITY_PERIOD_LENGTH: 60,
+
+ NS: {
+ CHAT_STATES: 'http://jabber.org/protocol/chatstates'
+ },
+
+ Message: {
+ Types: {
+ NORMAL: 'normal',
+ CHAT: 'chat',
+ GROUPCHAT: 'groupchat',
+ HEADLINE: 'headline',
+ ERROR: 'error'
+ },
+
+ ChatStates: {
+ COMPOSING: 'composing',
+ PAUSED: 'paused',
+ ACTIVE: 'active',
+ INACTIVE: 'inactive',
+ GONE: 'gone'
+ }
+ },
+
+ IQ: {
+ Types: {
+ GET: 'get',
+ RESULT: 'result',
+ SET: 'set',
+ ERROR: 'error'
+ }
+ },
+
+ Presence: {
+ Types: {
+ UNAVAILABLE: 'unavailable',
+ SUBSCRIBE: 'subscribe',
+ SUBSCRIBED: 'subscribed',
+ UNSUBSCRIBE: 'unsubscribe',
+ UNSUBSCRIBED: 'unsubscribed',
+ PROBE: 'probe',
+ ERROR: 'error'
+ },
+
+ ChildElements: {
+ SHOW: 'show',
+ STATUS: 'status',
+ PRIORITY: 'priority'
+ },
+
+ ShowElements: {
+ CHAT: 'chat',
+ DND: 'dnd',
+ AWAY: 'away',
+ XA: 'xa'
+ }
+ },
+
+ Roster: {
+ DEFAULT_GROUP: 'Contacts'
+ },
+
+
+ Events: {
+ Identifiers: {
+ UPDATE_CONNECTION_STATE: 0,
+ UPDATE_ROSTER: 1,
+ RECV_PRESENCE: 2,
+ RECV_CHAT_MESSAGE: 3
+ },
+ Messages: {
+ ConnectionStates: {
+ CONNECTING: "<?php echo elgg_echo('beechat:connection:state:connecting'); ?>",
+ AUTHENTICATING: "<?php echo elgg_echo('beechat:connection:state:authenticating'); ?>",
+ FAILED: "<?php echo elgg_echo('beechat:connection:state:failed'); ?>",
+ DISCONNECTING: "<?php echo elgg_echo('beechat:connection:state:disconnecting'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:connection:state:offline'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:connection:state:online'); ?>"
+ }
+ }
+ }
+};
+
+
+/** Class: BeeChat.Core
+ * An object container for all BeeChat Core functions
+ *
+ */
+BeeChat.Core = {
+ ReferenceTables: {
+ AvailabilityRates: {
+ AVAILABLE: 0,
+ ONLINE: 0,
+ CHAT: 0,
+ DND: 1,
+ AWAY: 2,
+ XA: 3,
+ UNAVAILABLE: 10,
+ OFFLINE: 10
+ }
+ }
+};
+
+
+/** Class: BeeChat.Core.User
+ * Create a BeeChat.Core.User object
+ *
+ * Parameters:
+ * (String) jid - The user's jabber id
+ *
+ * Returns:
+ * A new BeeChat.Core.User.
+ */
+BeeChat.Core.User = function(jid)
+{
+ if (!(this instanceof arguments.callee))
+ return new BeeChat.Core.User(jid);
+
+ /** Private members
+ *
+ */
+ var _connection = null;
+ var _attached = false;
+ var _initialized = false;
+ var _jid = null;
+ var _roster = null;
+ var _msgTemp = [];
+ var _funcs = [];
+
+ /** Constructor
+ *
+ */
+ this.init = function(jid)
+ {
+ _jid = jid;
+ _roster = new BeeChat.Core.Roster();
+ }
+
+ /** Accessors
+ *
+ */
+ this.getConnection = function()
+ {
+ return _connection;
+ }
+
+ this.getJid = function()
+ {
+ return _jid;
+ }
+
+ this.getRoster = function()
+ {
+ return _roster;
+ }
+
+ this.isAttached = function()
+ {
+ return _attached;
+ }
+
+ this.isInitialized = function()
+ {
+ return _initialized;
+ }
+
+ /** Mutators
+ *
+ */
+ this.setInitialized = function(isInitialized)
+ {
+ _initialized = isInitialized;
+ }
+
+ /** Function: addObserver
+ * Add an observer for a specified type of event
+ *
+ * Parameters:
+ * (BeeChat.Events.Identifiers) eventType - The type of event to observer
+ * (Object) pFunc - A function to call when the event will be triggered
+ */
+ this.addObserver = function(eventType, pFunc)
+ {
+ if (jQuery.inArray(pFunc, _funcs) == -1) {
+ if (!_funcs[eventType])
+ _funcs[eventType] = [];
+ _funcs[eventType].push(pFunc);
+ }
+ }
+
+ /** Function: removeObserver
+ * Remove an observer
+ *
+ * Parameters:
+ * (Object) pFunc - The registered function
+ */
+ this.removeObserver = function(pFunc)
+ {
+ var index = null;
+
+ for (var key in _funcs) {
+ if (typeof _funcs[key] != 'object')
+ continue;
+ if ((index = jQuery.inArray(pFunc, _funcs[key])) != -1)
+ _funcs.splice(index, 1);
+ }
+ }
+
+ /** Function: connect
+ * Connect the user to the BOSH service
+ *
+ * Parameters:
+ * (String) password - The user's password
+ *
+ */
+ this.connect = function(password)
+ {
+ debugXMPP('connect');
+ if (_connection == null)
+ _connection = new Strophe.Connection(BeeChat.BOSH_SERVICE);
+ _connection.connect(_jid, password, _onConnect);
+ }
+
+ /** Function: attach
+ * Attach user's connection to an existing XMPP session
+ *
+ * Parameters:
+ * (String) sid - The SID of the existing XMPP session
+ * (String) rid - The RID of the existing XMPP session
+ */
+ this.attach = function(sid, rid)
+ {
+ if (_connection == null) {
+ _connection = new Strophe.Connection(BeeChat.BOSH_SERVICE);
+ }
+ _connection.attach(_jid, sid, rid, _onConnect);
+ _attached = true;
+ _onConnect(Strophe.Status.CONNECTED);
+ }
+
+ /** Function: disconnect
+ * Disconnect the user from the BOSH service
+ *
+ */
+ this.disconnect = function()
+ {
+ debugXMPP('disconnect');
+ if (_connection != null) {
+ _connection.disconnect();
+ _connection = null;
+ }
+ }
+
+ /** Function: requestSessionPause
+ * Request a session pause to the server connection manager
+ *
+ */
+ this.requestSessionPause = function()
+ {
+ var req = $build('body', {
+ rid: _connection.rid,
+ sid: _connection.sid,
+ pause: BeeChat.INACTIVITY_PERIOD_LENGTH,
+ xmlns: Strophe.NS.HTTPBIND
+ });
+
+ _attached = false;
+ _connection.send(req.tree());
+ }
+
+ /** Function: requestRoster
+ * Request a new roster to the server
+ *
+ */
+ this.requestRoster = function()
+ {
+ var req = $iq({from: _jid, type: BeeChat.IQ.Types.GET})
+ .c('query', {xmlns: Strophe.NS.ROSTER});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendInitialPresence
+ * Send initial presence to the server in order to signal availability for communications
+ *
+ */
+ this.sendInitialPresence = function()
+ {
+ _connection.send($pres().tree());
+ _initialized = true;
+ }
+
+ /** Function: sendChatMessage
+ * Send a chat message to the server
+ *
+ * Parameters:
+ * (String) addressee - The addressee of the chat message
+ * (String) msg - The chat message
+ *
+ */
+ this.sendChatMessage = function(addressee, msg, msgtype)
+ {
+ if (msgtype == null)
+ msgtype = BeeChat.Message.Types.CHAT;
+ var req = $msg({
+ type: msgtype,
+ to: addressee,
+ from: _connection.jid
+ }).c('body').t(msg).up().c(BeeChat.Message.ChatStates.ACTIVE, {xmlns: BeeChat.NS.CHAT_STATES});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendChatStateMessage
+ * Send a chat state message to the server
+ *
+ * Parameters:
+ * (String) addressee - The addressee of the chat state message
+ * (BeeChat.Message.ChatsState) state - The chat state that will be send
+ *
+ */
+ this.sendChatStateMessage = function(addressee, state)
+ {
+ var req = $msg({
+ type: BeeChat.Message.Types.CHAT,
+ to: addressee,
+ from: _connection.jid
+ }).c(state, {xmlns: BeeChat.NS.CHAT_STATES});
+
+ _connection.send(req.tree());
+ }
+
+ /** Function: sendPresenceAvailabiliy
+ * Send a detailed presence stanza to the server
+ *
+ * Parameters:
+ * (BeeChat.Presence.ShowElements) availability - The availability status
+ * (String) details - Detailed status information
+ *
+ */
+ this.sendPresenceAvailability = function(availability, details)
+ {
+ var req = $pres()
+ .c(BeeChat.Presence.ChildElements.SHOW).t(availability).up()
+ .c(BeeChat.Presence.ChildElements.STATUS).t(details).up()
+ .c(BeeChat.Presence.ChildElements.PRIORITY).t('1');
+
+ _connection.send(req.tree());
+ }
+
+ /** PrivateFunction: _fire
+ * Triggers registered funcs of registered observers for a specified type of event
+ *
+ */
+ function _fire(eventType, data, scope)
+ {
+ if (_funcs[eventType] != undefined) {
+ for (var i = 0; i < _funcs[eventType].length; i++)
+ _funcs[eventType][i].call((scope || window), data);
+ }
+ }
+ this.joinRoom = function(roomname, room_guid) {
+ var roomJid = roomname;
+ _connection['muc'].join(roomJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, false, false, '');
+ if (!(roomJid in g_beechat_rooms)) {
+ g_beechat_rooms[roomJid] = room_guid;
+ $.ajax({
+ url: BeeChat.UI.addActionTokens('<?php echo $vars['url'] . "action/beechat/join_groupchat?group_guid="; ?>'+room_guid, '&'),
+ async: true });
+ }
+
+
+ }
+
+ this.reconnectRooms = function() {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ if (roomJid in g_beechat_rooms)
+ delete g_beechat_rooms[roomJid];
+ var contactBareJid = $(this).attr('bareJid');
+ var isroom = ($(this).attr('isroom')=='true')?true:false;
+ if (isroom) {
+ _connection['muc'].join(contactBareJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, false, false, '');
+ }
+ });
+ }
+
+ this.leaveRoom = function(roomJid) {
+ if (roomJid in g_beechat_rooms) {
+ $.ajax({
+ url: BeeChat.UI.addActionTokens('<?php echo $vars['url'] . "action/beechat/leave_groupchat?group_guid="; ?>'+g_beechat_rooms[roomJid], '&'),
+ async: true });
+
+ }
+ _connection['muc'].leave(roomJid, BeeChat.UI.Resources.Strings.ChatMessages.SELF, function(){});
+ }
+
+ /** PrivateFunction: _onConnect
+ * Connection state manager
+ *
+ * Parameters:
+ * (Strophe.Status) status - A Strophe connection status constant
+ *
+ */
+ function _onConnect(status)
+ {
+ var msg = null;
+
+ if (status == Strophe.Status.CONNECTING)
+{
+ msg = BeeChat.Events.Messages.ConnectionStates.CONNECTING;
+ }
+ else if (status == Strophe.Status.AUTHENTICATING) {
+ msg = BeeChat.Events.Messages.ConnectionStates.AUTHENTICATING;
+ }
+ else if (status == Strophe.Status.AUTHFAIL)
+ msg = BeeChat.Events.Messages.ConnectionStates.FAILED;
+ else if (status == Strophe.Status.CONNFAIL)
+ msg = BeeChat.Events.Messages.ConnectionStates.FAILED;
+ else if (status == Strophe.Status.DISCONNECTING)
+ msg = BeeChat.Events.Messages.ConnectionStates.DISCONNECTING;
+ else if (status == Strophe.Status.DISCONNECTED)
+ msg = BeeChat.Events.Messages.ConnectionStates.OFFLINE;
+ else if (status == Strophe.Status.CONNECTED) {
+ msg = BeeChat.Events.Messages.ConnectionStates.ONLINE;
+ _connection.addHandler(_onIQResult, null, 'iq', BeeChat.IQ.Types.RESULT, null, null);
+ _connection.addHandler(_onPresence, null, 'presence', null, null, null);
+ _connection.addHandler(_onMessageChat, null, 'message', BeeChat.Message.Types.CHAT, null, null);
+ _connection.addHandler(_onMessageChatRoom, null, 'message', BeeChat.Message.Types.GROUPCHAT, null, null);
+ }
+
+ _fire(BeeChat.Events.Identifiers.UPDATE_CONNECTION_STATE, msg);
+ }
+
+ /** PrivateFunction: _onIQResult
+ * Manage received IQ stanza of 'result' type
+ *
+ * Parameters:
+ * (XMLElement) iq - The iq stanza received
+ *
+ */
+ function _onIQResult(iq)
+ {
+ _roster.updateFromIQResult(iq);
+ _fire(BeeChat.Events.Identifiers.UPDATE_ROSTER, _roster.getItems());
+
+ return true;
+ }
+
+ /** PrivateFunction: _onPresence
+ * Manage received presence stanza
+ *
+ * Parameters:
+ * (XMLElement) presence - The presence stanza received
+ *
+ */
+ function _onPresence(presence)
+ {
+ var xquery = presence.getElementsByTagName("x");
+ debugXMPP('_onPresence'+xquery);
+ if (xquery.length > 0)
+ {
+ //Ignore MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+ if (xmlns && xmlns.match(Strophe.NS.MUC + '#user'))
+ {
+ var contactBareJid = $(presence).attr('from').split('/')[0];
+ var userNick = $(presence).attr('from').split('/')[1];
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ if ($(presence).attr('type') != 'unavailable') {
+ BeeChat.UI.ChatBoxes.updateRoster(contactBareJid, userNick, presence);
+ }
+ else {
+ if (chatBoxElm.length) {
+ BeeChat.UI.ChatBoxes.updateRoster(contactBareJid, userNick, presence);
+ }
+ }
+ return true;
+ }
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ var contactBareJid = $(presence).attr('from').split('/')[0];
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+
+ if ($(presence).attr('type') != 'unavailable' && $(presence).attr('type') != 'error') {
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ }
+ }
+ return true;
+ }
+
+ }
+ }
+
+ if (Strophe.getBareJidFromJid($(presence).attr('from')).toLowerCase() != Strophe.getBareJidFromJid(_jid).toLowerCase()) {
+ _roster.updateFromPresence(presence);
+ }
+ _fire(BeeChat.Events.Identifiers.RECV_PRESENCE, _roster.getOnlineItems());
+ return true;
+ }
+
+ /** PrivateFunction: _onMessageChat
+ * Manage received message stanza of 'chat' type
+ *
+ * Parameters:
+ * (XMLElement) message - The message stanza received
+ *
+ */
+ function _onMessageChatRoom(message)
+ {
+ var roomJid = $(message).attr('from').split('/');
+
+// BeeChat.UI.ChatBoxes.updateChatState($(message).attr('from'), message);
+ BeeChat.UI.ChatBoxes.update(roomJid[0], roomJid[1], Strophe.getText($(message).find('body')[0]), true);
+
+ return true;
+ }
+
+ function _onMessageChat(message)
+ {
+ var data = {
+ contactBareJid: Strophe.getBareJidFromJid($(message).attr('from')),
+ msg: message
+ };
+ _msgTemp.push(data);
+ //alert("message");
+ if (_initialized == true) {
+ for (var key in _msgTemp) {
+ if (typeof _msgTemp[key] != 'object')
+ continue;
+ _fire(BeeChat.Events.Identifiers.RECV_CHAT_MESSAGE, _msgTemp[key]);
+ _msgTemp.shift();
+ }
+ }
+
+ return true;
+ }
+
+ this.init(jid);
+};
+
+
+/** Constructor: BeeChat.Core.Roster
+ * Create a BeeChat.Core.Roster object
+ *
+ * Parameters:
+ * (Object) items - The roster's items in object notation
+ *
+ * Returns:
+ * A new BeeChat.Core.Roster.
+ */
+BeeChat.Core.Roster = function()
+{
+ if (!(this instanceof arguments.callee))
+ return new BeeChat.Core.Roster();
+
+ /** Private members
+ *
+ */
+ _items = null;
+
+
+ /** Constructor
+ *
+ */
+ this.init = function()
+ {
+ _items = (arguments.length > 0) ? arguments[0] : {};
+ }
+
+ /** Accessors
+ *
+ */
+ this.getItems = function()
+ {
+ return _items;
+ }
+
+ /** Mutators
+ *
+ */
+ this.setItems = function(items)
+ {
+ for (var key in items) {
+ _items[key] = new BeeChat.Core.RosterItem(items[key]);
+ var contactBareJid = items[key].bareJid;
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ var status = items[key].status;
+ /*if (status != 'unavailable' && status != 'error') {
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ }
+ }*/
+
+ }
+ }
+
+ this.setIcons = function(icons)
+ {
+ if (_items) {
+ for (var key in icons) {
+ if (_items[key]) {
+ _items[key].icon_small = icons[key].small;
+ _items[key].icon_tiny = icons[key].tiny;
+ }
+ }
+ }
+ }
+
+ this.setStatuses = function(statuses)
+ {
+ if (_items) {
+ for (var key in statuses) {
+ if (_items[key]) {
+ _items[key].status = statuses[key];
+ }
+ }
+ }
+ }
+
+ /** Function: updateFromIQResult
+ * Update the roster items from an IQ result stanza
+ *
+ * Parameters:
+ * (XMLElement) iq - The IQ result stanza
+ */
+ this.updateFromIQResult = function(iq)
+ {
+ $(iq).find('item').each(function() {
+ var attr = {
+ bareJid: Strophe.getBareJidFromJid($(this).attr('jid')).toLowerCase(),
+ name: $(this).attr('name'),
+ subscription: $(this).attr('subscription'),
+ groups: [],
+ presences: {}
+ };
+
+ $(this).find('group').each(function() {
+ attr['groups'].push($(this).text());
+ });
+
+ if (attr['groups'].length == 0)
+ attr['groups'].push(BeeChat.Roster.DEFAULT_GROUP);
+
+ if (!_items[attr.bareJid])
+ _items[attr.bareJid] = new BeeChat.Core.RosterItem(attr);
+ else {
+ _items[attr.bareJid].bareJid = attr.bareJid;
+ _items[attr.bareJid].name = attr.name;
+ _items[attr.bareJid].subscription = attr.subscription;
+ _items[attr.bareJid].groups = attr.groups;
+ }
+ });
+ }
+
+ /** Function: updateFromPresence
+ * Update the roster items from a presence stanza
+ *
+ * Parameters:
+ * (XMLElement) presence - The presence stanza
+ *
+ * Returns:
+ * (String) The bare jid of the roster item who updated his presence
+ */
+ this.updateFromPresence = function(presence)
+ {
+ var jid = $(presence).attr('from').toLowerCase();
+ var attr = {
+ bareJid: Strophe.getBareJidFromJid(jid),
+ name: null,
+ subscription: null,
+ groups: null,
+ presences: {}
+ };
+
+ attr.presences[jid] = {};
+ attr.presences[jid].type = (!$(presence).attr('type')) ? 'available' : $(presence).attr('type');
+ //alert($(presence).attr('from')+presence.toString());
+ //alert("presencetype"+attr.presences[jid].type);
+
+ if (attr.presences[jid].type == 'available') {
+ $(presence).children().each(function() {
+ if (this.tagName == BeeChat.Presence.ChildElements.SHOW)
+ attr.presences[jid].show = $(this).text();
+ if (this.tagName == BeeChat.Presence.ChildElements.STATUS)
+ attr.presences[jid].status = $(this).text();
+ });
+
+ if (!attr.presences[jid].show)
+ attr.presences[jid].show = 'chat';
+ } else {
+ attr.presences[jid].show = 'offline';
+ }
+
+ if (!_items[attr.bareJid])
+ _items[attr.bareJid] = new BeeChat.Core.RosterItem(attr);
+ else
+ _items[attr.bareJid].presences[jid] = attr.presences[jid];
+ }
+
+ /** Function: getOnlineItems
+ *
+ *
+ */
+ this.getOnlineItems = function()
+ {
+ var sortedOnlineBareJid = [];
+ var sortedOnlineItems = {};
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+
+ var pres = _items[key].getStrongestPresence();
+
+ if (pres != null && pres.type == 'available') {
+ sortedOnlineBareJid.push(key);
+ }
+ }
+
+ if (sortedOnlineBareJid.length > 1) {
+ sortedOnlineBareJid.sort();
+ sortedOnlineBareJid.sort(statusSort);
+ }
+
+ for (var key in sortedOnlineBareJid) {
+ sortedOnlineItems[sortedOnlineBareJid[key]] = _items[sortedOnlineBareJid[key]];
+ }
+
+ return (sortedOnlineItems);
+ }
+
+ /** Function: getSizeOnlineItems
+ * Return the number of available items
+ *
+ * Returns:
+ * (int) The number of available items
+ */
+ this.getSizeOnlineItems = function()
+ {
+ var n = 0;
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+
+ var pres = _items[key].getStrongestPresence();
+
+ if (pres != null && pres.type == 'available')
+ ++n;
+ }
+ return (n);
+ }
+
+ /** Function: getItemsUsernamesAsList
+ *
+ */
+ this.getItemsUsernamesAsList = function()
+ {
+ var data = '';
+
+ for (var key in _items) {
+ if (typeof _items[key] != 'object')
+ continue;
+ data = data + Strophe.getBareJidFromJid(key) + ',';
+ // data = data + Strophe.getNodeFromJid(key) + ',';
+ }
+
+ return (data);
+ }
+
+ /** PrivateFunction: statusSort
+ *
+ */
+ function statusSort(x, y)
+ {
+ var xPres = _items[x].getStrongestPresence();
+ var yPres = _items[y].getStrongestPresence();
+
+ if (xPres != null && yPres != null)
+ return (BeeChat.Core.Roster.Utils.comparePresences(xPres, yPres));
+ return (0);
+ }
+
+ this.init();
+};
+
+BeeChat.Core.Roster.Utils = {
+
+ /** Function: comparePresences
+ * Compare the two presences x and y
+ *
+ * Parameters:
+ * (Object) xPres - The x presence in object notation
+ * (Object) yPres - The y presence in object notation
+ *
+ * Returns:
+ * 0 if presence are equal, 1 if x > y, -1 if y > x
+ *
+ * Note:
+ * Presences are tagged in the following order:
+ * ONLINE < DND < AWAY < XA < OFFLINE
+ *
+ */
+ comparePresences: function(xPres, yPres)
+ {
+ var xRate = 0;
+ var yRate = 0;
+
+ if (xPres.type == 'unavailable')
+ xRate += BeeChat.Core.ReferenceTables.AvailabilityRates[xPres.type.toUpperCase()];
+ if (yPres.type == 'unavailable')
+ yRate += BeeChat.Core.ReferenceTables.AvailabilityRates[yPres.type.toUpperCase()];
+
+ if (xPres.show != null)
+ xRate += BeeChat.Core.ReferenceTables.AvailabilityRates[xPres.show.toUpperCase()];
+ if (yPres.show != null)
+ yRate =+ BeeChat.Core.ReferenceTables.AvailabilityRates[yPres.show.toUpperCase()];
+
+ if (xRate > yRate)
+ return (1);
+ else if (xRate == yRate)
+ return (0);
+ return (-1);
+ }
+};
+
+
+/** Constructor: BeeChat.Core.RosterItem
+ * Create a BeeChat.Core.RosterItem object
+ *
+ * Parameters:
+ * (Object) attr - The RosterItem's attributes in object notation
+ *
+ * Returns:
+ * A new BeeChat.Core.RosterItem.
+ */
+BeeChat.Core.RosterItem = function()
+{
+ this.bareJid = (arguments.length > 0) ? arguments[0].bareJid : null;
+ this.name = (arguments.length > 0) ? arguments[0].name : null;
+ this.subscription = (arguments.length > 0) ? arguments[0].subscription : null;
+ this.groups = (arguments.length > 0) ? arguments[0].groups : null;
+ this.presences = (arguments.length > 0) ? arguments[0].presences : null;
+ this.icon_small = (arguments.length > 0) ? arguments[0].icon_small : null;
+ this.icon_tiny = (arguments.length > 0) ? arguments[0].icon_tiny : null;
+ this.status = (arguments.length > 0) ? arguments[0].status : null;
+};
+BeeChat.Core.RosterItem.prototype = {
+ /** Function: getStrongestPresence
+ * Return the strongest presence of the RosterItem
+ *
+ */
+ getStrongestPresence: function()
+ {
+ var res = null;
+
+ for (var key in this.presences) {
+ if (typeof this.presences[key] != 'object')
+ continue;
+ if (res == null)
+ res = this.presences[key];
+ else
+ if (BeeChat.Core.Roster.Utils.comparePresences(this.presences[key], res) == -1)
+ res = this.presences[key];
+ }
+ return (res);
+ }
+};
+
+
+/** Class: BeeChat.UI
+ * An object container for all BeeChat UI functions
+ *
+ */
+BeeChat.UI = {
+ HAS_FOCUS: true,
+
+ Resources: {
+ Paths: {
+ ICONS: '<?php echo $vars['config']->url; ?>mod/beechat/graphics/icons/',
+ MEMBER_PROFILE: '<?php echo $vars['url']; ?>profile/'
+ },
+
+ Sounds: {
+ NEW_MESSAGE: 'beechat_sounds_new_message'
+ },
+
+ /*
+ Cookies: {
+ DOMAIN: 'beechannels.com',
+ FILENAME_CONN: 'beechat_conn'
+ },
+ */
+
+ Emoticons: {
+ FILENAME_SMILE: 'emoticon_smile.png',
+ FILENAME_UNHAPPY: 'emoticon_unhappy.png',
+ FILENAME_GRIN: 'emoticon_grin.png',
+ FILENAME_EVILGRIN: 'emoticon_evilgrin.png',
+ FILENAME_SURPRISED: 'emoticon_surprised.png',
+ FILENAME_TONGUE: 'emoticon_tongue.png',
+ FILENAME_WINK: 'emoticon_wink.png'
+ },
+
+ Strings: {
+ Availability: {
+ AVAILABLE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ CHAT: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ DND: "<?php echo elgg_echo('beechat:availability:dnd'); ?>",
+ AWAY: "<?php echo elgg_echo('beechat:availability:away'); ?>",
+ XA:"<?php echo elgg_echo('beechat:availability:xa'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:availability:offline'); ?>"
+ },
+
+ Contacts: {
+ BUTTON: "<?php echo elgg_echo('beechat:contacts:button'); ?>"
+ },
+
+ ChatMessages: {
+ SELF: "<?php echo $_SESSION['user']->name; ?>",
+ COMPOSING: "<?php echo elgg_echo('beechat:chat:composing'); ?>"
+ },
+
+ Box: {
+ MINIMIZE: "<?php echo elgg_echo('beechat:box:minimize'); ?>",
+ CLOSE: "<?php echo elgg_echo('beechat:box:close'); ?>",
+ SHOWHIDE: "<?php echo elgg_echo('beechat:box:showhide'); ?>"
+ }
+ },
+
+ StyleClasses: {
+ Availability: {
+ Left: {
+ ONLINE: 'beechat_left_availability_chat',
+ DND: 'beechat_left_availability_dnd',
+ AWAY: 'beechat_left_availability_away',
+ XA: 'beechat_left_availability_xa',
+ OFFLINE: 'beechat_left_availability_offline',
+ ROOM: 'beechat_left_availability_room'
+ },
+
+ Right: {
+ ONLINE: 'beechat_right_availability_chat',
+ DND: 'beechat_right_availability_dnd',
+ AWAY: 'beechat_right_availability_away',
+ XA: 'beechat_right_availability_xa',
+ OFFLINE: 'beechat_right_availability_offline',
+ ROOM: 'beechat_right_availability_room'
+ },
+
+ Control: {
+ UP: 'beechat_availability_switcher_control_up',
+ DOWN: 'beechat_availability_switcher_control_down'
+ }
+ },
+
+ ChatBox: {
+ MAIN: 'beechat_chatbox',
+ MAINROOM: 'beechat_chatbox_room',
+ TOP: 'beechat_chatbox_top',
+ SUBTOP: 'beechat_chatbox_subtop',
+ TOP_ICON: 'beechat_chatbox_top_icon',
+ TOP_CONTROLS: 'beechat_chatbox_top_controls',
+ CONTENT: 'beechat_chatbox_content',
+ INPUT: 'beechat_chatbox_input',
+ BOTTOM: 'beechat_chatbox_bottom',
+ CONTROL: 'beechat_chatbox_control',
+ STATE: 'beechat_chatbox_state',
+ MESSAGE: 'beechat_chatbox_message',
+ MESSAGE_SENDER: 'beechat_chatbox_message_sender',
+ MESSAGE_DATE: 'beechat_chatbox_message_date',
+ CHATROOM: 'beechat_chatbox_chatroom',
+ ROOMROSTER: 'beechat_chatbox_roomroster',
+ ROSTER_ITEM: 'beechat_chatbox_roomrosteritem'
+ },
+
+ ScrollBox: {
+ SELECTED: 'beechat_scrollbox_selected'
+ },
+
+ BOX_CONTROL: 'beechat_box_control',
+ LABEL: 'beechat_label',
+ UNREAD_COUNT: 'beechat_unread_count'
+ },
+
+ Elements: {
+ ID_DIV_BAR: 'beechat',
+ ID_DIV_BAR_CENTER: 'beechat_center',
+ ID_DIV_BAR_RIGHT: 'beechat_right',
+
+ ID_TOOLTIP_TRIGGER: 'beechat_tooltip_trigger',
+
+ ID_SPAN_CONTACTS_BUTTON: 'beechat_contacts_button',
+ ID_SPAN_CLOSE_BOX: 'beechat_box_control_close',
+
+ ID_DIV_CONTACTS: 'beechat_contacts',
+ ID_DIV_CONTACTS_CONTROLS: 'beechat_contacts_controls',
+ ID_SPAN_CONTACTS_CONTROL_MINIMIZE: 'beechat_contacts_control_minimize',
+ ID_DIV_CONTACTS_CONTENT: 'beechat_contacts_content',
+ ID_UL_CONTACTS_LIST: 'beechat_contacts_list',
+
+ ID_DIV_AVAILABILITY_SWITCHER: 'beechat_availability_switcher',
+ ID_SPAN_AVAILABILITY_SWITCHER_CONTROL: 'beechat_availability_switcher_control',
+ ID_SPAN_CURRENT_AVAILABILITY: 'beechat_current_availability',
+ ID_UL_AVAILABILITY_SWITCHER_LIST: 'beechat_availability_switcher_list',
+
+ ID_DIV_CHATBOXES: 'beechat_chatboxes',
+
+ ID_DIV_SCROLLBOXES: 'beechat_scrollboxes'
+ }
+ },
+
+
+ /** Function: initialize
+ * Initialize the BeeChat UI
+ *
+ */
+ initialize: function(ts, token)
+ {
+ this.ts = ts;
+ this.token = token;
+ $('#' + BeeChat.UI.Resources.Elements.ID_TOOLTIP_TRIGGER).tooltip({
+ offset: [-3, 8],
+ effect: 'fade'
+ });
+
+ $('#accountlinks').find('li').filter('[class=last]').bind('click', function() {
+ if (g_beechat_user != null)
+ g_beechat_user.disconnect();
+ });
+
+ BeeChat.UI.AvailabilitySwitcher.initialize(BeeChat.Presence.ShowElements.CHAT);
+ BeeChat.UI.ContactsList.initialize();
+ BeeChat.UI.ScrollBoxes.initialize();
+ BeeChat.UI.loadConnection();
+ },
+
+ /** Function: getUserDetails
+ * Retrieve user details
+ *
+ * Returns:
+ * User details in object notation.
+ *
+ */
+ addActionTokens: function(url_string, sep)
+ {
+ if (sep == null)
+ sep = "?";
+ return url_string + sep + "__elgg_ts="+this.ts + "&__elgg_token=" + this.token;
+ },
+
+ getUserDetails: function(cb_func)
+ {
+ var json = null;
+ var self = this;
+
+ $.ajax({
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_details"; ?>'),
+ async: true,
+ dataType: 'json',
+ success: function(data) {
+ cb_func(data);
+ }
+ });
+
+ return (json);
+ },
+
+ /** Function: connect
+ * Create the user and connect him to the BOSH service
+ *
+ * Parameters:
+ * (Object) conn - Running connection informations in object notation
+ */
+ connect: function()
+ {
+ var conn = (arguments.length > 0) ? arguments[0] : null;
+ var userDetails = {
+ jid: (conn != null) ? conn.jid : null,
+ password: null
+ }
+ var self = this;
+ //alert("connect");
+ if (conn == null || (conn != null && conn.attached)) {
+ BeeChat.UI.getUserDetails(function(retrievedUserDetails) {
+ userDetails.jid = retrievedUserDetails.username + '@' + BeeChat.DOMAIN + '/' + BeeChat.RESOURCE;
+ userDetails.password = retrievedUserDetails.password;
+ self.connect_end(conn, userDetails)
+ });
+ }
+ else
+ this.connect_end(conn, userDetails)
+ },
+
+ connect_end: function(conn, userDetails)
+ {
+ g_beechat_user = new BeeChat.Core.User(userDetails.jid);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.UPDATE_CONNECTION_STATE, BeeChat.UI.updateConnectionStatus);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.UPDATE_ROSTER, BeeChat.UI.onRosterUpdate);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.RECV_PRESENCE, BeeChat.UI.ContactsList.update);
+ g_beechat_user.addObserver(BeeChat.Events.Identifiers.RECV_CHAT_MESSAGE, BeeChat.UI.onChatMessage);
+
+ if (conn == null || (conn != null && conn.attached))
+ g_beechat_user.connect(userDetails.password);
+ else
+ g_beechat_user.attach(conn.sid, conn.rid);
+ },
+
+ /** Function: disconnect
+ * Terminate the user's XMPP session
+ *
+ */
+ disconnect: function()
+ {
+ g_beechat_user.disconnect();
+ },
+
+ /** Function: updateConnectionStatus
+ *
+ */
+ updateConnectionStatus: function(connStatusMsg)
+ {
+ BeeChat.UI.ContactsList.updateButtonText(connStatusMsg);
+ if (connStatusMsg == BeeChat.Events.Messages.ConnectionStates.ONLINE) {
+ if (!g_beechat_user.isAttached()) {
+ debugXMPP("not attached");
+ BeeChat.UI.ScrollBoxes.isOpened = true;
+ g_beechat_user.requestRoster();
+ g_beechat_user.reconnectRooms();
+ //BeeChat.UI.ContactsList.toggleDisplay();
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).show();
+ $('.' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + '>textarea').removeAttr('disabled');
+ for (room_idx in g_user_rooms) {
+ var room = g_user_rooms[room_idx];
+ var chatBox = BeeChat.UI.ChatBoxes.getChatBoxElm(room[0]);
+ if (chatBox.length == 0) {
+ g_beechat_user.joinRoom(room[0], room[1])
+ }
+ }
+
+ }
+ if (g_beechat_user.isAttached()) {
+ debugXMPP("attached");
+ BeeChat.UI.loadState();
+ }
+
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'online');
+ BeeChat.UI.saveConnection();
+ }
+ else if (connStatusMsg == BeeChat.Events.Messages.ConnectionStates.OFFLINE) {
+ var contactsBoxElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS);
+
+ if (!contactsBoxElm.is(':hidden'))
+ BeeChat.UI.ContactsList.toggleDisplay();
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).empty();
+ BeeChat.UI.AvailabilitySwitcher.initialize(BeeChat.Presence.ShowElements.CHAT);
+ BeeChat.UI.ContactsList.updateButtonText(BeeChat.UI.Resources.Strings.Contacts.BUTTON);
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'offline');
+ $('.' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + '>textarea').attr('disabled', 'true');
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().hide();
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children()
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()]);
+ g_beechat_user = null;
+ BeeChat.UI.saveConnection();
+ }
+ },
+
+ /** Function: saveConnection
+ * Save connection informations (non sensible data) in $_SESSION.
+ *
+ */
+ saveConnection: function()
+ {
+ var conn = null;
+
+ if (g_beechat_user != null) {
+ var userConn = g_beechat_user.getConnection();
+
+ conn = {
+ 'jid': userConn.jid,
+ 'sid': userConn.sid,
+ 'rid': userConn.rid,
+ 'attached': g_beechat_user.isAttached()
+ };
+ }
+ var self = this;
+
+ $.ajax({
+ type: 'POST',
+ async: false,
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/save_state"; ?>'),
+ data: { beechat_conn: JSON.stringify(conn) }
+ });
+
+ /*
+ $.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN, null);
+ $.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN, JSON.stringify(conn), {path: '/', domain: BeeChat.UI.Resources.Cookies.DOMAIN});
+ */
+ },
+
+ /** Function: loadConnection
+ * Check if a connection already exists. In the case that a connection exists,
+ * this function triggers the connection process.
+ *
+ */
+ loadConnection: function()
+ {
+ var self = this;
+ $.ajax({
+ type: 'GET',
+ async: false,
+ cache: false,
+ dataType: 'json',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_connection"; ?>'),
+ success: function(conn) {
+ if (conn != null) {
+ if (conn.attached)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.connect(conn);
+ }
+ },
+ error: function() {
+ BeeChat.UI.connect();
+ }
+ });
+
+ /*
+ var conn = JSON.parse($.cookie(BeeChat.UI.Resources.Cookies.FILENAME_CONN));
+
+ if (conn != null) {
+ if (conn.attached)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.connect(conn);
+ } else
+ BeeChat.UI.connect();
+ */
+ },
+
+ /** Function: saveState
+ * Save app state in $_SESSION
+ *
+ */
+ saveState: function()
+ {
+ var self = this;
+ var currentAvailabilityClass = $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY).attr('class');
+ var currentAvailability = currentAvailabilityClass.substr(currentAvailabilityClass.lastIndexOf('_') + 1);
+
+ var data = {
+ availability: currentAvailability,
+ contacts: g_beechat_roster_items,
+ chats: {},
+ contacts_list: {
+ minimized: $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS).is(':hidden')
+ }
+ };
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ var contactBareJid = $(this).attr('bareJid');
+ //var contactBareJid = $(this).data('bareJid');
+ var isroom = ($(this).attr('isroom') == 'true');
+ if (isroom)
+ var roster = $(this).find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ var html_content = $(this).children().filter('[bareJid="' + contactBareJid + '"]').html();
+ data.chats[contactBareJid] = {
+ 'html_content': escape(html_content),
+ 'roster_content': isroom?escape(roster.html()):'',
+ 'isroom': $(this).attr('isroom'),
+ 'group_guid': (contactBareJid in g_beechat_rooms)?g_beechat_rooms[contactBareJid]:0,
+ 'minimized': $(this).is(':hidden'),
+ 'unread': BeeChat.UI.UnreadCountBox.getElm(contactBareJid).text()
+ };
+ });
+
+ $.ajax({
+ type: 'POST',
+ async: false,
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/save_state"; ?>'),
+ data: { beechat_state: JSON.stringify(data) }
+ });
+ },
+
+ /** Function: loadState
+ * Load app state from $_SESSION
+ *
+ */
+ loadState: function()
+ {
+ var self = this;
+ $.ajax({
+ type: 'GET',
+ async: true,
+ cache: false,
+ dataType: 'json',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_state"; ?>'),
+ error: function() {
+ alert('error getting state');
+ },
+ success: function(json) {
+ debugXMPP('loadState');
+ BeeChat.UI.AvailabilitySwitcher.initialize(json.availability);
+
+ if (!json.contacts_list.minimized) {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS).show();
+ BeeChat.UI.ContactsList.showedStyle();
+ }
+
+ g_beechat_user.getRoster().setItems(json.contacts);
+ self.loadRosterItemsIcons(false);
+ self.loadRosterItemsStatuses(false);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ g_beechat_user.setInitialized(true);
+
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElmToShow = null;
+
+ // Load saved chats
+ for (var key in json.chats) {
+ var isroom = (json.chats[key].isroom == 'true');
+ if (isroom)
+ BeeChat.UI.ScrollBoxes.addRoom(key);
+ else
+ BeeChat.UI.ScrollBoxes.add(key);
+
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(key);
+ debugXMPP("load chat " + key);
+ chatBoxElm.hide();
+
+ if (!json.chats[key].minimized) {
+ scrollBoxElmToShow = BeeChat.UI.ScrollBoxes.getScrollBoxElm(key);
+ }
+
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + key + '"]');
+
+ chatBoxContentElm.append(unescape(json.chats[key].html_content));
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ if (isroom) {
+ g_beechat_rooms[key] = json.chats[key].room_guid;
+ var rosterElm = chatBoxElm.find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ rosterElm.append(unescape(json.chats[key].roster_content));
+ }
+
+ BeeChat.UI.UnreadCountBox.update(key, json.chats[key].unread);
+ }
+ if (scrollBoxElmToShow != null)
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElmToShow));
+ else
+ scrollBoxesElm.trigger('goto', 0);
+
+ // g_beechat_user.sendPresenceAvailability(json.availability, '');
+ BeeChat.UI.ScrollBoxes.isInitialized = true;
+ BeeChat.UI.ScrollBoxes.isOpened = true;
+
+ for (var key in json.chats) {
+ if (json.chats[key].minimized) {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(key).hide();
+ BeeChat.UI.ScrollBoxes.unselect(key);
+ }
+ else {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(key).show();
+ BeeChat.UI.ScrollBoxes.select(key);
+ }
+ }
+ for (room_idx in g_user_rooms) {
+ var room = g_user_rooms[room_idx];
+ var chatBox = BeeChat.UI.ChatBoxes.getChatBoxElm(room[0]);
+ if (chatBox.length == 0) {
+ g_beechat_user.joinRoom(room[0], room[1])
+ }
+ }
+
+ },
+ error: function() {
+ BeeChat.UI.ContactsList.initialize();
+ }
+ });
+ },
+
+ /** Function: loadRosterItemsIcons
+ *
+ */
+ loadRosterItemsIcons: function(is_async, cb)
+ {
+ var data = g_beechat_user.getRoster().getItemsUsernamesAsList();
+ var self = this;
+
+ $.ajax({
+ type: 'POST',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_icons"; ?>'),
+ async: is_async,
+ cache: false,
+ data: {'beechat_roster_items_usernames': data},
+ dataType: 'json',
+ success: function(json) {
+ g_beechat_user.getRoster().setIcons(json);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ if (cb) {
+ cb();
+ }
+ }
+ });
+ },
+
+ /** Function: loadRosterItemsStatuses
+ *
+ */
+ loadRosterItemsStatuses: function(is_async, cb)
+ {
+ var data = g_beechat_user.getRoster().getItemsUsernamesAsList();
+//alert(data)
+ var self = this;
+ $.ajax({
+ type: 'POST',
+ url: self.addActionTokens('<?php echo $vars['url'] . "action/beechat/get_statuses"; ?>'),
+ async: true, // force
+ cache: false,
+ data: {'beechat_roster_items_usernames': data},
+ dataType: 'json',
+ success: function(json) {
+ g_beechat_user.getRoster().setStatuses(json);
+ g_beechat_roster_items = g_beechat_user.getRoster().getItems();
+ BeeChat.UI.ContactsList.update(g_beechat_user.getRoster().getOnlineItems())
+ if (cb) {
+ cb();
+ }
+ }
+ });
+ },
+
+ /** Function: onRosterUpdate
+ * Notified by core on a roster update
+ *
+ */
+ onRosterUpdate: function(rosterItems)
+ {
+ g_beechat_roster_items = rosterItems;
+ //alert("get roster");
+ if (!g_beechat_user.isInitialized()) {
+ //alert("load roster" + rosterItems.length);
+ BeeChat.UI.loadRosterItemsStatuses(true,
+ function() { BeeChat.UI.loadRosterItemsIcons(true,
+ function() {g_beechat_user.sendInitialPresence();}); });
+ //BeeChat.UI.loadRosterItemsIcons(false);
+ //g_beechat_user.sendInitialPresence();
+ }
+ },
+
+ /** Function: onChatMessage
+ *
+ */
+ onChatMessage: function(data)
+ {
+ if ($(data.msg).find('body').length == 0) {
+ BeeChat.UI.ChatBoxes.updateChatState(data.contactBareJid, data.msg);
+ }
+ else {
+ BeeChat.UI.ChatBoxes.update(data.contactBareJid, BeeChat.UI.Utils.getContactName(data.contactBareJid), Strophe.getText($(data.msg).find('body')[0]));
+ }
+ }
+};
+
+
+/** Class: BeeChat.UI.Resources.ReferenceTables
+ * An object container for all reference tables
+ *
+ */
+BeeChat.UI.Resources.ReferenceTables = {
+ Styles: {
+ Availability: {
+ Left: {
+ AVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Left.ONLINE,
+ CHAT: BeeChat.UI.Resources.StyleClasses.Availability.Left.ONLINE,
+ DND: BeeChat.UI.Resources.StyleClasses.Availability.Left.DND,
+ AWAY: BeeChat.UI.Resources.StyleClasses.Availability.Left.AWAY,
+ XA: BeeChat.UI.Resources.StyleClasses.Availability.Left.XA,
+ UNAVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Left.OFFLINE,
+ OFFLINE: BeeChat.UI.Resources.StyleClasses.Availability.Left.OFFLINE,
+ ROOM: BeeChat.UI.Resources.StyleClasses.Availability.Left.ROOM
+ },
+
+ Right: {
+ AVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Right.ONLINE,
+ CHAT: BeeChat.UI.Resources.StyleClasses.Availability.Right.ONLINE,
+ DND: BeeChat.UI.Resources.StyleClasses.Availability.Right.DND,
+ AWAY: BeeChat.UI.Resources.StyleClasses.Availability.Right.AWAY,
+ XA: BeeChat.UI.Resources.StyleClasses.Availability.Right.XA,
+ UNAVAILABLE: BeeChat.UI.Resources.StyleClasses.Availability.Right.OFFLINE,
+ OFFLINE: BeeChat.UI.Resources.StyleClasses.Availability.Right.OFFLINE,
+ ROOM: BeeChat.UI.Resources.StyleClasses.Availability.Right.ROOM
+ }
+ }
+ }
+};
+
+
+/** Class: BeeChat.UI.ContactsList
+ * An object container for all ContactsList functions
+ *
+ */
+BeeChat.UI.ContactsList = {
+ /** Function: initialize
+ * Initialize the contacts list by binding elements
+ *
+ */
+ initialize: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_CONTROL_MINIMIZE).unbind('click').bind('click', BeeChat.UI.ContactsList.toggleDisplay);
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).unbind('click').bind('click', function() {
+ if (g_beechat_user == null)
+ BeeChat.UI.connect();
+ else
+ BeeChat.UI.ContactsList.toggleDisplay();
+ });
+ },
+
+ /** Function: update
+ * Update the contacts list content
+ *
+ * Parameters:
+ * (Object)(BeeChat.Core.RosterItem) onlineRosterItems - A hash of RosterItems in object notation
+ *
+ */
+ update: function(onlineRosterItems)
+ {
+ var contactsListElm = $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST);
+
+ contactsListElm.children().each(function() {
+ var contactBareJid = $(this).attr('bareJid');
+
+ if (g_beechat_roster_items != null) {
+ if ($.inArray(contactBareJid, onlineRosterItems) == -1) {
+ BeeChat.UI.ScrollBoxes.updateAvailability(contactBareJid);
+ $(this).remove();
+ }
+ }
+ });
+
+ for (var key in onlineRosterItems) {
+ if (typeof onlineRosterItems[key] != 'object')
+ continue;
+
+ var contactElm = contactsListElm.find('li').filter('[bareJid="' + key + '"]');
+
+ if (contactElm.length == 0) {
+ contactElm = $('<li></li>')
+ .attr('bareJid', key)
+ .append($('<img />')
+ .attr('src', g_beechat_roster_items[key].icon_tiny))
+ .append(BeeChat.UI.Utils.getTruncatedContactName(key, 25))
+ .appendTo(contactsListElm)
+ .bind('click', function() {
+ if (!BeeChat.UI.ChatBoxes.getChatBoxElm($(this).attr('bareJid')).is(':visible')) {
+ BeeChat.UI.ContactsList.toggleDisplay();
+ }
+
+ BeeChat.UI.ScrollBoxes.add($(this).attr('bareJid'), false, true);
+ });
+ }
+
+ BeeChat.UI.ContactsList.updateContactAvailability(contactElm, key);
+ }
+
+ BeeChat.UI.ContactsList.updateButtonText(BeeChat.UI.Resources.Strings.Contacts.BUTTON + ' (<strong>' + g_beechat_user.getRoster().getSizeOnlineItems() + '</strong>)');
+ },
+
+ /** Function: updateContactAvailability
+ *
+ */
+ updateContactAvailability: function(contactElm, contactBareJid)
+ {
+ // Update from contactsList
+ contactElm.attr('class', BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Right[g_beechat_roster_items[contactBareJid].getStrongestPresence().show.toUpperCase()]);
+
+ // Update from scrollBoxes
+ BeeChat.UI.ScrollBoxes.updateAvailability(contactBareJid);
+ },
+
+ /** Function: updateButtonText
+ *
+ *
+ */
+ updateButtonText: function(msg)
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).html(msg);
+ },
+
+ /** Function: toggleDisplay
+ * Toggle the contacts box display (hide | show)
+ *
+ */
+ toggleDisplay: function()
+ {
+ var contactsBoxElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CONTACTS);
+
+ contactsBoxElm.toggle();
+ if (contactsBoxElm.is(':hidden')) {
+ BeeChat.UI.ContactsList.hiddenStyle();
+ } else {
+ BeeChat.UI.ContactsList.showedStyle();
+ }
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).hide();
+ },
+
+ /** Function: hiddenStyle
+ *
+ */
+ hiddenStyle: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_RIGHT).css({'border-left': '1px solid #BBBBBB', 'border-right': '1px solid #BBBBBB', 'background-color': '#DDDDDD'});
+ },
+
+ /** Function: showedStyle
+ *
+ */
+ showedStyle: function()
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_RIGHT).css({'border-left': '1px solid #666666', 'border-right': '1px solid #666666', 'background-color': 'white'});
+ }
+};
+
+
+/** Class: BeeChat.UI.AvailabilitySwitcher
+ * An object container for all AvailabilitySwitcher functions
+ *
+ */
+BeeChat.UI.AvailabilitySwitcher = {
+ /** Function: initialize
+ * Initialize the availability switcher by setting the current user's availability
+ * and binding actions
+ *
+ */
+ initialize: function(availability)
+ {
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY).unbind('click').bind('click', BeeChat.UI.AvailabilitySwitcher.toggleListDisplay);
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_AVAILABILITY_SWITCHER_CONTROL).unbind('click').bind('click', BeeChat.UI.AvailabilitySwitcher.toggleListDisplay);
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).find('li').each(function() {
+ $(this).unbind('click').bind('click', function() {
+ var availabilityClass = $(this).attr('class');
+ var availability = availabilityClass.substr(availabilityClass.lastIndexOf('_') + 1);
+
+ if (availability == 'offline')
+ BeeChat.UI.disconnect();
+ else {
+ g_beechat_user.sendPresenceAvailability(availability, '');
+ BeeChat.UI.AvailabilitySwitcher.update(availability);
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).hide('slow');
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).show('slow');
+ }
+ });
+ });
+ BeeChat.UI.AvailabilitySwitcher.update(availability);
+ },
+
+ /** Function: update
+ * Update the current user's availability
+ *
+ * Parameters:
+ * (BeeChat.Presence.ShowElements) availability - The current user's availability
+ */
+ update: function(availability)
+ {
+ var upperCasedAvailability = availability.toUpperCase();
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CURRENT_AVAILABILITY)
+ .attr('class', BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[upperCasedAvailability])
+ .text(BeeChat.UI.Resources.Strings.Availability[upperCasedAvailability]);
+
+ if (availability == 'chat')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'online');
+ else if (availability == 'xa' || availability == 'away')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'away');
+ else if (availability == 'dnd')
+ $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_CONTACTS_BUTTON).attr('class', 'dnd');
+ },
+
+ /** Function: switchControlClass
+ *
+ */
+ switchControlClass: function()
+ {
+ var switcherControlElm = $('#' + BeeChat.UI.Resources.Elements.ID_SPAN_AVAILABILITY_SWITCHER_CONTROL);
+
+ if (switcherControlElm.attr('class') == BeeChat.UI.Resources.StyleClasses.Availability.Control.UP)
+ switcherControlElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Control.DOWN);
+ else
+ switcherControlElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Control.UP);
+ },
+
+ /** Function: toggleListDisplay
+ *
+ */
+ toggleListDisplay: function()
+ {
+ BeeChat.UI.AvailabilitySwitcher.switchControlClass();
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_CONTACTS_LIST).toggle('slow');
+ $('#' + BeeChat.UI.Resources.Elements.ID_UL_AVAILABILITY_SWITCHER_LIST).toggle('slow');
+ }
+};
+
+
+/** Class: BeeChat.UI.ScrollBoxes
+ * An object container for all ScrollBoxes related functions
+ *
+ */
+BeeChat.UI.ScrollBoxes = {
+ isInitialized: false,
+ isOpened: false,
+
+ /** Function: initialize
+ *
+ */
+ initialize: function() {
+ var $prev = $('#beechat_center_prev'),
+ $next = $('#beechat_center_next');
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_BAR_CENTER).serialScroll({
+ target: '#beechat_scrollboxes',
+ items: 'li',
+ prev: '#beechat_center_prev',
+ next: '#beechat_center_next',
+ axys: 'x',
+ start: 2,
+ step: -1,
+ interval: 0,
+ duration: 0,
+ cycle: false,
+ force: true,
+ jump: true,
+ lock: true,
+ lazy: true,
+ constant: true,
+
+ onBefore: function(e, elem, $pane, $items, pos) {
+ $next.add($prev).hide();
+ $prev.add($next).hide();
+ if (pos != 0) {
+ $next.show();
+ }
+ if (pos != $items.length - 1)
+ $prev.show();
+ },
+
+ onAfter: function(elem) {
+ BeeChat.UI.ChatBoxes.takeStand($(elem).attr('bareJid'));
+ BeeChat.UI.ScrollBoxes.isInitialized = true;
+ }
+ });
+ },
+
+ /** Function: add
+ * Add a scrollbox to the scrollboxes bar
+ *
+ */
+ addRoom: function(contactBareJid)
+ {
+ debugXMPP('addRoom' + contactBareJid);
+ BeeChat.UI.ScrollBoxes.add(contactBareJid, true);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ scrollBoxElm.attr('class', BeeChat.UI.Resources.StyleClasses.Availability.Left.ROOM);
+ },
+
+ add: function(contactBareJid, isroom)
+ {
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = scrollBoxesElm.find('ul').children().filter('[bareJid="' + contactBareJid + '"]');
+ debugXMPP("add " + contactBareJid + " " + scrollBoxElm.length);
+ if (scrollBoxElm.length == 0) {
+ var availClass = null;
+ var pres = null;
+ if (g_beechat_roster_items != undefined)
+ pres = g_beechat_roster_items[contactBareJid] != null ? g_beechat_roster_items[contactBareJid].getStrongestPresence() : null;
+
+ if (pres != null)
+ availClass = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[pres.show.toUpperCase()];
+ else
+ availClass = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()];
+
+ scrollBoxElm = $('<li></li>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + availClass)
+ .attr('bareJid', contactBareJid)
+ .attr('isroom', isroom?'true':'false')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.SHOWHIDE)
+ .text(BeeChat.UI.Utils.getTruncatedContactName(contactBareJid, 11))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.BOX_CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('X')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.CLOSE)
+ .bind('click', function() {
+ if (isroom)
+ g_beechat_user.leaveRoom(contactBareJid);
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+
+ BeeChat.UI.ChatBoxes.remove($(this).parent().attr('bareJid'));
+ BeeChat.UI.UnreadCountBox.remove($(this).parent().attr('bareJid'));
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(BeeChat.UI.ScrollBoxes.getSelectedScrollBoxElm()));
+ BeeChat.UI.saveState();
+ }));
+
+ scrollBoxesElm.find('ul').append(scrollBoxElm);
+ BeeChat.UI.ChatBoxes.add(contactBareJid, isroom);
+ if (arguments.length == 3 && arguments[2])
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ if (!isroom) {
+ BeeChat.UI.loadRosterItemsStatuses(true, function () { BeeChat.UI.loadRosterItemsIcons(true); });
+ }
+ } else {
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ }
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).remove();
+ },
+
+ /** Function: unselect
+ *
+ */
+ unselect: function(contactBareJid)
+ {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ scrollBoxElm.attr('class', (scrollBoxElm.attr('class')).replace(/beechat_scrollbox_selected/, ''));
+ },
+
+ /** Function: select
+ *
+ */
+ select: function(contactBareJid)
+ {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ var scrollBoxElmClasses = scrollBoxElm.attr('class');
+
+ if (scrollBoxElmClasses.search(/beechat_scrollbox_selected/) == -1)
+ scrollBoxElm.attr('class', scrollBoxElmClasses + ' ' + BeeChat.UI.Resources.StyleClasses.ScrollBox.SELECTED);
+ },
+
+ /** Function: updateAvailability
+ *
+ */
+ updateAvailability: function(contactBareJid)
+ {
+ var pres = g_beechat_roster_items[contactBareJid].getStrongestPresence();
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+ var scrollBoxElmClasses = scrollBoxElm.attr('class');
+ var updatedAvailability = null;
+
+ if (pres != null)
+ updatedAvailability = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[pres.show.toUpperCase()];
+ else
+ updatedAvailability = BeeChat.UI.Resources.ReferenceTables.Styles.Availability.Left[BeeChat.Presence.Types.UNAVAILABLE.toUpperCase()];
+
+ if (scrollBoxElmClasses == undefined || scrollBoxElmClasses.search(/(beechat_left_availability_)/g) == -1) {
+ scrollBoxElm.attr('class', BeeChat.UI.Resources.StyleClasses.LABEL + ' ' + updatedAvailability);
+ } else {
+ updatedAvailability = updatedAvailability.replace(/(beechat_left_availability)/g, '');
+
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_chat)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_dnd)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_away)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_xa)/g, updatedAvailability);
+ scrollBoxElmClasses = scrollBoxElmClasses.replace(/(_offline)/g, updatedAvailability);
+
+ scrollBoxElm.attr('class', scrollBoxElmClasses);
+ }
+ },
+
+ /** Function: getSelectedScrollBoxElm
+ *
+ */
+ getSelectedScrollBoxElm: function(contactBareJid)
+ {
+ var elm = undefined;
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children().each(function() {
+ if ($(this).attr('class').search(/beechat_scrollbox_selected/) != -1)
+ elm = $(this);
+ });
+
+ return (elm);
+ },
+
+ /** Function: getScrollBoxElm
+ *
+ */
+ getScrollBoxElm: function(contactBareJid)
+ {
+ return $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES).find('ul').children().filter('[bareJid="' + contactBareJid + '"]');
+ }
+};
+
+
+/** Class: BeeChat.UI.ChatBoxes
+ * An object container for all ChatBoxes related functions
+ *
+ */
+BeeChat.UI.ChatBoxes = {
+ dateLastComposing: {},
+ lastTimedPauses: {},
+
+ /** Function: add
+ *
+ */
+ add: function(contactBareJid, isroom)
+ {
+ var chatBoxes = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES);
+
+ if ($(chatBoxes).children().filter('[bareJid="' + contactBareJid + '"]').length == 0) {
+ debugXMPP("create chatbox " + contactBareJid);
+ var chatBox = $('<div></div>')
+ .attr('class', isroom ? BeeChat.UI.Resources.StyleClasses.ChatBox.MAIN : BeeChat.UI.Resources.StyleClasses.ChatBox.MAIN)
+ .attr('bareJid', contactBareJid)
+ .attr('isroom', isroom ? 'true' : 'false')
+ .hide();
+
+ var chatBoxTop = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP);
+ if (!isroom)
+ chatBoxTop.append($('<a></a>')
+ .attr('href', BeeChat.UI.Resources.Paths.MEMBER_PROFILE + Strophe.getNodeFromJid(contactBareJid))
+ .append($('<img />')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP_ICON)
+ .attr('src', (g_beechat_roster_items != null && g_beechat_roster_items[contactBareJid] != undefined)?g_beechat_roster_items[contactBareJid].icon_small:'')))
+ chatBoxTop.append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.LABEL)
+ .html(isroom?BeeChat.UI.Utils.getTruncatedContactName(contactBareJid).split('@')[0]:'<a href="' + BeeChat.UI.Resources.Paths.MEMBER_PROFILE + Strophe.getNodeFromJid(contactBareJid) + '">' + BeeChat.UI.Utils.getTruncatedContactName(contactBareJid) + '</a>'))
+ .append($('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.TOP_CONTROLS)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('X')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.CLOSE)
+ .bind('click', function() {
+ if (isroom)
+ g_beechat_user.leaveRoom(contactBareJid);
+ BeeChat.UI.ChatBoxes.remove(contactBareJid);
+ }))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTROL)
+ .attr('id', BeeChat.UI.Resources.Elements.ID_SPAN_CLOSE_BOX)
+ .text('_')
+ .attr('title', BeeChat.UI.Resources.Strings.Box.MINIMIZE)
+ .css({'font-size': '1.6em', 'position': 'relative', 'line-height': '4px'})
+ .bind('click', function() {
+ BeeChat.UI.ScrollBoxes.unselect($(this).parent().parent().parent().attr('bareJid'));
+ $(this).parent().parent().parent().fadeOut('slow');
+ })));
+
+ var chatBoxSubTop = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.SUBTOP)
+ .append(BeeChat.UI.Utils.getTruncatedContactStatus((g_beechat_roster_items != null && g_beechat_roster_items[contactBareJid] != undefined && g_beechat_roster_items[contactBareJid].status != undefined) ? g_beechat_roster_items[contactBareJid].status : ''));
+
+ var chatBoxContent = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CONTENT)
+ .attr('bareJid', contactBareJid);
+
+ var chatBoxInput = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT)
+ .append($('<textarea></textarea>')
+ .attr('bareJid', contactBareJid)
+ .bind('keypress', isroom?BeeChat.UI.ChatBoxes.onRoomTypingMessage:BeeChat.UI.ChatBoxes.onTypingMessage)
+ .bind('keyup', function(e) {
+ if ((e.keyCode ? e.keyCode : e.which) == 13)
+ $(this).attr('value', '');
+ }));
+
+ var chatBoxBottom = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.BOTTOM)
+ .append($('<span></span>')
+ .append($('<span></span>')));
+ if (isroom) {
+ //var chatBoxBox = $('<div></div>')
+ // .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.CHATROOM)
+ var chatBoxRoster = $('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER)
+ //chatBoxBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom)
+ //chatBox.append(chatBoxRoster).append(chatBoxBox).appendTo(chatBoxes);
+ chatBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom).append(chatBoxRoster).appendTo(chatBoxes);
+ }
+ else
+ chatBox.append(chatBoxTop).append(chatBoxSubTop).append(chatBoxContent).append(chatBoxInput).append(chatBoxBottom).appendTo(chatBoxes);
+ }
+ else {
+ /*debugXMPP("show chatbox " + contactBareJid);
+ var chatBox = $(chatBoxes).children().filter('[bareJid="' + contactBareJid + '"]');
+ chatBox.show();*/
+ }
+ },
+
+ /** Function: takeStand
+ *
+ */
+ takeStand: function(contactBareJid)
+ {
+ var chatBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children();
+ var chatBoxElm = chatBoxesElm.filter('[bareJid="' + contactBareJid + '"]');
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+
+ if (!chatBoxElm.is(':hidden')) {
+ BeeChat.UI.ScrollBoxes.unselect(contactBareJid);
+ chatBoxElm.hide();
+ } else {
+ // Hide all other chatboxes
+ $.each(chatBoxesElm.filter('[bareJid!="' + contactBareJid + '"]'), function() {
+ BeeChat.UI.ScrollBoxes.unselect($(this).attr('bareJid'));
+ $(this).hide();
+ });
+ // Add selected scrollbox style
+ BeeChat.UI.ScrollBoxes.select(contactBareJid);
+ // Remove UnreadCountBox
+ BeeChat.UI.UnreadCountBox.remove(contactBareJid);
+ // Position the chatbox
+ var pos = scrollBoxElm.position().left - (chatBoxElm.width() - scrollBoxElm.width()) + 24;
+ chatBoxElm.css({'left': pos});
+ if (!BeeChat.UI.ScrollBoxes.isOpened)
+ return;
+ chatBoxElm.show().css({'left': pos});
+ // Scroll down the content of the chatbox
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ // Focus textarea
+ chatBoxElm.children().filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + ']').find('textarea').focus();
+ }
+ },
+
+ /** Function: onTypingMessage
+ *
+ */
+ onRoomTypingMessage: function(e) {
+ BeeChat.UI.ChatBoxes._onTypingMessage(e, true, this);
+ },
+
+ onTypingMessage: function(e) {
+ BeeChat.UI.ChatBoxes._onTypingMessage(e, false, this);
+ },
+
+ _onTypingMessage: function(e, isroom, self)
+ {
+ var keyCode = (e.keyCode) ? e.keyCode : e.which;
+ var contactBareJid = $(self).attr('bareJid');
+
+ var msgtype = BeeChat.Message.Types.CHAT;
+ if (isroom)
+ msgtype = BeeChat.Message.Types.GROUPCHAT;
+
+ if (keyCode == 13 && $(self).val() != '') {
+ g_beechat_user.sendChatMessage(contactBareJid, jQuery.trim($(self).val()), msgtype);
+ if (!isroom)
+ BeeChat.UI.ChatBoxes.update(contactBareJid, BeeChat.UI.Utils.truncateString(BeeChat.UI.Resources.Strings.ChatMessages.SELF, 24), $(self).val(), isroom);
+ clearTimeout(BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid]);
+ BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid] = null;
+ } else {
+ var nowTime = new Date().getTime();
+
+ if (BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] == null || BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] + 2000 < nowTime) {
+ BeeChat.UI.ChatBoxes.dateLastComposing[contactBareJid] = nowTime;
+ g_beechat_user.sendChatStateMessage(contactBareJid, BeeChat.Message.ChatStates.COMPOSING);
+ }
+
+ clearTimeout(BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid]);
+ BeeChat.UI.ChatBoxes.lastTimedPauses[contactBareJid] = setTimeout('g_beechat_user.sendChatStateMessage(\'' + contactBareJid + '\', BeeChat.Message.ChatStates.PAUSED)', 2000);
+
+ var chatBoxTextAreaElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).children().filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.INPUT + ']').find('textarea');
+ chatBoxTextAreaElm.attr({scrollTop: chatBoxTextAreaElm.attr('scrollHeight')});
+ }
+ },
+
+ updateRoster: function(contactBareJid, fromName, presence)
+ {
+ var availability = $(presence).attr('type');
+ var item = $(presence).find('item');
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+
+ if (chatBoxElm.length == 0) {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid);
+ //BeeChat.UI.ScrollBoxes.addRoom(contactBareJid);
+ chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ }
+
+ //var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+
+ var roster = chatBoxElm.find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.ROOMROSTER + ']');
+ if (availability == 'unavailable') {
+ roster.find('div').filter('[contactName='+fromName+']').remove();
+ }
+ else {
+ var hasName = roster.find('div').filter('[contactName='+fromName+']');
+ if (hasName.length == 0) {
+ roster.append($('<div>' + fromName + '</div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.ROSTER_ITEM)
+ .attr('title', item.attr('affiliation') + '/' + item.attr('role'))
+ .attr('contactName', fromName))
+ }
+ }
+ },
+
+
+ /** Function: update
+ *
+ */
+ update: function(contactBareJid, fromName, msg, isroom)
+ {
+ var chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ debugXMPP(contactBareJid + " " + msg + " " + chatBoxElm.length);
+ if (chatBoxElm.length == 0) {
+ if (isroom) {
+ BeeChat.UI.ScrollBoxes.addRoom(contactBareJid);
+ BeeChat.UI.ChatBoxes.show(contactBareJid);
+ BeeChat.UI.ChatBoxes.takeStand(contactBareJid);
+ }
+ else {
+ BeeChat.UI.ScrollBoxes.add(contactBareJid,false,true);
+ // BeeChat.UI.ChatBoxes.show(contactBareJid);
+ BeeChat.UI.ChatBoxes.takeStand(contactBareJid);
+ }
+ chatBoxElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid);
+ }
+
+ var chatBoxContentElm = chatBoxElm.children().filter('[bareJid="' + contactBareJid + '"]');
+
+ chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').remove();
+
+ var chatBoxLastMessageElm = $(chatBoxContentElm).find('div').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE + ']').filter(':last');
+
+ if (chatBoxLastMessageElm && chatBoxLastMessageElm.find('span').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_SENDER + ']').text() == fromName) {
+ chatBoxLastMessageElm.append('<p>' + BeeChat.UI.Utils.getPrintableChatMessage(msg) + '</p>');
+ } else {
+ chatBoxContentElm.append($('<div></div>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_SENDER)
+ .text(fromName))
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.MESSAGE_DATE)
+ .text(BeeChat.UI.Utils.getNowFormattedTime()))
+ .append('<p>' + BeeChat.UI.Utils.getPrintableChatMessage(msg) + '</p>'));
+ }
+
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+
+ var scrollBoxesElm = $('#' + BeeChat.UI.Resources.Elements.ID_DIV_SCROLLBOXES);
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid);
+
+ if (BeeChat.UI.ScrollBoxes.isInitialized == false) {
+ scrollBoxesElm.trigger('goto', scrollBoxesElm.find('ul').children().index(scrollBoxElm));
+ }
+
+ debugXMPP("about to update number!");
+ if (chatBoxElm.is(':hidden')) {
+ debugXMPP("update number!");
+ BeeChat.UI.UnreadCountBox.update(contactBareJid);
+// if (BeeChat.UI.HAS_FOCUS)
+// document.getElementById(BeeChat.UI.Resources.Sounds.NEW_MESSAGE).Play();
+ }
+
+// if (!BeeChat.UI.HAS_FOCUS)
+// document.getElementById(BeeChat.UI.Resources.Sounds.NEW_MESSAGE).Play();
+ },
+
+ /** Function: updateChatState
+ *
+ */
+ updateChatState: function(contactBareJid, msg)
+ {
+ var chatBoxContentElm = BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).children().filter('[bareJid="' + contactBareJid + '"]');
+
+ $(msg).children().each(function() {
+ if (this.tagName == BeeChat.Message.ChatStates.COMPOSING) {
+ if (chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').length == 0) {
+ $('<p></p>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.ChatBox.STATE)
+ .html(BeeChat.UI.Utils.getContactName(contactBareJid) + BeeChat.UI.Resources.Strings.ChatMessages.COMPOSING + "</br />")
+ .appendTo(chatBoxContentElm);
+ }
+ } else if (this.tagName == BeeChat.Message.ChatStates.PAUSED) {
+ chatBoxContentElm.find('p').filter('[class=' + BeeChat.UI.Resources.StyleClasses.ChatBox.STATE + ']').remove();
+ }
+ });
+ chatBoxContentElm.attr({scrollTop: chatBoxContentElm.attr('scrollHeight')});
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).remove();
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).remove();
+ },
+
+ /** Function: show
+ *
+ */
+ show: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).show();
+ },
+
+ /** Function: hide
+ *
+ */
+ hide: function(contactBareJid)
+ {
+ BeeChat.UI.ChatBoxes.getChatBoxElm(contactBareJid).hide();
+ },
+
+ /** Function: getChatBoxElm
+ *
+ */
+ getChatBoxElm: function(contactBareJid)
+ {
+ return $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().filter('[bareJid="' + contactBareJid + '"]');
+ }
+};
+
+BeeChat.UI.UnreadCountBox = {
+ /** Function: add
+ *
+ */
+ add: function(contactBareJid)
+ {
+ BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid)
+ .append($('<span></span>')
+ .attr('class', BeeChat.UI.Resources.StyleClasses.UNREAD_COUNT));
+ },
+
+ /** Function: remove
+ *
+ */
+ remove: function(contactBareJid)
+ {
+ BeeChat.UI.UnreadCountBox.getElm(contactBareJid).remove();
+ },
+
+ /** Function: update
+ *
+ */
+ update: function(contactBareJid)
+ {
+ if (arguments.length > 1 && !arguments[1])
+ return;
+
+ var unreadCountBoxElm = BeeChat.UI.UnreadCountBox.getElm(contactBareJid);
+ if (unreadCountBoxElm.length == 0) {
+ BeeChat.UI.UnreadCountBox.add(contactBareJid);
+ unreadCountBoxElm = BeeChat.UI.UnreadCountBox.getElm(contactBareJid);
+ }
+ if (arguments.length == 1) {
+ var unreadCount = unreadCountBoxElm.text();
+ unreadCountBoxElm.text(++unreadCount);
+ } else
+ unreadCountBoxElm.text(arguments[1]);
+ },
+
+ /** Function: getElm
+ *
+ */
+ getElm: function(contactBareJid)
+ {
+ return BeeChat.UI.ScrollBoxes.getScrollBoxElm(contactBareJid).find('span').filter('[class=' + BeeChat.UI.Resources.StyleClasses.UNREAD_COUNT +' ]');
+ }
+};
+
+/** Class: BeeChat.UI.Utils
+ * An object container for all UI utilities functions
+ *
+ */
+BeeChat.UI.Utils = {
+ /** Function: getTruncatedContactName
+ *
+ */
+ getTruncatedContactName: function(bareJid)
+ {
+ return (BeeChat.UI.Utils.truncateString(BeeChat.UI.Utils.getContactName(bareJid), (arguments.length == 2) ? arguments[1] : 21));
+ },
+
+ /** Function: getTruncatedContactStatus
+ *
+ */
+ getTruncatedContactStatus: function(contactStatus)
+ {
+ return (BeeChat.UI.Utils.truncateString(contactStatus, (arguments.length == 2 ? arguments[1] : 50)));
+ },
+
+ /** Function: getContactName
+ *
+ */
+ getContactName: function(bareJid)
+ {
+ var contactName = bareJid;
+
+ if (g_beechat_roster_items != null && g_beechat_roster_items[bareJid])
+ contactName = g_beechat_roster_items[bareJid].name;
+ // no contact name so we show bareJid
+ if (!contactName || contactName == '')
+ contactName = bareJid;
+
+ return (contactName);
+ },
+
+ /** Function: getPrintableChatMessage
+ *
+ */
+ getPrintableChatMessage: function(msg)
+ {
+ var val = new String;
+ val = $('<div>' + msg + '</div>');
+ msg = val.text();
+
+ msg = jQuery.trim(msg);
+ msg = BeeChat.UI.Utils.replaceLinks(msg);
+ msg = BeeChat.UI.Utils.replaceSmileys(msg);
+
+ return msg;
+ },
+
+ /** Function: getNowFormattedTime
+ *
+ */
+ getNowFormattedTime: function()
+ {
+ var date = new Date();
+
+ var hours = date.getHours();
+ var minutes = date.getMinutes();
+ var seconds = date.getSeconds();
+
+ if (hours < 10)
+ hours = '0' + hours;
+ if (minutes < 10)
+ minutes = '0' + minutes;
+ if (seconds < 10)
+ seconds = '0' + seconds;
+ return (hours + ':' + minutes + ':' + seconds);
+ },
+
+
+ /** Function: replaceSmileys
+ * Replace smileys founded in a string to beautiful icons :)
+ *
+ * Parameters:
+ * (String) str - The string containing smileys
+ *
+ */
+ replaceSmileys: function(str)
+ {
+ str = str.replace(/(;\))/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_WINK + '" />');
+ str = str.replace(/(:\))/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_SMILE + '" />');
+ str = str.replace(/(:\()/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_UNHAPPY + '" />');
+ str = str.replace(/(:D)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_GRIN + '" />');
+ str = str.replace(/(:o)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_SURPRISED + '" />');
+ str = str.replace(/(xD)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_EVILGRIN + '" />');
+ str = str.replace(/(:p)/gi, '<img src="' + BeeChat.UI.Resources.Paths.ICONS + BeeChat.UI.Resources.Emoticons.FILENAME_TONGUE + '" />');
+
+ return (str);
+ },
+
+ /** Function: replaceLinks
+ * Transform links founded in a string to clickable links
+ *
+ * Parameters:
+ * (String) str - The string where will be replaced links
+ */
+ replaceLinks: function(str)
+ {
+ var xpr =
+ /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
+
+ return (str.replace(xpr, '<a href="$1" target="_blank">$1</a>'));
+ },
+
+ /** Function: truncateString
+ * Truncate a string at a specified length
+ *
+ * Parameters:
+ * (String) str - The string to truncate
+ * (int) len - The maximum length of str
+ */
+ truncateString: function(str, len)
+ {
+ if (str != null && str.length > len)
+ return ((str.substr(0, len) + '...'));
+ return (str);
+ }
+};
+
+
+/** Executed when the DOM is ready
+ *
+ */
+function init_beechat(ts, token) {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ BeeChat.UI.initialize(ts, token);
+}
+
+/** Window resizing
+ *
+ */
+$(window).resize(function() {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ $('#' + BeeChat.UI.Resources.Elements.ID_DIV_CHATBOXES).children().each(function() {
+ var scrollBoxElm = BeeChat.UI.ScrollBoxes.getScrollBoxElm($(this).attr('bareJid'));
+ var pos = scrollBoxElm.position().left - ($(this).width() - scrollBoxElm.width()) + 24;
+
+ $(this).css({'left': pos});
+ });
+});
+
+
+/** Executed when the page is unloaded
+ *
+ */
+$(window).unload(function() {
+ if (typeof document.body.style.maxHeight === "undefined") { // IE6
+ return;
+ }
+
+ if (!$('#beechat').length)
+ return;
+
+ if (g_beechat_user != null) {
+ g_beechat_user.requestSessionPause();
+ BeeChat.UI.saveState();
+ }
+
+ BeeChat.UI.saveConnection();
+ });
+
+
+/** Check whether the BeeChat tab is active or not
+ *
+ */
+$(window).bind('blur', function() {
+ BeeChat.UI.HAS_FOCUS = false;
+ });
+
+$(window).bind('focus', function() {
+ BeeChat.UI.HAS_FOCUS = true;
+ });
diff --git a/mod/beechat/views/default/beechat/beechat.php b/mod/beechat/views/default/beechat/beechat.php
new file mode 100644
index 000000000..397d35f74
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.php
@@ -0,0 +1,84 @@
+<?php
+ /**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+if (elgg_is_logged_in() && elgg_get_logged_in_user_entity()->chatenabled && elgg_get_context() != 'admin') {
+?>
+<div id="beechat">
+ <div id="beechat_left">
+ <a id="beechat_tooltip_trigger" href="<?php echo $vars['url']; ?>"><img src="<?php echo $vars['config']->wwwroot; ?>favicon.ico" /></a>
+ <div class="tooltip tooltipchat">
+ <h3><?php echo elgg_echo('beechat:icons:home'); ?></h3>
+ </div>
+ </div>
+ <div id="beechat_center">
+ <span id="beechat_center_prev" class="prev"></span>
+ <div id="beechat_scrollboxes"><ul></ul></div>
+ <span id="beechat_center_next" class="next"></span>
+ </div>
+ <div id="beechat_right">
+ <span id="beechat_contacts_button" class="offline">
+ <?php echo elgg_echo('beechat:contacts:button'); ?>
+ </span>
+ </div>
+ <div id="beechat_contacts">
+ <div id="beechat_contacts_top">
+ <span class="beechat_label"><?php echo elgg_echo('beechat:contacts:button'); ?></span>
+ <div id="beechat_contacts_controls">
+ <span id="beechat_contacts_control_minimize" class="beechat_control" title="<?php echo elgg_echo('beechat:box:minimize'); ?>">_</span>
+ </div>
+ <br clear="all" />
+ </div>
+ <div id="beechat_availability_switcher">
+ <span id="beechat_current_availability"></span>
+ <span class="beechat_availability_switcher_control_down" id="beechat_availability_switcher_control"></span>
+ </div>
+ <div id="beechat_contacts_content">
+ <ul id="beechat_contacts_list"></ul>
+ <ul id="beechat_availability_switcher_list">
+ <li class="beechat_left_availability_chat"><?php echo elgg_echo('beechat:availability:available'); ?></li>
+ <li class="beechat_left_availability_dnd"><?php echo elgg_echo('beechat:availability:dnd'); ?></li>
+ <li class="beechat_left_availability_away"><?php echo elgg_echo('beechat:availability:away'); ?></li>
+ <li class="beechat_left_availability_xa"><?php echo elgg_echo('beechat:availability:xa'); ?></li>
+ <li class="beechat_left_availability_offline"><?php echo elgg_echo('beechat:availability:offline'); ?></li>
+ </ul>
+ </div>
+ <div id="beechat_contacts_bottom">
+ <span id="beechat_contacts_bottom_bar"></span>
+ </div>
+ </div>
+ <div id="beechat_chatboxes"></div>
+</div>
+<!-- SOUNDS -->
+<!--
+<embed src="<?php echo $vars['config']->staticurl; ?>mod/beechat/sounds/newmessage.wav" autostart=false width=0 height=0
+ id="beechat_sounds_new_message"
+ enablejavascript="true" />
+-->
+
+<?php
+ $ts = time();
+ $token = generate_action_token($ts);
+?>
+
+<script>
+ $(function () {
+ var e = document.createElement('script');
+ e.async = true;
+ e.type = 'text/javascript';
+ e.text = 'init_beechat("<?php echo $ts; ?>","<?php echo $token; ?>");';
+ document.getElementById('beechat').appendChild(e);
+
+ })
+</script>
+
+<?php
+ }
+?>
diff --git a/mod/beechat/views/default/beechat/beechat.userjs.php b/mod/beechat/views/default/beechat/beechat.userjs.php
new file mode 100644
index 000000000..ed59b683f
--- /dev/null
+++ b/mod/beechat/views/default/beechat/beechat.userjs.php
@@ -0,0 +1,54 @@
+<script type="text/javascript">
+BeeChat.Events.Messages = {
+ ConnectionStates: {
+ CONNECTING: "<?php echo elgg_echo('beechat:connection:state:connecting'); ?>",
+ AUTHENTICATING: "<?php echo elgg_echo('beechat:connection:state:authenticating'); ?>",
+ FAILED: "<?php echo elgg_echo('beechat:connection:state:failed'); ?>",
+ DISCONNECTING: "<?php echo elgg_echo('beechat:connection:state:disconnecting'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:connection:state:offline'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:connection:state:online'); ?>"
+ }
+ }
+
+BeeChat.UI.Resources.Strings = {
+ Availability: {
+ AVAILABLE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ CHAT: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ ONLINE: "<?php echo elgg_echo('beechat:availability:available'); ?>",
+ DND: "<?php echo elgg_echo('beechat:availability:dnd'); ?>",
+ AWAY: "<?php echo elgg_echo('beechat:availability:away'); ?>",
+ XA:"<?php echo elgg_echo('beechat:availability:xa'); ?>",
+ OFFLINE: "<?php echo elgg_echo('beechat:availability:offline'); ?>"
+ },
+
+ Contacts: {
+ BUTTON: "<?php echo elgg_echo('beechat:contacts:button'); ?>"
+ },
+
+ ChatMessages: {
+ SELF: "<?php echo $_SESSION['user']->name; ?>",
+ COMPOSING: "<?php echo elgg_echo('beechat:chat:composing'); ?>"
+ },
+
+ Box: {
+ MINIMIZE: "<?php echo elgg_echo('beechat:box:minimize'); ?>",
+ CLOSE: "<?php echo elgg_echo('beechat:box:close'); ?>",
+ SHOWHIDE: "<?php echo elgg_echo('beechat:box:showhide'); ?>"
+ }
+ }
+g_user_rooms = new Array();
+<?php
+if (elgg_is_logged_in()) {
+ $user = elgg_get_logged_in_user_entity();
+ $chatrooms = elgg_get_entities_from_relationship(array('relationship' => 'groupchat',
+ 'relationship_guid' => $user->guid,
+ 'inverse_relationship' => false,
+ 'limit' => 0));
+ if (!empty($chatrooms)) {
+ foreach($chatrooms as $chatroom) {
+ echo "g_user_rooms.push(['".beechat_friendly_title($chatroom->name)."@".elgg_get_plugin_setting("groupdomain", "beechat")."', '".$chatroom->guid."']);";
+ }
+ }
+}
+?>
+</script>
diff --git a/mod/beechat/views/default/beechat/screen.css.php b/mod/beechat/views/default/beechat/screen.css.php
new file mode 100644
index 000000000..930e60089
--- /dev/null
+++ b/mod/beechat/views/default/beechat/screen.css.php
@@ -0,0 +1,672 @@
+<?php
+ global $CONFIG;
+ $url = $CONFIG->wwwroot;
+
+?>
+/**
+ * Beechat
+ *
+ * @package beechat
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Beechannels <contact@beechannels.com>
+ * @copyright Beechannels 2007-2010
+ * @link http://beechannels.com/
+ */
+
+div#beechat {
+ display: block !important;
+ display: none;
+ position: fixed;
+ left: 1%;
+ right: 1%;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ height: 20px;
+ z-index: 999;
+
+ font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
+ font-size: 0.9em;
+ color: #222222;
+ background-color: #DDDDDD;
+ border-top: 1px solid #BBBBBB;
+ border-left: 1px solid #BBBBBB;
+}
+div#beechat a img {
+ border: none;
+}
+div#beechat a {
+ text-decoration: none;
+}
+div#beechat img {
+ vertical-align: middle;
+}
+div#beechat a:hover {
+ text-decoration: underline;
+}
+.beechat_control {
+ cursor: pointer;
+ color: #CCCCFF;
+ font-size: 1.6em;
+}
+.beechat_control:hover {
+ color: white;
+}
+.beechat_box_control {
+ cursor: pointer;
+ color: #888888;
+ font-size: 1em;
+}
+.beechat_box_control:hover {
+ color: #222222;
+}
+.beechat_chatbox_control {
+ cursor: pointer;
+ color: #CCCCFF;
+ font-size: 1.6em;
+}
+.beechat_chatbox_control:hover {
+ color: white;
+}
+.beechat_label {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+/*
+** -
+** left side
+** -
+*/
+div#beechat_left {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 116px;
+ height: 18px;
+ margin: 0;
+ padding: 1px 2px;
+}
+
+
+/*
+** -
+** right side
+** -
+*/
+div#beechat_right {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 220px;
+ height: 20px;
+ margin: 0;
+ padding: 0 0 0 0;
+
+ border-left: 1px solid #BBBBBB;
+ border-right: 1px solid #BBBBBB;
+}
+div#beechat_contacts {
+ position: absolute;
+ right: 0px;
+ bottom: 0;
+ width: 222px;
+ height: 240px;
+ margin: 0 auto 20px auto;
+ padding: 0;
+ display: none;
+
+ background-color: white;
+}
+div#beechat_contacts_top {
+ color: white;
+ background-color: #193C60;
+ width: 220px;
+ height: 32px;
+
+ border-top: 1px solid #0B2C4F;
+ border-left: 1px solid #0B2C4F;
+ border-right: 1px solid #0B2C4F;
+}
+div#beechat_contacts_top .beechat_label {
+ float: left;
+ height: 20px;
+ padding: 6px;
+}
+div#beechat_contacts_controls {
+ margin: 0;
+ padding: 0;
+}
+div#beechat_contacts_controls span#beechat_contacts_control_minimize {
+ position: relative;
+ top: -7px;
+ float: right;
+ display: block;
+ width: 20px;
+ height: 20px;
+ padding: 2px;
+
+ font-size: 1.6em;
+ font-weight: bold;
+ text-align: center;
+}
+span#beechat_contacts_button {
+ display: block;
+ width: 190px;
+ padding: 2px 6px 0 24px;
+ height: 18px;
+ cursor: pointer;
+ font-size: 1.1em;
+ font-weight: normal;
+
+ background-image: url('<?php echo $url; ?>mod/beechat/graphics/icons/statuses.png');
+}
+span#beechat_contacts_button.online {
+ background-position: 4px -750px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.dnd {
+ background-position: 4px -796px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.away {
+ background-position: 4px -842px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button.offline {
+ background-position: 4px -888px;
+ background-repeat: no-repeat;
+}
+span#beechat_contacts_button:hover {
+ background-color: white;
+}
+div#beechat_availability_switcher {
+ width: 218px;
+ height: 24px;
+ margin: 0;
+ padding: 0 0 0 2px;
+
+ background-color: #EEEEEE;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #BBBBBB;
+}
+span#beechat_current_availability {
+ float: left;
+ padding: 4px 4px 4px 22px;
+
+ font-weight: bold;
+ cursor: pointer;
+}
+span#beechat_current_availability:hover {
+ text-decoration: underline;
+}
+span#beechat_availability_switcher_control {
+ float: right;
+ width: 24px;
+ height: 20px;
+ cursor: pointer;
+}
+span.beechat_availability_switcher_control_up {
+ background: no-repeat 50% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_arrow_up.png');
+}
+span.beechat_availability_switcher_control_down {
+ background: no-repeat 50% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_arrow_down.png');
+}
+ul#beechat_availability_switcher_list {
+ display: none;
+ padding:0;
+ margin:0;
+ list-style:none;
+}
+ul#beechat_availability_switcher_list li {
+ margin: 0;
+ padding: 4px 4px 4px 24px;
+
+ cursor: pointer;
+}
+ul#beechat_availability_switcher_list li:hover {
+ background-color: #EEEEEE;
+}
+div#beechat_contacts_content {
+ width: 220px;
+ height: 164px;
+ overflow: auto;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+ul#beechat_contacts_list {
+ background-color: white;
+ padding:0;
+ margin:0;
+ list-style:none;
+}
+ul#beechat_contacts_list li img {
+ margin: 0 4px 0 0;
+ width: 25px;
+ height: 25px;
+}
+ul#beechat_contacts_list li {
+ margin: 0;
+ padding: 4px 4px 4px 6px;
+
+ cursor: pointer;
+ color: #333;
+}
+ul#beechat_contacts_list li:hover {
+ background-color: #F5F6F8;
+ color: #333;
+}
+div#beechat_contacts_bottom {
+ width: 220px;
+ height: 18px;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+}
+span#beechat_contacts_bottom_bar {
+ position: absolute;
+ display: block;
+ bottom: 0;
+ width: 210px;
+ height: 1px;
+
+ background-color: #BBBBBB;
+ margin: auto 4px;
+}
+
+
+/*
+** -
+** center area
+** -
+*/
+div#beechat_center {
+ float: right;
+ display: block;
+ width: 586px;
+ height: 20px;
+ margin: 0 220px 0 100px;
+ *margin: 0 312px 0 100px;
+ padding: 0;
+}
+div#beechat_center .next, div#beechat_center .prev {
+ display: none;
+
+ border-left: 1px solid #BBBBBB;
+ cursor: pointer;
+}
+div#beechat_center .next {
+ position: absolute;
+ right: 220px;
+ width: 24px;
+ height: 20px;
+
+ background: no-repeat 50% url("<?php echo $url; ?>mod/beechat/graphics/icons/resultset_next.png");
+}
+div#beechat_center .prev {
+ position: absolute;
+ right: 872px;
+ width: 24px;
+ height: 20px;
+
+ background: no-repeat 50% url("<?php echo $url; ?>mod/beechat/graphics/icons/resultset_previous.png");
+}
+div#beechat_scrollboxes {
+ float: right;
+ overflow: hidden;
+ width: 628px;
+ height: 21px;
+ margin: 0 24px 0 24px;
+ text-align: left;
+}
+div#beechat_scrollboxes ul {
+ width: 200000em;
+ list-style: none;
+ padding:0;
+ margin:0;
+}
+div#beechat_scrollboxes ul li {
+ float: right;
+ display: block;
+ width: 130px;
+ height: 20px;
+ padding: 1px 0 0 22px;
+
+ cursor: pointer;
+ border-left: 1px solid #BBBBBB;
+}
+div#beechat_scrollboxes ul li:hover {
+ color: #000000;
+ background-color: white;
+}
+div#beechat_scrollboxes ul li.beechat_scrollbox_selected {
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+div#beechat_scrollboxes ul li span.beechat_unread_count {
+ float: right;
+ display: block;
+ width: 16px;
+ height: 14px;
+ padding-top: 2px;
+ margin: 0 6px 0 0;
+
+ text-align: center;
+ font-size: 0.7em;
+ color: white;
+ background: no-repeat 0% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/notification_pink.png');
+}
+div#beechat_scrollboxes ul li span#beechat_box_control_close {
+ float: right;
+ width: auto;
+ padding: 1px 4px;
+ height: 20px;
+}
+
+/*
+** --
+** availability classes
+** --
+*/
+.beechat_left_availability_chat {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_green.png');
+}
+.beechat_left_availability_dnd {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_delete.png');
+}
+.beechat_left_availability_away {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_orange.png');
+}
+.beechat_left_availability_xa {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_red.png');
+}
+.beechat_left_availability_offline {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_black.png');
+}
+.beechat_left_availability_room {
+ background: no-repeat 2% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/muc_icon.png');
+}
+
+
+
+.beechat_right_availability_chat {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_green.png');
+}
+.beechat_right_availability_dnd {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_delete.png');
+}
+.beechat_right_availability_away {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_orange.png');
+}
+.beechat_right_availability_xa {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_red.png');
+}
+.beechat_right_availability_offline {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/bullet_black.png');
+}
+.beechat_right_availability_room {
+ background: no-repeat 96% 50% url('<?php echo $url; ?>mod/beechat/graphics/icons/muc_icon.png');
+}
+
+/*
+** --
+** tooltips
+** --
+*/
+div.tooltip.tooltipchat {
+ display: none;
+ padding: 4px;
+ width: auto;
+ background: transparent no-repeat left bottom url('<?php echo $url; ?>mod/beechat/graphics/icons/pointer.png');
+}
+div.tooltip.tooltipchat h3 {
+ margin: 0;
+ padding: 4px;
+
+ font-weight: normal;
+ font-size: 0.9em;
+ color: white;
+ background-color: #222222;
+}
+
+
+/*
+** --
+** chatboxes
+** --
+*/
+div.beechat_chatbox {
+ position: absolute;
+ width: 240px;
+ height: 300px;
+ bottom: 25px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox a {
+ color: white;
+}
+div.beechat_chatbox a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_roomroster {
+ position: absolute;
+ width: 100px;
+ height: 276px;
+ left: -101px;
+ bottom: -2px;
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+
+ border: 1px solid #4B6C8F;
+
+ background-color: #EEEEEE;
+}
+div.beechat_chatbox_roomrosteritem {
+ background-color: #FFFFFF;
+ margin: 3px;
+ padding-left: 2px;
+}
+div.beechat_chatbox_chatroom {
+ position: absolute;
+ width: 240px;
+ height: 300px;
+ left: 100px;
+ bottom: 0px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_chatroom a {
+ color: white;
+}
+div.beechat_chatbox_chatroom a:hover {
+ text-decoration: underline;
+}
+
+div.beechat_chatbox_room {
+ position: absolute;
+ width: 340px;
+ height: 300px;
+ bottom: 25px;
+ margin: 0;
+ padding: 0;
+
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_room a {
+ color: white;
+}
+div.beechat_chatbox_room a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_top {
+ width: 238px;
+ height: 24px;
+ margin: 0;
+ padding: 0;
+
+ font-size: 0.9em;
+ color: white;
+ background-color: #193C60;
+ border-top: 1px solid #0B2C4F;
+ border-left: 1px solid #0B2C4F;
+ border-right: 1px solid #0B2C4F;
+}
+div.beechat_chatbox_top .beechat_chatbox_top_icon {
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ z-index: 2;
+
+ width: 50px;
+ height: 50px;
+}
+div.beechat_chatbox_top .beechat_label {
+ float: left;
+ height: 13px;
+ padding: 4px 6px 6px 6px;
+
+ margin-left: 54px;
+}
+div.beechat_chatbox_top_controls {
+ margin: 0;
+ padding: 0;
+}
+div.beechat_chatbox_top_controls .beechat_chatbox_control {
+ float: right;
+ display: block;
+ width: 20px;
+ height: 19px;
+ padding: 2px;
+ margin: 0;
+
+ font-size: 1.2em;
+ font-weight: bold;
+ text-align: center;
+}
+div.beechat_chatbox_subtop {
+ width: 172px;
+ height: 30px;
+ padding: 2px 6px 2px 60px;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #CCCCCC;
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_content {
+ width: 238px;
+ height: 202px;
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: white;
+}
+div.beechat_chatbox_content div.beechat_chatbox_message {
+ width: auto;
+ height: auto;
+ margin: 0;
+ padding: 2px;
+ border-top: 1px solid #DDDDDD;
+}
+div.beechat_chatbox_message span.beechat_chatbox_message_sender {
+ position: relative;
+ top: 0;
+ left: 6px;
+ font-weight: bold;
+ font-size: 1em;
+}
+div.beechat_chatbox_message span.beechat_chatbox_message_date {
+ float: right;
+ margin: 0 6px 0 0;
+}
+div.beechat_chatbox_content a {
+ color: #003399;
+}
+div.beechat_chatbox_content a:hover {
+ text-decoration: underline;
+}
+div.beechat_chatbox_content p {
+ margin: 0;
+ padding: 2px 6px;
+}
+div.beechat_chatbox_content p.beechat_chatbox_state {
+ font-size: 1em;
+ color: #888888;
+}
+div.beechat_chatbox_input {
+ width: 238px;
+ height: 40px;
+ margin: 0;
+ padding: 0;
+
+ border-top: 2px solid #BBBBBB;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ background-color: #DDDDDD;
+}
+div.beechat_chatbox_input textarea {
+ width: 204px;
+ height: 32px;
+ max-width: 240px;
+ max-height: 40px;
+ padding: 4px 4px 4px 30px;
+ margin: auto;
+ overflow: hidden;
+ vertical-align: top;
+ resize: none;
+
+ font-size: 1em;
+ font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
+ outline: none;
+ border: none;
+ background: white no-repeat 4px 3px url('<?php echo $url; ?>mod/beechat/graphics/icons/chat_icon.png');
+}
+div.beechat_chatbox_input textarea:focus {
+ outline: none;
+ border: none;
+ background-color: white;
+}
+div.beechat_chatbox_bottom {
+ position: absolute;
+ width: 238px;
+ height: 1px;
+
+ background-color: white;
+ border-left: 1px solid #666666;
+ border-right: 1px solid #666666;
+ border-bottom: 1px solid #666666;
+ z-index: 2;
+}
+div.beechat_chatbox_bottom span {
+ position: absolute;
+ display: block;
+ right: 0;
+ top: 0;
+ width: 152px;
+ height: 1px;
+
+ border-bottom: 1px solid white;
+}
+div.beechat_chatbox_bottom span span {
+ position: absolute;
+ display: block;
+ width: 146px;
+ height: 1px;
+ right: 4px;
+ top: 0;
+
+ border-bottom: 1px solid #BBBBBB;
+}
diff --git a/mod/beechat/views/default/js/b64.js.php b/mod/beechat/views/default/js/b64.js.php
new file mode 100644
index 000000000..201bdbd7c
--- /dev/null
+++ b/mod/beechat/views/default/js/b64.js.php
@@ -0,0 +1,74 @@
+// This code was written by Tyler Akins and has been placed in the
+// public domain. It would be nice if you left this header intact.
+// Base64 code from Tyler Akins -- http://rumkin.com
+
+var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+/**
+ * Encodes a string in base64
+ * @param {String} input The string to encode in base64.
+ */
+function encode64(input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) + keyStr.charAt(enc4);
+ } while (i < input.length);
+
+ return output;
+}
+
+/**
+ * Decodes a base64 string.
+ * @param {String} input The string to decode.
+ */
+function decode64(input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ do {
+ enc1 = keyStr.indexOf(input.charAt(i++));
+ enc2 = keyStr.indexOf(input.charAt(i++));
+ enc3 = keyStr.indexOf(input.charAt(i++));
+ enc4 = keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output = output + String.fromCharCode(chr1);
+
+ if (enc3 != 64) {
+ output = output + String.fromCharCode(chr2);
+ }
+ if (enc4 != 64) {
+ output = output + String.fromCharCode(chr3);
+ }
+ } while (i < input.length);
+
+ return output;
+}
diff --git a/mod/beechat/views/default/js/jquery.cookie.min.js.php b/mod/beechat/views/default/js/jquery.cookie.min.js.php
new file mode 100644
index 000000000..cb09af984
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.cookie.min.js.php
@@ -0,0 +1,10 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}}; \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php b/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php
new file mode 100644
index 000000000..fa583a451
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.localscroll-1.2.7-min.js.php
@@ -0,0 +1,9 @@
+/**
+ * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 3/11/2009
+ * @author Ariel Flesler
+ * @version 1.2.7
+ **/
+;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.scrollTo-min.js.php b/mod/beechat/views/default/js/jquery.scrollTo-min.js.php
new file mode 100755
index 000000000..5e7877810
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.scrollTo-min.js.php
@@ -0,0 +1,11 @@
+/**
+ * jQuery.ScrollTo - Easy element scrolling using jQuery.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 5/25/2009
+ * @author Ariel Flesler
+ * @version 1.4.2
+ *
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+ */
+;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.serialScroll-min.js.php b/mod/beechat/views/default/js/jquery.serialScroll-min.js.php
new file mode 100755
index 000000000..d716124f9
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.serialScroll-min.js.php
@@ -0,0 +1,10 @@
+/*
+ * jQuery.SerialScroll - Animated scrolling of series
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 06/14/2009
+ * @author Ariel Flesler
+ * @version 1.2.2
+ * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
+ */
+;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/jquery.tools.min.js.php b/mod/beechat/views/default/js/jquery.tools.min.js.php
new file mode 100644
index 000000000..1574af45b
--- /dev/null
+++ b/mod/beechat/views/default/js/jquery.tools.min.js.php
@@ -0,0 +1,49 @@
+/*
+ * jQuery Tools 1.2.2 - The missing UI library for the Web
+ *
+ * [tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay]
+ *
+ * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
+ *
+ * http://flowplayer.org/tools/
+ *
+ * File generated: Mon Jun 07 08:32:38 GMT 2010
+ */
+(function(c){function p(d,a,b){var e=this,l=d.add(this),h=d.find(b.tabs),j=a.jquery?a:d.children(a),i;h.length||(h=d.children());j.length||(j=d.parent().find(a));j.length||(j=c(a));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(b.rotate){var n=h.length-1;if(f<0)return e.click(n,g);if(f>n)return e.click(0,g)}if(!k.length){if(i>=0)return e;f=b.initialIndex;k=h.eq(f)}if(f===i)return e;
+g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[b.effect].call(e,f,function(){g.type="onClick";l.trigger(g,[f])});i=f;h.removeClass(b.current);k.addClass(b.current);return e}},getConf:function(){return b},getTabs:function(){return h},getPanes:function(){return j},getCurrentPane:function(){return j.eq(i)},getCurrentTab:function(){return h.eq(i)},getIndex:function(){return i},next:function(){return e.click(i+1)},prev:function(){return e.click(i-1)}});c.each("onBeforeClick,onClick".split(","),
+function(f,g){c.isFunction(b[g])&&c(e).bind(g,b[g]);e[g]=function(k){c(e).bind(g,k);return e}});if(b.history&&c.fn.history){c.tools.history.init(h);b.event="history"}h.each(function(f){c(this).bind(b.event,function(g){e.click(f,g);return g.preventDefault()})});j.find("a[href^=#]").click(function(f){e.click(c(this).attr("href"),f)});if(location.hash)e.click(location.hash);else if(b.initialIndex===0||b.initialIndex>0)e.click(b.initialIndex)}c.tools=c.tools||{version:"1.2.2"};c.tools.tabs={conf:{tabs:"a",
+current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(d,a){o[d]=a}};var o={"default":function(d,a){this.getPanes().hide().eq(d).show();a.call()},fade:function(d,a){var b=this.getConf(),e=b.fadeOutSpeed,l=this.getPanes();e?l.fadeOut(e):l.hide();l.eq(d).fadeIn(b.fadeInSpeed,a)},slide:function(d,a){this.getPanes().slideUp(200);this.getPanes().eq(d).slideDown(400,a)},ajax:function(d,a){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),
+a)}},m;c.tools.tabs.addEffect("horizontal",function(d,a){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:m},function(){c(this).show();a.call()})});c.fn.tabs=function(d,a){var b=this.data("tabs");if(b)return b;if(c.isFunction(a))a={onBeforeClick:a};a=c.extend({},c.tools.tabs.conf,a);this.each(function(){b=new p(c(this),d,a);c(this).data("tabs",b)});return a.api?b:this}})(jQuery);
+(function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,l,m,n=false,o=p(a.next).click(function(){b.next()}),k=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h)return c;
+var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);m=clearInterval(m);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(k).add(b.getPanes());t.hover(function(){c.pause();l=clearInterval(l)},function(){n||(l=setTimeout(c.play,a.interval))})}if(a.autoplay)m=
+setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||k.addClass(i);b.onBeforeClick(function(f,e){if(e){k.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else k.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a=
+this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
+(function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function t(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=n[b.effect],k,r=a.is(":input"),u=r&&a.is(":checkbox, :radio, select, :button"),
+s=a.attr("type"),l=b.events[s]||b.events[r?u?"widget":"input":"def"];if(!q)throw'Nonexistent effect "'+b.effect+'"';l=l.split(/,\s*/);if(l.length!=2)throw"Tooltip: bad events configuration for "+s;a.bind(l[0],function(d){if(b.predelay){clearTimeout(i);j=setTimeout(function(){c.show(d)},b.predelay)}else c.show(d)}).bind(l[1],function(d){if(b.delay){clearTimeout(j);i=setTimeout(function(){c.hide(d)},b.delay)}else c.hide(d)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,
+{show:function(d){if(!e){if(m)e=f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",top:g.top,left:g.left});k=true;q[0].call(c,function(){d.type="onShow";k="full";h.trigger(d)});
+g=b.events.tooltip.split(/,\s*/);e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(l[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){k=false;n[b.effect][1].call(c,function(){d.type="onHide";k=false;h.trigger(d)});return c}},isShown:function(d){return d?k=="full":k},getConf:function(){return b},
+getTip:function(){return e},getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.2"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",
+tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,
+{},f.tools.tooltip.conf,a);if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new t(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
+(function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
+b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
+(function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
+g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
+a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
+(function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+
+b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){e(".cloned:last").before(b);e(".cloned:first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){if(c.circular&&b===0&&k==-1&&d!==0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a;
+var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g),
+s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0)}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,d){o.toggleClass(c.disabledClass,d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-
+1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}});e(a).trigger("onBeforeSeek",[c.initialIndex])}e.tools=e.tools||
+{version:"1.2.2"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable",c)});return f.api?c:this}})(jQuery);
+(function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause();
+clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery);
+(function(d){function p(c,g){var h=d(g);return h.length<2?h:c.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(c){if(typeof c=="string")c={navi:c};c=d.extend({},m.navigator.conf,c);var g;this.each(function(){function h(a,b,i){e.seekTo(b);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(c.naviItem||
+"> *")}function n(a){var b=d("<"+(c.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&b.addClass(l);c.indexed&&b.text(a+1);c.idPrefix&&b.attr("id",c.idPrefix+a);return b.appendTo(k)}function o(a,b){a=f().eq(b.replace("#",""));a.length||(a=f().filter("[href="+b+"]"));a.click()}var e=d(this).data("scrollable"),k=p(e.getRoot(),c.navi),q=e.getNaviButtons(),l=c.activeClass,j=c.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};f().length?f().each(function(a){d(this).click(function(b){h(d(this),
+a,b)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,b){var i=f().eq(b);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(b).addClass(l)});e.onAddItem(function(a,b){b=n(e.getItems().index(b));j&&b.history(o)});j&&f().history(o)});return c.api?g:this}})(jQuery);
+(function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
+'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
+c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
+getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<div class="close"></div>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.2"};a.tools.overlay={addEffect:function(d,
+b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
+d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
diff --git a/mod/beechat/views/default/js/json2.js.php b/mod/beechat/views/default/js/json2.js.php
new file mode 100644
index 000000000..7ae503202
--- /dev/null
+++ b/mod/beechat/views/default/js/json2.js.php
@@ -0,0 +1,476 @@
+/*
+ http://www.JSON.org/json2.js
+ 2009-06-29
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+*/
+
+/*jslint evil: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, prototype, push, replace, slice, stringify,
+ test, toJSON, toString, valueOf
+*/
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+var JSON = JSON || {};
+
+(function () {
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ?
+ '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' :
+ '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' :
+ gap ? '[\n' + gap +
+ partial.join(',\n' + gap) + '\n' +
+ mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' :
+ gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
+ mind + '}' : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/.
+test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
+replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
+replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+}());
diff --git a/mod/beechat/views/default/js/md5.js.php b/mod/beechat/views/default/js/md5.js.php
new file mode 100644
index 000000000..4284f62bb
--- /dev/null
+++ b/mod/beechat/views/default/js/md5.js.php
@@ -0,0 +1,261 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ var olda, oldb, oldc, oldd;
+ for(var i = 0; i < x.length; i += 16)
+ {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return [a, b, c, d];
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) { bkey = core_md5(bkey, key.length * chrsz); }
+
+ var ipad = new Array(16), opad = new Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = [];
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ {
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ }
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ {
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ var triplet, j;
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) |
+ (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) |
+ ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) { str += b64pad; }
+ else { str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); }
+ }
+ }
+ return str;
+}
diff --git a/mod/beechat/views/default/js/sha1.js.php b/mod/beechat/views/default/js/sha1.js.php
new file mode 100644
index 000000000..db3bf0544
--- /dev/null
+++ b/mod/beechat/views/default/js/sha1.js.php
@@ -0,0 +1,207 @@
+/*
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
+ * in FIPS PUB 180-1
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for details.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
+function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
+function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
+function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
+function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
+function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function sha1_vm_test()
+{
+ return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+
+/*
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
+ */
+function core_sha1(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << (24 - len % 32);
+ x[((len + 64 >> 9) << 4) + 15] = len;
+
+ var w = new Array(80);
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+ var e = -1009589776;
+
+ var i, j, t, olda, oldb, oldc, oldd, olde;
+ for (i = 0; i < x.length; i += 16)
+ {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+ olde = e;
+
+ for (j = 0; j < 80; j++)
+ {
+ if (j < 16) { w[j] = x[i + j]; }
+ else { w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); }
+ t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
+ safe_add(safe_add(e, w[j]), sha1_kt(j)));
+ e = d;
+ d = c;
+ c = rol(b, 30);
+ b = a;
+ a = t;
+ }
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ e = safe_add(e, olde);
+ }
+ return [a, b, c, d, e];
+}
+
+/*
+ * Perform the appropriate triplet combination function for the current
+ * iteration
+ */
+function sha1_ft(t, b, c, d)
+{
+ if (t < 20) { return (b & c) | ((~b) & d); }
+ if (t < 40) { return b ^ c ^ d; }
+ if (t < 60) { return (b & c) | (b & d) | (c & d); }
+ return b ^ c ^ d;
+}
+
+/*
+ * Determine the appropriate additive constant for the current iteration
+ */
+function sha1_kt(t)
+{
+ return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
+ (t < 60) ? -1894007588 : -899497514;
+}
+
+/*
+ * Calculate the HMAC-SHA1 of a key and some data
+ */
+function core_hmac_sha1(key, data)
+{
+ var bkey = str2binb(key);
+ if (bkey.length > 16) { bkey = core_sha1(bkey, key.length * chrsz); }
+
+ var ipad = new Array(16), opad = new Array(16);
+ for (var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
+ return core_sha1(opad.concat(hash), 512 + 160);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
+ */
+function str2binb(str)
+{
+ var bin = [];
+ var mask = (1 << chrsz) - 1;
+ for (var i = 0; i < str.length * chrsz; i += chrsz)
+ {
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
+ }
+ return bin;
+}
+
+/*
+ * Convert an array of big-endian words to a string
+ */
+function binb2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for (var i = 0; i < bin.length * 32; i += chrsz)
+ {
+ str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a hex string.
+ */
+function binb2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for (var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a base-64 string
+ */
+function binb2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ var triplet, j;
+ for (var i = 0; i < binarray.length * 4; i += 3)
+ {
+ triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) |
+ (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) |
+ ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
+ for (j = 0; j < 4; j++)
+ {
+ if (i * 8 + j * 6 > binarray.length * 32) { str += b64pad; }
+ else { str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); }
+ }
+ }
+ return str;
+}
diff --git a/mod/beechat/views/default/js/strophe.min.js.php b/mod/beechat/views/default/js/strophe.min.js.php
new file mode 100644
index 000000000..f0eb17906
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.min.js.php
@@ -0,0 +1 @@
+var Base64=(function(){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var obj={encode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else{if(isNaN(chr3)){enc4=64}}output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4)}while(i<input.length);return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output}};return obj})();var MD5=(function(){var hexcase=0;var b64pad="";var chrsz=8;var safe_add=function(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535)};var bit_rol=function(num,cnt){return(num<<cnt)|(num>>>(32-cnt))};var str2binl=function(str){var bin=[];var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32)}return bin};var binl2str=function(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask)}return str};var binl2hex=function(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&15)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&15)}return str};var binl2b64=function(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";var triplet,j;for(var i=0;i<binarray.length*4;i+=3){triplet=(((binarray[i>>2]>>8*(i%4))&255)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&255)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&255);for(j=0;j<4;j++){if(i*8+j*6>binarray.length*32){str+=b64pad}else{str+=tab.charAt((triplet>>6*(3-j))&63)}}}return str};var md5_cmn=function(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)};var md5_ff=function(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t)};var md5_gg=function(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t)};var md5_hh=function(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)};var md5_ii=function(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t)};var core_md5=function(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var olda,oldb,oldc,oldd;for(var i=0;i<x.length;i+=16){olda=a;oldb=b;oldc=c;oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd)}return[a,b,c,d]};var core_hmac_md5=function(key,data){var bkey=str2binl(key);if(bkey.length>16){bkey=core_md5(bkey,key.length*chrsz)}var ipad=new Array(16),opad=new Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828}var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128)};var obj={hexdigest:function(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz))},b64digest:function(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz))},hash:function(s){return binl2str(core_md5(str2binl(s),s.length*chrsz))},hmac_hexdigest:function(key,data){return binl2hex(core_hmac_md5(key,data))},hmac_b64digest:function(key,data){return binl2b64(core_hmac_md5(key,data))},hmac_hash:function(key,data){return binl2str(core_hmac_md5(key,data))},test:function(){return MD5.hexdigest("abc")==="900150983cd24fb0d6963f7d28e17f72"}};return obj})();if(!Function.prototype.bind){Function.prototype.bind=function(obj){var func=this;return function(){return func.apply(obj,arguments)}}}if(!Function.prototype.prependArg){Function.prototype.prependArg=function(arg){var func=this;return function(){var newargs=[arg];for(var i=0;i<arguments.length;i++){newargs.push(arguments[i])}return func.apply(this,newargs)}}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt){var len=this.length;var from=Number(arguments[1])||0;from=(from<0)?Math.ceil(from):Math.floor(from);if(from<0){from+=len}for(;from<len;from++){if(from in this&&this[from]===elt){return from}}return -1}}(function(callback){var Strophe;function $build(name,attrs){return new Strophe.Builder(name,attrs)}function $msg(attrs){return new Strophe.Builder("message",attrs)}function $iq(attrs){return new Strophe.Builder("iq",attrs)}function $pres(attrs){return new Strophe.Builder("presence",attrs)}Strophe={VERSION:"1.0.1",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas"},addNamespace:function(name,value){Strophe.NS[name]=value},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3},TIMEOUT:1.1,SECONDARY_TIMEOUT:0.1,forEachChild:function(elem,elemName,func){var i,childNode;for(i=0;i<elem.childNodes.length;i++){childNode=elem.childNodes[i];if(childNode.nodeType==Strophe.ElementType.NORMAL&&(!elemName||this.isTagEqual(childNode,elemName))){func(childNode)}}},isTagEqual:function(el,name){return el.tagName.toLowerCase()==name.toLowerCase()},_xmlGenerator:null,_makeGenerator:function(){var doc;if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.appendChild(doc.createElement("strophe"))}else{doc=document.implementation.createDocument("jabber:client","strophe",null)}return doc},xmlElement:function(name){if(!name){return null}var node=null;if(!Strophe._xmlGenerator){Strophe._xmlGenerator=Strophe._makeGenerator()}node=Strophe._xmlGenerator.createElement(name);var a,i,k;for(a=1;a<arguments.length;a++){if(!arguments[a]){continue}if(typeof(arguments[a])=="string"||typeof(arguments[a])=="number"){node.appendChild(Strophe.xmlTextNode(arguments[a]))}else{if(typeof(arguments[a])=="object"&&typeof(arguments[a].sort)=="function"){for(i=0;i<arguments[a].length;i++){if(typeof(arguments[a][i])=="object"&&typeof(arguments[a][i].sort)=="function"){node.setAttribute(arguments[a][i][0],arguments[a][i][1])}}}else{if(typeof(arguments[a])=="object"){for(k in arguments[a]){if(arguments[a].hasOwnProperty(k)){node.setAttribute(k,arguments[a][k])}}}}}}return node},xmlescape:function(text){text=text.replace(/\&/g,"&amp;");text=text.replace(/</g,"&lt;");text=text.replace(/>/g,"&gt;");return text},xmlTextNode:function(text){text=Strophe.xmlescape(text);if(!Strophe._xmlGenerator){Strophe._xmlGenerator=Strophe._makeGenerator()}return Strophe._xmlGenerator.createTextNode(text)},getText:function(elem){if(!elem){return null}var str="";if(elem.childNodes.length===0&&elem.nodeType==Strophe.ElementType.TEXT){str+=elem.nodeValue}for(var i=0;i<elem.childNodes.length;i++){if(elem.childNodes[i].nodeType==Strophe.ElementType.TEXT){str+=elem.childNodes[i].nodeValue}}return str},copyElement:function(elem){var i,el;if(elem.nodeType==Strophe.ElementType.NORMAL){el=Strophe.xmlElement(elem.tagName);for(i=0;i<elem.attributes.length;i++){el.setAttribute(elem.attributes[i].nodeName.toLowerCase(),elem.attributes[i].value)}for(i=0;i<elem.childNodes.length;i++){el.appendChild(Strophe.copyElement(elem.childNodes[i]))}}else{if(elem.nodeType==Strophe.ElementType.TEXT){el=Strophe.xmlTextNode(elem.nodeValue)}}return el},escapeNode:function(node){return node.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40")},unescapeNode:function(node){return node.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\")},getNodeFromJid:function(jid){if(jid.indexOf("@")<0){return null}return jid.split("@")[0]},getDomainFromJid:function(jid){var bare=Strophe.getBareJidFromJid(jid);if(bare.indexOf("@")<0){return bare}else{var parts=bare.split("@");parts.splice(0,1);return parts.join("@")}},getResourceFromJid:function(jid){var s=jid.split("/");if(s.length<2){return null}s.splice(0,1);return s.join("/")},getBareJidFromJid:function(jid){return jid.split("/")[0]},log:function(level,msg){return},debug:function(msg){this.log(this.LogLevel.DEBUG,msg)},info:function(msg){this.log(this.LogLevel.INFO,msg)},warn:function(msg){this.log(this.LogLevel.WARN,msg)},error:function(msg){this.log(this.LogLevel.ERROR,msg)},fatal:function(msg){this.log(this.LogLevel.FATAL,msg)},serialize:function(elem){var result;if(!elem){return null}if(typeof(elem.tree)==="function"){elem=elem.tree()}var nodeName=elem.nodeName;var i,child;if(elem.getAttribute("_realname")){nodeName=elem.getAttribute("_realname")}result="<"+nodeName;for(i=0;i<elem.attributes.length;i++){if(elem.attributes[i].nodeName!="_realname"){result+=" "+elem.attributes[i].nodeName.toLowerCase()+"='"+elem.attributes[i].value.replace("&","&amp;").replace("'","&apos;").replace("<","&lt;")+"'"}}if(elem.childNodes.length>0){result+=">";for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeType==Strophe.ElementType.NORMAL){result+=Strophe.serialize(child)}else{if(child.nodeType==Strophe.ElementType.TEXT){result+=child.nodeValue}}}result+="</"+nodeName+">"}else{result+="/>"}return result},_requestId:0,_connectionPlugins:{},addConnectionPlugin:function(name,ptype){Strophe._connectionPlugins[name]=ptype}};Strophe.Builder=function(name,attrs){if(name=="presence"||name=="message"||name=="iq"){if(attrs&&!attrs.xmlns){attrs.xmlns=Strophe.NS.CLIENT}else{if(!attrs){attrs={xmlns:Strophe.NS.CLIENT}}}}this.nodeTree=Strophe.xmlElement(name,attrs);this.node=this.nodeTree};Strophe.Builder.prototype={tree:function(){return this.nodeTree},toString:function(){return Strophe.serialize(this.nodeTree)},up:function(){this.node=this.node.parentNode;return this},attrs:function(moreattrs){for(var k in moreattrs){if(moreattrs.hasOwnProperty(k)){this.node.setAttribute(k,moreattrs[k])}}return this},c:function(name,attrs){var child=Strophe.xmlElement(name,attrs);this.node.appendChild(child);this.node=child;return this},cnode:function(elem){this.node.appendChild(elem);this.node=elem;return this},t:function(text){var child=Strophe.xmlTextNode(text);this.node.appendChild(child);return this}};Strophe.Handler=function(handler,ns,name,type,id,from,options){this.handler=handler;this.ns=ns;this.name=name;this.type=type;this.id=id;this.options=options||{matchbare:false};if(!this.options.matchBare){this.options.matchBare=false}if(this.options.matchBare){this.from=Strophe.getBareJidFromJid(from)}else{this.from=from}this.user=true};Strophe.Handler.prototype={isMatch:function(elem){var nsMatch;var from=null;if(this.options.matchBare){from=Strophe.getBareJidFromJid(elem.getAttribute("from"))}else{from=elem.getAttribute("from")}nsMatch=false;if(!this.ns){nsMatch=true}else{var self=this;Strophe.forEachChild(elem,null,function(elem){if(elem.getAttribute("xmlns")==self.ns){nsMatch=true}});nsMatch=nsMatch||elem.getAttribute("xmlns")==this.ns}if(nsMatch&&(!this.name||Strophe.isTagEqual(elem,this.name))&&(!this.type||elem.getAttribute("type")===this.type)&&(!this.id||elem.getAttribute("id")===this.id)&&(!this.from||from===this.from)){return true}return false},run:function(elem){var result=null;try{result=this.handler(elem)}catch(e){if(e.sourceURL){Strophe.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message)}else{if(e.fileName){if(typeof(console)!="undefined"){console.trace();console.error(this.handler," - error - ",e,e.message)}Strophe.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message)}else{Strophe.fatal("error: "+this.handler)}}throw e}return result},toString:function(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}};Strophe.TimedHandler=function(period,handler){this.period=period;this.handler=handler;this.lastCalled=new Date().getTime();this.user=true};Strophe.TimedHandler.prototype={run:function(){this.lastCalled=new Date().getTime();return this.handler()},reset:function(){this.lastCalled=new Date().getTime()},toString:function(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}};Strophe.Request=function(elem,func,rid,sends){this.id=++Strophe._requestId;this.xmlData=elem;this.data=Strophe.serialize(elem);this.origFunc=func;this.func=func;this.rid=rid;this.date=NaN;this.sends=sends||0;this.abort=false;this.dead=null;this.age=function(){if(!this.date){return 0}var now=new Date();return(now-this.date)/1000};this.timeDead=function(){if(!this.dead){return 0}var now=new Date();return(now-this.dead)/1000};this.xhr=this._newXHR()};Strophe.Request.prototype={getResponse:function(){var node=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){node=this.xhr.responseXML.documentElement;if(node.tagName=="parsererror"){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+Strophe.serialize(this.xhr.responseXML));throw"parsererror"}}else{if(this.xhr.responseText){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+Strophe.serialize(this.xhr.responseXML))}}return node},_newXHR:function(){var xhr=null;if(window.XMLHttpRequest){xhr=new XMLHttpRequest();if(xhr.overrideMimeType){xhr.overrideMimeType("text/xml")}}else{if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP")}}xhr.onreadystatechange=this.func.prependArg(this);return xhr}};Strophe.Connection=function(service){this.service=service;this.jid="";this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this._idleTimeout=null;this._disconnectTimeout=null;this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this.paused=false;this.hold=1;this.wait=60;this.window=5;this._data=[];this._requests=[];this._uniqueId=Math.round(Math.random()*10000);this._sasl_success_handler=null;this._sasl_failure_handler=null;this._sasl_challenge_handler=null;this._idleTimeout=setTimeout(this._onIdle.bind(this),100);for(var k in Strophe._connectionPlugins){if(Strophe._connectionPlugins.hasOwnProperty(k)){var ptype=Strophe._connectionPlugins[k];var F=function(){};F.prototype=ptype;this[k]=new F();this[k].init(this)}}};Strophe.Connection.prototype={reset:function(){this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this._requests=[];this._uniqueId=Math.round(Math.random()*10000)},pause:function(){this.paused=true},resume:function(){this.paused=false},getUniqueId:function(suffix){if(typeof(suffix)=="string"||typeof(suffix)=="number"){return ++this._uniqueId+":"+suffix}else{return ++this._uniqueId+""}},connect:function(jid,pass,callback,wait,hold){this.jid=jid;this.pass=pass;this.connect_callback=callback;this.disconnecting=false;this.connected=false;this.authenticated=false;this.errors=0;this.wait=wait||this.wait;this.hold=hold||this.hold;this.domain=Strophe.getDomainFromJid(this.jid);var body=this._buildBody().attrs({to:this.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":Strophe.NS.BOSH});this._changeConnectStatus(Strophe.Status.CONNECTING,null);this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._connect_cb.bind(this)),body.tree().getAttribute("rid")));this._throttledRequestHandler()},attach:function(jid,sid,rid,callback,wait,hold,wind){this.jid=jid;this.sid=sid;this.rid=rid;this.connect_callback=callback;this.domain=Strophe.getDomainFromJid(this.jid);this.authenticated=true;this.connected=true;this.wait=wait||this.wait;this.hold=hold||this.hold;this.window=wind||this.window;this._changeConnectStatus(Strophe.Status.ATTACHED,null)},xmlInput:function(elem){return},xmlOutput:function(elem){return},rawInput:function(data){return},rawOutput:function(data){return},send:function(elem){if(elem===null){return}if(typeof(elem.sort)==="function"){for(var i=0;i<elem.length;i++){this._queueData(elem[i])}}else{if(typeof(elem.tree)==="function"){this._queueData(elem.tree())}else{this._queueData(elem)}}this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},flush:function(){clearTimeout(this._idleTimeout);this._onIdle()},sendIQ:function(elem,callback,errback,timeout){var timeoutHandler=null;var that=this;if(typeof(elem.tree)==="function"){elem=elem.tree()}var id=elem.getAttribute("id");if(!id){id=this.getUniqueId("sendIQ");elem.setAttribute("id",id)}var handler=this.addHandler(function(stanza){if(timeoutHandler){that.deleteTimedHandler(timeoutHandler)}var iqtype=stanza.getAttribute("type");if(iqtype==="result"){if(callback){callback(stanza)}}else{if(iqtype==="error"){if(errback){errback(stanza)}}else{throw {name:"StropheError",message:"Got bad IQ type of "+iqtype}}}},null,"iq",null,id);if(timeout){timeoutHandler=this.addTimedHandler(timeout,function(){that.deleteHandler(handler);if(errback){errback(null)}return false})}this.send(elem);return id},_queueData:function(element){if(element===null||!element.tagName||!element.childNodes){throw {name:"StropheError",message:"Cannot queue non-DOMElement."}}this._data.push(element)},_sendRestart:function(){this._data.push("restart");this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},addTimedHandler:function(period,handler){var thand=new Strophe.TimedHandler(period,handler);this.addTimeds.push(thand);return thand},deleteTimedHandler:function(handRef){this.removeTimeds.push(handRef)},addHandler:function(handler,ns,name,type,id,from,options){var hand=new Strophe.Handler(handler,ns,name,type,id,from,options);this.addHandlers.push(hand);return hand},deleteHandler:function(handRef){this.removeHandlers.push(handRef)},disconnect:function(reason){this._changeConnectStatus(Strophe.Status.DISCONNECTING,reason);Strophe.info("Disconnect was called because: "+reason);if(this.connected){this._disconnectTimeout=this._addSysTimedHandler(3000,this._onDisconnectTimeout.bind(this));this._sendTerminate()}},_changeConnectStatus:function(status,condition){for(var k in Strophe._connectionPlugins){if(Strophe._connectionPlugins.hasOwnProperty(k)){var plugin=this[k];if(plugin.statusChanged){try{plugin.statusChanged(status,condition)}catch(err){Strophe.error(""+k+" plugin caused an exception changing status: "+err)}}}}if(this.connect_callback){try{this.connect_callback(status,condition)}catch(e){Strophe.error("User connection callback caused an exception: "+e)}}},_buildBody:function(){var bodyWrap=$build("body",{rid:this.rid++,xmlns:Strophe.NS.HTTPBIND});if(this.sid!==null){bodyWrap.attrs({sid:this.sid})}return bodyWrap},_removeRequest:function(req){Strophe.debug("removing request");var i;for(i=this._requests.length-1;i>=0;i--){if(req==this._requests[i]){this._requests.splice(i,1)}}req.xhr.onreadystatechange=function(){};this._throttledRequestHandler()},_restartRequest:function(i){var req=this._requests[i];if(req.dead===null){req.dead=new Date()}this._processRequest(i)},_processRequest:function(i){var req=this._requests[i];var reqStatus=-1;try{if(req.xhr.readyState==4){reqStatus=req.xhr.status}}catch(e){Strophe.error("caught an error in _requests["+i+"], reqStatus: "+reqStatus)}if(typeof(reqStatus)=="undefined"){reqStatus=-1}var time_elapsed=req.age();var primaryTimeout=(!isNaN(time_elapsed)&&time_elapsed>Math.floor(Strophe.TIMEOUT*this.wait));var secondaryTimeout=(req.dead!==null&&req.timeDead()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait));var requestCompletedWithServerError=(req.xhr.readyState==4&&(reqStatus<1||reqStatus>=500));if(primaryTimeout||secondaryTimeout||requestCompletedWithServerError){if(secondaryTimeout){Strophe.error("Request "+this._requests[i].id+" timed out (secondary), restarting")}req.abort=true;req.xhr.abort();req.xhr.onreadystatechange=function(){};this._requests[i]=new Strophe.Request(req.xmlData,req.origFunc,req.rid,req.sends);req=this._requests[i]}if(req.xhr.readyState===0){Strophe.debug("request id "+req.id+"."+req.sends+" posting");req.date=new Date();try{req.xhr.open("POST",this.service,true)}catch(e2){Strophe.error("XHR open failed.");if(!this.connected){this._changeConnectStatus(Strophe.Status.CONNFAIL,"bad-service")}this.disconnect();return}var sendFunc=function(){req.xhr.send(req.data)};if(req.sends>1){var backoff=Math.pow(req.sends,3)*1000;setTimeout(sendFunc,backoff)}else{sendFunc()}req.sends++;this.xmlOutput(req.xmlData);this.rawOutput(req.data)}else{Strophe.debug("_processRequest: "+(i===0?"first":"second")+" request has readyState of "+req.xhr.readyState)}},_throttledRequestHandler:function(){if(!this._requests){Strophe.debug("_throttledRequestHandler called with undefined requests")}else{Strophe.debug("_throttledRequestHandler called with "+this._requests.length+" requests")}if(!this._requests||this._requests.length===0){return}if(this._requests.length>0){this._processRequest(0)}if(this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window-1){this._processRequest(1)}},_onRequestStateChange:function(func,req){Strophe.debug("request id "+req.id+"."+req.sends+" state changed to "+req.xhr.readyState);if(req.abort){req.abort=false;return}var reqStatus;if(req.xhr.readyState==4){reqStatus=0;try{reqStatus=req.xhr.status}catch(e){}if(typeof(reqStatus)=="undefined"){reqStatus=0}if(this.disconnecting){if(reqStatus>=400){this._hitError(reqStatus);return}}var reqIs0=(this._requests[0]==req);var reqIs1=(this._requests[1]==req);if((reqStatus>0&&reqStatus<500)||req.sends>5){this._removeRequest(req);Strophe.debug("request id "+req.id+" should now be removed")}if(reqStatus==200){if(reqIs1||(reqIs0&&this._requests.length>0&&this._requests[0].age()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait))){this._restartRequest(0)}Strophe.debug("request id "+req.id+"."+req.sends+" got 200");func(req);this.errors=0}else{Strophe.error("request id "+req.id+"."+req.sends+" error "+reqStatus+" happened");if(reqStatus===0||(reqStatus>=400&&reqStatus<600)||reqStatus>=12000){this._hitError(reqStatus);if(reqStatus>=400&&reqStatus<500){this._changeConnectStatus(Strophe.Status.DISCONNECTING,null);this._doDisconnect()}}}if(!((reqStatus>0&&reqStatus<10000)||req.sends>5)){this._throttledRequestHandler()}}},_hitError:function(reqStatus){this.errors++;Strophe.warn("request errored, status: "+reqStatus+", number of errors: "+this.errors);if(this.errors>4){this._onDisconnectTimeout()}},_doDisconnect:function(){Strophe.info("_doDisconnect was called");this.authenticated=false;this.disconnecting=false;this.sid=null;this.streamId=null;this.rid=Math.floor(Math.random()*4294967295);if(this.connected){this._changeConnectStatus(Strophe.Status.DISCONNECTED,null);this.connected=false}this.handlers=[];this.timedHandlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[]},_dataRecv:function(req){try{var elem=req.getResponse()}catch(e){if(e!="parsererror"){throw e}this.disconnect("strophe-parsererror")}if(elem===null){return}this.xmlInput(elem);this.rawInput(Strophe.serialize(elem));var i,hand;while(this.removeHandlers.length>0){hand=this.removeHandlers.pop();i=this.handlers.indexOf(hand);if(i>=0){this.handlers.splice(i,1)}}while(this.addHandlers.length>0){this.handlers.push(this.addHandlers.pop())}if(this.disconnecting&&this._requests.length===0){this.deleteTimedHandler(this._disconnectTimeout);this._disconnectTimeout=null;this._doDisconnect();return}var typ=elem.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=elem.getAttribute("condition");conflict=elem.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict"}this._changeConnectStatus(Strophe.Status.CONNFAIL,cond)}else{this._changeConnectStatus(Strophe.Status.CONNFAIL,"unknown")}this.disconnect();return}var self=this;Strophe.forEachChild(elem,null,function(child){var i,newList;newList=self.handlers;self.handlers=[];for(i=0;i<newList.length;i++){var hand=newList[i];if(hand.isMatch(child)&&(self.authenticated||!hand.user)){if(hand.run(child)){self.handlers.push(hand)}}else{self.handlers.push(hand)}}})},_sendTerminate:function(){Strophe.info("_sendTerminate was called");var body=this._buildBody().attrs({type:"terminate"});if(this.authenticated){body.c("presence",{xmlns:Strophe.NS.CLIENT,type:"unavailable"})}this.disconnecting=true;var req=new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid"));this._requests.push(req);this._throttledRequestHandler()},_connect_cb:function(req){Strophe.info("_connect_cb was called");this.connected=true;var bodyWrap=req.getResponse();if(!bodyWrap){return}this.xmlInput(bodyWrap);this.rawInput(Strophe.serialize(bodyWrap));var typ=bodyWrap.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=bodyWrap.getAttribute("condition");conflict=bodyWrap.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict"}this._changeConnectStatus(Strophe.Status.CONNFAIL,cond)}else{this._changeConnectStatus(Strophe.Status.CONNFAIL,"unknown")}return}if(!this.sid){this.sid=bodyWrap.getAttribute("sid")}if(!this.stream_id){this.stream_id=bodyWrap.getAttribute("authid")}var wind=bodyWrap.getAttribute("requests");if(wind){this.window=parseInt(wind,10)}var hold=bodyWrap.getAttribute("hold");if(hold){this.hold=parseInt(hold,10)}var wait=bodyWrap.getAttribute("wait");if(wait){this.wait=parseInt(wait,10)}var do_sasl_plain=false;var do_sasl_digest_md5=false;var do_sasl_anonymous=false;var mechanisms=bodyWrap.getElementsByTagName("mechanism");var i,mech,auth_str,hashed_auth_str;if(mechanisms.length>0){for(i=0;i<mechanisms.length;i++){mech=Strophe.getText(mechanisms[i]);if(mech=="DIGEST-MD5"){do_sasl_digest_md5=true}else{if(mech=="PLAIN"){do_sasl_plain=true}else{if(mech=="ANONYMOUS"){do_sasl_anonymous=true}}}}}else{var body=this._buildBody();this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._connect_cb.bind(this)),body.tree().getAttribute("rid")));this._throttledRequestHandler();return}if(Strophe.getNodeFromJid(this.jid)===null&&do_sasl_anonymous){this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"ANONYMOUS"}).tree())}else{if(Strophe.getNodeFromJid(this.jid)===null){this._changeConnectStatus(Strophe.Status.CONNFAIL,"x-strophe-bad-non-anon-jid");this.disconnect()}else{if(do_sasl_digest_md5){this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge1_cb.bind(this),null,"challenge",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"DIGEST-MD5"}).tree())}else{if(do_sasl_plain){auth_str=Strophe.getBareJidFromJid(this.jid);auth_str=auth_str+"\u0000";auth_str=auth_str+Strophe.getNodeFromJid(this.jid);auth_str=auth_str+"\u0000";auth_str=auth_str+this.pass;this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);hashed_auth_str=Base64.encode(auth_str);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"PLAIN"}).t(hashed_auth_str).tree())}else{this._changeConnectStatus(Strophe.Status.AUTHENTICATING,null);this._addSysHandler(this._auth1_cb.bind(this),null,null,null,"_auth_1");this.send($iq({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:Strophe.NS.AUTH}).c("username",{}).t(Strophe.getNodeFromJid(this.jid)).tree())}}}}},_sasl_challenge1_cb:function(elem){var attribMatch=/([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/;var challenge=Base64.decode(Strophe.getText(elem));var cnonce=MD5.hexdigest(Math.random()*1234567890);var realm="";var host=null;var nonce="";var qop="";var matches;this.deleteHandler(this._sasl_failure_handler);while(challenge.match(attribMatch)){matches=challenge.match(attribMatch);challenge=challenge.replace(matches[0],"");matches[2]=matches[2].replace(/^"(.+)"$/,"$1");switch(matches[1]){case"realm":realm=matches[2];break;case"nonce":nonce=matches[2];break;case"qop":qop=matches[2];break;case"host":host=matches[2];break}}var digest_uri="xmpp/"+this.domain;if(host!==null){digest_uri=digest_uri+"/"+host}var A1=MD5.hash(Strophe.getNodeFromJid(this.jid)+":"+realm+":"+this.pass)+":"+nonce+":"+cnonce;var A2="AUTHENTICATE:"+digest_uri;var responseText="";responseText+="username="+this._quote(Strophe.getNodeFromJid(this.jid))+",";responseText+="realm="+this._quote(realm)+",";responseText+="nonce="+this._quote(nonce)+",";responseText+="cnonce="+this._quote(cnonce)+",";responseText+='nc="00000001",';responseText+='qop="auth",';responseText+="digest-uri="+this._quote(digest_uri)+",";responseText+="response="+this._quote(MD5.hexdigest(MD5.hexdigest(A1)+":"+nonce+":00000001:"+cnonce+":auth:"+MD5.hexdigest(A2)))+",";responseText+='charset="utf-8"';this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge2_cb.bind(this),null,"challenge",null,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("response",{xmlns:Strophe.NS.SASL}).t(Base64.encode(responseText)).tree());return false},_quote:function(str){return'"'+str.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'},_sasl_challenge2_cb:function(elem){this.deleteHandler(this._sasl_success_handler);this.deleteHandler(this._sasl_failure_handler);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("response",{xmlns:Strophe.NS.SASL}).tree());return false},_auth1_cb:function(elem){var iq=$iq({type:"set",id:"_auth_2"}).c("query",{xmlns:Strophe.NS.AUTH}).c("username",{}).t(Strophe.getNodeFromJid(this.jid)).up().c("password").t(this.pass);if(!Strophe.getResourceFromJid(this.jid)){this.jid=Strophe.getBareJidFromJid(this.jid)+"/strophe"}iq.up().c("resource",{}).t(Strophe.getResourceFromJid(this.jid));this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2");this.send(iq.tree());return false},_sasl_success_cb:function(elem){Strophe.info("SASL authentication succeeded.");this.deleteHandler(this._sasl_failure_handler);this._sasl_failure_handler=null;if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null}this._addSysHandler(this._sasl_auth1_cb.bind(this),null,"stream:features",null,null);this._sendRestart();return false},_sasl_auth1_cb:function(elem){var i,child;for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeName=="bind"){this.do_bind=true}if(child.nodeName=="session"){this.do_session=true}}if(!this.do_bind){this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}else{this._addSysHandler(this._sasl_bind_cb.bind(this),null,null,null,"_bind_auth_2");var resource=Strophe.getResourceFromJid(this.jid);if(resource){this.send($iq({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:Strophe.NS.BIND}).c("resource",{}).t(resource).tree())}else{this.send($iq({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:Strophe.NS.BIND}).tree())}}return false},_sasl_bind_cb:function(elem){if(elem.getAttribute("type")=="error"){Strophe.info("SASL binding failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}var bind=elem.getElementsByTagName("bind");var jidNode;if(bind.length>0){jidNode=bind[0].getElementsByTagName("jid");if(jidNode.length>0){this.jid=Strophe.getText(jidNode[0]);if(this.do_session){this._addSysHandler(this._sasl_session_cb.bind(this),null,null,null,"_session_auth_2");this.send($iq({type:"set",id:"_session_auth_2"}).c("session",{xmlns:Strophe.NS.SESSION}).tree())}else{this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}}}else{Strophe.info("SASL binding failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}},_sasl_session_cb:function(elem){if(elem.getAttribute("type")=="result"){this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}else{if(elem.getAttribute("type")=="error"){Strophe.info("Session creation failed.");this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false}}return false},_sasl_failure_cb:function(elem){if(this._sasl_success_handler){this.deleteHandler(this._sasl_success_handler);this._sasl_success_handler=null}if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null}this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);return false},_auth2_cb:function(elem){if(elem.getAttribute("type")=="result"){this.authenticated=true;this._changeConnectStatus(Strophe.Status.CONNECTED,null)}else{if(elem.getAttribute("type")=="error"){this._changeConnectStatus(Strophe.Status.AUTHFAIL,null);this.disconnect()}}return false},_addSysTimedHandler:function(period,handler){var thand=new Strophe.TimedHandler(period,handler);thand.user=false;this.addTimeds.push(thand);return thand},_addSysHandler:function(handler,ns,name,type,id){var hand=new Strophe.Handler(handler,ns,name,type,id);hand.user=false;this.addHandlers.push(hand);return hand},_onDisconnectTimeout:function(){Strophe.info("_onDisconnectTimeout was called");var req;while(this._requests.length>0){req=this._requests.pop();req.abort=true;req.xhr.abort();req.xhr.onreadystatechange=function(){}}this._doDisconnect();return false},_onIdle:function(){var i,thand,since,newList;while(this.removeTimeds.length>0){thand=this.removeTimeds.pop();i=this.timedHandlers.indexOf(thand);if(i>=0){this.timedHandlers.splice(i,1)}}while(this.addTimeds.length>0){this.timedHandlers.push(this.addTimeds.pop())}var now=new Date().getTime();newList=[];for(i=0;i<this.timedHandlers.length;i++){thand=this.timedHandlers[i];if(this.authenticated||!thand.user){since=thand.lastCalled+thand.period;if(since-now<=0){if(thand.run()){newList.push(thand)}}else{newList.push(thand)}}}this.timedHandlers=newList;var body,time_elapsed;if(this.authenticated&&this._requests.length===0&&this._data.length===0&&!this.disconnecting){Strophe.info("no requests during idle cycle, sending blank request");this._data.push(null)}if(this._requests.length<2&&this._data.length>0&&!this.paused){body=this._buildBody();for(i=0;i<this._data.length;i++){if(this._data[i]!==null){if(this._data[i]==="restart"){body.attrs({to:this.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":Strophe.NS.BOSH})}else{body.cnode(this._data[i]).up()}}}delete this._data;this._data=[];this._requests.push(new Strophe.Request(body.tree(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid")));this._processRequest(this._requests.length-1)}if(this._requests.length>0){time_elapsed=this._requests[0].age();if(this._requests[0].dead!==null){if(this._requests[0].timeDead()>Math.floor(Strophe.SECONDARY_TIMEOUT*this.wait)){this._throttledRequestHandler()}}if(time_elapsed>Math.floor(Strophe.TIMEOUT*this.wait)){Strophe.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(Strophe.TIMEOUT*this.wait)+" seconds since last activity");this._throttledRequestHandler()}}clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100)}};if(callback){callback(Strophe,$build,$msg,$iq,$pres)}})(function(){window.Strophe=arguments[0];window.$build=arguments[1];window.$msg=arguments[2];window.$iq=arguments[3];window.$pres=arguments[4]}); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/strophe.muc.js b/mod/beechat/views/default/js/strophe.muc.js
new file mode 100644
index 000000000..954ca8730
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.muc.js
@@ -0,0 +1,300 @@
+/*
+Plugin to implement the MUC extension. http://xmpp.org/extensions/xep-0045.html
+*/
+/* jslint configuration: */
+/* global document, window, setTimeout, clearTimeout, console,
+ XMLHttpRequest, ActiveXObject,
+ Base64, MD5,
+ Strophe, $build, $msg, $iq, $pres
+*/
+
+Strophe.addConnectionPlugin('muc', {
+ _connection: null,
+ // The plugin must have the init function
+ /***Function
+ Initialize the MUC plugin. Sets the correct connection object and
+ extends the namesace.
+ */
+ init: function(conn) {
+ this._connection = conn;
+ /* extend name space
+ * NS.MUC - XMPP Multi-user chat namespace
+ * from XEP 45.
+ *
+ */
+ Strophe.addNamespace('MUC_OWNER', Strophe.NS.MUC+"#owner");
+ Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC+"#admin");
+ },
+ /***Function
+ Join a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to join.
+ (String) nick - The nickname to use in the chat room. Optional
+ (Function) msg_handler_cb - The function call to handle messages from the
+ specified chat room.
+ (Function) pres_handler_cb - The function call back to handle presence
+ in the chat room.
+ (String) password - The optional password to use. (password protected
+ rooms only)
+ */
+ join: function(room, nick, msg_handler_cb, pres_handler_cb, password) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msg = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ if (password)
+ {
+ var password_elem = Strophe.xmlElement("password",
+ [],
+ password);
+ msg.cnode(password_elem);
+ }
+ if (msg_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var from = stanza.getAttribute('from');
+ var roomname = from.split("/");
+ // filter on room name
+ if (roomname.length > 1 && roomname[0] == room)
+ {
+ return msg_handler_cb(stanza);
+ }
+ else
+ {
+ return true;
+ }
+ },
+ null,
+ "message",
+ null,
+ null,
+ null);
+ }
+ if (pres_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var xquery = stanza.getElementsByTagName("x");
+ if (xquery.length > 0)
+ {
+ //Handle only MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ return pres_handler_cb(stanza);
+ }
+ }
+ }
+ return true;
+ },
+ null,
+ "presence",
+ null,
+ null,
+ null);
+ }
+ this._connection.send(msg);
+ },
+ /***Function
+ Leave a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to leave.
+ (String) nick - The nick name used in the room.
+ (Function) handler_cb - Optional function to handle the successful leave.
+ Returns:
+ iqid - The unique id for the room leave.
+ */
+ leave: function(room, nick, handler_cb) {
+ var room_nick = this.test_append_nick(room, nick);
+ var presenceid = this._connection.getUniqueId();
+ var presence = $pres({type: "unavailable",
+ id: presenceid,
+ from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.addHandler(handler_cb,
+ null,
+ "presence",
+ null,
+ presenceid,
+ null);
+ this._connection.send(presence);
+ return presenceid;
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name used in the chat room.
+ (String) message - The message to send to the room.
+ Returns:
+ msgiq - the unique id used to send the message
+ */
+ message: function(room, nick, message) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msgid = this._connection.getUniqueId();
+ var msg = $msg({to: room_nick,
+ from: this._connection.jid,
+ type: "groupchat",
+ id: msgid}).c("body",
+ {xmlns: Strophe.NS.CLIENT}).t(message);
+ msg.up().c("x", {xmlns: "jabber:x:event"}).c("composing");
+ this._connection.send(msg);
+ return msgid;
+ },
+ /***Function
+ Start a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to send the configuration request
+ */
+ configure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to:room,
+ type: "get"}).c("query",
+ {xmlns: Strophe.NS.MUC_OWNER});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Cancel the room configuration
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to cancel the configuration.
+ */
+ cancelConfigure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "cancel"});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Save a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (Array) configarray - an array of form elements used to configure the room.
+ Returns:
+ id - the unique id used to save the configuration.
+ */
+ saveConfiguration: function(room, configarray) {
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "submit"});
+ for (var i = 0; i >= configarray.length; i++) {
+ config.cnode(configarray[i]);
+ }
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to create the chat room.
+ */
+ createInstantRoom: function(room) {
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data",
+ type: "submit"});
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***
+ Set the topic of the chat room.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) topic - Topic message.
+ */
+ setTopic: function(room, topic) {
+ var msg = $msg({to: room,
+ from: this._connection.jid,
+ type: "groupchat"})
+ .c("subject", {xmlns: "jabber:client"}).t(topic);
+ this._connection.send(msg.tree());
+ },
+ /***Function
+ Changes the role and affiliation of a member of a MUC room.
+ The modification can only be done by a room moderator. An error will be
+ returned if the user doesn't have permission.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name of the user to modify.
+ (String) role - The new role of the user.
+ (String) affiliation - The new affiliation of the user.
+ (String) reason - The reason for the change.
+ Returns:
+ iq - the id of the mode change request.
+ */
+ modifyUser: function(room, nick, role, affiliation, reason) {
+ var item_attrs = {nick: Strophe.escapeNode(nick)};
+ if (role !== null)
+ {
+ item_attrs.role = role;
+ }
+ if (affiliation !== null)
+ {
+ item_attrs.affiliation = affiliation;
+ }
+ var item = $build("item", item_attrs);
+ if (reason !== null)
+ {
+ item.cnode(Strophe.xmlElement("reason", reason));
+ }
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER}).cnode(item.tree());
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***Function
+ Change the current users nick name.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) user - The new nick name.
+ */
+ changeNick: function(room, user) {
+ var room_nick = this.test_append_nick(room, user);
+ var presence = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.send(presence.tree());
+ },
+ /***Function
+ List all chat room available on a server.
+ Parameters:
+ (String) server - name of chat server.
+ (String) handle_cb - Function to call for room list return.
+ */
+ listRooms: function(server, handle_cb) {
+ var iq = $iq({to: server,
+ from: this._connection.jid,
+ type: "get"})
+ .c("query",{xmlns: Strophe.NS.DISCO_ITEMS});
+ this._connection.sendIQ(iq, handle_cb, function(){});
+ },
+ test_append_nick: function(room, nick) {
+ var room_nick = room;
+ if (nick)
+ {
+ room_nick += "/" + Strophe.escapeNode(nick);
+ }
+ return room_nick;
+ }
+}); \ No newline at end of file
diff --git a/mod/beechat/views/default/js/strophe.muc.js.php b/mod/beechat/views/default/js/strophe.muc.js.php
new file mode 100644
index 000000000..e10750d02
--- /dev/null
+++ b/mod/beechat/views/default/js/strophe.muc.js.php
@@ -0,0 +1,300 @@
+/*
+Plugin to implement the MUC extension. http://xmpp.org/extensions/xep-0045.html
+*/
+/* jslint configuration: */
+/* global document, window, setTimeout, clearTimeout, console,
+ XMLHttpRequest, ActiveXObject,
+ Base64, MD5,
+ Strophe, $build, $msg, $iq, $pres
+*/
+
+Strophe.addConnectionPlugin('muc', {
+ _connection: null,
+ // The plugin must have the init function
+ /***Function
+ Initialize the MUC plugin. Sets the correct connection object and
+ extends the namesace.
+ */
+ init: function(conn) {
+ this._connection = conn;
+ /* extend name space
+ * NS.MUC - XMPP Multi-user chat namespace
+ * from XEP 45.
+ *
+ */
+ Strophe.addNamespace('MUC_OWNER', Strophe.NS.MUC+"#owner");
+ Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC+"#admin");
+ },
+ /***Function
+ Join a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to join.
+ (String) nick - The nickname to use in the chat room. Optional
+ (Function) msg_handler_cb - The function call to handle messages from the
+ specified chat room.
+ (Function) pres_handler_cb - The function call back to handle presence
+ in the chat room.
+ (String) password - The optional password to use. (password protected
+ rooms only)
+ */
+ join: function(room, nick, msg_handler_cb, pres_handler_cb, password) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msg = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ if (password)
+ {
+ var password_elem = Strophe.xmlElement("password",
+ [],
+ password);
+ msg.cnode(password_elem);
+ }
+ if (msg_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var from = stanza.getAttribute('from');
+ var roomname = from.split("/");
+ // filter on room name
+ if (roomname.length > 1 && roomname[0] == room)
+ {
+ return msg_handler_cb(stanza);
+ }
+ else
+ {
+ return true;
+ }
+ },
+ null,
+ "message",
+ null,
+ null,
+ null);
+ }
+ if (pres_handler_cb)
+ {
+ this._connection.addHandler(function(stanza) {
+ var xquery = stanza.getElementsByTagName("x");
+ if (xquery.length > 0)
+ {
+ //Handle only MUC user protocol
+ for (var i = 0; i < xquery.length; i++)
+ {
+ var xmlns = xquery[i].getAttribute("xmlns");
+
+ if (xmlns && xmlns.match(Strophe.NS.MUC))
+ {
+ return pres_handler_cb(stanza);
+ }
+ }
+ }
+ return true;
+ },
+ null,
+ "presence",
+ null,
+ null,
+ null);
+ }
+ this._connection.send(msg);
+ },
+ /***Function
+ Leave a multi-user chat room
+ Parameters:
+ (String) room - The multi-user chat room to leave.
+ (String) nick - The nick name used in the room.
+ (Function) handler_cb - Optional function to handle the successful leave.
+ Returns:
+ iqid - The unique id for the room leave.
+ */
+ leave: function(room, nick, handler_cb) {
+ var room_nick = this.test_append_nick(room, nick);
+ var presenceid = this._connection.getUniqueId();
+ var presence = $pres({type: "unavailable",
+ id: presenceid,
+ from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.addHandler(handler_cb,
+ null,
+ "presence",
+ null,
+ presenceid,
+ null);
+ this._connection.send(presence);
+ return presenceid;
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name used in the chat room.
+ (String) message - The message to send to the room.
+ Returns:
+ msgiq - the unique id used to send the message
+ */
+ message: function(room, nick, message) {
+ var room_nick = this.test_append_nick(room, nick);
+ var msgid = this._connection.getUniqueId();
+ var msg = $msg({to: room_nick,
+ from: this._connection.jid,
+ type: "groupchat",
+ id: msgid}).c("body",
+ {xmlns: Strophe.NS.CLIENT}).t(message);
+ msg.up().c("x", {xmlns: "jabber:x:event"}).c("composing");
+ this._connection.send(msg);
+ return msgid;
+ },
+ /***Function
+ Start a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to send the configuration request
+ */
+ configure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to:room,
+ type: "get"}).c("query",
+ {xmlns: Strophe.NS.MUC_OWNER});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Cancel the room configuration
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to cancel the configuration.
+ */
+ cancelConfigure: function(room) {
+ //send iq to start room configuration
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "cancel"});
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Save a room configuration.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (Array) configarray - an array of form elements used to configure the room.
+ Returns:
+ id - the unique id used to save the configuration.
+ */
+ saveConfiguration: function(room, configarray) {
+ var config = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data", type: "submit"});
+ for (var i = 0; i >= configarray.length; i++) {
+ config.cnode(configarray[i]);
+ }
+ var stanza = config.tree();
+ return this._connection.sendIQ(stanza,
+ function(){},
+ function(){});
+ },
+ /***Function
+ Parameters:
+ (String) room - The multi-user chat room name.
+ Returns:
+ id - the unique id used to create the chat room.
+ */
+ createInstantRoom: function(room) {
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER})
+ .c("x", {xmlns: "jabber:x:data",
+ type: "submit"});
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***
+ Set the topic of the chat room.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) topic - Topic message.
+ */
+ setTopic: function(room, topic) {
+ var msg = $msg({to: room,
+ from: this._connection.jid,
+ type: "groupchat"})
+ .c("subject", {xmlns: "jabber:client"}).t(topic);
+ this._connection.send(msg.tree());
+ },
+ /***Function
+ Changes the role and affiliation of a member of a MUC room.
+ The modification can only be done by a room moderator. An error will be
+ returned if the user doesn't have permission.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) nick - The nick name of the user to modify.
+ (String) role - The new role of the user.
+ (String) affiliation - The new affiliation of the user.
+ (String) reason - The reason for the change.
+ Returns:
+ iq - the id of the mode change request.
+ */
+ modifyUser: function(room, nick, role, affiliation, reason) {
+ var item_attrs = {nick: Strophe.escapeNode(nick)};
+ if (role !== null)
+ {
+ item_attrs.role = role;
+ }
+ if (affiliation !== null)
+ {
+ item_attrs.affiliation = affiliation;
+ }
+ var item = $build("item", item_attrs);
+ if (reason !== null)
+ {
+ item.cnode(Strophe.xmlElement("reason", reason));
+ }
+ var roomiq = $iq({to: room,
+ type: "set"})
+ .c("query", {xmlns: Strophe.NS.MUC_OWNER}).cnode(item.tree());
+ return this._connection.sendIQ(roomiq.tree(),
+ function() {},
+ function() {});
+ },
+ /***Function
+ Change the current users nick name.
+ Parameters:
+ (String) room - The multi-user chat room name.
+ (String) user - The new nick name.
+ */
+ changeNick: function(room, user) {
+ var room_nick = this.test_append_nick(room, user);
+ var presence = $pres({from: this._connection.jid,
+ to: room_nick})
+ .c("x",{xmlns: Strophe.NS.MUC});
+ this._connection.send(presence.tree());
+ },
+ /***Function
+ List all chat room available on a server.
+ Parameters:
+ (String) server - name of chat server.
+ (String) handle_cb - Function to call for room list return.
+ */
+ listRooms: function(server, handle_cb) {
+ var iq = $iq({to: server,
+ from: this._connection.jid,
+ type: "get"})
+ .c("query",{xmlns: Strophe.NS.DISCO_ITEMS});
+ this._connection.sendIQ(iq, handle_cb, function(){});
+ },
+ test_append_nick: function(room, nick) {
+ var room_nick = room;
+ if (nick)
+ {
+ room_nick += "/" + Strophe.escapeNode(nick);
+ }
+ return room_nick;
+ }
+});
diff --git a/mod/beechat/views/default/settings/beechat/edit.php b/mod/beechat/views/default/settings/beechat/edit.php
new file mode 100755
index 000000000..ec4ab08de
--- /dev/null
+++ b/mod/beechat/views/default/settings/beechat/edit.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Barter Plugin
+ * @package Barters
+ **/
+ $domain = elgg_get_plugin_setting("domain", "beechat");
+ //$group_domain = elgg_get_plugin_setting("groupdomain", "beechat");
+ $xmlrpc_ip = elgg_get_plugin_setting("xmlrpcip", "beechat");
+ $dbname = elgg_get_plugin_setting("dbname", "beechat");
+ $dbhost = elgg_get_plugin_setting("dbhost", "beechat");
+ $dbuser = elgg_get_plugin_setting("dbuser", "beechat");
+ $dbpassword = elgg_get_plugin_setting("dbpassword", "beechat");
+?>
+<p>
+ <?php echo elgg_echo('beechat:domain'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[domain]','value' => $domain)); ?>
+ <!--<?php echo elgg_echo('beechat:groupdomain'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[groupdomain]','value' => $group_domain)); ?>-->
+ <?php echo elgg_echo('beechat:xmlrpcip'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[xmlrpcip]','value' => $xmlrpc_ip)); ?>
+ <?php echo elgg_echo('beechat:dbname'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbname]','value' => $dbname)); ?>
+ <?php echo elgg_echo('beechat:dbhost'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbhost]','value' => $dbhost)); ?>
+ <?php echo elgg_echo('beechat:dbuser'); ?>
+ <?php echo elgg_view('input/text', array('internalname' => 'params[dbuser]','value' => $dbuser)); ?>
+ <?php echo elgg_echo('beechat:dbpassword'); ?>
+ <?php echo elgg_view('input/password', array('internalname' => 'params[dbpassword]','value' => $dbpassword)); ?>
+
+</p>
+
diff --git a/mod/blog/actions/blog/auto_save_revision.php b/mod/blog/actions/blog/auto_save_revision.php
index 66b65c5fd..e33edfaab 100644
--- a/mod/blog/actions/blog/auto_save_revision.php
+++ b/mod/blog/actions/blog/auto_save_revision.php
@@ -7,7 +7,7 @@
$guid = get_input('guid');
$user = elgg_get_logged_in_user_entity();
-$title = get_input('title');
+$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');
$description = get_input('description');
$excerpt = get_input('excerpt');
diff --git a/mod/blog/actions/blog/save.php b/mod/blog/actions/blog/save.php
index 8923cd0d2..82a9e6c51 100644
--- a/mod/blog/actions/blog/save.php
+++ b/mod/blog/actions/blog/save.php
@@ -2,6 +2,12 @@
/**
* Save blog entity
*
+ * Can be called by clicking save button or preview button. If preview button,
+ * we automatically save as draft. The preview button is only available for
+ * non-published drafts.
+ *
+ * Drafts are saved with the access set to private.
+ *
* @package Blog
*/
@@ -57,7 +63,11 @@ $required = array('title', 'description');
// load from POST and do sanity and access checking
foreach ($values as $name => $default) {
- $value = get_input($name, $default);
+ if ($name === 'title') {
+ $value = htmlspecialchars(get_input('title', $default, false), ENT_QUOTES, 'UTF-8');
+ } else {
+ $value = get_input($name, $default);
+ }
if (in_array($name, $required) && empty($value)) {
$error = elgg_echo("blog:error:missing:$name");
@@ -69,11 +79,7 @@ foreach ($values as $name => $default) {
switch ($name) {
case 'tags':
- if ($value) {
- $values[$name] = string_to_tag_array($value);
- } else {
- unset ($values[$name]);
- }
+ $values[$name] = string_to_tag_array($value);
break;
case 'excerpt':
@@ -95,11 +101,6 @@ foreach ($values as $name => $default) {
}
break;
- // don't try to set the guid
- case 'guid':
- unset($values['guid']);
- break;
-
default:
$values[$name] = $value;
break;
@@ -111,13 +112,16 @@ if ($save == false) {
$values['status'] = 'draft';
}
+// if draft, set access to private and cache the future access
+if ($values['status'] == 'draft') {
+ $values['future_access'] = $values['access_id'];
+ $values['access_id'] = ACCESS_PRIVATE;
+}
+
// assign values to the entity, stopping on error.
if (!$error) {
foreach ($values as $name => $value) {
- if (FALSE === ($blog->$name = $value)) {
- $error = elgg_echo('blog:error:cannot_save' . "$name=$value");
- break;
- }
+ $blog->$name = $value;
}
}
@@ -145,8 +149,13 @@ if (!$error) {
// add to river if changing status or published, regardless of new post
// because we remove it for drafts.
if (($new_post || $old_status == 'draft') && $status == 'published') {
- add_to_river('river/object/blog/create', 'create', elgg_get_logged_in_user_guid(), $blog->getGUID());
+ add_to_river('river/object/blog/create', 'create', $blog->owner_guid, $blog->getGUID());
+
+ // we only want notifications sent when post published
+ register_notification_object('object', 'blog', elgg_echo('blog:newpost'));
+ elgg_trigger_event('publish', 'object', $blog);
+ // reset the creation time for posts that move from draft to published
if ($guid) {
$blog->time_created = time();
$blog->save();
@@ -170,4 +179,4 @@ if (!$error) {
} else {
register_error($error);
forward($error_forward_url);
-} \ No newline at end of file
+}
diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php
index 9a02a8cc3..9753f27a8 100644
--- a/mod/blog/lib/blog.php
+++ b/mod/blog/lib/blog.php
@@ -39,8 +39,8 @@ function blog_get_page_content_read($guid = NULL) {
elgg_push_breadcrumb($blog->title);
$return['content'] = elgg_view_entity($blog, array('full_view' => true));
- //check to see if comment are on
- if ($blog->comments_on != 'Off') {
+ // check to see if we should allow comments
+ if ($blog->comments_on != 'Off' && $blog->status == 'published') {
$return['content'] .= elgg_view_comments($blog);
}
@@ -50,7 +50,7 @@ function blog_get_page_content_read($guid = NULL) {
/**
* Get page components to list a user's or all blogs.
*
- * @param int $owner_guid The GUID of the page owner or NULL for all blogs
+ * @param int $container_guid The GUID of the page owner or NULL for all blogs
* @return array
*/
function blog_get_page_content_list($container_guid = NULL) {
@@ -62,10 +62,11 @@ function blog_get_page_content_list($container_guid = NULL) {
$options = array(
'type' => 'object',
'subtype' => 'blog',
- 'full_view' => FALSE,
+ 'full_view' => false,
);
- $loggedin_userid = elgg_get_logged_in_user_guid();
+ $current_user = elgg_get_logged_in_user_entity();
+
if ($container_guid) {
// access check for closed groups
group_gatekeeper();
@@ -80,7 +81,7 @@ function blog_get_page_content_list($container_guid = NULL) {
$crumbs_title = $container->name;
elgg_push_breadcrumb($crumbs_title);
- if ($container_guid == $loggedin_userid) {
+ if ($current_user && ($container_guid == $current_user->guid)) {
$return['filter_context'] = 'mine';
} else if (elgg_instanceof($container, 'group')) {
$return['filter'] = false;
@@ -99,7 +100,13 @@ function blog_get_page_content_list($container_guid = NULL) {
// show all posts for admin or users looking at their own blogs
// show only published posts for other users.
- if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $container_guid == $loggedin_userid))) {
+ $show_only_published = true;
+ if ($current_user) {
+ if (($current_user->guid == $container_guid) || $current_user->isAdmin()) {
+ $show_only_published = false;
+ }
+ }
+ if ($show_only_published) {
$options['metadata_name_value_pairs'] = array(
array('name' => 'status', 'value' => 'published'),
);
@@ -155,11 +162,14 @@ function blog_get_page_content_friends($user_guid) {
// admin / owners can see any posts
// everyone else can only see published posts
- if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $owner_guid == elgg_get_logged_in_user_guid()))) {
- if ($upper > $now) {
- $upper = $now;
+ $show_only_published = true;
+ $current_user = elgg_get_logged_in_user_entity();
+ if ($current_user) {
+ if (($user_guid == $current_user->guid) || $current_user->isAdmin()) {
+ $show_only_published = false;
}
-
+ }
+ if ($show_only_published) {
$options['metadata_name_value_pairs'][] = array(
array('name' => 'status', 'value' => 'published')
);
@@ -240,9 +250,9 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) {
$list = elgg_list_entities_from_metadata($options);
if (!$list) {
- $content .= elgg_echo('blog:none');
+ $content = elgg_echo('blog:none');
} else {
- $content .= $list;
+ $content = $list;
}
$title = elgg_echo('date:month:' . date('m', $lower), array(date('Y', $lower)));
@@ -272,9 +282,9 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) {
$vars = array();
$vars['id'] = 'blog-post-edit';
- $vars['name'] = 'blog_post';
$vars['class'] = 'elgg-form-alt';
+ $sidebar = '';
if ($page == 'edit') {
$blog = get_entity((int)$guid);
@@ -311,14 +321,8 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) {
$content = elgg_echo('blog:error:cannot_edit_post');
}
} else {
- if (!$guid) {
- $container = elgg_get_logged_in_user_entity();
- } else {
- $container = get_entity($guid);
- }
-
elgg_push_breadcrumb(elgg_echo('blog:add'));
- $body_vars = blog_prepare_form_vars($blog);
+ $body_vars = blog_prepare_form_vars(null);
$title = elgg_echo('blog:add');
$content = elgg_view_form('blog/save', $vars, $body_vars);
@@ -359,6 +363,10 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
$values[$field] = $post->$field;
}
}
+
+ if ($post->status == 'draft') {
+ $values['access_id'] = $post->future_access;
+ }
}
if (elgg_is_sticky_form('blog')) {
@@ -385,7 +393,7 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
if ($auto_save_annotations = $post->getAnnotations('blog_auto_save', 1)) {
$auto_save = $auto_save_annotations[0];
} else {
- $auto_save == FALSE;
+ $auto_save = false;
}
if ($auto_save && $auto_save->id != $revision->id) {
@@ -397,52 +405,74 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) {
/**
* Forward to the new style of URLs
+ *
+ * Pre-1.7.5
+ * Group blogs page: /blog/group:<container_guid>/
+ * Group blog view: /blog/group:<container_guid>/read/<guid>/<title>
+ * 1.7.5-1.8
+ * Group blogs page: /blog/owner/group:<container_guid>/
+ * Group blog view: /blog/read/<guid>
+ *
*
* @param string $page
*/
function blog_url_forwarder($page) {
- global $CONFIG;
+
+ $viewtype = elgg_get_viewtype();
+ $qs = ($viewtype === 'default') ? "" : "?view=$viewtype";
+
+ $url = "blog/all";
+
+ // easier to work with & no notices
+ $page = array_pad($page, 4, "");
// group usernames
- if (substr_count($page[0], 'group:')) {
- preg_match('/group\:([0-9]+)/i', $page[0], $matches);
+ if (preg_match('~/group\:([0-9]+)/~', "/{$page[0]}/{$page[1]}/", $matches)) {
$guid = $matches[1];
$entity = get_entity($guid);
- if ($entity) {
- $url = "{$CONFIG->wwwroot}blog/group/$guid/all";
+ if (elgg_instanceof($entity, 'group')) {
+ if (!empty($page[2])) {
+ $url = "blog/view/$page[2]/";
+ } else {
+ $url = "blog/group/$guid/all";
+ }
register_error(elgg_echo("changebookmark"));
- forward($url);
+ forward($url . $qs);
}
}
+ if (empty($page[0])) {
+ return;
+ }
+
// user usernames
$user = get_user_by_username($page[0]);
if (!$user) {
return;
}
- if (!isset($page[1])) {
+ if (empty($page[1])) {
$page[1] = 'owner';
}
switch ($page[1]) {
case "read":
- $url = "{$CONFIG->wwwroot}blog/view/{$page[2]}/{$page[3]}";
+ $url = "blog/view/{$page[2]}/{$page[3]}";
break;
case "archive":
- $url = "{$CONFIG->wwwroot}blog/archive/{$page[0]}/{$page[2]}/{$page[3]}";
+ $url = "blog/archive/{$page[0]}/{$page[2]}/{$page[3]}";
break;
case "friends":
- $url = "{$CONFIG->wwwroot}blog/friends/{$page[0]}";
+ $url = "blog/friends/{$page[0]}";
break;
case "new":
- $url = "{$CONFIG->wwwroot}blog/add/$user->guid";
+ $url = "blog/add/$user->guid";
break;
case "owner":
- $url = "{$CONFIG->wwwroot}blog/owner/{$page[0]}";
+ $url = "blog/owner/{$page[0]}";
break;
}
register_error(elgg_echo("changebookmark"));
- forward($url);
+ forward($url . $qs);
}
diff --git a/mod/blog/start.php b/mod/blog/start.php
index 9faf1794e..e724b91c2 100644
--- a/mod/blog/start.php
+++ b/mod/blog/start.php
@@ -41,8 +41,8 @@ function blog_init() {
// override the default url to view a blog object
elgg_register_entity_url_handler('object', 'blog', 'blog_url_handler');
- // notifications
- register_notification_object('object', 'blog', elgg_echo('blog:newpost'));
+ // notifications - need to register for unique event because of draft/published status
+ elgg_register_event_handler('publish', 'object', 'object_notifications');
elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'blog_notify_message');
// add blog link to
@@ -99,8 +99,7 @@ function blog_page_handler($page) {
elgg_load_library('elgg:blog');
- // @todo remove the forwarder in 1.9
- // forward to correct URL for blog pages pre-1.7.5
+ // forward to correct URL for blog pages pre-1.8
blog_url_forwarder($page);
// push all blogs breadcrumb
@@ -114,20 +113,32 @@ function blog_page_handler($page) {
switch ($page_type) {
case 'owner':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_list($user->guid);
break;
case 'friends':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_friends($user->guid);
break;
case 'archive':
$user = get_user_by_username($page[1]);
+ if (!$user) {
+ forward('', '404');
+ }
$params = blog_get_page_content_archive($user->guid, $page[2], $page[3]);
break;
case 'view':
- case 'read': // Elgg 1.7 compatibility
$params = blog_get_page_content_read($page[1]);
break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("blog/view/{$page[1]}");
+ break;
case 'add':
gatekeeper();
$params = blog_get_page_content_edit($page_type, $page[1]);
@@ -137,7 +148,11 @@ function blog_page_handler($page) {
$params = blog_get_page_content_edit($page_type, $page[1], $page[2]);
break;
case 'group':
- if ($page[2] == 'all') {
+ $group = get_entity($page[1]);
+ if (!elgg_instanceof($group, 'group')) {
+ forward('', '404');
+ }
+ if (!isset($page[2]) || $page[2] == 'all') {
$params = blog_get_page_content_list($page[1]);
} else {
$params = blog_get_page_content_archive($page[1], $page[3], $page[4]);
@@ -212,7 +227,14 @@ function blog_entity_menu_setup($hook, $type, $return, $params) {
return $return;
}
- if ($entity->canEdit() && $entity->status != 'published') {
+ if ($entity->status != 'published') {
+ // draft status replaces access
+ foreach ($return as $index => $item) {
+ if ($item->getName() == 'access') {
+ unset($return[$index]);
+ }
+ }
+
$status_text = elgg_echo("blog:status:{$entity->status}");
$options = array(
'name' => 'published_status',
diff --git a/mod/blog/views/default/blog/sidebar/archives.php b/mod/blog/views/default/blog/sidebar/archives.php
index 3d8f28ca4..5098e6e3e 100644
--- a/mod/blog/views/default/blog/sidebar/archives.php
+++ b/mod/blog/views/default/blog/sidebar/archives.php
@@ -14,7 +14,7 @@ if (elgg_instanceof($page_owner, 'user')) {
// This is a limitation of the URL schema.
if ($page_owner && $vars['page'] != 'friends') {
- $dates = get_entity_dates('object', 'blog', $page_owner->getGUID());
+ $dates = array_reverse(get_entity_dates('object', 'blog', $page_owner->getGUID()));
if ($dates) {
$title = elgg_echo('blog:archives');
diff --git a/mod/blog/views/default/forms/blog/save.php b/mod/blog/views/default/forms/blog/save.php
index a805541bd..f825acca1 100644
--- a/mod/blog/views/default/forms/blog/save.php
+++ b/mod/blog/views/default/forms/blog/save.php
@@ -10,7 +10,7 @@ $vars['entity'] = $blog;
$draft_warning = $vars['draft_warning'];
if ($draft_warning) {
- $draft_warning = '<span class="message warning">' . $draft_warning . '</span>';
+ $draft_warning = '<span class="mbm elgg-text-help">' . $draft_warning . '</span>';
}
$action_buttons = '';
@@ -23,7 +23,7 @@ if ($vars['guid']) {
$delete_link = elgg_view('output/confirmlink', array(
'href' => $delete_url,
'text' => elgg_echo('delete'),
- 'class' => 'elgg-button elgg-button-delete elgg-state-disabled float-alt'
+ 'class' => 'elgg-button elgg-button-delete float-alt'
));
}
@@ -53,7 +53,7 @@ $excerpt_label = elgg_echo('blog:excerpt');
$excerpt_input = elgg_view('input/text', array(
'name' => 'excerpt',
'id' => 'blog_excerpt',
- 'value' => html_entity_decode($vars['excerpt'], ENT_COMPAT, 'UTF-8')
+ 'value' => _elgg_html_decode($vars['excerpt'])
));
$body_label = elgg_echo('blog:body');
@@ -125,9 +125,10 @@ $draft_warning
$excerpt_input
</div>
-<label for="blog_description">$body_label</label>
-$body_input
-<br />
+<div>
+ <label for="blog_description">$body_label</label>
+ $body_input
+</div>
<div>
<label for="blog_tags">$tags_label</label>
diff --git a/mod/blog/views/default/js/blog/save_draft.php b/mod/blog/views/default/js/blog/save_draft.php
index 8a994ffb0..8cd07ff5d 100644
--- a/mod/blog/views/default/js/blog/save_draft.php
+++ b/mod/blog/views/default/js/blog/save_draft.php
@@ -12,7 +12,7 @@ elgg.provide('elgg.blog');
*/
elgg.blog.saveDraftCallback = function(data, textStatus, XHR) {
if (textStatus == 'success' && data.success == true) {
- var form = $('form[name=blog_post]');
+ var form = $('form[id=blog-post-edit]');
// update the guid input element for new posts that now have a guid
form.find('input[name=guid]').val(data.guid);
@@ -36,7 +36,7 @@ elgg.blog.saveDraft = function() {
}
// only save on changed content
- var form = $('form[name=blog_post]');
+ var form = $('form[id=blog-post-edit]');
var description = form.find('textarea[name=description]').val();
var title = form.find('input[name=title]').val();
@@ -59,7 +59,7 @@ elgg.blog.saveDraft = function() {
elgg.blog.init = function() {
// get a copy of the body to compare for auto save
- oldDescription = $('form[name=blog_post]').find('textarea[name=description]').val();
+ oldDescription = $('form[id=blog-post-edit]').find('textarea[name=description]').val();
setInterval(elgg.blog.saveDraft, 60000);
};
diff --git a/mod/blog/views/default/river/object/blog/create.php b/mod/blog/views/default/river/object/blog/create.php
index a054c1061..b808f1bdc 100644
--- a/mod/blog/views/default/river/object/blog/create.php
+++ b/mod/blog/views/default/river/object/blog/create.php
@@ -4,10 +4,12 @@
*/
$object = $vars['item']->getObjectEntity();
-$excerpt = strip_tags($object->excerpt);
+
+$excerpt = $object->excerpt ? $object->excerpt : $object->description;
+$excerpt = strip_tags($excerpt);
$excerpt = elgg_get_excerpt($excerpt);
echo elgg_view('river/elements/layout', array(
'item' => $vars['item'],
'message' => $excerpt,
-)); \ No newline at end of file
+));
diff --git a/mod/bookmarks/actions/bookmarks/save.php b/mod/bookmarks/actions/bookmarks/save.php
index 3ca6bef32..46090b115 100644
--- a/mod/bookmarks/actions/bookmarks/save.php
+++ b/mod/bookmarks/actions/bookmarks/save.php
@@ -5,7 +5,7 @@
* @package Bookmarks
*/
-$title = strip_tags(get_input('title'));
+$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8');
$description = get_input('description');
$address = get_input('address');
$access_id = get_input('access_id');
diff --git a/mod/bookmarks/languages/en.php b/mod/bookmarks/languages/en.php
index d4980280d..970b39415 100644
--- a/mod/bookmarks/languages/en.php
+++ b/mod/bookmarks/languages/en.php
@@ -9,7 +9,7 @@ $english = array(
* Menu items and titles
*/
'bookmarks' => "Bookmarks",
- 'bookmarks:add' => "Add bookmark",
+ 'bookmarks:add' => "Add a bookmark",
'bookmarks:edit' => "Edit bookmark",
'bookmarks:owner' => "%s's bookmarks",
'bookmarks:friends' => "Friends' bookmarks",
diff --git a/mod/bookmarks/pages/bookmarks/all.php b/mod/bookmarks/pages/bookmarks/all.php
index bdb8fc793..5c6011ad9 100644
--- a/mod/bookmarks/pages/bookmarks/all.php
+++ b/mod/bookmarks/pages/bookmarks/all.php
@@ -13,9 +13,8 @@ elgg_register_title_button();
$content = elgg_list_entities(array(
'type' => 'object',
'subtype' => 'bookmarks',
- 'limit' => 10,
'full_view' => false,
- 'view_toggle_type' => false
+ 'view_toggle_type' => false,
));
if (!$content) {
diff --git a/mod/bookmarks/pages/bookmarks/friends.php b/mod/bookmarks/pages/bookmarks/friends.php
index 15b1da098..173996346 100644
--- a/mod/bookmarks/pages/bookmarks/friends.php
+++ b/mod/bookmarks/pages/bookmarks/friends.php
@@ -7,7 +7,7 @@
$page_owner = elgg_get_page_owner_entity();
if (!$page_owner) {
- forward('bookmarks/all');
+ forward('', '404');
}
elgg_push_breadcrumb($page_owner->name, "bookmarks/owner/$page_owner->username");
diff --git a/mod/bookmarks/pages/bookmarks/owner.php b/mod/bookmarks/pages/bookmarks/owner.php
index a024ff352..b7b907916 100644
--- a/mod/bookmarks/pages/bookmarks/owner.php
+++ b/mod/bookmarks/pages/bookmarks/owner.php
@@ -7,7 +7,7 @@
$page_owner = elgg_get_page_owner_entity();
if (!$page_owner) {
- forward('bookmarks/all');
+ forward('', '404');
}
elgg_push_breadcrumb($page_owner->name);
@@ -18,7 +18,6 @@ $content .= elgg_list_entities(array(
'type' => 'object',
'subtype' => 'bookmarks',
'container_guid' => $page_owner->guid,
- 'limit' => 10,
'full_view' => false,
'view_toggle_type' => false
));
diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php
index 56bac984a..caea43587 100644
--- a/mod/bookmarks/start.php
+++ b/mod/bookmarks/start.php
@@ -56,6 +56,9 @@ function bookmarks_init() {
// Listen to notification events and supply a more useful message
elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'bookmarks_notify_message');
+ // Register bookmarks view for ecml parsing
+ elgg_register_plugin_hook_handler('get_views', 'ecml', 'bookmarks_ecml_views_hook');
+
// Register a URL handler for bookmarks
elgg_register_entity_url_handler('object', 'bookmarks', 'bookmark_url');
@@ -86,8 +89,13 @@ function bookmarks_init() {
* @return bool
*/
function bookmarks_page_handler($page) {
+
elgg_load_library('elgg:bookmarks');
+ if (!isset($page[0])) {
+ $page[0] = 'all';
+ }
+
elgg_push_breadcrumb(elgg_echo('bookmarks'), 'bookmarks/all');
// old group usernames
@@ -120,11 +128,14 @@ function bookmarks_page_handler($page) {
include "$pages/friends.php";
break;
- case "read":
case "view":
set_input('guid', $page[1]);
include "$pages/view.php";
break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("bookmarks/view/{$page[1]}");
+ break;
case "add":
gatekeeper();
@@ -274,8 +285,11 @@ function bookmarks_page_menu($hook, $type, $return, $params) {
if (!$page_owner) {
$page_owner = elgg_get_logged_in_user_entity();
}
-
+
if ($page_owner instanceof ElggGroup) {
+ if (!$page_owner->isMember()) {
+ return $return;
+ }
$title = elgg_echo('bookmarks:bookmarklet:group');
} else {
$title = elgg_echo('bookmarks:bookmarklet');
@@ -287,3 +301,16 @@ function bookmarks_page_menu($hook, $type, $return, $params) {
return $return;
}
+
+/**
+ * Return bookmarks views to parse for ecml
+ *
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @param array $params
+ */
+function bookmarks_ecml_views_hook($hook, $type, $return, $params) {
+ $return['object/bookmarks'] = elgg_echo('item:object:bookmarks');
+ return $return;
+}
diff --git a/mod/categories/pages/categories/listing.php b/mod/categories/pages/categories/listing.php
index 8924506e9..d51e6c19e 100644
--- a/mod/categories/pages/categories/listing.php
+++ b/mod/categories/pages/categories/listing.php
@@ -15,8 +15,8 @@ $type = get_input("type", 'object');
$params = array(
'metadata_name' => 'universal_categories',
'metadata_value' => $category,
- 'types' => $type,
- 'subtypes' => $subtype,
+ 'type' => $type,
+ 'subtype' => $subtype,
'owner_guid' => $owner_guid,
'limit' => $limit,
'full_view' => FALSE,
diff --git a/mod/categories/views/default/input/categories.php b/mod/categories/views/default/input/categories.php
index 75960d257..b543cde45 100644
--- a/mod/categories/views/default/input/categories.php
+++ b/mod/categories/views/default/input/categories.php
@@ -10,6 +10,12 @@
if (isset($vars['entity']) && $vars['entity'] instanceof ElggEntity) {
$selected_categories = $vars['entity']->universal_categories;
}
+
+// use sticky values if set
+if (isset($vars['universal_categories_list'])) {
+ $selected_categories = $vars['universal_categories_list'];
+}
+
$categories = elgg_get_site_entity()->categories;
if (empty($categories)) {
$categories = array();
diff --git a/mod/colorbox/COPYING b/mod/colorbox/COPYING
new file mode 100644
index 000000000..dba13ed2d
--- /dev/null
+++ b/mod/colorbox/COPYING
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/mod/colorbox/languages/ca.php b/mod/colorbox/languages/ca.php
new file mode 100644
index 000000000..214d327aa
--- /dev/null
+++ b/mod/colorbox/languages/ca.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for Catalan
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$catalan = array(
+ "js:lightbox:current" => "imatge %s de %s",
+);
+
+add_translation("ca", $catalan);
diff --git a/mod/colorbox/languages/en.php b/mod/colorbox/languages/en.php
new file mode 100644
index 000000000..70bab4e05
--- /dev/null
+++ b/mod/colorbox/languages/en.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for English
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$english = array(
+ "js:lightbox:current" => "image %s of %s",
+);
+
+add_translation("en", $english);
diff --git a/mod/colorbox/languages/es.php b/mod/colorbox/languages/es.php
new file mode 100644
index 000000000..e49d0db47
--- /dev/null
+++ b/mod/colorbox/languages/es.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Colorbox -- Translation strings for Spanish
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+$spanish = array(
+ "js:lightbox:current" => "imagen %s de %s",
+);
+
+add_translation("es", $spanish);
diff --git a/mod/colorbox/manifest.xml b/mod/colorbox/manifest.xml
new file mode 100644
index 000000000..ec5f22e90
--- /dev/null
+++ b/mod/colorbox/manifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Colorbox</name>
+ <author>Lorea developers</author>
+ <version>1.8.0</version>
+ <category>lorea</category>
+ <category>enhancement</category>
+ <category>multimedia</category>
+ <description>Elgg lightbox replacement for Fancybox. Colorbox is the default Elgg lightbox in 1.9.</description>
+ <website>https://lorea.org/plugin/colorbox</website>
+ <copyright>Copyright 2012 Lorea Faeries &lt;federation@lorea.org&gt;</copyright>
+ <repository>https://gitorious.org/lorea/colorbox</repository>
+ <donations>https://lorea.org/support</donations>
+ <license>GNU Affero General Public License version 3, or later</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <requires>
+ <type>priority</type>
+ <priority>after</priority>
+ <plugin>embed</plugin>
+ </requires>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.9</version>
+ <comparison>lt</comparison>
+ </requires>
+</plugin_manifest>
diff --git a/mod/colorbox/start.php b/mod/colorbox/start.php
new file mode 100644
index 000000000..b19b2efcf
--- /dev/null
+++ b/mod/colorbox/start.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Colorbox -- A lightweight, customizable lightbox plugin for jQuery
+ *
+ * @package Lorea
+ * @subpackage Colorbox
+ * @homepage https://lorea.org/plugin/colorbox
+ * @copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ * @license COPYING, http://www.gnu.org/licenses/agpl
+ *
+ * Copyright 2011-2012 Lorea Faeries <federation@lorea.org>
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+elgg_register_event_handler('init', 'system', 'colorbox_init');
+
+/**
+ * Initialize the colorbox plugin.
+ *
+ */
+function colorbox_init() {
+
+}
diff --git a/mod/colorbox/vendors/jquery/colorbox/README.md b/mod/colorbox/vendors/jquery/colorbox/README.md
new file mode 100644
index 000000000..2a53feac8
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/README.md
@@ -0,0 +1,318 @@
+## About ColorBox:
+A customizable lightbox plugin for jQuery. See the [project page](http://jacklmoore.com/colorbox/) for documentation and a demonstration, and the [FAQ](http://jacklmoore.com/colorbox/faq/) for solutions and examples to common issues. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
+
+## Changelog:
+
+### Version 1.3.19 - December 08 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all)
+
+* Fixed bug related to using the 'fixed' property.
+* Optimized the setup procedure to be more efficient.
+* Removed $.colorbox.init() as it will no longer be needed (will self-init when called).
+* Removed use of $.browser.
+
+### Version 1.3.18 - October 07 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 1's controls.png
+
+* Fixed a regression where Flash content displayed in ColorBox would be reloaded if the browser window was resized.
+* Added safety check to make sure that ColorBox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize ColorBox if they need it before the DOM has finished loading.
+* Updated the example index.html files to be HTML5 compliant.
+* Changed the slideshow behavior so that it immediately moves to the next slide when the slideshow is started.
+* Minor regex bugfix to allow automatic detection of image URLs that include fragments.
+
+### Version 1.3.17 - May 11 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js
+
+* Added properties "top", "bottom", "left" and "right" to specify a position relative to the viewport, rather than using the default centering.
+* Added property "data" to specify GET or POST data when using Ajax. ColorBox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
+* Added property "fixed" which can provide fixed positioning for ColorBox, rather than absolute positioning. This will allow ColorBox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
+* Fixed ClearType problem with IE7.
+* Minor fixes.
+
+### Version 1.3.16 - March 01 2011
+Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 4 background png files
+
+* Better IE related transparency workarounds. IE7 and up now uses the same background image sprite as other browsers.
+* Added error handling for broken image links. A message will be displayed telling the user that the image could not be loaded.
+* Added new property: 'fastIframe' and set it to true by default. Setting to fastIframe:false will delay the loading graphic removal and onComplete event until iframe has completely loaded.
+* Ability to redefine $.colorbox.close (or prev, or next) at any time.
+
+### Version 1.3.15 - October 27 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor fixes for specific cases.
+
+### Version 1.3.14 - October 27 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* In IE6, closing an iframe when using HTTPS no longer generates a security warning.
+
+### Version 1.3.13 - October 22 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed the index.html example files to use YouTube's new embedded link format.
+* By default, ColorBox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
+* Minor bug fix involved in using a combination of slideshow and non-slideshow content.
+
+### Version 1.3.12 - October 20 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor bug fix involved in preloading images when using a function as a value for the href property.
+
+### Version 1.3.11 - October 19 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed the slideshow functionality that broke with 1.3.10
+* The slideshow now respects the loop property.
+
+### Version 1.3.10 - October 16 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed compatibility with jQuery 1.4.3
+* The 'open' property now accepts a function as a value, like all of the other properties.
+* Preloading now loads the correct href for images when using a dynamic (function) value for the href property.
+* Fixed bug in Safari 3 for Win where ColorBox centered on the document, rather than the visitor's viewport.
+* May have fixed an issue in Opera 10.6+ where ColorBox would rarely/randomly freeze up while switching between photos in a group.
+* Some functionality better encapsulated & minor performance improvements.
+
+### Version 1.3.9 - July 7 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/ all colorbox.css (the core styles)
+
+* Fixed a problem where iframed youtube videos would cause a security alert in IE.
+* More code is event driven now, making the source easier to grasp.
+* Removed some unnecessary style from the core CSS.
+
+### Version 1.3.8 - June 21 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug in Chrome where it would sometimes render photos at 0 by 0 width and height (behavior introduced in recent update to Chrome).
+* Fixed a bug where the onClosed callback would fire twice (only affected 1.3.7).
+* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused ColorBox to move out of position.
+* Abstracted the identifiers (HTML ids & classes, and JS plugin name, method, and events) so that the plugin can be easily rebranded.
+* Small changes to improve either code readability or compression.
+
+### Version 1.3.7 - June 13 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
+
+* $.colorbox can now be used for direct calls and accessing public methods. Example: $.colorbox.close();
+* Resize now accepts 'width', 'innerWidth', 'height' and 'innerHeight'. Example: $.colorbox.resize({width:"100%"})
+* Added option (loop:false) to disable looping in a group.
+* Added options (escKey:false, arrowKey:false) to disable esc-key and arrow-key bindings.
+* Added method for removing ColorBox from a document: $.colorbox.remove();
+* Fixed a bug where iframed URLs would be truncated if they contained an unencoded apostrophe.
+* Now uses the exact href specified on an anchor, rather than the version returned by 'this.href'. This was causing "#example" to be normalized to "http://domain/#example" which interfered with how some users were setting up links to inline content.
+* Changed example documents over to HTML5.
+
+### Version 1.3.6 - Jan 13 2010
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Small change to make ColorBox compatible with jQuery 1.4
+
+### Version 1.3.5 - December 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug introduced in 1.3.4 with IE7's display of example 2 and 3, and auto-width in Opera.
+* Fixed a bug introduced in 1.3.4 where colorbox could not be launched by triggering an element's click event through JavaScript.
+* Minor refinements.
+
+### Version 1.3.4 - December 5 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Event delegation is now used for elements that ColorBox is assigned to, rather than individual click events.
+* Additional callbacks have been added to represent other stages of ColorBox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of ColorBox.
+* Ajax content is now immediately added to the DOM to be more compatible if that content contains script tags.
+* Focus is now returned to the calling element on closing.
+* Fixed a bug where maxHeight and maxWidth did not work for non-photo content.
+* Direct calls no longer need 'open:true', it is assumed. Example: `$.fn.colorbox({html:'<p>Hi</p>'});`
+
+### Version 1.3.3 - November 7 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed $.fn.colorbox.element() to return a jQuery object rather the DOM element.
+* jQuery.colorbox-min.js is compressed with Google's Closure Compiler rather than YUI Compressor.
+
+### Version 1.3.2 - October 27 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for ColorBox, without having to anticipate the size of the borders and buttons.
+* Renamed 'scrollbars' option to 'scrolling' to be in keeping with the existing HTML attribute. The option now also applies to iframes.
+* Bug fix: In Safari, positioning occassionally incorrect when using '100%' dimensions.
+* Bug fix: In IE6, the background overlay is briefly not full size when first viewing.
+* Bug fix: In Firefox, opening ColorBox causes a split second shift with a small minority of webpage layouts.
+* Simplified code in a few areas.
+
+### Version 1.3.1 - September 16 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css/colorbox-ie.css(removed)
+
+* Removed the IE-only stylesheets and conditional comments for example styles 1 & 4. All CSS is handled by a single CSS file for all examples.
+* Removed user-agent sniffing from the js and replaced it with feature detection. This will allow correct rendering for visitors masking their agent type.
+
+### Version 1.3.0 - September 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css
+
+* Added $.fn.colorbox.resize() method to allow ColorBox to resize it's height if it's contents change.
+* Added 'scrollbars' option to allow users to turn off scrollbars when using the resize() method.
+* Renamed the 'resize' option to be less ambiguous. It's now 'scalePhotos'.
+* Renamed the 'cbox_close' event to be less ambiguous. It's now 'cbox_cleanup'. It is the first thing to happen in the close method while the 'cbox_closed' event is the last to happen.
+* Fixed a bug with the slideshow mouseover graphics that appeared after ColorBox is opened a 2nd time.
+* Fixed a bug where ClearType may not work in IE6&7 if using the fade transition.
+* Minor code optimizations to increase compression.
+
+### Version 1.2.9 - August 7 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Minor change to enable use with $.getScript();
+* Minor change to the timing of the 'cbox_load' event so that it is more useful.
+* Added a direct link to a YouTube video to the examples.
+
+### Version 1.2.8 - August 5 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug with the overlay in IE6
+* Fixed a bug where left & right keypress events might be prematurely unbound.
+
+### Version 1.2.7 - July 31 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets and background images (core styles have not changed and the updates will not affect existing user themes / old example themes)
+
+* Code cleanup and reduction, better organization and documentation in the full source.
+* Added ability to use functions in place of static values for ColorBox's options (thanks Ken!).
+* Added an option for straight HTML. Example: `$.fn.colorbox({html:'<p>Howdy</p>', open:true})`
+* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when ColorBox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
+* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening ColorBox.
+* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing ColorBox.
+* The 'esc' key is unbound now when ColorBox is not open, to avoid any potential conflicts.
+* Used background sprites for examples 1 & 4. Put IE-only (non-sprite) background images in a separate folder.
+* Example themes 1, 3, & 4 received slight visual tweaks.
+* Optimized pngs for smaller file size.
+* Added slices, grid, and correct sizing to the Adobe Illustrator file, all theme files are now export ready!
+
+### Version 1.2.6 - July 15 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Fixed a bug with fixed width/height images in Opera 9.64.
+* Fixed a bug with trying to set a value for rel during a direct call to ColorBox. Example: `$.fn.colorbox({rel:'foo', open:true});`
+* Changed how href/rel/title settings are determined to avoid users having to manually update ColorBox settings if they use JavaScript to update any of those attributes, after ColorBox has been defined.
+* Fixed a FF3 bug where the back button was disabled after closing an iframe.
+
+### Version 1.2.5 - June 23 2009
+Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
+
+* Changed the point at which iframe srcs are set (to eliminate the need to refresh the iframe once it has been added to the DOM).
+* Removed unnecessary return values for a very slight code reduction.
+
+### Version 1.2.4 - June 9 2009
+Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
+
+* Fixed an issue where ColorBox may not close completely if it is closed during a transition animation.
+* Minor code reduction.
+
+### Version 1.2.3 - June 4 2009
+* Fixed a png transparency stacking issue in IE.
+* More accurate Ajax auto-sizing if the user was depending on the #cboxLoadedContent ID for CSS styling.
+* Added a public function for returning the current html element that ColorBox is associated with. Example use: var that = $.fn.colorbox.element();
+* Added bicubic scaling for resized images in the original IE7.
+* Removed the IE6 stylesheet and png files from Example 3. It now uses the same png file for the controls that the rest of the browsers use (an alpha transparency PNG8). This example now only has 2 graphics files and 1 stylesheet.
+
+### Version 1.2.2 - May 28 2009
+* Fixed an issue with the 'resize' option.
+
+### Version 1.2.1 - May 28 2009
+* Note: If you are upgrading, update your jquery.colorbox.js and colorbox.css files.
+* Added photo resizing.
+* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of ColorBox cannot exceed the height of the browser window.
+* Added 'rel' setting to add the ability to set an alternative rel for any ColorBox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
+* Added a 'photo' setting to force ColorBox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
+* Removed the need to ever create disposable elements to call colorbox on. ColorBox can now be called directly, without being associated with any existing element, by using the following format:
+ `$.fn.colorbox({open:true, href:'yourLink.xxx'});`
+* ColorBox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
+* For user callbacks, 'this' now refers to the element colorbox was opened from.
+* Fixed a minor grouping issue with IE6, when transition type is set to 'none'.
+* Added an Adobe Illustrator file that contains the borders and buttons used in the various examples.
+
+### Version 1.2 - May 13 2009
+* Added a slideshow feature.
+* Added re-positioning on browser resize. If the browser is resized, ColorBox will recenter itself onscreen.
+* Added hooks for key events: cbox_open, cbox_load, cbox_complete, cbox_closed.
+* Fixed an IE transparency-stacking problem, where transparent PNGs would show through to the background overlay.
+* Fixed an IE iframe issue where the ifame might shift up and to the left under certain circumstances.
+* Fixed an IE6 bug where the loading overlay was not at full height.
+* Removed the delay in switching between same-sized gallery content when using transitions.
+* Changed how iframes are loaded to make it more compatible with iframed pages that use DOM dependent JavaScript.
+* Changed how the JS is structured to be better organized and increase compression. Increased documentation.
+* Changed CSS :hover states to a .hover class. This sidesteps a minor IE8 bug with css hover states and allows easier access to hover state user styles from the JavaScript.
+* Changed: elements added to the DOM have new ID's. The naming is more consistent and less likely to cause conflicts with existing website stylesheets. All stylesheets have been updated.
+* Changed the behavior for prev/next links so that ColorBox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
+* Changed the naming of variables in the parameter map to be more concise and intuitive.
+* Removed colorbox.css. Combined the colorbox.css styles with jquery.colorbox.js: the css file was not large enough to warrant being a separate file.
+
+### Version 1.1.6 - April 28 2009
+* Prevented the default action of the next & previous anchors and the left and right keys for gallery mode.
+* Fixed a bug where the title element was being added back to the DOM when closing ColorBox while using inline content.
+* Fixed a bug where IE7 would crash for example 2.
+* Smaller filesize: removed a small amount of unused code and rewrote the HTML injection with less syntax.
+* Added a public method for closing ColorBox: $.fn.colorbox.close(). This will allow iframe users to add an event to close ColorBox without having to create an additional function.
+
+### Version 1.1.5 - April 11 2009
+* Fixed minor issues with exiting ColorBox.
+
+### Version 1.1.4 - April 08 2009
+* Fixed a bug in the fade transition where ColorBox not close completely if instructed to close during the fade-in portion of the transition.
+
+### Version 1.1.3 - April 06 2009
+* Fixed an IE6&7 issue with using ColorBox to display animated GIFs.
+
+### Version 1.1.2 - April 05 2009
+* Added ability to change content when ColorBox is already open.
+* Added vertical photo centering now works for all browsers (this feature previously excluded IE6&7).
+* Added namespacing to the esc-key keydown event for people who want to disable it: "keydown.colorClose"
+* Added 'title' setting to add the ability to set an alternative title for any ColorBox call.
+* Fixed rollover navigation issue with IE8. (Added JS-based rollover state due to a browser-bug.)
+* Fixed an overflow issue for when the fixed width/height is smaller than the size of a photo.
+* Fixed a bug in the fade transition where the border would still come up if ColorBox was closed mid-transition.
+* Switch from JSMin to Yui Compressor for minification. Minified code now under 7KB.
+
+### Version 1.1.1 - March 31 2009
+* More robust image detection regex. Now detects image file types with url fragments and/or query strings.
+* Added 'nofollow' exception to rel grouping.
+* Changed how images are loaded into the DOM to prevent premature size calculation by ColorBox.
+* Added timestamp to iframe name to prevent caching - this was a problem in some browsers if the user had multiple iframes and the visitor left the page and came back, or if they refreshed the page.
+
+### Version 1.1.0 - March 21 2009
+* Animation is now much smoother and less resource intensive.
+* Added support for % sizing.
+* Callback option added.
+* Inline content now preserves JavaScript events, and changes made while ColorBox is open are also preserved.
+* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the ColorBox event to non-anchors.
+ Example: $('button').colorbox({'href':'process.php'})
+ Example: $('a[href='http://msn.com']).colorbox({'href':'http://google.com', iframe:true});
+* Photos are now horizontally centered if they are smaller than the lightbox size. Also vertically centered for browsers newer than IE7.
+* Buttons in the examples are now included in the 'protected zone'. The lightbox will never expand it's borders or buttons beyond an accessible area of the screen.
+* Keypress events don't queue up by holding down the arrow keys.
+* Added option to close ColorBox by clicking on the background overlay.
+* Added 'none' transition setting.
+* Changed 'contentIframe' and 'contentInline' to 'inline' and 'iframe'. Removed 'contentAjax' because it is automatically assumed for non-image file types.
+* Changed 'contentWidth' and 'contentHeight' to 'fixedWidth' and 'fixedHeight'. These sizes now reflect the total size of the lightbox, not just the inner content. This is so users can accurately anticipate % sizes without fear of creating scrollbars.
+* Clicking on a photo will now switch to the next photo in a set.
+* Loading.gif is more stable in it's position.
+* Added a minified version.
+* Code passes JSLint.
+
+### Version 1.0.5 - March 11 2009
+* Redo: Fixed a bug where IE would cut off the bottom portion of a photo, if the photo was larger than the document dimensions.
+
+### Version 1.0.4 - March 10 2009
+* Added an option to allow users to automatically open the lightbox. Example usage: $(".colorbox").colorbox({open:true});
+* Fixed a bug where IE would cut off the bottom portion of a photo, if the photo was larger than the document dimensions.
+
+### Version 1.0.3 - March 09 2009
+* Fixed vertical centering for Safari 3.0.x.
+
+### Version 1.0.2 - March 06 2009
+* Corrected a typo.
+* Changed the content-type check so that it does not assume all links to photos should actually display photos. This allows for Ajax/inline/and iframe calls on anchors linking to picture file types.
+
+### Version 1.0.1 - March 05 2009
+* Fixed keydown events (esc, left arrow, right arrow) for Webkit browsers.
+
+### Version 1.0 - March 03 2009
+* First release
diff --git a/mod/colorbox/vendors/jquery/colorbox/colorbox.ai b/mod/colorbox/vendors/jquery/colorbox/colorbox.ai
new file mode 100644
index 000000000..1b51881af
--- /dev/null
+++ b/mod/colorbox/vendors/jquery/colorbox/colorbox.ai
@@ -0,0 +1,1811 @@
+%PDF-1.4 %
+1 0 obj <</Metadata 2 0 R/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 48282/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.351735, 2008/07/22-18:11:12 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/vnd.adobe.illustrator</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">colorbox</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:CreateDate>2009-05-27T04:22:39-04:00</xmp:CreateDate>
+ <xmp:ModifyDate>2009-07-30T21:43:35-05:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2009-07-30T21:43:35-05:00</xmp:MetadataDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>208</xmpGImg:width>
+ <xmpGImg:height>256</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA&#xA;AQEsAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADQAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXnn5b+fNd85T6us6W9jHpkiRL6KOzOzl9zzagACdMVZt9U1D/lt/5Jr/AFxV&#xA;gf5ZfmZrHmfzJrei39vBGNIaSNbiEODIYpjFUqzNStK4q9JxV2KuxV2KuxV2KuxV2KuxV2KvG/Pf&#xA;5jfmBY/mDL5Z8twpdMyRNb2/pKzktEHf4jTYbmpxVQ/xJ/zkV/1Y1/4G3/6qYqh9G/ND8zYvPml+&#xA;WvMdtHZSXcsXqwtEgYwyEjkjKSCDQioPXFXueKvBB+aX5r6n5k1HSdAtI717OSX4EiT4Y0fiCzOV&#xA;H44qmH+JP+civ+rGv/A2/wD1UxVd5F/Nbzde6/qVh5lMVnHpcEj3aNGIzG0TANyPgBiqbeU/z18v&#xA;eZdcl0izkZZ2kZLEPEw9aONOTS1pRQTUKCa+OKqdh+fvlm882Dy+kzAycYoLkxsFN16jRtbsCOuy&#xA;lWFVNaVr1VRfnv8AN5/Jt9AmpWLvp1zbyPBexFWrcx7iEx1BFV/aO340VR+r/mFqWj+Sl8x6lYGG&#xA;aOOGS808MrPH6jKHVW2VivLbpX2xVMtC8622vaLFq+lzLPaTKxRuJHxLUMpBoQQRirDfIf5y6x5n&#xA;1DSrWaxhtl1HT7i/dkZmKmC7a2CCoHXjyriqH/5x3/vvNf8AzFQ/rmxV7Lirwb8hv/JkedP+M9z/&#xA;ANRhxV7zirsVdirsVdirsVdirsVdirsVeNSf+tKx/wDMKf8AqDOKvZcVeHfmF/60T5T/AOYO0/6i&#xA;7nFXuOKvDvyS/wDJleb/AJN/1EHFXuOKvCPKoB/O/wA3AioLSgg/OPFWbeXvLflPTby/m0e1gjnl&#xA;n5XRjCnhLxHJVP7O1KqPn1OKtQ+W/KaebH1VLaAa4LZVQhVBWIu9XVRtyZmYM3XtiqC8x+VvI2q6&#xA;79Y19I7m7WzkRbe5c+mkBPxyIhPFH/yx8W3XbFVeXQvK8/km20meQyeX1jgQPJI3xRqylQ7k1AOw&#xA;O+2Kp/bWdpb2iWtpEkNsiCOKKIBVVQOICgbAAbDFWE+SPKfkrTL7TZ9Eu7i4ltrCeCzEtaNbPdM8&#xA;jtVE3EzFR0+XfFVH/nHf++81/wDMVD+ubFXsuKvBvyG/8mR50/4z3P8A1GHFXvOKuxV2KuxV2Kux&#xA;V2KuxV2KuxV4tfgH/nISYHcfUl/6h1xV6LwT+Ufdil5J5sAH/OQPlWgp/o1r0/5ibjFD3/FXg/5T&#xA;gHzt5xqK/vk6/wDGWbFXqnBP5R92KXlnlqJJPzo80xNUI8AU8SVNDFCNitCD7jFDLfL3kW10fUZL&#xA;xLiWQh2MKsduDClHH7RB74qttvIVnD5iGrfWZSqfvEj5GplZmJJbrwoR8Pfvttiqt5q8pyeYJ4Vl&#xA;uBDawRuU4oDJ6zbAlj+xtuBT5+CqM1DRrrUPLf6LnlRJ5I40mljWiAggsVTbw2GKo3SNNg0uwgso&#xA;Gd4oBRWkYsx+k/qG2KpD5W8sajpU1k9y0TC3spraT02J+OS5MwIqo24/jiqS/wDOO/8Afea/+YqH&#xA;9c2KvZcVeDfkN/5Mjzp/xnuf+ow4q95xV2KuxV2KuxV2KuxV2KuxV2KvA/OPmPTvL356y6jqJZbM&#xA;W0cUsiKXKc4AAxUbkA9ab4qyL/ldX5a/9XZv+kW7/wCqWKsFm8z6R5m/PLy5qGkO81lALa19Z0aM&#xA;O6yySEqrgNQeqBuBvXtvir6UxV81eTfOmheWPPHmY6zI8EF5MwjnVHkUNFK54ssYZvi57bYqzv8A&#xA;5XV+Wv8A1dm/6Rbv/qlirFfy41m11v8ANXXtVtAwtbqImHmKMVT04wxHblwrir2LFLsVdirsVdir&#xA;sVeef847/wB95r/5iof1zYoey4q8G/Ib/wAmR50/4z3P/UYcVe84q7FXYq7FXYq7FXYq7FXYq7FU&#xA;p1Dyj5X1G6a7v9Ktbq6cAPNNEjuQooKkiuwGKob/AJV95G/6sNh/0jx/0xVVtfJPlC0uY7m10azg&#xA;uIWDxSxworKw6EEDY4qnWKpHN5F8mTSvLLollJLISzu0EZJYmpJNMVWf8q+8jf8AVhsP+keP+mKo&#xA;rT/KfljTpjNYaXa2sxHEyQxIjFT2qoGKph9Utv8AfS/dirvqlt/vpfuxV31S2/30v3Yq76pbf76X&#xA;7sVd9Utv99L92Ku+qW3++l+7FXj/APzjwQLjzUhNGNzCwU9aVl3pir2XFXg35DD/AJCN5zb9lprk&#xA;q3Yj62emKvecVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSyfy1oU2&#xA;5soUbpySNUNPCoGKqH+D9B/5ZhiqN03RdK0xOFhaRWwIofSRUJHvxAxVG4q7FXYq7FXYq7FXYq7F&#xA;XYqg9H1jTdZ0u11XTLhLqwvI1mt54yCrI4qP7R2xVL/OHm6x8qaNca1qNrdTabaL6l3NaRiYxJWh&#xA;ZkDB+I7kKaDc7Yq84/6Gu/Kj0DcV1P0AokMv1GTgELcA3KtKc/hr47Yq9J8pea7PzTo1vrNha3UG&#xA;nXiCW0lu41iMsbfZdU5F+LdQSBUbjbFUdrOs6ZoulXWq6pcJa2FlG01zPIaKqIKn5nwHfFUZirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8t7NtVW2nltHmS3gCvcNGzKq8mCK&#xA;TQjck0xV9Tf84pyar5v/AC088eUtS1CZ7GaM2dq8hMpgXULeaOXhyPTYNx6Vr44qxf8A6Fe/OhtP&#xA;Hllv0WNHEwYXv1iSgYOT6/GnPdTTjx+iu+Kss/5y2utV8sfl/wCTPLWnX80diA1vcshMbTixgiSI&#xA;vxPT4i3HpX5DFXyrdvqzW0El28z209XgaRmZGKEoSKkioNRir9SMVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVfnX5S85aNpmjNFND6bwAGSJAC0xJA5DkRU+IJxV71/wA4TyrN&#xA;a+dJUHFZLq0dR4BhOR0xV9NYq+ZP+c25FjsvJsjCqpdXbMPYLCcVeC+YvOOiXnl4WyQCea4B9KNw&#xA;AYCCRzPGtG8ADv32xV+iuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvhDQ&#xA;P+cTvzc1nSbbU1gsrGO6jWWKC7uCk3BxyUskaScag9CajuMVfSX/ADjl+TmsflroGpx61cwz6nqs&#xA;8ckkVsWeKOOFWVBzZULMeZJ28MVeu4q8h/5yN/JzWfzK0HS49EuoYNS0qeR0iuSyRSRzqqv8aq5D&#xA;LwUjanXFXzb5h/5xQ/NzRdJudTaCzv4rSNpZobOcvNwQcmKo6R8qDsu57DFX3hirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdir4I0T/nKf8AOHSNKttMi1CC5htIxFFLc26SS8FF&#xA;FDPsWoNqnfxxV9Mf843fnBrf5j+XtSbXIYk1TSZ445Li3UokscysyEoSeLDgwNNumKvX8VePf85J&#xA;fnDrv5ceX9LbQoIX1LVp5I1uLhS6RRwKrOQgK1di60rt12xV80a7/wA5S/m/rGkXWlzahb28F5G0&#xA;M0ltbpHL6bijBX+LjUbVG/hir74xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV8lfkx+Uv5Sa1+Wlxd6peLeXGprGupX/NIZbF0kST6vGZAwiPNQGcirg7fCcVZD/zhpbW1sfPd&#xA;tauZLaC/t44HJDFo09dVNRQGoHbFX0pir5q/5zNt7e5/wLb3LcLea+uI5nqFojegGNTsNjiqTfnD&#xA;+T/5PaP+U8OoWF/Hp+oaajrpV7zWaTUHaR5DbycKeqxZyA4HwAb/AAjFX1dirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVdirsVdir8vLF9eSxu7exFx9Sv1WO8jiDmOUROJEDgCh4uoI8M&#xA;VfRv/OPmm+ffKv5QeePN1gq6dLEgvbFb+BnjuYtPhlkn+Csb7g8UcNTlXFV7f85FfnGvkL/GBuNH&#xA;+r8liFl9RufW9RpjHUn1eAi4rX1a0LfB9rFW/wDnI7SPPnmL8qfJPmbUE/SVwVa61L6hAVhthfQx&#xA;yRfADJJxAXizs1OVOlaYq+br+XX3sbS2vvrP1HT1eOyilDiOISyGVwgIoOTsSfHFX6h4q7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqhNI0nT9I0y10vToEtrGzjWG3gjAVVRBQA&#xA;AUGKq91bW91bS2tzGs1vOjRTROKq6OOLKw7gg0xV45H/AM4lflEmofWfT1BrblU6cbtvq5Tlz9I/&#xA;D6vDlvTnir2SCCG3gjggRYoYlCRRoAqqqiiqoHQAYqhtY0jTtZ0q70rUoFubC9iaC5gcAqyOKEb/&#xA;AIYqjMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirqitO/hirsVcSBudsVdirSujEhWBI60NaYq3irsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdiq2WP1Inj5MnNSvNDRlqKVB33GKpL5U8sy6DbzwyahPf8ArSM49diQlXZv&#xA;hBrQtyq57nfFVlj5WmtvM9zrbalczJPHwWzd6otWZuO/7CcvgHY1xVT82eU5tdmtJI7sWwtg/JeD&#xA;MJQzI3pycXSsZ4bjFU21vTm1LSLuwWT0muomiEtK8eQpWm3TFVawtTaWUFqZpLgwoqGeU8pH4inJ&#xA;j3JxVJvKflmfQ2vDJOswuW5LxBFP3ssm9f8AjLirIMVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVU7o3ItpTaqj3QRjAkrFIzJT4Q7KHIWvUhT8sVYV+VN9+a93pt8fzEsbOyu0uHFj9&#xA;UapaMyyVDgM6hUHERnqVoWq1TiqjomofnBJ+Z+p2urafYxeREgrYXUTn1i3qSek37RaRlH71DRVH&#xA;EjeoZVT/ADT1L807S90lPI9s1xayrINZcQwStDF6sIEsHrSwhp1Vn4Rn4WFSegxVlPnWbzFD5S1e&#xA;Xy2nq6+lrI2lx0VuVwF/dij/AA7t44qi9Bk1qTRbF9cihg1hoUOoRWrM8KzcfjEbMAeNf9s9cVYT&#xA;+UepfmTevrI86JOoikA0717eO3BT61dL8PppHy/crD1r2Pc4q9FxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQmmkDiOIcpCK09vE4qome+hHO&#xA;ZF9MHcqa0riqMRgyhh3xVvFXYq7FXYq7FXYq7FVOW5ghkhjkfi9w5ihG/wAThGkI/wCAjY4q3PPF&#xA;bwSTzNwiiUvI57KoqTt7YqlekebvLusXLWum3q3M6IZGRVcUQEKT8SgdWGKppJNDEAZHVAenIgV+&#xA;/FWzJGE9QsAlK86ilPGuKujlikFY3VwNiVIIr9GKtLPA7lFkVnFaqCCduu2KpTqnnLyxpdwba/1G&#xA;KG4H2ovidl7/ABBA1PpxVB/8rJ8kf9XWP/gJf+aMVTzTtSsNStVurC4S5t2NBJGaio6g+B9sVS1f&#xA;OnlhtT/Ra36m/wDVNv6HF6+qG4la8adffFU7xV2KuxV2KuxVBqf9ytP+KW/4kuKrtV/4583yH6xi&#xA;qpZ/7zp8hiqtirsVdirsVdirsVdiqFvbH6zc2E3Ph9SnafjSvPlBLDxrUU/vq19sVUfMP/HA1P8A&#xA;5hJ/+TbYq8l/JT/lKrr/AJgZP+T0WKvSPM/6aEMg0uWK3vXdfSmncRp6QQ1XkUk35e21a+2Kooi4&#xA;FoZEAjFWMRk+JFkMYCu1APh9Tlv71xVC6IuuNYn9IzQ3V6FkEklqCE4FgY4+RJ5OFrvXb8SqttDr&#xA;bapcrNc2sun8h+joIUYTxkFd5KmihRy5Cn9MVeIaDpF75m8wpZ+uFuLx3kmuJKt0Bd2I7nFWXa/+&#xA;TtzpmkXWoQamt0bWNpXhaH0qogqxDc33A36Yqj/yMkflrMfI8ALdgvap9QVxVjdt/wCTYP8A22ZP&#xA;+ohsVe9Yq7FVK5mEMTOe2KqKQ3MirJ63HkAeIWvXfrXFVS3lYu8TmrxkAn5iuKqKf8dX/ni3/Elx&#xA;Vdqv/HPm+Q/WMVVbP/eZPkMVVsVdirsVdirsVdirsVQ9zexW81pC4YteSmCIrSgYRSTVapG3GI/T&#xA;iqH8w/8AHA1P/mEn/wCTbYq8l/JT/lKrr/mBk/5PRYq9G83+ZH0Wyku/q0t2ElWJbWBpFkasZcuP&#xA;TSRiB37AVPtlmLHxmrphOXCLR0uozLZSSAPP6aPIFg+KSULEsojj2WrNyoNq5ADemV7IHy55jn1P&#xA;ShffU7mxEglCw3gIb92VHqry+P0zy/a8NttzPJDhNXaISsWssfMc82vX2miwvofqFC19Op+rzfEg&#xA;4KT8PJ/UqnHw+jDLHUQbG6BOzVPGPJ2uxeX/ADJb6hcxNJFDzSaNaBwHUoaVpuK9MqZvQPM35t6B&#xA;eaDfWVjDcPcXcLwL6iKiKJFKsxIZjsDttiqF/Iz+91n/AFbf9cmKsdtv/JsH/tsyf9RDYq96xV2K&#xA;oe+hMtuyDqRiqHi1KKONIpI5A6gKaCo2264qq2il5pZypUSEEA9aAU/hiq1P+Or/AM8W/wCJLiq7&#xA;Vf8AjnzfIfrGKqtn/vMnyGKq2KuxV2KuxV2KuxV2Koe5soria0mcsGs5TPEFpQsYpIaNUHbjKfpx&#xA;VdeWsd3Zz2khIjuI3icrQMFdSppWu++Ksd8r/l5ovlvUJL6xmuZJZIjAyztGy8WZWqOKIa1Qd8VZ&#xA;HJbRSPzNVelOSMVJHgeJFcVd9Vg9IRcfgB5ChIIbx5V5V964q2ltChY0LFxRi5Lkjw+Inb2xVYll&#xA;AjKRyITdFZ2ZR8gSRirFta/Kvytqt9JeuJ7WaYl5hbOqqzHqxV1cAn2xVL/+VKeVf+Wq+/5GQ/8A&#xA;VLFWV+XvLOkeX7RrbTYiiueUsjHlI5HQs3t2HTFUmT8s9Bj8wnXhcXX1v6y15wLx+n6jOXIp6fLj&#xA;U/zYqyWXUbWI0dwDiqn+l7L/AH4MVd+l7L/fgxVb+k9PrXmMVXDVrEdHGKoe0vbe41grGwYiBj9H&#xA;NcVROsMF02dj0AH6xiqrYsGtYyOlBiqvirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqnc&#xA;kiFyOtDiqG0tFayR3UF3LFiRufiIxVF+lF/Iv3DFXelF/Iv3DFXelF/Iv3DFXelF/Iv3DFUPLA0c&#xA;3rwopfiVI6VBNeo+WKqMxuruMwPCscbbOeXKo8OgxVU0tStvw7KSo+QNMVRmKuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KtMoZSD0OKoJrGdaiCZo1JrxFCPxxVr6nf8A/LW/3D+mKu+p3/8A&#xA;y1v9w/pirvqd/wD8tb/cP6Yq76nf/wDLW/3D+mKu+p3/APy1v9w/piraWl6D8VyxHyAxVFwxLEgU&#xA;dsVf/9k=</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
+ <xmpMM:RenditionClass>default</xmpMM:RenditionClass>
+ <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID>
+ <xmpMM:DocumentID>xmp.did:8BC7D877974ADE11BCECCFF09938C3CC</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:30267148-672c-4d34-8534-e8cce420f815</xmpMM:InstanceID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D47F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:21+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T17:01:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BC18AC99CBA78E83</stEvt:instanceID>
+ <stEvt:when>2008-05-19T18:10:15-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T14:26:44-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:08C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:51:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:26:38-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:26:10-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:8BC7D877974ADE11BCECCFF09938C3CC</stEvt:instanceID>
+ <stEvt:when>2009-05-27T04:22:07-04:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:32300939-b1c4-8440-b812-b255b7b0d326</stRef:instanceID>
+ <stRef:documentID>xmp.did:F97F1174072068119098B097FDA39BEF</stRef:documentID>
+ <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Web</illustrator:StartupProfile>
+ <illustrator:Type>Document</illustrator:Type>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>1024.000000</stDim:w>
+ <stDim:h>768.000000</stDim:h>
+ <stDim:unit>Pixels</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Red</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Yellow</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Green</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Cyan</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Blue</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Magenta</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>193</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>45</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>28</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>241</xmpG:red>
+ <xmpG:green>90</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>247</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>251</xmpG:red>
+ <xmpG:green>176</xmpG:green>
+ <xmpG:blue>59</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>252</xmpG:red>
+ <xmpG:green>238</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>217</xmpG:red>
+ <xmpG:green>224</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>198</xmpG:green>
+ <xmpG:blue>63</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>57</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>74</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>146</xmpG:green>
+ <xmpG:blue>69</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>104</xmpG:green>
+ <xmpG:blue>55</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>34</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>115</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>157</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>41</xmpG:red>
+ <xmpG:green>171</xmpG:green>
+ <xmpG:blue>226</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>113</xmpG:green>
+ <xmpG:blue>188</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>46</xmpG:red>
+ <xmpG:green>49</xmpG:green>
+ <xmpG:blue>146</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>27</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>100</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>45</xmpG:green>
+ <xmpG:blue>145</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>147</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>143</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>158</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>93</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>212</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>90</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>30</xmpG:green>
+ <xmpG:blue>121</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>199</xmpG:red>
+ <xmpG:green>178</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>134</xmpG:green>
+ <xmpG:blue>117</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>115</xmpG:red>
+ <xmpG:green>99</xmpG:green>
+ <xmpG:blue>87</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>83</xmpG:red>
+ <xmpG:green>71</xmpG:green>
+ <xmpG:blue>65</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>198</xmpG:red>
+ <xmpG:green>156</xmpG:green>
+ <xmpG:blue>109</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>166</xmpG:red>
+ <xmpG:green>124</xmpG:green>
+ <xmpG:blue>82</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>98</xmpG:green>
+ <xmpG:blue>57</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>117</xmpG:red>
+ <xmpG:green>76</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>96</xmpG:red>
+ <xmpG:green>56</xmpG:green>
+ <xmpG:blue>19</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>66</xmpG:red>
+ <xmpG:green>33</xmpG:green>
+ <xmpG:blue>11</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>26</xmpG:red>
+ <xmpG:green>26</xmpG:green>
+ <xmpG:blue>26</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>51</xmpG:red>
+ <xmpG:green>51</xmpG:green>
+ <xmpG:blue>51</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>77</xmpG:red>
+ <xmpG:green>77</xmpG:green>
+ <xmpG:blue>77</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>102</xmpG:green>
+ <xmpG:blue>102</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>128</xmpG:red>
+ <xmpG:green>128</xmpG:green>
+ <xmpG:blue>128</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>153</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>179</xmpG:red>
+ <xmpG:green>179</xmpG:green>
+ <xmpG:blue>179</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>204</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>204</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>230</xmpG:red>
+ <xmpG:green>230</xmpG:green>
+ <xmpG:blue>230</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>242</xmpG:red>
+ <xmpG:green>242</xmpG:green>
+ <xmpG:blue>242</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>63</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>245</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>122</xmpG:red>
+ <xmpG:green>201</xmpG:green>
+ <xmpG:blue>67</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>29</xmpG:green>
+ <xmpG:blue>37</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>123</xmpG:green>
+ <xmpG:blue>172</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>189</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>212</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=138 G=138 B=138 1</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>138</xmpG:red>
+ <xmpG:green>138</xmpG:green>
+ <xmpG:blue>138</xmpG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 3 0 obj <</Count 1/Kids[155 0 R]/Type/Pages>> endobj 155 0 obj <</ArtBox[0.0 73.0 508.0 701.0]/BleedBox[0.0 0.0 1024.0 768.0]/Contents 156 0 R/Group 157 0 R/LastModified(D:20090730214335-05'00')/MediaBox[0.0 0.0 1024.0 768.0]/Parent 3 0 R/PieceInfo<</Illustrator 158 0 R>>/Resources<</ColorSpace<</DefaultRGB 159 0 R>>/XObject<</Fm0 160 0 R>>>>/Thumb 161 0 R/TrimBox[0.0 0.0 1024.0 768.0]/Type/Page>> endobj 156 0 obj <</Filter/FlateDecode/Length 130>>stream
+H-0 aS' Ƌv,$<=FCb8A-F{(V(\E3>IGIykFS><H朗7)d5?L3`
+endstream endobj 157 0 obj <</CS 162 0 R/I false/K false/S/Transparency>> endobj 161 0 obj <</BitsPerComponent 8/ColorSpace 163 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 79/Length 284/Width 106>>stream
+8;Z\ui<k5l%"j!.(Yn<rGVB89DS9W38A;imV+n")c,d,Cr$jiKcnTe_@#q%%4(.C8
+HN;BSQ0K3*YFS=EP`>nRqnec:hag&4%a](-!f93L:A4D\h\gZ/n@lX;HcTPGfEHCj
+Q%6lr1C^ia9#<W0(GV,aU!d`IC%Y0XNP6><b7'6om5]6K!.0N/D61*)F/P7m\Pl,G
+gpGL0adN#/Z594=1XIk%(grE!EB@RojEgmQOd52KE0$6o\NS1_@3+<#Mt:Yj;B;Fb
+IK^@:(iq@&!<@UeLT(~>
+endstream endobj 163 0 obj [/Indexed/DeviceRGB 255 164 0 R] endobj 164 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
+endstream endobj 160 0 obj <</BBox[-103.108 71.3223 103.108 -71.3213]/Length 854/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 165 0 R>>/ExtGState<</GS0 166 0 R>>/Font<</T1_0 154 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream
+BT
+/CS0 cs 0 0 0 scn
+/GS0 gs
+/T1_0 1 Tf
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2773 Tm
+[(T)7(his is an A)12(dobe\256 I)-10(llustr)5(a)4(t)6(or\256 F)26(ile tha)4(t w)4(as)]TJ
+0 -1.2 TD
+[(sa)8(v)10(ed without PDF C)11(on)4(t)6(en)4(t)3(.)]TJ
+0 -1.2 TD
+[(T)71(o P)5(lac)6(e or open this \037le in other)]TJ
+0 -1.2 TD
+[(applica)4(tions)11(, it should be r)10(e)-28(-sa)8(v)10(ed fr)10(om)]TJ
+0 -1.2 TD
+[(A)12(dobe I)-10(llustr)5(a)4(t)6(or with the ")3(C)3(r)10(ea)4(t)6(e PDF)]TJ
+0 -1.2 TD
+[(C)11(ompa)4(tible F)26(ile" option tur)-4(ned on. )41(T)7(his)]TJ
+T*
+[(option is in the I)-10(llustr)5(a)4(t)6(or Na)4(tiv)10(e F)31(or)-4(ma)4(t)]TJ
+0 -1.2 TD
+[(Options dialog bo)14(x, which appears when)]TJ
+0 -1.2 TD
+[(sa)8(ving an A)12(dobe I)-10(llustr)5(a)4(t)6(or \037le using the)]TJ
+0 -1.2 TD
+[(S)-3(a)8(v)10(e A)6(s c)6(ommand)10(.)]TJ
+ET
+
+endstream endobj 154 0 obj <</BaseFont/OUPLQW+MyriadPro-Regular/Encoding 167 0 R/FirstChar 31/FontDescriptor 168 0 R/LastChar 174/Subtype/Type1/Type/Font/Widths[523 212 0 337 0 0 0 0 0 0 0 0 0 207 307 207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 612 0 580 666 0 487 0 0 239 0 0 0 0 658 689 532 0 0 493 497 0 0 0 0 0 0 0 0 0 0 0 0 482 569 448 564 501 292 559 555 234 0 0 236 834 555 549 569 0 327 396 331 551 481 736 463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 419]>> endobj 167 0 obj <</BaseEncoding/WinAnsiEncoding/Differences[31/f_i]/Type/Encoding>> endobj 168 0 obj <</Ascent 952/CapHeight 674/CharSet(/f_i/space/quotedbl/comma/hyphen/period/A/C/D/F/I/N/O/P/S/T/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/w/x/registered)/Descent -250/Flags 32/FontBBox[-157 -250 1126 952]/FontFamily(Myriad Pro)/FontFile3 169 0 R/FontName/OUPLQW+MyriadPro-Regular/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 88/Type/FontDescriptor/XHeight 484>> endobj 169 0 obj <</Filter/FlateDecode/Length 3130/Subtype/Type1C>>stream
+H|TyPwffz $D#hD[-o!b(/a@e0 E
+D%"gC Ed=
+1M}?l[[{}q|W<U
+ou@1rl!
+٣{g|6cO߫Zche˗;Ӵt9,]tZ:(2C2B#)RGGJlMxlB#S+5JuU,·ّ|:'g'[evv/SidJ6D
+~g040 /1l c!R ?a6F=1o,ʰ dIɄ`@! ! :AN"8+z^00s62VsQjz Mt!:=J@j*V$C(0S9)bϴo\3eԐђ: ZatH&
+ 5XqWAe1>0Ι<ȤRnvݻD
+xmoKh#v܃:y<1E[l!/UXFV #m
+YE~>h ,<r$-(.m T=9}Y>s1gtU&AVn Y @הQ.ۈc*.wHW~^h1C֗.YF:Y-
+L U~OF]^>g/(Irq,> gi^Ck Bc!fvYT pl졉5-ZZΜ/oȿNsWH+cVd&]ߴ,L&!Rj. MZRjt$Hޫ,m_䞮O˹Bx8T>#aE&C!l<9"$<Zhd րh/ON;u:TVsgziٗHnM{<'g S&~M/Z <D]1{[ٝO#G т`u0<+i+l38c3@:&b5̬" ټX
+i{~)$!x63'(&}hg1̅H _r L i ? ٻbd[!eh1Ԕ௤hhgZS5_]O"581xøQoebCihIW+x;6cs-rve},*LTaɡBSN XU s|IlgF.>ޗ\S:.|douALVe [`lh'M87°2RVA
+endstream endobj 166 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 165 0 obj [/ICCBased 170 0 R] endobj 170 0 obj <</Filter/FlateDecode/Length 2574/N 3>>stream
+HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽
+ 
+V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'K
+x-
+ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9
+N')].uJr
+ wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4
+n3ܣkGݯz=[==<=G</z^^j^ ޡZQB0FX'+t<u-{__ߘ-G,}/Hh 8mW2p[AiAN#8$X?AKHI{!7<qWy(!46-aaaW @@`lYĎH,$((Yh7ъb<b*b<~L&Y&9%uMssNpJP%MI JlN<DHJIڐtCj'KwKgC%Nd |ꙪO=%mLuvx:HoL!ȨC&13#s$/Y=OsbsrnsO1v=ˏϟ\h٢#¼oZ<]TUt}`IÒsKV-Y,+>TB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O
+zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km
+endstream endobj 159 0 obj [/ICCBased 171 0 R] endobj 171 0 obj <</Length 3144/N 3>>stream
+
+
+
+'
+=
+T
+j
+
+
+
+
+
+ " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""#
+#8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<'<e<<="=a==> >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNO
+k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4
+uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-
+zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km
+endstream endobj 158 0 obj <</LastModified(D:20090730214335-05'00')/Private 172 0 R>> endobj 172 0 obj <</AIMetaData 173 0 R/AIPrivateData1 174 0 R/AIPrivateData10 175 0 R/AIPrivateData11 176 0 R/AIPrivateData12 177 0 R/AIPrivateData13 178 0 R/AIPrivateData14 179 0 R/AIPrivateData15 180 0 R/AIPrivateData16 181 0 R/AIPrivateData2 182 0 R/AIPrivateData3 183 0 R/AIPrivateData4 184 0 R/AIPrivateData5 185 0 R/AIPrivateData6 186 0 R/AIPrivateData7 187 0 R/AIPrivateData8 188 0 R/AIPrivateData9 189 0 R/ContainerVersion 9/CreatorVersion 14/NumBlock 16/RoundtripVersion 11>> endobj 173 0 obj <</Length 894>>stream
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 11.0
+%%AI8_CreatorVersion: 14.0.0
+%%For: (Administrator) ()
+%%Title: (colorbox.ai)
+%%CreationDate: 7/30/2009 9:43 PM
+%%Canvassize: 16383
+%%BoundingBox: 0 73 508 701
+%%HiResBoundingBox: 0 73 508 701
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 7.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%AI3_TemplateBox: 512.5 383.5 512.5 383.5
+%AI3_TileBox: 116 78 908 690
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 14400 14400
+%AI5_RulerUnits: 6
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: 93.25 700 8 1780 1006 18 0 0 45 111 1 0 1 1 1 0 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:0 0
+%AI7_GridSettings: 100 4 100 4 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream endobj 174 0 obj <</Length 6746>>stream
+%%BoundingBox: 0 73 508 701
+%%HiResBoundingBox: 0 73 508 701
+%AI7_Thumbnail: 104 128 8
+%%BeginData: 6616 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FDA0FFA8A8A8FFA8FFA8A87DA8A8FD5DFF5227FD06FF7D27A8FD5D
+%FF5252FD06FF52277DFD5DFF5252FD06FF7D27A8FD2AFF7D527D527D527D
+%527D52A8FD04FF7D7D527D527D527D527D7DFFFFFFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFFFFFA8FFA8A8A8FF5252FD06FF5227A8FD2AFF522727522752
+%27522752A8FD04FF7D2752275227522752277DFFA852A8A8FF527DA8FF7D
+%52527DFFA852A8CAFFA8525252A85252FD06FF7D27A8FD2AFF5227A8A8FF
+%A8A8A85227A8FD04FF52277DFFA8FFA8FF7D277DA8F82727A85227F87DA8
+%A827F87DFFA82727A8A8A8275252FF5252FD06FF5227A8FD2AFF5252FD06
+%FF7D27A8FD04FF7D27A8FD06FF277DA87D52A8A8A85252A8FF7D52527DFF
+%FF277DA8FFA8525252FF7D52FD06FF7D27A8FD2AFF5252FD06FF7D27A8FD
+%04FF5227A8FD05FF7D277DFFA8A8A8FFA8A8A8FFA8A8A8FF7DFFA8A8A8FF
+%A8A87DA87DFF5252FD06FF5227A8FD2AFF5252FD06FF7D27A8FD04FF7D27
+%A8FD05FFA8277DFFFFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFA8FFA8
+%FFA85252FD06FF7D27A8FD2AFF5227FFFFFFA8FFFF7DF8A8FD04FF7D277D
+%FFFFFFA8FF7D277DFFA8A8A8FFA8A87DFFA8A87DA87DFFA8A8A8FFA8FF7D
+%7D7DFF5252A8FD05FF52277DFD2AFF527DA8FFA8FFA8FF7D27A8FD04FF7D
+%27A8FFFFA8FFFFA827A8A87D52A8CAA8527DA8FFA87D52A8A8FF527DA8FF
+%A87D7DA8FF5252FD06FF7D27A8FD2AFF5252FFA8FFA8FFFF7DF8A8FD04FF
+%7D27A8FFA8FFA8FFA8277DFF7D7D7DFFA87D7DFFA8A8527D7DFFA87D7DFF
+%A8FF527D7DFF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF7D27A8FD04
+%FF7D27A8A8FFA8FFA8A8277DFFFFA8FFA8FFA8FFA8FFFD04A8CAFFA8FFA8
+%FFFD05A85252FD06FF7D27A8FD2AFF5252FFA8FFA8FFA87D27A8FD04FF52
+%27A8FFA8FFA8FF7D277DFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF7D27A8FD04FF
+%7D27A8A8FFA8FFA8A8277DFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA87D52FD06FF7D27A8FD2AFF5252FFA8FFA8FFFF7D27A8FD04
+%FF5252A8FFA8FFA8FFA8527DFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA8FF5252FD06FF5227A8FD2AFF5252A8FFA8FFA8FF5227A8FD
+%04FF7D277DA8FFA8FFA87D277DFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
+%FFA8FFA8FFA8FFA85252FD06FF7D27A8FD2AFF52FD0927A8FD04FF52FD09
+%2752FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FFA8CAA8FF5252A8
+%FD05FF52277DFD2AFF7DA87D7D7DA87D7D7DA8A8FD04FFA87DA87D7D7DA8
+%7D7D7DA8FD19FF5252FD06FF7D27A8FD5DFF5252FD06FF5227A8FD5DFF52
+%52FD06FF7D27A8FD5DFF5252A8FFA8FFFFFF5227A8FD5EFFFD09A8FD62FF
+%A8FFA8FDFCFFFDD3FFA87DA87DA87DA8A8FD5AFF52FD05FFA827F827F8F8
+%27FFFFFFA8FFFF7DA8FD53FFF8F82727277DFF52F85252F87DFFA8FD0427
+%F8FD54FFFD05F827FF7DF827F8F87DFF27FD05F8A8FD53FFFD05F827FFFF
+%7D272752FFFF27FD05F8FD54FFF8F827F8F827A8FD07FFF8F8F827F8F8A8
+%FD53FFF8277D522727FD08FF27F8525252F8FD54FFF852277DF827FD08FF
+%F8F852525227A8FD53FFF8275227F827FD08FF27F8275227F8FD54FFFD05
+%F827FD08FFF8F8F827F8F8A8FD53FFFD05F827FD08FF27FD05F8FD54FFFD
+%05F827FD08FF27FD05F8A8FD53FFF827525252A8FD09FFFD0452F8FD54FF
+%7DFD05FFA8FD0CFFA8A8FD53FFA8FD12FF7DFD54FFF827275227A8FD08FF
+%A852272727F8A8FD53FFFD05F827FD08FF27FD05F8FD54FFFD05F827FD08
+%FFFD06F8A8FD53FFF8F852F8F827FD08FF27F82752F8F8FD54FFF87DFF7D
+%F827FD08FFF8277DFF52F8A8FD53FF52FFFFFF52F8FD08FF2727FFFFFF52
+%FD54FFF87DA8A8F827A8FD07FFF8277DFF5227A8FD53FFF8F852F8F827FD
+%08FF27F82752F8F8FD54FFFD05F8277D525252275252A8FD05F827A8FD53
+%FFFD05F827FF27F85252F852FF27FD05F8FD54FFF8272727F8A8FF76F87D
+%52F87DFF7D27F827F8F8A8FD53FF7DFD06FFA827F8F8F8FD07FF52FD5CFF
+%A87D7DA8FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC
+%FFFDFCFFFDFCFFFDFCFFFD80FFA8FD07FFA8FD53FF7DA8FFFFFF7DA8FFFF
+%FF7D7DFFFFFF7DA8FFFFFFA87DFD52FF52A8FFFFA87D7DFFFFFF7D7DFFFF
+%FF7D7DFFFFFF7D7DFD67FFA8FDFCFFFD26FF277DFFFFA82752FFFFFF2752
+%FFFFFF7D7DFFFFFF2752A8FD50FFA8F827FFFFA8F852FFFFFF2727FFFFFF
+%277DFFFFFF5227FD52FFA8FD09FFA8A8A8FD07FF7DA8FDFCFFFDFCFFFDA2
+%FFA8FFA8FD64FFA8FFA8FFA8FD62FFA8FD05FFA8FD66FFA8FD62FFA8FD04
+%FFA8A8FD60FFA8FD05FFA8FD22FFA8FD04FFA8527D7DFFFFFFA8FFA8FFFF
+%FFA8FFFFFFA8FFA8FFFFA8527D7D7D527D7DFFFFFFA87D52A8FD16FFA8FD
+%05FFA8FD21FFA8FD04FFA87D52A8FFFFA9FD0EFFA8527D527D527D527D7D
+%FFFFA8527DA8FD15FFA8FD05FFA8FD22FFA8FD04FFA852527DFFFFFFA87D
+%A8FFA8FF52A8A8FFA87DA8FF527D527D527D527D527DA8FF7D5252A8FD0C
+%FFA8FFA8FFA8FD05FFA8FD05FFA8FD26FFA87D52A8FFFFFFA97DFFFFFFA8
+%A8A8FFA8FF7DFFA87D527DA8FFFFFF7D7D52FFFFA8527DA8FD0BFFA8FD09
+%FFA8FD05FFA8FD27FFA852527DFFFFFFA8FFA8FFCFFFA8FFFFFFA8FFA8FF
+%52527DFD04FFA8527DA8FF7D5252A8FD0BFFA8A8FFFFFFA8FD05FFA8FD04
+%FFA8A8FD26FFA87D52A8FD04FFA8FD09FFA8FFFF7D527DFD04FFA87D7DFF
+%FFA8527DA8FD0BFFA8FD05FFA8FD09FFA8FD27FFA852527DFFFFFFA8FFA8
+%FFA8FD05FFA8FFCFFF527D7DFD04FFA8527DA8FF7D5252A8FD0BFFA8A8FD
+%09FFA8FD04FFA8A8FD26FFA87D52A8FFFFCFAF53FFA8FFA85AA8FFFFAF53
+%A9FF7D527D7DA8A8A8527D52FFFFA8527DA8FD0DFFA8FFFFFFA8FFFFFFA8
+%FD05FFA8FD22FF7DFD04FFA852527DFFFFFF847EA8FFA8A953A9A8FFA85A
+%A8FFFD07527D527DA8FF7D5252A8FD0CFFA8A8A8FFA8FD05FFA8FD05FFA8
+%FD21FFA8FD04FFA85252A8FD0AFFA8FD06FFA8527D527D527D527D7DFFFF
+%A8527DA8FD15FFA8FD05FFA8FD22FFA8FD05FF7DA8A8FD13FF7DA87DA87D
+%A8A8FFFFFFA8A87DFD17FFA8FD05FFA8FD60FFA8FD05FFA8FD4CFFA8FFA8
+%A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFFD05A8FD04FFA8A8FD60FFA8FD05FF
+%A8FD4CFFA8FD15FFA8FFFFFFA8FFA8FD62FFA8FFA8FFFFFFA8FD4AFFA8FD
+%19FFA8FFA8FD4CFFA8FD68FFA8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FF
+%A8A8A8FFA8A8A8FDD4FFFF
+%%EndData
+
+endstream endobj 175 0 obj <</Filter[/FlateDecode]/Length 15093>>stream
+HWiwyoxY$myı;/{ ZvCQS VV|VUW2ciYx$e41;L&zN5,zWUS`uk
+!=NV ( ! 6[KϯTJRrOt~Ta
+Q $\.,BT"TZfNlyMn^4 $~79[uAAɅ\
+YLF^I` 
+hI* Ub(G|=Rfsoz`#jÝU69X&t>4xG}pa:¬l UtN/ܴ?B
+_0/$1I2?:YN"tnM1HD_p3| 6
+iBd-l~')-RJdMbzDHGvV7X-Mbqr?ҫ`9tDZ\7[PrIHC}gٙ!:}6tǐ.MrSQDbp,A\1ob&3lc.=
+^>,IzL(ݘ0<åu?V #TljީY\'΢$eJl%B ^Þp-Lw:gȴ-Ku 7 w+p'v"x%KuЦ߅3l!sΩ5|F;ߔ %fZ9b!vaѾN.
+EUD!`{h9CC1kXwO޻WGyܥc~P l9i:+fK.fEo-ʸv:
+)vK ۦ&5 )#>bUEeUϜdiyl<lS3HFךc]u'S''
+>#]0ܧDjJ?9:l.^>j BMz'i\0{S% j9XPYIv(fcK>mt _6xTL1IH0+~YJ,,,ufJdKCTULu+45fVKL6QmF ?J75a?iѰ}3uwO2 Ng1md'e|e3xvk|x]! p|Bh-~WńDEGxfC188 ]w 0#q8b
+^iŃ~wnu2V?}th59pƧ/ZUBJa2aȧ>m\
+5jbx49lu52S>7+Ϸ>mUlexK߬[ՊL_t8*d6|[.ǥ\S8|_*ꆱ}[4=ы]_֫t=Y^Z *aRQDk:\m$ >
+X;\9. y/b
+kƸMKvUjĺ)9ifg7i{s-?ҹtϭ;mxʚǡzzs0nunY1hՈݴdGJ9d,գcy'6,<.`ZݿtMt9\OgĮ . ; \d'bs`t.Am6fjaw' CAF?dvM3}P>Hө@gN(o{3j4-` 7W"c%e 5%ӧh\|V
+ͥ<2Hy
+fVjm{ k:8jk&8kA5Br~6ef"Pv>1BX<ƹ hE_w<=i^ *j,Ԉ8T$WH4hlA{(V;ES2L{"#iÝ!9|̻jX?#2]l ,[
+k9vM(2rDgd,"#43ӪǾЃax1Vh0LM4 ݅е^q0ZLx~[cq*aatt1@.>BA ܆qq @67ӭxCrAؓt[lH#d,=e9вC胈>Zowh+
+t#1BYPz(;o3
+\;7 (u],gòԳ/݄iJ[Dq'[=W"2lfQejed?m
+"=[nV@KK
+kx*y:cFΝo:wS
+0&^ܖ3FS'HYlHdZ1ŅIJHĈ{9Eg',iAi8{XNRyct<MhxLt ȷh
+I(rG3I5gb܌XD*jb2,PxKkb$KC1@arN 3 a_"ةF
+1Ɖ{b]Jr{ɓ,$TesJhs,3%n,pKQx40Ѓ r"HYl/4 tT𡗳"n7/HXhϔK{-OY9j1&reG"t +g%,D@oa3lm`laI1Ƶ3LxK&3)yKCՐlM=BPb[H\"9]hi\G0jxVqP
+ &0`2еO, G lMB4~b ~.Hp颊
+zmGOY^=o;nܢ,QS4'ϩy0' -@C-""|gZab/KRED%/[[ÿ_D\hK]֬8LjD1~r7=T2omKg"ᒫ†D>Dq 2BE `q#ee@ oͤO 護Twv=KȞagc5ەu?}5uc^;˱qFZIK@+OMn p(FВs鰇2@Ȫb6MZtp1櫵!S"vRE1L6hb ;S%i=>IK4DIA\"/N6pH^
+.E"TRh Un2CXGLuĽB"?6"h Hg9| vd\:Usyxq#dT is& S̒K:ї9s>5(mDKT,ME/={2Uw/}ށgBAv vR+'H&r3WwDUw;PuF}ͧ} 9>61 ?A#`R_iЎ>RQg4HF))4ro`kKNXbrQaz ƣ6Ke`I|>H
+J}1lD6ryVhR$T.x/*[zv|) ^ࣼhnNy<Q<#CX/Ng'իIc8qacU>o4 }mxv_Nٸ#2wZi+{=7.>R| иz8OK3=O+9ƾїL[(<=tJoa8}*wwx7] }b}/}kK:/1ebEhzmo#{c6w0w'(_O7pSAhVomV^wׅAZE$Rʽbp~NÃ,ߗZCi X~ٞY{ہЇfnCSL_=Z[MmlYX&j6qL9,~ gnWn+0jw/%Z<fkM+T_ݳѮ`4Nj:Anlh- \C}]Xm-0
+4 gk<ȅ qWgc@-6F
+X0أh44(owAAX򅻸M{35ڵMOA֗<Uq
+{`qZN/C8՟WkiX~ﶡ2a82m8iFkwTFl
+F OMzgߒcBiV# T((NP}ý$O>/h厊jу *dZV ~>T&O{Xv
+7܇V\9ОIYܸif!G<8lWw w1(
+
+qƱ!'uMKA7qښV]rJy_
+^52Oc-b#dWF
+;gp#gt 1e!xl,֤?[U.=~`5yZϘ<tوsN`py~!,k7/دp)/Y6f%lCN'`S6ayq:I83
+, ᝾< ,W0k8UCVxspe '|1U(Ev:q`ӭ~,ѵ8jih#C 44Vftnh07ceQs3 mh$/gx uuhLЀn2wϸ`6f 6H$nYFch`ZjWAvcѱLF7*$g_V4,Cx:@Odzߌ0gOֽ!Gސx:IC=Ǔ}N;_VL'-~BmI|٘B7Ȍ% ȭΰ4$K/+,)< kƵdș⻀g?VXqx. x^ m2L,α0^#b $W@L4sa*U}h
+3,y`J(`47OBzTzBt#F\G˥XAMkm)#a~B܀(+2ŻbGw&zLTƒHp.ח_9M\'oZ6[9|+ ԁ?##%c
+>%L--SM^]M 5Nz>&LgyU11m 4-]'/Ѫ}#u)~+[nڪ̈́'M? '9W`_x:{oAʷUI Wŧ*e b4|nX=_5[6r=nYtu:Ɂc.F& MhMBSfʕlk$V@P, ]4,fS3HuvhPi a `9RٸzVރ;V@ÏXۗL"Tb"[pU|Ǵ uw'~ZPC73_bpiTVjMƩ. @tq7u.Qz1;Wf5L9^en [r.iQ[+lHN<oJu߆>
+PB?OWmfP]TR,]_V훨$Wco G_#We+n2[٫^6&j\~^(;(%hn[i%HQZfI2jAqa$ -;a|[fGЪ~l RH0Lq;O5vƽ
+?<U0"i+K߼$%(+S $r&P3 P( b
+(FS1ݷn=ZÛuN̍05@Nåʔ52\_xM^znD ίV'ۢNB]Ա)1t/
+endstream endobj 176 0 obj <</Filter[/FlateDecode]/Length 17828>>stream
+HWYW}k!B2 ai@ڡUUBP_jm<{,$_h(EZՋH57d/}p;M
+1 u6 n8F VC<{,YweZclW~;X6@DN}GƘҫ7{KY>(fNxDd_$4v @o\ᣦIZ
+1P1SlM[Cg3l@/z-sX eͅ!3lb1MV{"HQ@KjU@0ZBX"} 2A L"`h!5iIoIךhOgc̟j7mipp{[ơhhl`[͋o ܘYTU.UxA lV~wΰ>+㲲KV>u| ,}ʦ4uɁp6pYٔZ$ : e&
+UI<V6;4KV΅h[Vd4 1*3~<Q͒adO#CGŤJk.{l!1.a6Xzsi5 `Q?9{ȅb&P#4C1%@lSKQ_>QpT25hlU-'8KuezTqù#ݵ$T[
+J@
+ )I.W54LSm
+\nILhZo5&Sl-/Z
+flky7HaTi 'Ssrݏj{Rn>(BMQϐ>u3rzьstF^G.Э%7ktk-7YlskՍiD`]fj]9GD#0`uzZ4\:c ڱl0"~S> װ:
+ mN憞֬ݘ\qi7ܒS(DE(mXA)sk,K<^kpʊ+y&+N1΁<4X|HL}c;̲[-龱ڽA
+S;oɕK^&К FF*3aFk 24tL{_yb tP:.F#WPʵ[THpFO|FA-S=mW('ml%0?^-~୎$ʉ;PrXֵđ ,L@@D{ @t뀺#vwtNOݡS~׹Ƈjt.n}Ntl^mP̧YԢL휹EϬDZQIalZ0QhDFZ裨<uq#L"yqڦ<z=-lo4S+CwWYa
+W˕`4rmPSHR-SxPkhۅJM䭮Nx"PoKB
+F#n( okM5oAM&"
+(,kgZ Qw?g/OHC526GV|$¦tG5U`tC%/~߰]NV!}{-V=sf<b$[ 6b^h5P΁*z
+ihm40FŷvL m
+_㵕aH[qn|4N TdVGEyzLot gM>*'6^ʌ'AX/8yX8ZGG%Id)#gC~sF5aNS7Å࡫E>H#sT0/I ,n.~UpN:Wjͅjܶ%T 5e'Uu]w
+R <o}9DIW:)L)>_[r$zf ǝmM|1#<;|~l4ȏ"={wFVHyK  ʳ,9=
+OH 7ijuf
+w7`(Ph&ލFszc8sUbȌ>.ϽuVC@Ģ/h`^g,- )4kEh?3ÍUiY}L)b޳\9ųK!Z_i- J vJ}U_LҐy$ _BApi~`b/-, (`ѥ˔/"Y>/\)(U'r77BGŘMq7D&mʭiM72Ɏj3d@Q<^pkɓ ~W)2;vPPmPk\n$uls:HO@! a,Rs;䣘p4[(^g.۞@ބU #\LFdj4p6Z[Nqt
+Jd@:\zwW.37MӢYJ.PX\uشRw*KB
+ҘѴϬi' YGP;Ґ7>vA>~z+uRu7zt)*dQ7Hcc< 8Ij4[%Yx)YC
+X(K* <E^k,Ll/7~~6=%<xG&&/æb6~;@$KÆ%2>4g<[ʀ+sp+ۨzI+9 l/빕IVR <UWuY: 6@3{ ewӣ}&T,0E?i4R{E!0rL F $R ALй0Cئkܯ=44*D.=tc MsXy]PlC"(,W+.n|D뗪>B-57x0y6MU&/i0KƳUVIɲ9H{3]X+ p$X
+b?%$tXlCo` (E;r:lY6u[-q rCvsXҀ2lƽxoJ[ӂ
+ЗgnH 7W\&Nk;{ȄG.cH "Vs}||[
+ѳH/Ũ6  f~=Kױ?^hݕYАb=Ann >DͿLQ속kk#$nRB˫jVw{- Ra-g\4;5ܫ y nk8"?9 ^Ыڲ[e[S?!BcH:tlzbǺLLot*gk e3Q[Vgpek∗w4wv}Ӹe=hr%$UL
+~hg) }3[່B4&̎ݰـMF40H"ȌVk
+h? \
+ {"rAG&-R@( Vu;+_P>OtՠmA +-|1`ekX Z/XMn;f; @BͱP8VY.G7l<}'+=$]cevd׬ }5r>ؚX։&7M^1f)b6V͘#铴 xf7+no1*
+(ճiql*?wZ_\{4TrD魅{ȡװ#Šw䟄dK*ukg&@;]MPC"y'itIH-KI-P0&)j&+{=/zfihZo' }:+oƺ6Gow&TУpht6Sx<2`8%&;t[Zkn߷EUAC89A+bS+DbZ̔m}Vl @AW <|{9
+mҤ?g{C.H_J73f{j2<ӫ4L׋ /%*[h]Bܬ} `x(s^ctuӈ
+ i{ \y@ş@,g*l*Ti>w%|hr@Yvntō+諹#o"ʺ&:\+0#1˖;$: gKqL*:zHRJܮAb _vu=@\19>\ G
+6zָȢ~ol*s ǖwdV;ONE:}זs95W4\
+G)~J-a:c{!{Pzo$0ўA$/睡_*Ò}މ+Ʒ3vq#Օ&YYl&
+/by4]Y%l*ӊ' K.PU48Tb(k)|ƟRBq?Mđn5J c±6tI}Tpήp
+]Lg E4b@|g /d&rlzSյ?]C}HOO3qQ%?R*f)ˤ8j64B4cCXx-,"j=hNx9l='V!i(1wy*Kϥ?Rie&Iȶ+t%!S)?9%lC3-5Z
+1o
+Mk45~t.ISWYG%W$Vsa|R*Uù;JH(Ϡ5<E6c{l\14ǟڨn
+3Ca6
+aox$>Jzq'SSυ$/-!f^NK/,}"!>@nlOpxicJLdCO ޸`!
+w 2י\vEKdq>){ ~X͎Ei_V$f` whY{W=q 赲TjKQZz
+ 0(\-ZB; iz& )]oT)& ɟ(zTa^f<+j*dɸ?藱XBo m=g4)=&U͉Cb[a}s*\0a΢#&OpF;y3Yʄ(jCƉpeIK~u֞.yah] ~Tɨb\2G u>)lveZ[6tiGc&%Cg<dKƄ$;9pnwN
+w&F^]0}L诼OTE2ncu Qg@.
+73dxK&~8YifՖ6zݸYr6Dʉΐ)YyLsԖK2tGdV87F h?;:IutnC*\[ אjQ`58mɍ#=YwF}sqA]ŰUdnDmi3\g5l|&0N-zbq^
+n@&~R>!}"xiLs؜¥3v8]Q>*߫ey>X@l (yL`2 oh7{%ѪÆ@#gP7^4ڱD{uDEN{9-'4x<iPN(1-8cܹ*Bͩa~vUC9!y$i.:wsjsBFZR^HaN桴ɉ;OQIcZz#-פ
+[_ȆTչoܴ{t0/MfU-y
+oȲ3.vID%f%PC AB z' \] d(o_KM`͌W0A E~ZW0A+x!JQB Ul@S*~Չl.W:j0Ea~_@
+WBZaӷEOw)+ a{Z~aJ[| qu8kݧ Bkg2*[ULbE }}n#+Tҝs5q+Y7X7{ò'=Ncm*@?To7dY|ڣR,.>Jog\Ao(zĽɲ_@w< 74+\]V lk3XFzA1Fߥ[)!ejS
+uk@3v(RwpX -qC F/lDYvoB9W ʚeD]@EqDvQlm7]#ohő̝teVsN^qj`ƕc9ߛ9A_A3]ʲ;$kq<_9l\6ku.?7VCfcKV=z |jw%ѣW7IhMf\;-Ok?,#݇d~$>.? -)egQ@q,>;т0ghq{lDvp@TDTD
+QqU!<Sr3ֆq ũJT]'$p1\*_EkcH`EHI7b8ː=#lvZa H.b8C
+@v0dp:-]ce%+3IPM a lVGtCTTƣ3<KX5{ pA
+z
+[tm9\Rf6 Aȍ3#jY)FK͞r5u
+O"U2[4k!Po|5e`SLr;ǔ֮8(,IJ=~[g-M[li!bDn98>,lk@b L6Oٸ1W<(BƢ: 6K$e-^=$d6Jsz9Su>NQLZ.aF'.l[?v{zt]Nt#n˹wMg3V\/^^K1bEvėŮJu7T{oڕF}6{yhr%/!
+ѝSJ⏹Z.MՍ68C\U?R}8{:Ta=V0 H+3*b\hq{')CfIՏC6 [ĭXRa`-"MDzK7<N9,2"}@b֒inr(D Atx8cc.BY
+af6R].L#"%ubihN,*lc|X侂
+Kva BO V߮Gԉ|U Χń7Ň! ?lnvuf# #yIG*
+;{DQ a@:P_ Z*m5Q_VLt_Km
+^))u|nÓ:u]cB j"/Ru\)FȪbj%ԭ2:pMM>ԷdN| /kX=.f//a4ӝz4M,ܞ'PHB~°T\
+A`luѭ9e^*A*bbK좉=]1vrxٙж?8$M<SȲ
+2ycRȪ1P̍MR O
+[Dώ6cغx3--_qZ~;o9]Jc,c+:J49Y>V0tϱx8J479C|IJY>V0ӌsl%Cg[|D m,c+19G|m屵BK$nzVD]]>
+]ˁY0.
+jŁǵMo!k&W
+Xx½Vw*/-:1