aboutsummaryrefslogtreecommitdiffstats
path: root/include/channel.php
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2017-11-04 18:18:10 -0700
committerzotlabs <mike@macgirvin.com>2017-11-04 18:18:10 -0700
commit7ef641e256aba64978ea9a41a31b78e4af5c68b0 (patch)
treeac7e80030e53bc0c91fb6a3757e04e4e65fb1b3b /include/channel.php
parent1d903655afdd8e49942c6d6c9ca1a7feadeaaa82 (diff)
parent6995d54a3cc162d87f881f6e206fa356230fd9e8 (diff)
downloadvolse-hubzilla-7ef641e256aba64978ea9a41a31b78e4af5c68b0.tar.gz
volse-hubzilla-7ef641e256aba64978ea9a41a31b78e4af5c68b0.tar.bz2
volse-hubzilla-7ef641e256aba64978ea9a41a31b78e4af5c68b0.zip
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge
Diffstat (limited to 'include/channel.php')
-rw-r--r--include/channel.php428
1 files changed, 274 insertions, 154 deletions
diff --git a/include/channel.php b/include/channel.php
index 399dff87e..6a6022aba 100644
--- a/include/channel.php
+++ b/include/channel.php
@@ -1,6 +1,7 @@
<?php
/**
* @file include/channel.php
+ * @brief Channel related functions.
*/
require_once('include/zot.php');
@@ -58,10 +59,8 @@ function identity_check_service_class($account_id) {
* Plugins can set additional policies such as full name requirements, character
* sets, multi-byte length, etc.
*
- * @hooks validate_channelname
- * * \e array \b name
* @param string $name
- * @returns nil return if name is valid, or string describing the error state.
+ * @return string describing the error state, or nil return if name is valid
*/
function validate_channelname($name) {
@@ -72,6 +71,12 @@ function validate_channelname($name) {
return t('Name too long');
$arr = ['name' => $name];
+ /**
+ * @hooks validate_channelname
+ * Used to validate the names used by a channel.
+ * * \e string \b name
+ * * \e string \b message - return error message
+ */
call_hooks('validate_channelname', $arr);
if (x($arr, 'message'))
@@ -259,7 +264,6 @@ function create_identity($arr) {
'channel_system' => intval($system),
'channel_expire_days' => intval($expire),
'channel_timezone' => App::$timezone
-
]
);
@@ -280,9 +284,19 @@ function create_identity($arr) {
$photo_type = null;
- $z = [ 'account' => $a[0], 'channel' => $r[0], 'photo_url' => '' ];
- call_hooks('create_channel_photo',$z);
-
+ $z = [
+ 'account' => $a[0],
+ 'channel' => $r[0],
+ 'photo_url' => ''
+ ];
+ /**
+ * @hooks create_channel_photo
+ * * \e array \b account
+ * * \e array \b channel
+ * * \e string \b photo_url - Return value
+ */
+ call_hooks('create_channel_photo', $z);
+
if($z['photo_url']) {
$photo_type = import_channel_photo_from_url($z['photo_url'],$arr['account_id'],$r[0]['channel_id']);
}
@@ -322,7 +336,7 @@ function create_identity($arr) {
]
);
if(! $r)
- logger('create_identity: Unable to store hub location');
+ logger('Unable to store hub location');
$newuid = $ret['channel']['channel_id'];
@@ -454,12 +468,18 @@ function create_identity($arr) {
require_once('include/follow.php');
if(! is_array($accts))
$accts = array($accts);
+
foreach($accts as $acct) {
if(trim($acct))
new_contact($newuid,trim($acct),$ret['channel'],false);
}
}
+ /**
+ * @hooks create_identity
+ * Called when creating a channel.
+ * * \e int - The UID of the created identity
+ */
call_hooks('create_identity', $newuid);
Zotlabs\Daemon\Master::Summon(array('Directory', $ret['channel']['channel_id']));
@@ -576,14 +596,14 @@ function channel_change_address($channel,$new_address) {
$old_address = $channel['channel_address'];
if($new_address === 'sys') {
- $ret['message'] = t('Reserved nickname. Please choose another.');
- return $ret;
- }
+ $ret['message'] = t('Reserved nickname. Please choose another.');
+ return $ret;
+ }
- if(check_webbie(array($new_address)) !== $new_address) {
- $ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
- return $ret;
- }
+ if(check_webbie(array($new_address)) !== $new_address) {
+ $ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
+ return $ret;
+ }
$r = q("update channel set channel_address = '%s' where channel_id = %d",
dbesc($new_address),
@@ -644,7 +664,7 @@ function channel_change_address($channel,$new_address) {
);
}
}
- }
+ }
Zotlabs\Daemon\Master::Summon(array('Notifier', 'refresh_all', $channel['channel_id']));
@@ -653,10 +673,6 @@ function channel_change_address($channel,$new_address) {
}
-
-
-
-
/**
* @brief Set default channel to be used on login.
*
@@ -664,9 +680,9 @@ function channel_change_address($channel,$new_address) {
* 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
+ * @param boolean $force (optional) default true
+ * - if true, set this default unconditionally
+ * - if $force is false only do this if there is no existing default
*/
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",
@@ -685,8 +701,6 @@ function set_default_login_identity($account_id, $channel_id, $force = true) {
/**
* @brief Return an array with default list of sections to export.
*
- * @hooks get_default_export_sections
- * * \e array \b sections
* @return array with default section names to export
*/
function get_default_export_sections() {
@@ -703,6 +717,11 @@ function get_default_export_sections() {
];
$cb = [ 'sections' => $sections ];
+ /**
+ * @hooks get_default_export_sections
+ * Called to get the default list of functional data groups to export in identity_basic_export().
+ * * \e array \b sections - return value
+ */
call_hooks('get_default_export_sections', $cb);
return $cb['sections'];
@@ -714,15 +733,11 @@ function get_default_export_sections() {
* which would be necessary to create a nomadic identity clone. This includes
* most channel resources and connection information with the exception of content.
*
- * @hooks identity_basic_export
- * * \e int \b channel_id
- * * \e array \b sections
- * * \e array \b data
* @param int $channel_id
* Channel_id to export
* @param array $sections (optional)
* Which sections to include in the export, default see get_default_export_sections()
- * @returns array
+ * @return array
* See function for details
*/
function identity_basic_export($channel_id, $sections = null) {
@@ -967,7 +982,7 @@ function identity_basic_export($channel_id, $sections = null) {
}
}
- if(in_array('items',$sections)) {
+ if(in_array('items', $sections)) {
/** @warning this may run into memory limits on smaller systems */
/** export three months of posts. If you want to export and import all posts you have to start with
@@ -991,22 +1006,42 @@ function identity_basic_export($channel_id, $sections = null) {
}
}
- $addon = [ 'channel_id' => $channel_id, 'sections' => $sections, 'data' => $ret];
- call_hooks('identity_basic_export',$addon);
+ $addon = [
+ 'channel_id' => $channel_id,
+ 'sections' => $sections,
+ 'data' => $ret
+ ];
+ /**
+ * @hooks identity_basic_export
+ * Called when exporting a channel's basic information for backup or transfer.
+ * * \e number \b channel_id - The channel ID
+ * * \e array \b sections
+ * * \e array \b data - The data will get returned
+ */
+ call_hooks('identity_basic_export', $addon);
$ret = $addon['data'];
return $ret;
}
-
-function identity_export_year($channel_id,$year,$month = 0) {
+/**
+ * @brief Export items for a year, or a month of a year.
+ *
+ * @param int $channel_id The channel ID
+ * @param number $year YYYY
+ * @param number $month (optional) 0-12, default 0 complete year
+ * @return array An associative array
+ * * \e array \b relocate - (optional)
+ * * \e array \b item - array with items encoded_item()
+ */
+function identity_export_year($channel_id, $year, $month = 0) {
if(! $year)
return array();
if($month && $month <= 12) {
- $target_month = sprintf('%02d',$month);
- $target_month_plus = sprintf('%02d',$month+1);
+ $target_month = sprintf('%02d', $month);
+ $target_month_plus = sprintf('%02d', $month+1);
}
else
$target_month = '01';
@@ -1017,13 +1052,13 @@ function identity_export_year($channel_id,$year,$month = 0) {
if($ch) {
$ret['relocate'] = [ 'channel_address' => $ch['channel_address'], 'url' => z_root()];
}
- $mindate = datetime_convert('UTC','UTC',$year . '-' . $target_month . '-01 00:00:00');
+ $mindate = datetime_convert('UTC', 'UTC', $year . '-' . $target_month . '-01 00:00:00');
if($month && $month < 12)
- $maxdate = datetime_convert('UTC','UTC',$year . '-' . $target_month_plus . '-01 00:00:00');
+ $maxdate = datetime_convert('UTC', 'UTC', $year . '-' . $target_month_plus . '-01 00:00:00');
else
- $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
+ $maxdate = datetime_convert('UTC', 'UTC', $year+1 . '-01-01 00:00:00');
- $r = q("select * from item where ( item_wall = 1 or item_type != %d ) and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created",
+ $r = q("select * from item where ( item_wall = 1 or item_type != %d ) and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created",
intval(ITEM_TYPE_POST),
intval($channel_id),
dbesc($mindate),
@@ -1033,9 +1068,9 @@ function identity_export_year($channel_id,$year,$month = 0) {
if($r) {
$ret['item'] = array();
xchan_query($r);
- $r = fetch_post_tags($r,true);
+ $r = fetch_post_tags($r, true);
foreach($r as $rr)
- $ret['item'][] = encode_item($rr,true);
+ $ret['item'][] = encode_item($rr, true);
}
return $ret;
@@ -1274,6 +1309,7 @@ function profile_edit_menu($uid) {
foreach($r as $rr) {
if(!($multi_profiles || $rr['is_default']))
continue;
+
$ret['menu']['entries'][] = array(
'photo' => $rr['thumb'],
'id' => $rr['id'],
@@ -1298,8 +1334,8 @@ function profile_edit_menu($uid) {
*
* @param array $profile
* @param int $block
- * @param boolean $show_connect
- * @param mixed $zcard
+ * @param boolean $show_connect (optional) default true
+ * @param mixed $zcard (optional) default false
*
* @return HTML string suitable for sidebar inclusion
* Exceptions: Returns empty string if passed $profile is wrong type or not populated
@@ -1327,6 +1363,10 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
$profile['picdate'] = urlencode($profile['picdate']);
+ /**
+ * @hooks profile_sidebar_enter
+ * Called before generating the 'channel sidebar' or mini-profile.
+ */
call_hooks('profile_sidebar_enter', $profile);
if($show_connect) {
@@ -1409,22 +1449,30 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
'$reddress' => $reddress,
'$rating' => '',
'$contact_block' => $contact_block,
- '$editmenu' => profile_edit_menu($profile['uid'])
+ '$editmenu' => profile_edit_menu($profile['uid'])
));
- $arr = array('profile' => $profile, 'entry' => $o);
+ $arr = [
+ 'profile' => $profile,
+ 'entry' => $o
+ ];
+ /**
+ * @hooks profile_sidebar
+ * Called when generating the 'channel sidebar' or mini-profile.
+ * * \e array \b profile
+ * * \e string \b entry - The parsed HTML template
+ */
call_hooks('profile_sidebar', $arr);
return $arr['entry'];
-
}
function gender_icon($gender) {
// logger('gender: ' . $gender);
- // This can easily get throw off if the observer language is different
+ // This can easily get throw off if the observer language is different
// than the channel owner language.
if(strpos(strtolower($gender),strtolower(t('Female'))) !== false)
@@ -1622,16 +1670,21 @@ function get_my_address() {
* If somebody arrives at our site using a zid, add their xchan to our DB if we
* don't have it already.
* And if they aren't already authenticated here, attempt reverse magic auth.
- *
- * @hooks zid_init
- * * \e string \b zid - their zid
- * * \e string \b url - the destination url
*/
function zid_init() {
$tmp_str = get_my_address();
if(validate_email($tmp_str)) {
- $arr = array('zid' => $tmp_str, 'url' => App::$cmd);
- call_hooks('zid_init',$arr);
+ $arr = [
+ 'zid' => $tmp_str,
+ 'url' => App::$cmd
+ ];
+ /**
+ * @hooks zid_init
+ * * \e string \b zid - their zid
+ * * \e string \b url - the destination url
+ */
+ call_hooks('zid_init', $arr);
+
if(! local_channel()) {
$r = q("select * from hubloc where hubloc_addr = '%s' order by hubloc_connected desc limit 1",
dbesc($tmp_str)
@@ -1641,7 +1694,8 @@ function zid_init() {
}
if($r && remote_channel() && remote_channel() === $r[0]['hubloc_hash'])
return;
- logger('zid_init: not authenticated. Invoking reverse magic-auth for ' . $tmp_str);
+
+ logger('Not authenticated. Invoking reverse magic-auth for ' . $tmp_str);
// try to avoid recursion - but send them home to do a proper magic auth
$query = App::$query_string;
$query = str_replace(array('?zid=','&zid='),array('?rzid=','&rzid='),$query);
@@ -1650,7 +1704,7 @@ function zid_init() {
goaway($r[0]['hubloc_url'] . '/magic' . '?f=&rev=1&owa=1&dest=' . z_root() . $dest);
}
else
- logger('zid_init: no hubloc found.');
+ logger('No hubloc found.');
}
}
}
@@ -1673,21 +1727,23 @@ function zat_init() {
}
-
-
-// Used from within PCSS themes to set theme parameters. If there's a
-// puid request variable, that is the "page owner" and normally their theme
-// settings take precedence; unless a local user sets the "always_my_theme"
-// system pconfig, which means they don't want to see anybody else's theme
-// settings except their own while on this site.
-
+/**
+ * @brief Used from within PCSS themes to set theme parameters.
+ *
+ * If there's a puid request variable, that is the "page owner" and normally
+ * their theme settings take precedence; unless a local user sets the "always_my_theme"
+ * system pconfig, which means they don't want to see anybody else's theme
+ * settings except their own while on this site.
+ *
+ * @return int
+ */
function get_theme_uid() {
$uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
if(local_channel()) {
if((get_pconfig(local_channel(),'system','always_my_theme')) || (! $uid))
return local_channel();
}
- if(! $uid) {
+ if(! $uierd) {
$x = get_sys_channel();
if($x)
return $x['channel_id'];
@@ -1700,9 +1756,9 @@ function get_theme_uid() {
* @brief Retrieves the path of the default_profile_photo for this system
* with the specified size.
*
-* @param int $size
-* one of (300, 80, 48)
-* @returns string with path to profile photo
+* @param int $size (optional) default 300
+* one of (300, 80, 48)
+* @return string with path to profile photo
*/
function get_default_profile_photo($size = 300) {
$scheme = get_config('system','default_profile_photo');
@@ -1715,9 +1771,9 @@ function get_default_profile_photo($size = 300) {
/**
* @brief Test whether a given identity is NOT a member of the Hubzilla.
*
- * @param string $s;
+ * @param string $s
* xchan_hash of the identity in question
- * @returns boolean true or false
+ * @return boolean true or false
*/
function is_foreigner($s) {
return((strpbrk($s, '.:@')) ? true : false);
@@ -1726,14 +1782,21 @@ function is_foreigner($s) {
/**
* @brief Test whether a given identity is a member of the Hubzilla.
*
- * @param string $s;
+ * @param string $s
* xchan_hash of the identity in question
- * @returns boolean true or false
+ * @return boolean true or false
*/
function is_member($s) {
return((is_foreigner($s)) ? false : true);
}
+/**
+ * @brief Get chatpresence status for nick.
+ *
+ * @param string $nick
+ * @return array An associative array with
+ * * \e bool \b result
+ */
function get_online_status($nick) {
$ret = array('result' => false);
@@ -1748,6 +1811,7 @@ function get_online_status($nick) {
$hide = get_pconfig($r[0]['channel_id'],'system','hide_online_status');
if($hide)
return $ret;
+
$x = q("select cp_status from chatpresence where cp_xchan = '%s' and cp_room = 0 limit 1",
dbesc($r[0]['channel_hash'])
);
@@ -1759,6 +1823,12 @@ function get_online_status($nick) {
}
+/**
+ * @brief
+ *
+ * @param string $webbie
+ * @return array|boolean|string
+ */
function remote_online_status($webbie) {
$result = false;
@@ -1782,11 +1852,10 @@ function remote_online_status($webbie) {
/**
- * @brief
+ * @brief Return the parsed identity selector HTML template.
*
- * @return string
+ * @return string with parsed HTML channel_id_selet template
*/
-
function identity_selector() {
if(local_channel()) {
$r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and channel_removed = 0 order by channel_name ",
@@ -1798,6 +1867,7 @@ function identity_selector() {
'$channels' => $r,
'$selected' => local_channel()
));
+
return $o;
}
}
@@ -1809,14 +1879,17 @@ function identity_selector() {
function is_public_profile() {
if(! local_channel())
return false;
+
if(intval(get_config('system','block_public')))
return false;
+
$channel = App::get_channel();
if($channel) {
$perm = \Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_profile');
if($perm == PERMS_PUBLIC)
return true;
}
+
return false;
}
@@ -1861,7 +1934,7 @@ function get_profile_fields_advanced($filter = 0) {
*
* @param int $channel_id
* The channel to disable notifications for
- * @returns int
+ * @return int
* Current notification flag value. Send this to notifications_on() to restore the channel settings when finished
* with the activity requiring notifications_off();
*/
@@ -1993,13 +2066,14 @@ function get_cover_photo($channel_id,$format = 'bbcode', $res = PHOTO_RES_COVER_
return $output;
}
+
/**
- * @brief
+ * @brief Return parsed HTML zcard template.
*
* @param array $channel
- * @param string $observer_hash
- * @param array $args
- * @return string
+ * @param string $observer_hash (optional)
+ * @param array $args (optional)
+ * @return string parsed HTML from \e zcard template
*/
function get_zcard($channel, $observer_hash = '', $args = array()) {
@@ -2067,6 +2141,14 @@ function get_zcard($channel, $observer_hash = '', $args = array()) {
}
+/**
+ * @brief Return parsed HTML embed zcard template.
+ *
+ * @param array $channel
+ * @param string $observer_hash (optional)
+ * @param array $args (optional)
+ * @return string parsed HTML from \e zcard_embed template
+ */
function get_zcard_embed($channel, $observer_hash = '', $args = array()) {
logger('get_zcard_embed');
@@ -2133,10 +2215,12 @@ function get_zcard_embed($channel, $observer_hash = '', $args = array()) {
}
/**
- * @brief
+ * @brief Get a channel array from a channel nickname.
*
- * @param string $nick
- * @return mixed
+ * @param string $nick - A channel_address nickname
+ * @return array|boolean
+ * - array with channel entry
+ * - false if no channel with $nick was found
*/
function channelx_by_nick($nick) {
$r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and channel_removed = 0 LIMIT 1",
@@ -2147,10 +2231,10 @@ function channelx_by_nick($nick) {
}
/**
- * @brief
+ * @brief Get a channel array by a channel_hash.
*
* @param string $hash
- * @return mixed
+ * @return array|boolean false if channel ID not found, otherwise the channel array
*/
function channelx_by_hash($hash) {
$r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and channel_removed = 0 LIMIT 1",
@@ -2161,13 +2245,13 @@ function channelx_by_hash($hash) {
}
/**
- * @brief
+ * @brief Get a channel array by a channel ID.
*
- * @param int $id
- * @return mixed
+ * @param int $id A channel ID
+ * @return array|boolean false if channel ID not found, otherwise the channel array
*/
function channelx_by_n($id) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and channel_removed = 0 LIMIT 1",
+ $r = q("SELECT * FROM channel LEFT JOIN xchan ON channel_hash = xchan_hash WHERE channel_id = %d AND channel_removed = 0 LIMIT 1",
dbesc($id)
);
@@ -2177,7 +2261,7 @@ function channelx_by_n($id) {
/**
* @brief
*
- * @param string $channel
+ * @param array $channel
* @return string
*/
function channel_reddress($channel) {
@@ -2188,67 +2272,77 @@ function channel_reddress($channel) {
}
+/**
+ * @brief Get manual channel conversation update config.
+ *
+ * Check the channel config \e manual_conversation_update, if not set fall back
+ * to global system config, defaults to 1 if nothing set.
+ *
+ * @param int $channel_id
+ * @return int
+ */
function channel_manual_conv_update($channel_id) {
- $x = get_pconfig($channel_id, 'system','manual_conversation_update');
+ $x = get_pconfig($channel_id, 'system', 'manual_conversation_update');
if($x === false)
- $x = get_config('system','manual_conversation_update', 1);
+ $x = get_config('system', 'manual_conversation_update', 1);
return intval($x);
}
+/**
+ * @brief Return parsed HTML remote_login template.
+ *
+ * @return string with parsed HTML from \e remote_login template
+ */
function remote_login() {
+ $o = replace_macros(get_markup_template('remote_login.tpl'),array(
+ '$title' => t('Remote Authentication'),
+ '$desc' => t('Enter your channel address (e.g. channel@example.com)'),
+ '$submit' => t('Authenticate')
+ ));
- $o = replace_macros(get_markup_template('remote_login.tpl'),array(
- '$title' => t('Remote Authentication'),
- '$desc' => t('Enter your channel address (e.g. channel@example.com)'),
- '$submit' => t('Authenticate')
- ));
- return $o;
-
+ return $o;
}
function channel_store_lowlevel($arr) {
- $store = [
- 'channel_account_id' => ((array_key_exists('channel_account_id',$arr)) ? $arr['channel_account_id'] : '0'),
- 'channel_primary' => ((array_key_exists('channel_primary',$arr)) ? $arr['channel_primary'] : '0'),
- 'channel_name' => ((array_key_exists('channel_name',$arr)) ? $arr['channel_name'] : ''),
- 'channel_address' => ((array_key_exists('channel_address',$arr)) ? $arr['channel_address'] : ''),
- 'channel_guid' => ((array_key_exists('channel_guid',$arr)) ? $arr['channel_guid'] : ''),
- 'channel_guid_sig' => ((array_key_exists('channel_guid_sig',$arr)) ? $arr['channel_guid_sig'] : ''),
- 'channel_hash' => ((array_key_exists('channel_hash',$arr)) ? $arr['channel_hash'] : ''),
- 'channel_timezone' => ((array_key_exists('channel_timezone',$arr)) ? $arr['channel_timezone'] : 'UTC'),
- 'channel_location' => ((array_key_exists('channel_location',$arr)) ? $arr['channel_location'] : ''),
- 'channel_theme' => ((array_key_exists('channel_theme',$arr)) ? $arr['channel_theme'] : ''),
- 'channel_startpage' => ((array_key_exists('channel_startpage',$arr)) ? $arr['channel_startpage'] : ''),
- 'channel_pubkey' => ((array_key_exists('channel_pubkey',$arr)) ? $arr['channel_pubkey'] : ''),
- 'channel_prvkey' => ((array_key_exists('channel_prvkey',$arr)) ? $arr['channel_prvkey'] : ''),
- 'channel_notifyflags' => ((array_key_exists('channel_notifyflags',$arr)) ? $arr['channel_notifyflags'] : '65535'),
- 'channel_pageflags' => ((array_key_exists('channel_pageflags',$arr)) ? $arr['channel_pageflags'] : '0'),
- 'channel_dirdate' => ((array_key_exists('channel_dirdate',$arr)) ? $arr['channel_dirdate'] : NULL_DATE),
- 'channel_lastpost' => ((array_key_exists('channel_lastpost',$arr)) ? $arr['channel_lastpost'] : NULL_DATE),
- 'channel_deleted' => ((array_key_exists('channel_deleted',$arr)) ? $arr['channel_deleted'] : NULL_DATE),
- 'channel_max_anon_mail' => ((array_key_exists('channel_max_anon_mail',$arr)) ? $arr['channel_max_anon_mail'] : '10'),
- 'channel_max_friend_req' => ((array_key_exists('channel_max_friend_req',$arr)) ? $arr['channel_max_friend_req'] : '10'),
- 'channel_expire_days' => ((array_key_exists('channel_expire_days',$arr)) ? $arr['channel_expire_days'] : '0'),
- 'channel_passwd_reset' => ((array_key_exists('channel_passwd_reset',$arr)) ? $arr['channel_passwd_reset'] : ''),
- 'channel_default_group' => ((array_key_exists('channel_default_group',$arr)) ? $arr['channel_default_group'] : ''),
- 'channel_allow_cid' => ((array_key_exists('channel_allow_cid',$arr)) ? $arr['channel_allow_cid'] : ''),
- 'channel_allow_gid' => ((array_key_exists('channel_allow_gid',$arr)) ? $arr['channel_allow_gid'] : ''),
- 'channel_deny_cid' => ((array_key_exists('channel_deny_cid',$arr)) ? $arr['channel_deny_cid'] : ''),
- 'channel_deny_gid' => ((array_key_exists('channel_deny_gid',$arr)) ? $arr['channel_deny_gid'] : ''),
- 'channel_removed' => ((array_key_exists('channel_removed',$arr)) ? $arr['channel_removed'] : '0'),
- 'channel_system' => ((array_key_exists('channel_system',$arr)) ? $arr['channel_system'] : '0'),
-
+ $store = [
+ 'channel_account_id' => ((array_key_exists('channel_account_id',$arr)) ? $arr['channel_account_id'] : '0'),
+ 'channel_primary' => ((array_key_exists('channel_primary',$arr)) ? $arr['channel_primary'] : '0'),
+ 'channel_name' => ((array_key_exists('channel_name',$arr)) ? $arr['channel_name'] : ''),
+ 'channel_address' => ((array_key_exists('channel_address',$arr)) ? $arr['channel_address'] : ''),
+ 'channel_guid' => ((array_key_exists('channel_guid',$arr)) ? $arr['channel_guid'] : ''),
+ 'channel_guid_sig' => ((array_key_exists('channel_guid_sig',$arr)) ? $arr['channel_guid_sig'] : ''),
+ 'channel_hash' => ((array_key_exists('channel_hash',$arr)) ? $arr['channel_hash'] : ''),
+ 'channel_timezone' => ((array_key_exists('channel_timezone',$arr)) ? $arr['channel_timezone'] : 'UTC'),
+ 'channel_location' => ((array_key_exists('channel_location',$arr)) ? $arr['channel_location'] : ''),
+ 'channel_theme' => ((array_key_exists('channel_theme',$arr)) ? $arr['channel_theme'] : ''),
+ 'channel_startpage' => ((array_key_exists('channel_startpage',$arr)) ? $arr['channel_startpage'] : ''),
+ 'channel_pubkey' => ((array_key_exists('channel_pubkey',$arr)) ? $arr['channel_pubkey'] : ''),
+ 'channel_prvkey' => ((array_key_exists('channel_prvkey',$arr)) ? $arr['channel_prvkey'] : ''),
+ 'channel_notifyflags' => ((array_key_exists('channel_notifyflags',$arr)) ? $arr['channel_notifyflags'] : '65535'),
+ 'channel_pageflags' => ((array_key_exists('channel_pageflags',$arr)) ? $arr['channel_pageflags'] : '0'),
+ 'channel_dirdate' => ((array_key_exists('channel_dirdate',$arr)) ? $arr['channel_dirdate'] : NULL_DATE),
+ 'channel_lastpost' => ((array_key_exists('channel_lastpost',$arr)) ? $arr['channel_lastpost'] : NULL_DATE),
+ 'channel_deleted' => ((array_key_exists('channel_deleted',$arr)) ? $arr['channel_deleted'] : NULL_DATE),
+ 'channel_max_anon_mail' => ((array_key_exists('channel_max_anon_mail',$arr)) ? $arr['channel_max_anon_mail'] : '10'),
+ 'channel_max_friend_req' => ((array_key_exists('channel_max_friend_req',$arr)) ? $arr['channel_max_friend_req'] : '10'),
+ 'channel_expire_days' => ((array_key_exists('channel_expire_days',$arr)) ? $arr['channel_expire_days'] : '0'),
+ 'channel_passwd_reset' => ((array_key_exists('channel_passwd_reset',$arr)) ? $arr['channel_passwd_reset'] : ''),
+ 'channel_default_group' => ((array_key_exists('channel_default_group',$arr)) ? $arr['channel_default_group'] : ''),
+ 'channel_allow_cid' => ((array_key_exists('channel_allow_cid',$arr)) ? $arr['channel_allow_cid'] : ''),
+ 'channel_allow_gid' => ((array_key_exists('channel_allow_gid',$arr)) ? $arr['channel_allow_gid'] : ''),
+ 'channel_deny_cid' => ((array_key_exists('channel_deny_cid',$arr)) ? $arr['channel_deny_cid'] : ''),
+ 'channel_deny_gid' => ((array_key_exists('channel_deny_gid',$arr)) ? $arr['channel_deny_gid'] : ''),
+ 'channel_removed' => ((array_key_exists('channel_removed',$arr)) ? $arr['channel_removed'] : '0'),
+ 'channel_system' => ((array_key_exists('channel_system',$arr)) ? $arr['channel_system'] : '0'),
'channel_moved' => ((array_key_exists('channel_moved',$arr)) ? $arr['channel_moved'] : ''),
'channel_password' => ((array_key_exists('channel_password',$arr)) ? $arr['channel_password'] : ''),
'channel_salt' => ((array_key_exists('channel_salt',$arr)) ? $arr['channel_salt'] : '')
-
];
- return create_table_from_array('channel',$store);
-
+ return create_table_from_array('channel', $store);
}
function profile_store_lowlevel($arr) {
@@ -2304,16 +2398,22 @@ function profile_store_lowlevel($arr) {
}
-// Included here for completeness, but this is a very dangerous operation.
-// It is the caller's responsibility to confirm the requestor's intent and
-// authorisation to do this.
-
-function account_remove($account_id,$local = true,$unset_session = true) {
+/**
+ * Included here for completeness, but this is a very dangerous operation.
+ * It is the caller's responsibility to confirm the requestor's intent and
+ * authorisation to do this.
+ *
+ * @param int $account_id
+ * @param boolean $local (optional) default true
+ * @param boolean $unset_session (optional) default true
+ * @return boolean|array
+ */
+function account_remove($account_id, $local = true, $unset_session = true) {
logger('account_remove: ' . $account_id);
if(! intval($account_id)) {
- logger('account_remove: no account.');
+ logger('No account.');
return false;
}
@@ -2334,7 +2434,7 @@ function account_remove($account_id,$local = true,$unset_session = true) {
$account_email=$r[0]['account_email'];
if(! $r) {
- logger('account_remove: No account with id: ' . $account_id);
+ logger('No account with id: ' . $account_id);
return false;
}
@@ -2351,7 +2451,6 @@ function account_remove($account_id,$local = true,$unset_session = true) {
intval($account_id)
);
-
if ($unset_session) {
App::$session->nuke();
notice( sprintf(t('Account \'%s\' deleted'),$account_email) . EOL);
@@ -2364,8 +2463,6 @@ function account_remove($account_id,$local = true,$unset_session = true) {
/**
* @brief Removes a channel.
*
- * @hooks channel_remove
- * * \e array \b entry from channel tabel for $channel_id
* @param int $channel_id
* @param boolean $local default true
* @param boolean $unset_session default false
@@ -2386,6 +2483,11 @@ function channel_remove($channel_id, $local = true, $unset_session = false) {
$channel = $r[0];
+ /**
+ * @hooks channel_remove
+ * Called when removing a channel.
+ * * \e array with entry from channel tabel for $channel_id
+ */
call_hooks('channel_remove', $r[0]);
if(! $local) {
@@ -2457,6 +2559,7 @@ function channel_remove($channel_id, $local = true, $unset_session = false) {
$rr = q("update account set account_default_channel = %d where account_id = %d",
intval($r[0]['channel_id']),
intval(App::$account['account_id']));
+
logger("Default channel deleted, changing default to channel_id " . $r[0]['channel_id']);
}
else {
@@ -2531,20 +2634,30 @@ function channel_codeallowed($channel_id) {
return true;
return false;
-
}
function anon_identity_init($reqvars) {
- $x = [ 'request_vars' => $reqvars, 'xchan' => null, 'success' => 'unset' ];
- call_hooks('anon_identity_init',$x);
+ $x = [
+ 'request_vars' => $reqvars,
+ 'xchan' => null,
+ 'success' => 'unset'
+ ];
+ /**
+ * @hooks anon_identity_init
+ * * \e array \b request_vars
+ * * \e string \b xchan - return value
+ * * \e string|int \b success - Must be a number, so xchan return value gets used
+ */
+ call_hooks('anon_identity_init', $x);
+
if($x['success'] !== 'unset' && intval($x['success']) && $x['xchan'])
return $x['xchan'];
- // allow a captcha handler to over-ride
+ // allow a captcha handler to over-ride
if($x['success'] !== 'unset' && (intval($x['success']) === 0))
- return false;
-
+ return false;
+
$anon_name = strip_tags(trim($reqvars['anonname']));
$anon_email = strip_tags(trim($reqvars['anonmail']));
@@ -2571,7 +2684,7 @@ function anon_identity_init($reqvars) {
);
if(! $x) {
- xchan_store_lowlevel([
+ xchan_store_lowlevel([
'xchan_guid' => $anon_email,
'xchan_hash' => $hash,
'xchan_name' => $anon_name,
@@ -2579,7 +2692,7 @@ function anon_identity_init($reqvars) {
'xchan_network' => 'unknown',
'xchan_name_date' => datetime_convert()
]);
-
+
$x = q("select * from xchan where xchan_guid = '%s' and xchan_hash = '%s' and xchan_network = 'unknown' limit 1",
dbesc($anon_email),
@@ -2597,13 +2710,18 @@ function anon_identity_init($reqvars) {
dbesc($anon_email),
dbesc($hash)
);
-
}
return $x[0];
}
+/**
+ * @brief Create a channel array from proxy channel (pchan).
+ *
+ * @param array $pchan The proxy channel
+ * @return array channel array
+ */
function pchan_to_chan($pchan) {
$chan = $pchan;
$chan['channel_address'] = $pchan['pchan_guid'];
@@ -2611,5 +2729,7 @@ function pchan_to_chan($pchan) {
$chan['channel_pubkey'] = $pchan['pchan_pubkey'];
$chan['channel_prvkey'] = $pchan['pchan_prvkey'];
$chan['channel_name'] = $pchan['xchan_name'];
+
return $chan;
-} \ No newline at end of file
+}
+