aboutsummaryrefslogtreecommitdiffstats
path: root/include/identity.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/identity.php')
-rw-r--r--include/identity.php181
1 files changed, 106 insertions, 75 deletions
diff --git a/include/identity.php b/include/identity.php
index 23fc85830..f8717b1f6 100644
--- a/include/identity.php
+++ b/include/identity.php
@@ -4,6 +4,21 @@ require_once('include/zot.php');
require_once('include/crypto.php');
+/**
+ * @function identity_check_service_class($account_id)
+ * Called when creating a new channel. Checks the account's service class and number
+ * of current channels to determine whether creating a new channel is within the current
+ * service class constraints.
+ *
+ * @param int $account_id
+ * Account_id used for this request
+ *
+ * @returns array
+ * 'success' => boolean true if creating a new channel is allowed for this account
+ * 'message' => if success is false, optional error text
+ */
+
+
function identity_check_service_class($account_id) {
$ret = array('success' => false, $message => '');
@@ -24,11 +39,22 @@ function identity_check_service_class($account_id) {
return $ret;
}
-// Return an error message if the name is not valid. We're currently only checking
-// for an empty name or one that exceeds our storage limit (255 chars).
-// 255 chars is probably going to create a mess on some pages.
-// Plugins can set additional policies such as full name requirements, character sets, multi-byte
-// length, etc.
+
+/**
+ * @function validate_channelname($name)
+ * Determine if the channel name is allowed when creating a new channel.
+ * This action is pluggable.
+ *
+ * @param string $name
+ *
+ * @returns nil return if name is valid, or string describing the error state.
+ *
+ * We're currently only checking for an empty name or one that exceeds our storage limit (255 chars).
+ * 255 chars is probably going to create a mess on some pages.
+ * Plugins can set additional policies such as full name requirements, character sets, multi-byte
+ * length, etc.
+ *
+ */
function validate_channelname($name) {
@@ -44,8 +70,13 @@ function validate_channelname($name) {
}
-// Create the system channel for directory synchronisation - this has no account attached
-
+/**
+ * @function create_dir_account()
+ * Create a system channel - which has no account attached
+ *
+ * Currently unused.
+ *
+ */
function create_dir_account() {
create_identity(array(
@@ -57,6 +88,14 @@ function create_dir_account() {
));
}
+/**
+ * @channel_total()
+ * Return the total number of channels on this site. No filtering is performed.
+ *
+ * @returns int
+ * on error returns boolean false
+ *
+ */
function channel_total() {
$r = q("select channel_id from channel where true");
@@ -66,11 +105,24 @@ function channel_total() {
}
-
-// Required: name, nickname, account_id
-
-// optional: pageflags
-
+/**
+ * @function create_identity($arr)
+ * Create a new channel
+ * Also creates the related xchan, hubloc, profile, and "self" abook records, and an
+ * empty "Friends" group/collection for the new channel
+ *
+ * @param array $arr
+ * 'name' => full name of channel
+ * 'nickname' => "email/url-compliant" nickname
+ * 'account_id' => account_id to attach with this channel
+ * [other identity fields as desired]
+ *
+ * @returns array
+ * 'success' => boolean true or false
+ * 'message' => optional error text if success is false
+ * 'channel' => if successful the created channel array
+ */
+
function create_identity($arr) {
$a = get_app();
@@ -254,8 +306,21 @@ function create_identity($arr) {
}
-// set default identity for account_id to channel_id
-// if $force is false only do this if there is no current default
+
+/**
+ * @function set_default_login_identity($account_id, $channel_id, $force = true)
+ * Set default channel to be used on login
+ *
+ * @param int $account_id
+ * login account
+ * @param int $channel_id
+ * channel id to set as default for this account
+ * @param boolean force
+ * if true, set this default unconditionally
+ * if $force is false only do this if there is no existing default
+ *
+ * @returns nil
+ */
function set_default_login_identity($account_id,$channel_id,$force = true) {
$r = q("select account_default_channel from account where account_id = %d limit 1",
@@ -271,6 +336,21 @@ function set_default_login_identity($account_id,$channel_id,$force = true) {
}
}
+/**
+ * @function identity_basic_export($channel_id)
+ * Create an array representing the important channel information
+ * which would be necessary to create a nomadic identity clone. This includes
+ * most channel resources and connection information with the exception of content.
+ *
+ * @param int $channel_id
+ * Channel_id to export
+ *
+ *
+ * @returns array
+ * See function for details
+ *
+ */
+
function identity_basic_export($channel_id) {
/*
@@ -349,73 +429,24 @@ function identity_basic_export($channel_id) {
-function identity_basic_import($arr, $seize_primary = false) {
-
- $ret = array('result' => false );
-
- if($arr['channel']) {
- // import channel
-
- // create a new xchan (if necessary)
-
- // create a new hubloc and seize control if applicable
-
-
- }
- if($arr['profile']) {
- // FIXME - change profile assignment to a hash instead of an id we have to fix
-
-
- }
-
- if($arr['xchan']) {
-
- // import any xchan and hubloc which are not yet available on this site
- // Unset primary for all other hubloc on our own record if $seize_primary
-
-
- }
-
- if($arr['abook']) {
- // import the abook entries
-
-
- }
-
-
- if($seize_primary) {
-
- // send a refresh message to all our friends, telling them we've moved
-
- }
-
-
- $ret['result'] = true ;
- return $ret;
-
-
-}
-
-
-
/**
*
- * Function : profile_load
- * @parameter App $a
- * @parameter string $nickname
- * @parameter string $profile
+ * @function : profile_load(&$a, $nickname, $profile)
+ * Generate
+ * @param App $a
+ * @param string $nickname
+ * @param string $profile
*
- * Summary: Loads a profile into the page sidebar.
+ * Summary: Loads a profile into the App structure.
* The function requires a writeable copy of the main App structure, and the nickname
- * of a registered local account.
+ * of a valid channel.
*
- * If the viewer is an authenticated remote viewer, the profile displayed is the
- * one that has been configured for his/her viewing in the Contact manager.
- * Passing a non-zero profile ID can also allow a preview of a selected profile
- * by the owner.
+ * Permissions of the current observer are checked. If a restricted profile is available
+ * to the current observer, that will be loaded instead of the channel default profile.
+ *
+ * The channel owner can set $profile to a valid profile_guid to preview that profile.
*
- * Profile information is placed in the App structure for later retrieval.
- * Honours the owner's chosen theme for display.
+ * The channel default theme is also selected for use, unless over-riden elsewhere.
*
*/