more documentation work

This commit is contained in:
friendica 2013-12-03 17:33:48 -08:00
parent f57909d190
commit 657b842d64

View File

@ -4,6 +4,21 @@ require_once('include/zot.php');
require_once('include/crypto.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) { function identity_check_service_class($account_id) {
$ret = array('success' => false, $message => ''); $ret = array('success' => false, $message => '');
@ -24,11 +39,22 @@ function identity_check_service_class($account_id) {
return $ret; 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. * @function validate_channelname($name)
// Plugins can set additional policies such as full name requirements, character sets, multi-byte * Determine if the channel name is allowed when creating a new channel.
// length, etc. * 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) { 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() { function create_dir_account() {
create_identity(array( 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() { function channel_total() {
$r = q("select channel_id from channel where true"); $r = q("select channel_id from channel where true");
@ -66,10 +105,23 @@ function channel_total() {
} }
/**
// Required: name, nickname, account_id * @function create_identity($arr)
* Create a new channel
// optional: pageflags * 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) { function create_identity($arr) {
@ -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) { 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", $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) { 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 * @function : profile_load(&$a, $nickname, $profile)
* @parameter App $a * Generate
* @parameter string $nickname * @param App $a
* @parameter string $profile * @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 * 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 * Permissions of the current observer are checked. If a restricted profile is available
* one that has been configured for his/her viewing in the Contact manager. * to the current observer, that will be loaded instead of the channel default profile.
* Passing a non-zero profile ID can also allow a preview of a selected profile
* by the owner.
* *
* Profile information is placed in the App structure for later retrieval. * The channel owner can set $profile to a valid profile_guid to preview that profile.
* Honours the owner's chosen theme for display. *
* The channel default theme is also selected for use, unless over-riden elsewhere.
* *
*/ */