Merge branch 'tres'
This commit is contained in:
commit
51db753638
64
boot.php
64
boot.php
@ -399,36 +399,6 @@ define ( 'VNOTIFY_INTRO', 0x0200 );
|
||||
define ( 'VNOTIFY_REGISTER', 0x0400 );
|
||||
|
||||
|
||||
// We need a flag to designate that a site is a
|
||||
// global directory mirror, but probably doesn't
|
||||
// belong in hubloc.
|
||||
// This indicates a need for an 'xsite' table
|
||||
// which contains only sites and not people.
|
||||
// Then we might have to revisit hubloc as a
|
||||
// linked structure between xchan and xsite
|
||||
|
||||
define ( 'HUBLOC_FLAGS_PRIMARY', 0x0001);
|
||||
define ( 'HUBLOC_FLAGS_UNVERIFIED', 0x0002);
|
||||
define ( 'HUBLOC_FLAGS_ORPHANCHECK', 0x0004);
|
||||
define ( 'HUBLOC_FLAGS_DELETED', 0x1000);
|
||||
|
||||
define ( 'XCHAN_FLAGS_NORMAL', 0x0000);
|
||||
define ( 'XCHAN_FLAGS_HIDDEN', 0x0001);
|
||||
define ( 'XCHAN_FLAGS_ORPHAN', 0x0002);
|
||||
define ( 'XCHAN_FLAGS_CENSORED', 0x0004);
|
||||
define ( 'XCHAN_FLAGS_SELFCENSORED', 0x0008);
|
||||
define ( 'XCHAN_FLAGS_SYSTEM', 0x0010);
|
||||
define ( 'XCHAN_FLAGS_PUBFORUM', 0x0020);
|
||||
define ( 'XCHAN_FLAGS_DELETED', 0x1000);
|
||||
/*
|
||||
* Traficlights for Administration of HubLoc
|
||||
* to detect problems in inter server communication
|
||||
*/
|
||||
define ('HUBLOC_NOTUSED', 0x0000);
|
||||
define ('HUBLOC_SEND_ERROR', 0x0001);
|
||||
define ('HUBLOC_RECEIVE_ERROR', 0x0002);
|
||||
define ('HUBLOC_WORKS', 0x0004);
|
||||
define ('HUBLOC_OFFLINE', 0x0008);
|
||||
|
||||
/**
|
||||
* Tag/term types
|
||||
@ -550,41 +520,25 @@ define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 );
|
||||
*/
|
||||
|
||||
define ( 'ITEM_VISIBLE', 0x0000);
|
||||
define ( 'ITEM_HIDDEN', 0x0001);
|
||||
//define ( 'ITEM_HIDDEN', 0x0001);
|
||||
define ( 'ITEM_BLOCKED', 0x0002);
|
||||
define ( 'ITEM_MODERATED', 0x0004);
|
||||
define ( 'ITEM_SPAM', 0x0008);
|
||||
define ( 'ITEM_DELETED', 0x0010);
|
||||
//define ( 'ITEM_DELETED', 0x0010);
|
||||
define ( 'ITEM_UNPUBLISHED', 0x0020);
|
||||
define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item
|
||||
//define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item
|
||||
define ( 'ITEM_DELAYED_PUBLISH', 0x0080);
|
||||
define ( 'ITEM_BUILDBLOCK', 0x0100); // Named thusly to make sure nobody confuses this with ITEM_BLOCKED
|
||||
define ( 'ITEM_PDL', 0x0200); // Page Description Language - e.g. Comanche
|
||||
//define ( 'ITEM_PDL', 0x0200); // Page Description Language - e.g. Comanche
|
||||
define ( 'ITEM_BUG', 0x0400); // Is a bug, can be used by the internal bug tracker
|
||||
define ( 'ITEM_PENDING_REMOVE', 0x0800); // deleted, notification period has lapsed
|
||||
|
||||
/**
|
||||
* Item Flags
|
||||
*/
|
||||
|
||||
define ( 'ITEM_ORIGIN', 0x0001);
|
||||
define ( 'ITEM_UNSEEN', 0x0002);
|
||||
define ( 'ITEM_STARRED', 0x0004);
|
||||
define ( 'ITEM_UPLINK', 0x0008);
|
||||
define ( 'ITEM_CONSENSUS', 0x0010); // an item which may present agree/disagree/abstain options
|
||||
define ( 'ITEM_WALL', 0x0020);
|
||||
define ( 'ITEM_THREAD_TOP', 0x0040);
|
||||
define ( 'ITEM_NOTSHOWN', 0x0080); // technically visible but not normally shown (e.g. like/dislike)
|
||||
define ( 'ITEM_NSFW', 0x0100);
|
||||
define ( 'ITEM_RELAY', 0x0200); // used only in the communication layers, not stored
|
||||
define ( 'ITEM_MENTIONSME', 0x0400);
|
||||
define ( 'ITEM_NOCOMMENT', 0x0800); // commenting/followups are disabled
|
||||
define ( 'ITEM_OBSCURED', 0x1000); // bit-mangled to protect from casual browsing by site admin
|
||||
define ( 'ITEM_VERIFIED', 0x2000); // Signature verification was successful
|
||||
define ( 'ITEM_RETAINED', 0x4000); // We looked at this item once to decide whether or not to expire it, and decided not to.
|
||||
define ( 'ITEM_RSS', 0x8000); // Item comes from a feed. Use this to decide whether to link the title
|
||||
// Don't make us evaluate this same item again.
|
||||
|
||||
define ( 'ITEM_TYPE_POST', 0 );
|
||||
define ( 'ITEM_TYPE_BLOCK', 1 );
|
||||
define ( 'ITEM_TYPE_PDL', 2 );
|
||||
define ( 'ITEM_TYPE_WEBPAGE', 3 );
|
||||
|
||||
define ( 'DBTYPE_MYSQL', 0 );
|
||||
define ( 'DBTYPE_POSTGRES', 1 );
|
||||
|
||||
|
@ -22,9 +22,8 @@ function rconnect_url($channel_id,$xchan) {
|
||||
if(($r) && ($r[0]['xchan_follow']))
|
||||
return $r[0]['xchan_follow'];
|
||||
|
||||
$r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d )>0 limit 1",
|
||||
dbesc($xchan),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
$r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and hubloc_primary = 1 limit 1",
|
||||
dbesc($xchan)
|
||||
);
|
||||
|
||||
if($r)
|
||||
@ -272,14 +271,12 @@ function channel_remove($channel_id, $local = true, $unset_session=true) {
|
||||
);
|
||||
|
||||
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
$r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
|
||||
|
||||
$r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
$r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
|
||||
@ -312,8 +309,7 @@ function channel_remove($channel_id, $local = true, $unset_session=true) {
|
||||
intval($channel_id)
|
||||
);
|
||||
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s' and hubloc_url = '%s' ",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
$r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s' and hubloc_url = '%s' ",
|
||||
dbesc($channel['channel_hash']),
|
||||
dbesc(z_root())
|
||||
);
|
||||
@ -322,16 +318,14 @@ function channel_remove($channel_id, $local = true, $unset_session=true) {
|
||||
|
||||
$hublocs = 0;
|
||||
|
||||
$r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and not (hubloc_flags & %d)>0",
|
||||
dbesc($channel['channel_hash']),
|
||||
intval(HUBLOC_FLAGS_DELETED)
|
||||
$r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
if($r)
|
||||
$hublocs = count($r);
|
||||
|
||||
if(! $hublocs) {
|
||||
$r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s' ",
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
$r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s' ",
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
}
|
||||
@ -374,10 +368,8 @@ function mark_orphan_hubsxchans() {
|
||||
if($dirmode == DIRECTORY_MODE_NORMAL)
|
||||
return;
|
||||
|
||||
$r = q("update hubloc set hubloc_status = (hubloc_status | %d) where (hubloc_status & %d) = 0
|
||||
$r = q("update hubloc set hubloc_error = 1 where hubloc_error = 0
|
||||
and hubloc_network = 'zot' and hubloc_connected < %s - interval %s",
|
||||
intval(HUBLOC_OFFLINE),
|
||||
intval(HUBLOC_OFFLINE),
|
||||
db_utcnow(), db_quoteinterval('36 day')
|
||||
);
|
||||
|
||||
@ -394,27 +386,21 @@ function mark_orphan_hubsxchans() {
|
||||
// }
|
||||
|
||||
|
||||
$r = q("select hubloc_id, hubloc_hash from hubloc where (hubloc_status & %d)>0 and not (hubloc_flags & %d)>0",
|
||||
intval(HUBLOC_OFFLINE),
|
||||
intval(HUBLOC_FLAGS_ORPHANCHECK)
|
||||
);
|
||||
$r = q("select hubloc_id, hubloc_hash from hubloc where hubloc_error = 0 and hubloc_orphancheck = 0");
|
||||
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
|
||||
// see if any other hublocs are still alive for this channel
|
||||
|
||||
$x = q("select * from hubloc where hubloc_hash = '%s' and not (hubloc_status & %d)>0",
|
||||
dbesc($rr['hubloc_hash']),
|
||||
intval(HUBLOC_OFFLINE)
|
||||
$x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_error = 0",
|
||||
dbesc($rr['hubloc_hash'])
|
||||
);
|
||||
if($x) {
|
||||
|
||||
// yes - if the xchan was marked as an orphan, undo it
|
||||
|
||||
$y = q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
$y = q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
|
||||
dbesc($rr['hubloc_hash'])
|
||||
);
|
||||
|
||||
@ -423,16 +409,14 @@ function mark_orphan_hubsxchans() {
|
||||
|
||||
// nope - mark the xchan as an orphan
|
||||
|
||||
$y = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
$y = q("update xchan set xchan_orphan = 1 where xchan_hash = '%s'",
|
||||
dbesc($rr['hubloc_hash'])
|
||||
);
|
||||
}
|
||||
|
||||
// mark that we've checked this entry so we don't need to do it again
|
||||
|
||||
$y = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_ORPHANCHECK),
|
||||
$y = q("update hubloc set hubloc_orphancheck = 1 where hubloc_id = %d",
|
||||
dbesc($rr['hubloc_id'])
|
||||
);
|
||||
}
|
||||
@ -501,13 +485,11 @@ function remove_all_xchan_resources($xchan, $channel_id = 0) {
|
||||
|
||||
// directory servers need to keep the record around for sync purposes - mark it deleted
|
||||
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
$r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
|
||||
dbesc($xchan)
|
||||
);
|
||||
|
||||
$r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
$r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
|
||||
dbesc($xchan)
|
||||
);
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ class Conversation extends BaseObject {
|
||||
if(($item->get_data_value('author_xchan') === $ob_hash) || ($item->get_data_value('owner_xchan') === $ob_hash))
|
||||
$item->set_commentable(true);
|
||||
|
||||
if($item->get_data_value('item_flags') & ITEM_NOCOMMENT) {
|
||||
if(intval($item->get_data_value('item_nocomment'))) {
|
||||
$item->set_commentable(false);
|
||||
}
|
||||
elseif(($this->observer) && (! $item->is_commentable())) {
|
||||
|
@ -88,8 +88,11 @@ function refimport_content(&$a) {
|
||||
$arr['author_xchan'] = $channel['channel_hash'];
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['app'] = REFLECT_BLOGNAME;
|
||||
$arr['item_flags'] = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
|
||||
$arr['verb'] = ACTIVITY_POST;
|
||||
|
||||
// this is an assumption
|
||||
@ -257,7 +260,11 @@ function reflect_comment_store($channel,$post,$comment,$user) {
|
||||
$arr['edited'] = $comment['created'];
|
||||
$arr['author_xchan'] = $hash;
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
<<<<<<< HEAD
|
||||
$arr['item_origin'] = 1;
|
||||
=======
|
||||
$arr['item_flags'] = ITEM_ORIGIN;
|
||||
>>>>>>> master
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['verb'] = ACTIVITY_POST;
|
||||
$arr['comment_policy'] = 'contacts';
|
||||
|
@ -212,9 +212,9 @@ class Item extends BaseObject {
|
||||
'do' => t("Add Star"),
|
||||
'undo' => t("Remove Star"),
|
||||
'toggle' => t("Toggle Star Status"),
|
||||
'classdo' => (($item['item_flags'] & ITEM_STARRED) ? "hidden" : ""),
|
||||
'classundo' => (($item['item_flags'] & ITEM_STARRED) ? "" : "hidden"),
|
||||
'isstarred' => (($item['item_flags'] & ITEM_STARRED) ? "starred icon-star" : "unstarred icon-star-empty"),
|
||||
'classdo' => (intval($item['item_starred']) ? "hidden" : ""),
|
||||
'classundo' => (intval($item['item_starred']) ? "" : "hidden"),
|
||||
'isstarred' => (intval($item['item_starred']) ? "starred icon-star" : "unstarred icon-star-empty"),
|
||||
'starred' => t('starred'),
|
||||
);
|
||||
|
||||
@ -224,9 +224,9 @@ class Item extends BaseObject {
|
||||
}
|
||||
|
||||
|
||||
$verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message signature validated') : '');
|
||||
$forged = ((($item['sig']) && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message signature incorrect') : '');
|
||||
$unverified = '' ; // (($this->is_wall_to_wall() && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message cannot be verified') : '');
|
||||
$verified = (intval($item['item_verified']) ? t('Message signature validated') : '');
|
||||
$forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : '');
|
||||
$unverified = '' ; // (($this->is_wall_to_wall() && (! intval($item['item_verified']))) ? t('Message cannot be verified') : '');
|
||||
|
||||
|
||||
|
||||
|
@ -21,8 +21,10 @@ function profile_activity($changed, $value) {
|
||||
$arr['uid'] = local_channel();
|
||||
$arr['aid'] = $self['channel_account_id'];
|
||||
$arr['owner_xchan'] = $arr['author_xchan'] = $self['xchan_hash'];
|
||||
$arr['item_flags'] = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
$arr['item_wall'] = 1;
|
||||
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
$arr['verb'] = ACTIVITY_UPDATE;
|
||||
$arr['obj_type'] = ACTIVITY_OBJ_PROFILE;
|
||||
|
||||
|
@ -373,9 +373,8 @@ require_once('include/items.php');
|
||||
$countfollowers = $r[0]['count'];
|
||||
}
|
||||
|
||||
$r = q("SELECT count(`id`) as `count` FROM item where ( item_flags & %d )>0 and uid = %d and item_restrict = 0",
|
||||
intval($uinfo[0]['channel_id']),
|
||||
intval(ITEM_STARRED)
|
||||
$r = q("SELECT count(`id`) as `count` FROM item where item_starred = 1 and uid = %d and item_restrict = 0",
|
||||
intval($uinfo[0]['channel_id'])
|
||||
);
|
||||
$starred = $r[0]['count'];
|
||||
|
||||
@ -1083,7 +1082,7 @@ require_once('include/items.php');
|
||||
// at the network timeline just mark everything seen.
|
||||
|
||||
if (api_user() == $user_info['uid']) {
|
||||
$r = q("UPDATE `item` SET item_unseen = 0 where item_unseen = 1 and uid = %d",
|
||||
$r = q("UPDATE item SET item_unseen = 0 WHERE item_unseen = 1 and uid = %d",
|
||||
intval($user_info['uid'])
|
||||
);
|
||||
}
|
||||
@ -1790,7 +1789,7 @@ require_once('include/items.php');
|
||||
'in_reply_to_user_id' => $in_reply_to_user_id,
|
||||
'in_reply_to_screen_name' => $in_reply_to_screen_name,
|
||||
'geo' => '',
|
||||
'favorited' => (($item['item_flags'] & ITEM_STARRED) ? true : false),
|
||||
'favorited' => (intval($item['item_starred']) ? true : false),
|
||||
'user' => $status_user ,
|
||||
'statusnet_html' => trim(prepare_text($item['body'],$item['mimetype'])),
|
||||
|
||||
|
@ -1036,9 +1036,13 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
||||
|
||||
$mid = item_message_id();
|
||||
|
||||
$objtype = ACTIVITY_OBJ_FILE;
|
||||
$arr = array();
|
||||
|
||||
$item_flags = ITEM_ORIGIN;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_unseen'] = 1;
|
||||
|
||||
$objtype = ACTIVITY_OBJ_FILE;
|
||||
|
||||
$private = (($arr_allow_cid[0] || $arr_allow_gid[0] || $arr_deny_cid[0] || $arr_deny_gid[0]) ? 1 : 0);
|
||||
|
||||
@ -1077,24 +1081,20 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
||||
|
||||
$u_mid = item_message_id();
|
||||
|
||||
$arr = array();
|
||||
|
||||
$arr['aid'] = get_account_id();
|
||||
$arr['uid'] = $channel_id;
|
||||
$arr['mid'] = $u_mid;
|
||||
$arr['parent_mid'] = $u_mid;
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_unseen'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['author_xchan'] = $poster['xchan_hash'];
|
||||
$arr['owner_xchan'] = $poster['xchan_hash'];
|
||||
$arr['title'] = '';
|
||||
$arr['allow_cid'] = perms2str($u_arr_allow_cid);
|
||||
$arr['allow_gid'] = perms2str($u_arr_allow_gid);
|
||||
$arr['deny_cid'] = perms2str($u_arr_deny_cid);
|
||||
$arr['deny_gid'] = perms2str($u_arr_deny_gid);
|
||||
$arr['item_restrict'] = ITEM_HIDDEN;
|
||||
$arr['item_private'] = $private;
|
||||
//updates should be visible to everybody -> perms may have changed
|
||||
$arr['allow_cid'] = '';
|
||||
$arr['allow_gid'] = '';
|
||||
$arr['deny_cid'] = '';
|
||||
$arr['deny_gid'] = '';
|
||||
$arr['item_hidden'] = 1;
|
||||
$arr['item_private'] = 0;
|
||||
$arr['verb'] = ACTIVITY_UPDATE;
|
||||
$arr['obj_type'] = $objtype;
|
||||
$arr['object'] = $u_jsonobject;
|
||||
@ -1125,7 +1125,8 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
||||
$arr['uid'] = $channel_id;
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = $mid;
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_unseen'] = 1;
|
||||
$arr['author_xchan'] = $poster['xchan_hash'];
|
||||
$arr['owner_xchan'] = $poster['xchan_hash'];
|
||||
@ -1134,7 +1135,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
||||
$arr['allow_gid'] = perms2str($arr_allow_gid);
|
||||
$arr['deny_cid'] = perms2str($arr_deny_cid);
|
||||
$arr['deny_gid'] = perms2str($arr_deny_gid);
|
||||
$arr['item_restrict'] = ITEM_HIDDEN;
|
||||
$arr['item_hidden'] = 1;
|
||||
$arr['item_private'] = $private;
|
||||
$arr['verb'] = (($update) ? ACTIVITY_UPDATE : ACTIVITY_POST);
|
||||
$arr['obj_type'] = $objtype;
|
||||
|
@ -326,7 +326,7 @@ function bb2diaspora_itembody($item, $force_update = false) {
|
||||
|
||||
$newitem = $item;
|
||||
|
||||
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
|
||||
if(array_key_exists('item_obscured',$item) && intval($item['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
$b = json_decode($item['body'],true);
|
||||
// if called from diaspora_process_outbound, this decoding has already been done.
|
||||
|
@ -96,7 +96,7 @@ function localize_item(&$item){
|
||||
if(! $item['object'])
|
||||
return;
|
||||
|
||||
if($item['item_flags'] & ITEM_THREAD_TOP)
|
||||
if(intval($item['item_thread_top']))
|
||||
return;
|
||||
|
||||
$obj = json_decode_plus($item['object']);
|
||||
@ -361,7 +361,7 @@ function localize_item(&$item){
|
||||
// FIXME - we need a better filter than just the string 'data'; try and
|
||||
// match the fact that it's json encoded
|
||||
|
||||
if(($item['item_flags'] & ITEM_OBSCURED)
|
||||
if(intval($item['item_obscured'])
|
||||
&& strlen($item['body']) && (! strpos($item['body'],'data'))) {
|
||||
$item['body'] = json_encode(crypto_encapsulate($item['body'],get_config('system','pubkey')));
|
||||
}
|
||||
@ -662,8 +662,8 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
|
||||
$likebuttons = false;
|
||||
$shareable = false;
|
||||
|
||||
$verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message signature validated') : '');
|
||||
$forged = ((($item['sig']) && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message signature incorrect') : '');
|
||||
$verified = (intval($item['item_verified']) ? t('Message signature validated') : '');
|
||||
$forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : '');
|
||||
|
||||
$unverified = '';
|
||||
|
||||
|
@ -174,7 +174,7 @@ function diaspora_process_outbound($arr) {
|
||||
|
||||
$target_item = $arr['target_item'];
|
||||
|
||||
if($target_item && array_key_exists('item_flags',$target_item) && ($target_item['item_flags'] & ITEM_OBSCURED)) {
|
||||
if($target_item && array_key_exists('item_obscured',$target_item) && intval($target_item['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
if($target_item['title'])
|
||||
$target_item['title'] = crypto_unencapsulate(json_decode($target_item['title'],true),$key);
|
||||
@ -223,7 +223,7 @@ function diaspora_process_outbound($arr) {
|
||||
if(! $contact['xchan_pubkey'])
|
||||
continue;
|
||||
|
||||
if(($target_item['item_restrict'] & ITEM_DELETED)
|
||||
if(intval($target_item['item_deleted'])
|
||||
&& (($target_item['mid'] === $target_item['parent_mid']) || $arr['followup'])) {
|
||||
// send both top-level retractions and relayable retractions for owner to relay
|
||||
diaspora_send_retraction($target_item,$arr['channel'],$contact);
|
||||
@ -252,8 +252,8 @@ function diaspora_process_outbound($arr) {
|
||||
|
||||
$contact = $arr['hub'];
|
||||
|
||||
if(($target_item['deleted'])
|
||||
&& ($target_item['mid'] === $target_item['parent_mod'])) {
|
||||
if(intval($target_item['item_deleted'])
|
||||
&& ($target_item['mid'] === $target_item['parent_mid'])) {
|
||||
// top-level retraction
|
||||
logger('delivery: diaspora retract: ' . $loc);
|
||||
diaspora_send_retraction($target_item,$arr['channel'],$contact,true);
|
||||
@ -965,9 +965,8 @@ function diaspora_post($importer,$xml,$msg) {
|
||||
|
||||
$datarray['app'] = $app;
|
||||
|
||||
$datarray['item_flags'] = ITEM_THREAD_TOP;
|
||||
$datarray['item_unseen'] = 1;
|
||||
|
||||
$datarray['item_thread_top'] = 1;
|
||||
|
||||
$tgroup = tgroup_check($importer['channel_id'],$datarray);
|
||||
|
||||
@ -976,7 +975,6 @@ function diaspora_post($importer,$xml,$msg) {
|
||||
return 202;
|
||||
}
|
||||
|
||||
|
||||
$result = item_store($datarray);
|
||||
return;
|
||||
|
||||
@ -1548,7 +1546,7 @@ function diaspora_comment($importer,$xml,$msg) {
|
||||
if($result && $result['success'])
|
||||
$message_id = $result['item_id'];
|
||||
|
||||
if(($parent_item['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature)) {
|
||||
if(intval($parent_item['item_origin']) && (! $parent_author_signature)) {
|
||||
// if the message isn't already being relayed, notify others
|
||||
// the existence of parent_author_signature means the parent_author or owner
|
||||
// is already relaying.
|
||||
@ -2150,7 +2148,7 @@ function diaspora_like($importer,$xml,$msg) {
|
||||
// the existence of parent_author_signature means the parent_author or owner
|
||||
// is already relaying. The parent_item['origin'] indicates the message was created on our system
|
||||
|
||||
if(($parent_item['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature))
|
||||
if(intval($parent_item['item_origin']) && (! $parent_author_signature))
|
||||
proc_run('php','include/notifier.php','comment-import',$message_id);
|
||||
|
||||
return;
|
||||
@ -2259,19 +2257,12 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
|
||||
$r[0]['parent']
|
||||
);
|
||||
if($p) {
|
||||
if(($p[0]['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature)) {
|
||||
// FIXME so we can relay this
|
||||
// q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
|
||||
// $r[0]['id'],
|
||||
// dbesc($signed_data),
|
||||
// dbesc($sig),
|
||||
// dbesc($diaspora_handle)
|
||||
// );
|
||||
if(intval($p[0]['item_origin']) && (! $parent_author_signature)) {
|
||||
|
||||
// the existence of parent_author_signature would have meant the parent_author or owner
|
||||
// is already relaying.
|
||||
logger('diaspora_signed_retraction: relaying relayable_retraction');
|
||||
|
||||
logger('diaspora_signed_retraction: relaying relayable_retraction');
|
||||
proc_run('php','include/notifier.php','drop',$r[0]['id']);
|
||||
}
|
||||
}
|
||||
@ -2612,7 +2603,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
|
||||
$target_type = 'Post';
|
||||
$positive = 'true';
|
||||
|
||||
if(($item_['item_restrict'] & ITEM_DELETED))
|
||||
if(intval($item['item_deleted']))
|
||||
logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction');
|
||||
}
|
||||
else {
|
||||
@ -2708,7 +2699,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
$relay_retract = false;
|
||||
$sql_sign_id = 'iid';
|
||||
|
||||
if( $item['item_restrict'] & ITEM_DELETED) {
|
||||
if( intval($item['item_deleted'])) {
|
||||
$relay_retract = true;
|
||||
|
||||
$target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
|
||||
@ -2720,7 +2711,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
$like = true;
|
||||
|
||||
$target_type = ( $parent['mid'] === $parent['parent_mid'] ? 'Post' : 'Comment');
|
||||
// $positive = (($item['item_restrict'] & ITEM_DELETED) ? 'false' : 'true');
|
||||
// $positive = (intval($item['item_deleted']) ? 'false' : 'true');
|
||||
$positive = 'true';
|
||||
|
||||
$tpl = get_markup_template('diaspora_like_relay.tpl');
|
||||
|
@ -414,19 +414,13 @@ function local_dir_update($uid, $force) {
|
||||
|
||||
logger('hidden: ' . $hidden);
|
||||
|
||||
$r = q("select xchan_flags from xchan where xchan_hash = '%s' limit 1",
|
||||
$r = q("select xchan_hidden from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($p[0]['channel_hash'])
|
||||
);
|
||||
|
||||
// Be careful - XCHAN_FLAGS_HIDDEN should evaluate to 1
|
||||
if (($r[0]['xchan_flags'] & XCHAN_FLAGS_HIDDEN) != $hidden)
|
||||
$new_flags = $r[0]['xchan_flags'] ^ XCHAN_FLAGS_HIDDEN;
|
||||
else
|
||||
$new_flags = $r[0]['xchan_flags'];
|
||||
|
||||
if ($new_flags != $r[0]['xchan_flags']) {
|
||||
$r = q("update xchan set xchan_flags = %d where xchan_hash = '%s'",
|
||||
intval($new_flags),
|
||||
if(intval($r[0]['xchan_hidden']) != $hidden) {
|
||||
$r = q("update xchan set xchan_hidden = %d where xchan_hash = '%s'",
|
||||
intval($hidden),
|
||||
dbesc($p[0]['channel_hash'])
|
||||
);
|
||||
}
|
||||
|
@ -82,8 +82,9 @@ function notification($params) {
|
||||
localize_item($i);
|
||||
$title = $i['title'];
|
||||
$body = $i['body'];
|
||||
$private = (($i['item_private']) || ($i['item_flags'] & ITEM_OBSCURED));
|
||||
} else {
|
||||
$private = (($i['item_private']) || intval($i['item_obscured']));
|
||||
}
|
||||
else {
|
||||
$title = $params['item']['title'];
|
||||
$body = $params['item']['body'];
|
||||
}
|
||||
@ -642,4 +643,4 @@ class enotify {
|
||||
);
|
||||
logger("notification: enotify::send returns " . $res, LOGGER_DEBUG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -471,48 +471,50 @@ function event_store_item($arr, $event) {
|
||||
|
||||
$private = (($arr['allow_cid'] || $arr['allow_gid'] || $arr['deny_cid'] || $arr['deny_gid']) ? 1 : 0);
|
||||
|
||||
$item_wall = 0;
|
||||
$item_origin = 0;
|
||||
$item_thread_top = 0;
|
||||
|
||||
if($item) {
|
||||
$item_arr['id'] = $item['id'];
|
||||
}
|
||||
else {
|
||||
$wall = (($z[0]['channel_hash'] == $event['event_xchan']) ? true : false);
|
||||
|
||||
$item_flags = ITEM_THREAD_TOP;
|
||||
$item_thread_top = 1;
|
||||
if($wall) {
|
||||
$item_arr['item_wall'] = 1;
|
||||
$item_flags |= ITEM_ORIGIN;
|
||||
$item_wall = 1;
|
||||
$item_origin = 1;
|
||||
}
|
||||
$item_arr['item_flags'] = $item_flags;
|
||||
}
|
||||
|
||||
if(! $arr['mid'])
|
||||
$arr['mid'] = item_message_id();
|
||||
|
||||
$item_arr['aid'] = $z[0]['channel_account_id'];
|
||||
$item_arr['uid'] = $arr['uid'];
|
||||
$item_arr['author_xchan'] = $arr['event_xchan'];
|
||||
$item_arr['mid'] = $arr['mid'];
|
||||
$item_arr['parent_mid'] = $arr['mid'];
|
||||
|
||||
$item_arr['owner_xchan'] = (($wall) ? $z[0]['channel_hash'] : $arr['event_xchan']);
|
||||
$item_arr['author_xchan'] = $arr['event_xchan'];
|
||||
$item_arr['title'] = $arr['summary'];
|
||||
$item_arr['allow_cid'] = $arr['allow_cid'];
|
||||
$item_arr['allow_gid'] = $arr['allow_gid'];
|
||||
$item_arr['deny_cid'] = $arr['deny_cid'];
|
||||
$item_arr['deny_gid'] = $arr['deny_gid'];
|
||||
$item_arr['item_private'] = $private;
|
||||
$item_arr['verb'] = ACTIVITY_POST;
|
||||
$item_arr['aid'] = $z[0]['channel_account_id'];
|
||||
$item_arr['uid'] = $arr['uid'];
|
||||
$item_arr['author_xchan'] = $arr['event_xchan'];
|
||||
$item_arr['mid'] = $arr['mid'];
|
||||
$item_arr['parent_mid'] = $arr['mid'];
|
||||
$item_arr['owner_xchan'] = (($wall) ? $z[0]['channel_hash'] : $arr['event_xchan']);
|
||||
$item_arr['author_xchan'] = $arr['event_xchan'];
|
||||
$item_arr['title'] = $arr['summary'];
|
||||
$item_arr['allow_cid'] = $arr['allow_cid'];
|
||||
$item_arr['allow_gid'] = $arr['allow_gid'];
|
||||
$item_arr['deny_cid'] = $arr['deny_cid'];
|
||||
$item_arr['deny_gid'] = $arr['deny_gid'];
|
||||
$item_arr['item_private'] = $private;
|
||||
$item_arr['verb'] = ACTIVITY_POST;
|
||||
$item_arr['item_wall'] = $item_wall;
|
||||
$item_arr['item_origin'] = $item_origin;
|
||||
$item_arr['item_thread_top'] = $item_thread_top;;
|
||||
|
||||
if(array_key_exists('term', $arr))
|
||||
$item_arr['term'] = $arr['term'];
|
||||
|
||||
$item_arr['resource_type'] = 'event';
|
||||
$item_arr['resource_id'] = $event['event_hash'];
|
||||
|
||||
$item_arr['obj_type'] = ACTIVITY_OBJ_EVENT;
|
||||
|
||||
$item_arr['body'] = $prefix . format_event_bbcode($arr);
|
||||
$item_arr['resource_type'] = 'event';
|
||||
$item_arr['resource_id'] = $event['event_hash'];
|
||||
$item_arr['obj_type'] = ACTIVITY_OBJ_EVENT;
|
||||
$item_arr['body'] = $prefix . format_event_bbcode($arr);
|
||||
|
||||
// if it's local send the permalink to the channel page.
|
||||
// otherwise we'll fallback to /display/$message_id
|
||||
|
@ -12,9 +12,7 @@ function expire_run($argv, $argc){
|
||||
|
||||
// perform final cleanup on previously delete items
|
||||
|
||||
$r = q("select id from item where (item_restrict & %d) > 0 and (item_restrict & %d) = 0
|
||||
and changed < %s - INTERVAL %s",
|
||||
intval(ITEM_DELETED),
|
||||
$r = q("select id from item where item_deleted = 1 and not (item_restrict & %d)>0 and changed < %s - INTERVAL %s",
|
||||
intval(ITEM_PENDING_REMOVE),
|
||||
db_utcnow(), db_quoteinterval('10 DAY')
|
||||
);
|
||||
|
@ -93,26 +93,6 @@ function externals_run($argv, $argc){
|
||||
$results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
|
||||
array(array('hash' => $sys['xchan_hash'])), false, true);
|
||||
$total ++;
|
||||
// $z = q("select id from item where mid = '%s' and uid = %d limit 1",
|
||||
// dbesc($message['message_id']),
|
||||
// intval($sys['channel_id'])
|
||||
// );
|
||||
$z = null;
|
||||
if($z) {
|
||||
$flag_bits = ITEM_ORIGIN|ITEM_UPLINK;
|
||||
// preserve the source
|
||||
|
||||
$r = q("update item set source_xchan = owner_xchan where id = %d",
|
||||
intval($z[0]['id'])
|
||||
);
|
||||
|
||||
$r = q("update item set item_flags = ( item_flags | %d ), item_wall = 1, owner_xchan = '%s'
|
||||
where id = %d",
|
||||
intval($flag_bits),
|
||||
dbesc($sys['xchan_hash']),
|
||||
intval($z[0]['id'])
|
||||
);
|
||||
}
|
||||
}
|
||||
logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG);
|
||||
}
|
||||
|
@ -200,11 +200,10 @@ function group_get_members($gid) {
|
||||
if(intval($gid)) {
|
||||
$r = q("SELECT * FROM `group_member`
|
||||
LEFT JOIN abook ON abook_xchan = `group_member`.`xchan` left join xchan on xchan_hash = abook_xchan
|
||||
WHERE `gid` = %d AND abook_channel = %d and `group_member`.`uid` = %d and not ( xchan_flags & %d )>0 and not ( abook_flags & %d )>0 and not ( abook_flags & %d )>0 ORDER BY xchan_name ASC ",
|
||||
WHERE `gid` = %d AND abook_channel = %d and `group_member`.`uid` = %d and xchan_deleted = 0 and not ( abook_flags & %d )>0 and not ( abook_flags & %d )>0 ORDER BY xchan_name ASC ",
|
||||
intval($gid),
|
||||
intval(local_channel()),
|
||||
intval(local_channel()),
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
intval(ABOOK_FLAG_BLOCKED),
|
||||
intval(ABOOK_FLAG_PENDING)
|
||||
);
|
||||
|
@ -96,8 +96,7 @@ function remove_obsolete_hublocs() {
|
||||
? intval(get_config('system','delivery_interval')) : 2 );
|
||||
|
||||
foreach($r as $rr) {
|
||||
q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
q("update hubloc set hubloc_deleted = 1 where hubloc_id = %d",
|
||||
intval($rr['hubloc_id'])
|
||||
);
|
||||
|
||||
@ -121,7 +120,7 @@ function hubloc_change_primary($hubloc) {
|
||||
logger('no hubloc');
|
||||
return false;
|
||||
}
|
||||
if(! ($hubloc['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY)) {
|
||||
if(! (intval($hubloc['hubloc_primary']))) {
|
||||
logger('not primary: ' . $hubloc['hubloc_url']);
|
||||
return false;
|
||||
}
|
||||
@ -206,7 +205,7 @@ function xchan_store($arr) {
|
||||
if(! $arr['photo'])
|
||||
$arr['photo'] = z_root() . '/' . get_default_profile_photo();
|
||||
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_instance_url, xchan_flags, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s','%s','%s',%d,'%s') ",
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_instance_url, xchan_hidden, xchan_orphan, xchan_censored, xchan_selfcensored, xchan_system, xchan_pubforum, xchan_deleted, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s','%s','%s',%d, %d, %d, %d, %d, %d, %d, '%s') ",
|
||||
dbesc($arr['hash']),
|
||||
dbesc($arr['guid']),
|
||||
dbesc($arr['guid_sig']),
|
||||
@ -219,7 +218,13 @@ function xchan_store($arr) {
|
||||
dbesc($arr['name']),
|
||||
dbesc($arr['network']),
|
||||
dbesc($arr['instance_url']),
|
||||
intval($arr['flags']),
|
||||
intval($arr['hidden']),
|
||||
intval($arr['orphan']),
|
||||
intval($arr['censored']),
|
||||
intval($arr['selfcensored']),
|
||||
intval($arr['system']),
|
||||
intval($arr['pubforum']),
|
||||
intval($arr['deleted']),
|
||||
dbesc(datetime_convert())
|
||||
);
|
||||
if(! $r)
|
||||
|
@ -100,7 +100,7 @@ function create_sys_channel() {
|
||||
'name' => 'System',
|
||||
'pageflags' => PAGE_SYSTEM,
|
||||
'publish' => 0,
|
||||
'xchanflags' => XCHAN_FLAGS_SYSTEM
|
||||
'system' => 1
|
||||
));
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ function create_identity($arr) {
|
||||
|
||||
$name = escape_tags($arr['name']);
|
||||
$pageflags = ((x($arr,'pageflags')) ? intval($arr['pageflags']) : PAGE_NORMAL);
|
||||
$xchanflags = ((x($arr,'xchanflags')) ? intval($arr['xchanflags']) : XCHAN_FLAGS_NORMAL);
|
||||
$system = ((x($arr,'system')) ? intval($arr['system']) : 0);
|
||||
$name_error = validate_channelname($arr['name']);
|
||||
if($name_error) {
|
||||
$ret['message'] = $name_error;
|
||||
@ -300,14 +300,14 @@ function create_identity($arr) {
|
||||
|
||||
// Create a verified hub location pointing to this site.
|
||||
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_flags,
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_primary,
|
||||
hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_network )
|
||||
values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
|
||||
dbesc($guid),
|
||||
dbesc($sig),
|
||||
dbesc($hash),
|
||||
dbesc($ret['channel']['channel_address'] . '@' . get_app()->get_hostname()),
|
||||
intval(($primary) ? HUBLOC_FLAGS_PRIMARY : 0),
|
||||
intval($primary),
|
||||
dbesc(z_root()),
|
||||
dbesc(base64url_encode(rsa_sign(z_root(),$ret['channel']['channel_prvkey']))),
|
||||
dbesc(get_app()->get_hostname()),
|
||||
@ -320,7 +320,7 @@ function create_identity($arr) {
|
||||
|
||||
$newuid = $ret['channel']['channel_id'];
|
||||
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_l, xchan_photo_m, xchan_photo_s, xchan_addr, xchan_url, xchan_follow, xchan_connurl, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_flags ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_l, xchan_photo_m, xchan_photo_s, xchan_addr, xchan_url, xchan_follow, xchan_connurl, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_system ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
|
||||
dbesc($hash),
|
||||
dbesc($guid),
|
||||
dbesc($sig),
|
||||
@ -336,7 +336,7 @@ function create_identity($arr) {
|
||||
dbesc('zot'),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($xchanflags)
|
||||
intval($system)
|
||||
);
|
||||
|
||||
// Not checking return value.
|
||||
@ -583,8 +583,7 @@ function identity_basic_export($channel_id, $items = false) {
|
||||
|
||||
/** @warning this may run into memory limits on smaller systems */
|
||||
|
||||
$r = q("select * from item where item_wall = 1 and (item_restrict & %d) = 0 and uid = %d",
|
||||
intval(ITEM_DELETED),
|
||||
$r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d",
|
||||
intval($channel_id)
|
||||
);
|
||||
if($r) {
|
||||
|
@ -382,14 +382,12 @@ function post_activity_item($arr) {
|
||||
if((($arr['parent']) && $arr['parent'] != $arr['id']) || (($arr['parent_mid']) && $arr['parent_mid'] != $arr['mid']))
|
||||
$is_comment = true;
|
||||
|
||||
if(! x($arr,'item_flags')) {
|
||||
if($is_comment)
|
||||
$arr['item_flags'] = ITEM_ORIGIN;
|
||||
else {
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_flags'] = ITEM_ORIGIN | ITEM_THREAD_TOP;
|
||||
}
|
||||
}
|
||||
if(! array_key_exists('item_origin',$arr))
|
||||
$arr['item_origin'] = 1;
|
||||
if(! array_key_exists('item_wall',$arr) && (! $is_comment))
|
||||
$arr['item_wall'] = 1;
|
||||
if(! array_key_exists('item_thread_top',$arr) && (! $is_comment))
|
||||
$arr['item_thread_top'] = 1;
|
||||
|
||||
$channel = get_app()->get_channel();
|
||||
$observer = get_app()->get_observer();
|
||||
@ -416,7 +414,7 @@ function post_activity_item($arr) {
|
||||
if($channel) {
|
||||
if($channel['channel_hash'] === $arr['author_xchan']) {
|
||||
$arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
|
||||
$arr['item_flags'] = $arr['item_flags'] | ITEM_VERIFIED;
|
||||
$arr['item_verified'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -440,7 +438,7 @@ function post_activity_item($arr) {
|
||||
|
||||
$arr['comment_policy'] = map_scope($channel['channel_w_comment']);
|
||||
|
||||
if ((! $arr['plink']) && ($arr['item_flags'] & ITEM_THREAD_TOP)) {
|
||||
if ((! $arr['plink']) && (intval($arr['item_thread_top']))) {
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
}
|
||||
|
||||
@ -857,11 +855,12 @@ function get_item_elements($x) {
|
||||
$arr['item_flags'] = 0;
|
||||
|
||||
if(array_key_exists('flags',$x) && in_array('consensus',$x['flags']))
|
||||
$arr['item_flags'] |= ITEM_CONSENSUS;
|
||||
$arr['item_consensus'] = 1;
|
||||
|
||||
if(array_key_exists('flags',$x) && in_array('deleted',$x['flags']))
|
||||
$arr['item_restrict'] |= ITEM_DELETED;
|
||||
$arr['item_deleted'] = 1;
|
||||
if(array_key_exists('flags',$x) && in_array('hidden',$x['flags']))
|
||||
$arr['item_restrict'] |= ITEM_HIDDEN;
|
||||
$arr['item_hidden'] = 1;
|
||||
|
||||
// Here's the deal - the site might be down or whatever but if there's a new person you've never
|
||||
// seen before sending stuff to your stream, we MUST be able to look them up and import their data from their
|
||||
@ -889,7 +888,7 @@ function get_item_elements($x) {
|
||||
dbesc($arr['author_xchan'])
|
||||
);
|
||||
if($r && rsa_verify($x['body'],base64url_decode($arr['sig']),$r[0]['xchan_pubkey']))
|
||||
$arr['item_flags'] |= ITEM_VERIFIED;
|
||||
$arr['item_verified'] = 1;
|
||||
else
|
||||
logger('get_item_elements: message verification failed.');
|
||||
}
|
||||
@ -1083,7 +1082,7 @@ function encode_item($item,$mirror = false) {
|
||||
|
||||
$key = get_config('system','prvkey');
|
||||
|
||||
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
|
||||
if(array_key_exists('item_obscured',$item) && intval($item['item_obscured'])) {
|
||||
if($item['title'])
|
||||
$item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
|
||||
if($item['body'])
|
||||
@ -1149,7 +1148,7 @@ function encode_item($item,$mirror = false) {
|
||||
|
||||
$x['public_scope'] = $scope;
|
||||
|
||||
if($item['item_flags'] & ITEM_NOCOMMENT)
|
||||
if($item['item_nocomment'])
|
||||
$x['comment_scope'] = 'none';
|
||||
else
|
||||
$x['comment_scope'] = $c_scope;
|
||||
@ -1378,15 +1377,15 @@ function encode_item_flags($item) {
|
||||
|
||||
$ret = array();
|
||||
|
||||
if($item['item_restrict'] & ITEM_DELETED)
|
||||
if(intval($item['item_deleted']))
|
||||
$ret[] = 'deleted';
|
||||
if($item['item_restrict'] & ITEM_HIDDEN)
|
||||
if(intval($item['item_hidden']))
|
||||
$ret[] = 'hidden';
|
||||
if($item['item_flags'] & ITEM_THREAD_TOP)
|
||||
if(intval($item['item_thread_top']))
|
||||
$ret[] = 'thread_parent';
|
||||
if($item['item_flags'] & ITEM_NSFW)
|
||||
if(intval($item['item_nsfw']))
|
||||
$ret[] = 'nsfw';
|
||||
if($item['item_flags'] & ITEM_CONSENSUS)
|
||||
if(intval($item['item_consensus']))
|
||||
$ret[] = 'consensus';
|
||||
if($item['item_private'])
|
||||
$ret[] = 'private';
|
||||
@ -1544,7 +1543,7 @@ function get_atom_elements($feed, $item, &$author) {
|
||||
$res['title'] = unxmlify($item->get_title());
|
||||
$res['body'] = unxmlify($item->get_content());
|
||||
$res['plink'] = unxmlify($item->get_link(0));
|
||||
$res['item_flags'] = ITEM_RSS;
|
||||
$res['item_rss'] = 1;
|
||||
|
||||
|
||||
// removing the content of the title if its identically to the body
|
||||
@ -1984,11 +1983,11 @@ function item_store($arr, $allow_exec = false) {
|
||||
// If a page layout is provided, ensure it exists and belongs to us.
|
||||
|
||||
if(array_key_exists('layout_mid',$arr) && $arr['layout_mid']) {
|
||||
$l = q("select item_restrict from item where mid = '%s' and uid = %d limit 1",
|
||||
$l = q("select item_type from item where mid = '%s' and uid = %d limit 1",
|
||||
dbesc($arr['layout_mid']),
|
||||
intval($arr['uid'])
|
||||
);
|
||||
if((! $l) || (! ($l[0]['item_restrict'] & ITEM_PDL)))
|
||||
if((! $l) || (! ($l[0]['item_type'] != ITEM_TYPE_PDL)))
|
||||
unset($arr['layout_mid']);
|
||||
}
|
||||
|
||||
@ -2023,7 +2022,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
// only detect language if we have text content, and if the post is private but not yet
|
||||
// obscured, make it so.
|
||||
|
||||
if(! ($arr['item_flags'] & ITEM_OBSCURED)) {
|
||||
if((! array_key_exists('item_obscured',$arr)) || $arr['item_obscured'] == 0) {
|
||||
|
||||
$arr['lang'] = detect_language($arr['body']);
|
||||
// apply the input filter here - if it is obscured it has been filtered already
|
||||
@ -2033,7 +2032,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
$channel = get_app()->get_channel();
|
||||
if($channel['channel_hash'] === $arr['author_xchan']) {
|
||||
$arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
|
||||
$arr['item_flags'] |= ITEM_VERIFIED;
|
||||
$arr['item_verified'] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2095,11 +2094,12 @@ function item_store($arr, $allow_exec = false) {
|
||||
$arr['public_policy'] = ((x($arr,'public_policy')) ? notags(trim($arr['public_policy'])) : '' );
|
||||
|
||||
$arr['comment_policy'] = ((x($arr,'comment_policy')) ? notags(trim($arr['comment_policy'])) : 'contacts' );
|
||||
|
||||
if(! array_key_exists('item_unseen',$arr))
|
||||
$arr['item_unseen'] = 1;
|
||||
|
||||
$arr['item_unseen'] = ((array_key_exists('item_unseen',$arr)) ? intval($arr['item_unseen']) : 1);
|
||||
|
||||
if($arr['comment_policy'] == 'none')
|
||||
$arr['item_flags'] = $arr['item_flags'] | ITEM_NOCOMMENT;
|
||||
if((! array_key_exists('item_nocomment',$arr)) && ($arr['comment_policy'] == 'none'))
|
||||
$arr['item_nocomment'] = 1;
|
||||
|
||||
// handle time travelers
|
||||
// Allow a bit of fudge in case somebody just has a slightly slow/fast clock
|
||||
@ -2123,7 +2123,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
$deny_gid = $arr['deny_gid'];
|
||||
$public_policy = $arr['public_policy'];
|
||||
$comments_closed = $arr['comments_closed'];
|
||||
$arr['item_flags'] = $arr['item_flags'] | ITEM_THREAD_TOP;
|
||||
$arr['item_thread_top'] = 1;
|
||||
}
|
||||
else {
|
||||
|
||||
@ -2173,7 +2173,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
}
|
||||
|
||||
$parent_id = $r[0]['id'];
|
||||
$parent_deleted = $r[0]['item_restrict'] & ITEM_DELETED;
|
||||
$parent_deleted = $r[0]['item_deleted'];
|
||||
$allow_cid = $r[0]['allow_cid'];
|
||||
$allow_gid = $r[0]['allow_gid'];
|
||||
$deny_cid = $r[0]['deny_cid'];
|
||||
@ -2201,7 +2201,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
// The original author commented, but as this is a comment, the permissions
|
||||
// weren't fixed up so it will still show the comment as private unless we fix it here.
|
||||
|
||||
if((intval($r[0]['item_flags']) & ITEM_UPLINK) && (! $r[0]['item_private']))
|
||||
if(intval($r[0]['item_uplink']) && (! $r[0]['item_private']))
|
||||
$arr['item_private'] = 0;
|
||||
}
|
||||
else {
|
||||
@ -2212,7 +2212,7 @@ function item_store($arr, $allow_exec = false) {
|
||||
}
|
||||
|
||||
if($parent_deleted)
|
||||
$arr['item_restrict'] = $arr['item_restrict'] | ITEM_DELETED;
|
||||
$arr['item_deleted'] = 1;
|
||||
|
||||
$r = q("SELECT `id` FROM `item` WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($arr['mid']),
|
||||
@ -2389,14 +2389,7 @@ function item_store_update($arr,$allow_exec = false) {
|
||||
|
||||
// override the unseen flag with the original
|
||||
|
||||
if(intval($arr['item_flags']))
|
||||
$arr['item_unseen'] = 0;
|
||||
|
||||
if($orig[0]['item_flags'] & ITEM_VERIFIED)
|
||||
$orig[0]['item_flags'] = $orig[0]['item_flags'] ^ ITEM_VERIFIED;
|
||||
|
||||
if($orig[0]['item_flags'] & ITEM_OBSCURED)
|
||||
$orig[0]['item_flags'] = $orig[0]['item_flags'] ^ ITEM_OBSCURED;
|
||||
$arr['item_unseen'] = $orig[0]['item_unseen'];
|
||||
|
||||
$arr['item_flags'] = intval($arr['item_flags']) | $orig[0]['item_flags'];
|
||||
$arr['item_restrict'] = intval($arr['item_restrict']) | $orig[0]['item_restrict'];
|
||||
@ -2412,19 +2405,19 @@ function item_store_update($arr,$allow_exec = false) {
|
||||
return $ret;
|
||||
}
|
||||
|
||||
if(! ($arr['item_flags'] & ITEM_OBSCURED)) {
|
||||
if((! array_key_exists('item_obscured', $arr)) || $arr['item_obscured'] == 0) {
|
||||
|
||||
$arr['lang'] = detect_language($arr['body']);
|
||||
// apply the input filter here - if it is obscured it has been filtered already
|
||||
$arr['body'] = z_input_filter($arr['uid'],$arr['body'],$arr['mimetype']);
|
||||
// apply the input filter here - if it is obscured it has been filtered already
|
||||
$arr['body'] = z_input_filter($arr['uid'],$arr['body'],$arr['mimetype']);
|
||||
|
||||
if(local_channel() && (! $arr['sig'])) {
|
||||
$channel = get_app()->get_channel();
|
||||
if($channel['channel_hash'] === $arr['author_xchan']) {
|
||||
$arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
|
||||
$arr['item_flags'] |= ITEM_VERIFIED;
|
||||
}
|
||||
}
|
||||
if(local_channel() && (! $arr['sig'])) {
|
||||
$channel = get_app()->get_channel();
|
||||
if($channel['channel_hash'] === $arr['author_xchan']) {
|
||||
$arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey']));
|
||||
$arr['item_verified'] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$allowed_languages = get_pconfig($arr['uid'],'system','allowed_languages');
|
||||
|
||||
@ -2738,8 +2731,8 @@ function tag_deliver($uid, $item_id) {
|
||||
|
||||
$item = $i[0];
|
||||
|
||||
if(($item['source_xchan']) && ($item['item_flags'] & ITEM_UPLINK)
|
||||
&& ($item['item_flags'] & ITEM_THREAD_TOP) && ($item['edited'] != $item['created'])) {
|
||||
if(($item['source_xchan']) && intval($item['item_uplink'])
|
||||
&& intval($item['item_thread_top']) && ($item['edited'] != $item['created'])) {
|
||||
// this is an update (edit) to a post which was already processed by us and has a second delivery chain
|
||||
// Just start the second delivery chain to deliver the updated post
|
||||
proc_run('php','include/notifier.php','tgroup',$item['id']);
|
||||
@ -2838,13 +2831,13 @@ function tag_deliver($uid, $item_id) {
|
||||
// This might be a followup (e.g. comment) by the original post author to a tagged forum
|
||||
// If so setup a second delivery chain
|
||||
|
||||
if( ! ($item['item_flags'] & ITEM_THREAD_TOP)) {
|
||||
if( ! intval($item['item_thread_top'])) {
|
||||
$x = q("select * from item where id = parent and parent = %d and uid = %d limit 1",
|
||||
intval($item['parent']),
|
||||
intval($uid)
|
||||
);
|
||||
|
||||
if(($x) && ($x[0]['item_flags'] & ITEM_UPLINK)) {
|
||||
if(($x) && intval($x[0]['item_uplink'])) {
|
||||
start_delivery_chain($u[0],$item,$item_id,$x[0]);
|
||||
}
|
||||
}
|
||||
@ -2872,9 +2865,8 @@ function tag_deliver($uid, $item_id) {
|
||||
|
||||
if($mention) {
|
||||
logger('tag_deliver: mention found for ' . $u[0]['channel_name']);
|
||||
|
||||
$r = q("update item set item_flags = ( item_flags | %d ) where id = %d",
|
||||
intval(ITEM_MENTIONSME),
|
||||
|
||||
$r = q("update item set item_mentionsme = 1 where id = %d",
|
||||
intval($item_id)
|
||||
);
|
||||
|
||||
@ -2884,7 +2876,7 @@ function tag_deliver($uid, $item_id) {
|
||||
|
||||
$body = '';
|
||||
|
||||
if($item['item_flags'] & ITEM_OBSCURED) {
|
||||
if(intval($item['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
if($item['body'])
|
||||
$body = crypto_unencapsulate(json_decode_plus($item['body']),$key);
|
||||
@ -2968,10 +2960,8 @@ function tag_deliver($uid, $item_id) {
|
||||
// prevent delivery looping - only proceed
|
||||
// if the message originated elsewhere and is a top-level post
|
||||
|
||||
if((intval($item['item_wall']))
|
||||
|| ($item['item_flags'] & ITEM_ORIGIN)
|
||||
|| (!($item['item_flags'] & ITEM_THREAD_TOP))
|
||||
|| ($item['id'] != $item['parent'])) {
|
||||
|
||||
if(intval($item['item_wall']) || intval($item['item_origin']) || (! intval($item['item_thread_top'])) || ($item['id'] != $item['parent'])) {
|
||||
logger('tag_deliver: item was local or a comment. rejected.');
|
||||
return;
|
||||
}
|
||||
@ -2996,10 +2986,9 @@ function tgroup_check($uid,$item) {
|
||||
// or is a followup and we have already accepted the top level post as an uplink
|
||||
|
||||
if($item['mid'] != $item['parent_mid']) {
|
||||
$r = q("select id from item where mid = '%s' and uid = %d and ( item_flags & %d )>0 limit 1",
|
||||
$r = q("select id from item where mid = '%s' and uid = %d and item_uplink = 1 limit 1",
|
||||
dbesc($item['parent_mid']),
|
||||
intval($uid),
|
||||
intval(ITEM_UPLINK)
|
||||
intval($uid)
|
||||
);
|
||||
if($r)
|
||||
return true;
|
||||
@ -3045,7 +3034,7 @@ function tgroup_check($uid,$item) {
|
||||
|
||||
$body = $item['body'];
|
||||
|
||||
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED) && $body) {
|
||||
if(array_key_exists('item_obscured',$item) && intval($item['item_obscured']) && $body) {
|
||||
$key = get_config('system','prvkey');
|
||||
$body = crypto_unencapsulate(json_decode($body,true),$key);
|
||||
}
|
||||
@ -3108,22 +3097,15 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
|
||||
if((! $private) && $new_public_policy)
|
||||
$private = 1;
|
||||
|
||||
|
||||
|
||||
$item_wall = 1;
|
||||
$item_origin = 1;
|
||||
$item_uplink = 0;
|
||||
$item_nocomment = 0;
|
||||
$item_obscured = 0;
|
||||
|
||||
$flag_bits = $item['item_flags'];
|
||||
|
||||
// The message didn't necessarily originate on this site, (we'll honour it if it did),
|
||||
// but the parent post of this thread will be reset as a local post, as it is the top of
|
||||
// this delivery chain and is coming from this site, regardless of where the original
|
||||
// originated.
|
||||
|
||||
if(! $parent)
|
||||
$flag_bits = $flag_bits | ITEM_ORIGIN;
|
||||
|
||||
// unset the nocomment bit if it's there.
|
||||
|
||||
if($flag_bits & ITEM_NOCOMMENT)
|
||||
$flag_bits = $flag_bits ^ ITEM_NOCOMMENT;
|
||||
|
||||
// maintain the original source, which will be the original item owner and was stored in source_xchan
|
||||
// when we created the delivery fork
|
||||
|
||||
@ -3134,7 +3116,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
|
||||
);
|
||||
}
|
||||
else {
|
||||
$flag_bits = $flag_bits | ITEM_UPLINK;
|
||||
$item_uplink = 1;
|
||||
$r = q("update item set source_xchan = owner_xchan where id = %d",
|
||||
intval($item_id)
|
||||
);
|
||||
@ -3146,16 +3128,19 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
|
||||
if(! $private) {
|
||||
if($flag_bits & ITEM_OBSCURED) {
|
||||
$key = get_config('system','prvkey');
|
||||
$flag_bits = $flag_bits ^ ITEM_OBSCURED;
|
||||
if($title)
|
||||
$title = crypto_unencapsulate(json_decode($title,true),$key);
|
||||
if($body)
|
||||
$body = crypto_unencapsulate(json_decode($body,true),$key);
|
||||
$item_obscured = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$r = q("update item set item_flags = %d, owner_xchan = '%s', allow_cid = '%s', allow_gid = '%s',
|
||||
deny_cid = '%s', deny_gid = '%s', item_private = %d, public_policy = '%s', comment_policy = '%s', title = '%s', body = '%s', item_wall = 1 where id = %d",
|
||||
$r = q("update item set item_uplink = %d, item_nocomment = %d, item_obscured = %d, item_flags = %d, owner_xchan = '%s', allow_cid = '%s', allow_gid = '%s',
|
||||
deny_cid = '%s', deny_gid = '%s', item_private = %d, public_policy = '%s', comment_policy = '%s', title = '%s', body = '%s', item_wall = %d, item_origin = %d where id = %d",
|
||||
intval($item_uplink),
|
||||
intval($item_nocomment),
|
||||
intval($item_obscured),
|
||||
intval($flag_bits),
|
||||
dbesc($channel['channel_hash']),
|
||||
dbesc($channel['channel_allow_cid']),
|
||||
@ -3167,6 +3152,8 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
|
||||
dbesc(map_scope($channel['channel_w_comment'])),
|
||||
dbesc($title),
|
||||
dbesc($body),
|
||||
intval($item_wall),
|
||||
$intval($item_origin),
|
||||
intval($item_id)
|
||||
);
|
||||
|
||||
@ -3413,7 +3400,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
|
||||
if($r) {
|
||||
$item = $r[0];
|
||||
|
||||
if(! ($item['item_restrict'] & ITEM_DELETED)) {
|
||||
if(! intval($item['item_deleted'])) {
|
||||
logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . base64url_decode($item['mid']), LOGGER_DEBUG);
|
||||
drop_item($item['id'],false);
|
||||
}
|
||||
@ -3908,22 +3895,21 @@ function item_expire($uid,$days) {
|
||||
|
||||
$expire_network_only = 1;
|
||||
|
||||
$sql_extra = ((intval($expire_network_only)) ? " AND item_wall = 0 " : "");
|
||||
|
||||
$expire_limit = get_config('system','expire_limit');
|
||||
if(! intval($expire_limit))
|
||||
$expire_limit = 5000;
|
||||
|
||||
$sql_extra = ((intval($expire_network_only)) ? " AND item_wall = 0 " : "");
|
||||
|
||||
$r = q("SELECT * FROM `item`
|
||||
WHERE `uid` = %d
|
||||
AND `created` < %s - INTERVAL %s
|
||||
AND `id` = `parent`
|
||||
$sql_extra
|
||||
AND ( item_flags & %d ) = 0
|
||||
AND ( item_restrict = 0 ) LIMIT $expire_limit ",
|
||||
AND item_retained = 0
|
||||
AND (item_restrict = 0 ) LIMIT $expire_limit ",
|
||||
intval($uid),
|
||||
db_utcnow(), db_quoteinterval(intval($days).' DAY'),
|
||||
intval(ITEM_RETAINED)
|
||||
db_utcnow(), db_quoteinterval(intval($days).' DAY')
|
||||
);
|
||||
|
||||
if(! $r)
|
||||
@ -3947,7 +3933,7 @@ function item_expire($uid,$days) {
|
||||
retain_item($item['id']);
|
||||
continue;
|
||||
}
|
||||
if($item['item_flags'] & ITEM_STARRED) {
|
||||
if(intval($item['item_starred'])) {
|
||||
retain_item($item['id']);
|
||||
continue;
|
||||
}
|
||||
@ -3959,8 +3945,7 @@ function item_expire($uid,$days) {
|
||||
}
|
||||
|
||||
function retain_item($id) {
|
||||
$r = q("update item set item_flags = (item_flags | %d ) where id = %d",
|
||||
intval(ITEM_RETAINED),
|
||||
$r = q("update item set item_retained = 1 where id = %d",
|
||||
intval($id)
|
||||
);
|
||||
}
|
||||
@ -4005,7 +3990,7 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL,$force = fal
|
||||
intval($id)
|
||||
);
|
||||
|
||||
if((! $r) || (($r[0]['item_restrict'] & ITEM_DELETED) && ($stage === DROPITEM_NORMAL))) {
|
||||
if((! $r) || (intval($r[0]['item_deleted']) && ($stage === DROPITEM_NORMAL))) {
|
||||
if(! $interactive)
|
||||
return 0;
|
||||
notice( t('Item not found.') . EOL);
|
||||
@ -4041,10 +4026,16 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL,$force = fal
|
||||
// set the deleted flag immediately on this item just in case the
|
||||
// hook calls a remote process which loops. We'll delete it properly in a second.
|
||||
|
||||
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ) WHERE id = %d",
|
||||
intval(($linked_item && ! $force) ? ITEM_HIDDEN : ITEM_DELETED),
|
||||
intval($item['id'])
|
||||
);
|
||||
if(($linked_item) && (! $force)) {
|
||||
$r = q("UPDATE item SET item_hidden = 1 WHERE id = %d",
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = q("UPDATE item SET item_deleted = 1 WHERE id = %d",
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
|
||||
$arr = array('item' => $item, 'interactive' => $interactive, 'stage' => $stage);
|
||||
call_hooks('drop_item', $arr );
|
||||
@ -4113,30 +4104,37 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
|
||||
break;
|
||||
|
||||
case DROPITEM_PHASE1:
|
||||
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ),
|
||||
changed = '%s', edited = '%s' WHERE id = %d",
|
||||
intval(($linked_item && ! $force) ? ITEM_HIDDEN : ITEM_DELETED),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($item['id'])
|
||||
);
|
||||
break;
|
||||
|
||||
case DROPITEM_NORMAL:
|
||||
default:
|
||||
if($linked_item && ! $force) {
|
||||
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ),
|
||||
$r = q("UPDATE item SET item_hidden = 1,
|
||||
changed = '%s', edited = '%s' WHERE id = %d",
|
||||
intval(ITEM_HIDDEN),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ), body = '', title = '',
|
||||
$r = q("UPDATE item set item_deleted = 1, changed = '%s', edited = '%s' where if = %d",
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case DROPITEM_NORMAL:
|
||||
default:
|
||||
if($linked_item && ! $force) {
|
||||
$r = q("UPDATE item SET item_hidden = 1,
|
||||
changed = '%s', edited = '%s' WHERE id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = q("UPDATE item SET item_deleted = 1, body = '', title = '',
|
||||
changed = '%s', edited = '%s' WHERE id = %d",
|
||||
intval(ITEM_DELETED),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($item['id'])
|
||||
@ -4388,9 +4386,9 @@ function zot_feed($uid,$observer_xchan,$arr) {
|
||||
require_once('include/security.php');
|
||||
$r = q("SELECT parent, created, postopts from item
|
||||
WHERE uid != %d
|
||||
AND item_private = 0 AND item_restrict = 0 AND uid in (" . stream_perms_api_uids(PERMS_PUBLIC,10,1) . ")
|
||||
and uid in (" . stream_perms_api_uids(PERMS_PUBLIC,10,1) . ") AND item_restrict = 0
|
||||
AND item_wall = 1
|
||||
$sql_extra GROUP BY parent ORDER BY created ASC $limit",
|
||||
and item_private = 0 $sql_extra GROUP BY parent ORDER BY created ASC $limit",
|
||||
intval($uid)
|
||||
);
|
||||
}
|
||||
@ -4463,13 +4461,13 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
|
||||
}
|
||||
|
||||
if($arr['star'])
|
||||
$sql_options .= " and (item_flags & " . intval(ITEM_STARRED) . ")>0 ";
|
||||
$sql_options .= " and item_starred = 1 ";
|
||||
|
||||
if($arr['wall'])
|
||||
$sql_options .= " and item_wall = 1 ";
|
||||
|
||||
$sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ")>0 $sql_options ) ";
|
||||
|
||||
|
||||
$sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE item_thread_top = 1 $sql_options ) ";
|
||||
|
||||
if($arr['since_id'])
|
||||
$sql_extra .= " and item.id > " . $since_id . " ";
|
||||
|
||||
@ -4532,24 +4530,24 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
|
||||
}
|
||||
|
||||
if($arr['search']) {
|
||||
if(strpos($arr['search'],'#') === 0)
|
||||
$sql_extra .= term_query('item',substr($arr['search'],1),TERM_HASHTAG);
|
||||
else
|
||||
$sql_extra .= sprintf(" AND item.body like '%s' ",
|
||||
dbesc(protect_sprintf('%' . $arr['search'] . '%'))
|
||||
);
|
||||
}
|
||||
|
||||
if (strlen($arr['file'])) {
|
||||
$sql_extra .= term_query('item',$arr['files'],TERM_FILE);
|
||||
}
|
||||
if(strpos($arr['search'],'#') === 0)
|
||||
$sql_extra .= term_query('item',substr($arr['search'],1),TERM_HASHTAG);
|
||||
else
|
||||
$sql_extra .= sprintf(" AND item.body like '%s' ",
|
||||
dbesc(protect_sprintf('%' . $arr['search'] . '%'))
|
||||
);
|
||||
}
|
||||
|
||||
if ($arr['conv'] && $channel) {
|
||||
$sql_extra .= sprintf(" AND parent IN (SELECT distinct parent from item where ( author_xchan like '%s' or ( item_flags & %d )>0)) ",
|
||||
dbesc(protect_sprintf($uidhash)),
|
||||
intval(ITEM_MENTIONSME)
|
||||
);
|
||||
}
|
||||
if(strlen($arr['file'])) {
|
||||
$sql_extra .= term_query('item',$arr['files'],TERM_FILE);
|
||||
}
|
||||
|
||||
if($arr['conv'] && $channel) {
|
||||
$sql_extra .= sprintf(" AND parent IN (SELECT distinct parent from item where ( author_xchan like '%s' or item_mentionsme = 1 )) ",
|
||||
dbesc(protect_sprintf($uidhash))
|
||||
);
|
||||
}
|
||||
|
||||
if (($client_mode & CLIENT_MODE_UPDATE) && (! ($client_mode & CLIENT_MODE_LOAD))) {
|
||||
// only setup pagination on initial page view
|
||||
@ -4584,19 +4582,19 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
|
||||
}
|
||||
}
|
||||
|
||||
$simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and ( item.item_unseen = 1 ) " : '');
|
||||
if ($client_mode & CLIENT_MODE_LOAD)
|
||||
$simple_update = '';
|
||||
$simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and item.item_unseen = 1 " : '');
|
||||
if($client_mode & CLIENT_MODE_LOAD)
|
||||
$simple_update = '';
|
||||
|
||||
//$start = dba_timer();
|
||||
|
||||
require_once('include/security.php');
|
||||
$sql_extra .= item_permissions_sql($channel['channel_id']);
|
||||
|
||||
if ($arr['pages'])
|
||||
$item_restrict = " AND (item_restrict & " . ITEM_WEBPAGE . ") ";
|
||||
if($arr['pages'])
|
||||
$item_restrict = " AND item_type = " . ITEM_TYPE_WEBPAGE . " ";
|
||||
else
|
||||
$item_restrict = " AND item_restrict = 0 ";
|
||||
$item_restrict = " AND item_type = 0 ";
|
||||
|
||||
if ($arr['nouveau'] && ($client_mode & CLIENT_MODE_LOAD) && $channel) {
|
||||
// "New Item View" - show all items unthreaded in reverse created date order
|
||||
@ -4697,11 +4695,11 @@ function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remo
|
||||
|
||||
$page_type = '';
|
||||
|
||||
if($webpage & ITEM_WEBPAGE)
|
||||
if($webpage == ITEM_TYPE_WEBPAGE)
|
||||
$page_type = 'WEBPAGE';
|
||||
elseif($webpage & ITEM_BUILDBLOCK)
|
||||
elseif($webpage == ITEM_TYPE_BLOCK)
|
||||
$page_type = 'BUILDBLOCK';
|
||||
elseif($webpage & ITEM_PDL)
|
||||
elseif($webpage == ITEM_TYPE_PDL)
|
||||
$page_type = 'PDL';
|
||||
elseif($namespace && $remote_id) {
|
||||
$page_type = $namespace;
|
||||
|
@ -1158,7 +1158,7 @@ function discover_by_webbie($webbie) {
|
||||
|
||||
if(! $r) {
|
||||
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_flags ) values ('%s','%s','%s','%s','%s','%s','%s','%s', %d)",
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
|
||||
dbesc($guid),
|
||||
dbesc($addr),
|
||||
dbesc($addr),
|
||||
@ -1166,8 +1166,7 @@ function discover_by_webbie($webbie) {
|
||||
dbesc(trim($diaspora_base,'/')),
|
||||
dbesc($hostname),
|
||||
dbesc($notify),
|
||||
dbescdate(datetime_convert()),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
$photos = import_profile_photo($vcard['photo'],$addr);
|
||||
|
@ -229,9 +229,8 @@ function notifier_run($argv, $argc){
|
||||
$normal_mode = false;
|
||||
$expire = true;
|
||||
$items = q("SELECT * FROM item WHERE uid = %d AND item_wall = 1
|
||||
AND ( item_restrict & %d )>0 AND `changed` > %s - INTERVAL %s",
|
||||
AND item_deleted = 1 AND `changed` > %s - INTERVAL %s",
|
||||
intval($item_id),
|
||||
intval(ITEM_DELETED),
|
||||
db_utcnow(), db_quoteinterval('10 MINUTE')
|
||||
);
|
||||
$uid = $item_id;
|
||||
@ -337,19 +336,22 @@ function notifier_run($argv, $argc){
|
||||
$target_item = $r[0];
|
||||
$deleted_item = false;
|
||||
|
||||
if($target_item['item_restrict'] & ITEM_DELETED) {
|
||||
if(intval($target_item['item_deleted']))
|
||||
logger('notifier: target item ITEM_DELETED', LOGGER_DEBUG);
|
||||
$deleted_item = true;
|
||||
}
|
||||
|
||||
if(strpos($target_item['postopts'],'nodeliver') !== false) {
|
||||
logger('notifier: target item is undeliverable', LOGGER_DEBUG);
|
||||
if(intval($target_item['item_type']) != ITEM_TYPE_POST) {
|
||||
logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
|
||||
return;
|
||||
}
|
||||
if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed_publish'])) {
|
||||
logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
|
||||
return;
|
||||
}
|
||||
|
||||
$unforwardable = ITEM_UNPUBLISHED|ITEM_DELAYED_PUBLISH|ITEM_WEBPAGE|ITEM_BUILDBLOCK|ITEM_PDL;
|
||||
if($target_item['item_restrict'] & $unforwardable) {
|
||||
logger('notifier: target item not forwardable: flags ' . $target_item['item_restrict'], LOGGER_DEBUG);
|
||||
if(strpos($target_item['postopts'],'nodeliver') !== false) {
|
||||
logger('notifier: target item is undeliverable', LOGGER_DEBUG);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -406,10 +408,7 @@ function notifier_run($argv, $argc){
|
||||
// flag on comments for an extended period. So we'll also call comment_local_origin() which looks at
|
||||
// the hostname in the message_id and provides a second (fallback) opinion.
|
||||
|
||||
$relay_to_owner = (((! $top_level_post) && ($target_item['item_flags'] & ITEM_ORIGIN) && comment_local_origin($target_item))
|
||||
? true
|
||||
: false
|
||||
);
|
||||
$relay_to_owner = (((! $top_level_post) && (intval($target_item['item_origin'])) && comment_local_origin($target_item)) ? true : false);
|
||||
|
||||
$uplink = false;
|
||||
|
||||
@ -418,11 +417,10 @@ function notifier_run($argv, $argc){
|
||||
|
||||
logger('notifier: relay_to_owner: ' . (($relay_to_owner) ? 'true' : 'false'), LOGGER_DATA);
|
||||
logger('notifier: top_level_post: ' . (($top_level_post) ? 'true' : 'false'), LOGGER_DATA);
|
||||
logger('notifier: target_item_flags: ' . $target_item['item_flags'] . ' ' . (($target_item['item_flags'] & ITEM_ORIGIN ) ? 'true' : 'false'), LOGGER_DATA);
|
||||
|
||||
// tag_deliver'd post which needs to be sent back to the original author
|
||||
|
||||
if(($cmd === 'uplink') && ($parent_item['item_flags'] & ITEM_UPLINK) && (! $top_level_post)) {
|
||||
if(($cmd === 'uplink') && intval($parent_item['item_uplink']) && (! $top_level_post)) {
|
||||
logger('notifier: uplink');
|
||||
$uplink = true;
|
||||
}
|
||||
@ -443,7 +441,7 @@ function notifier_run($argv, $argc){
|
||||
// if our parent is a tag_delivery recipient, uplink to the original author causing
|
||||
// a delivery fork.
|
||||
|
||||
if(($parent_item['item_flags'] & ITEM_UPLINK) && (! $top_level_post) && ($cmd !== 'uplink')) {
|
||||
if(intval($parent_item['item_uplink']) && (! $top_level_post) && ($cmd !== 'uplink')) {
|
||||
logger('notifier: uplinking this item');
|
||||
proc_run('php','include/notifier.php','uplink',$item_id);
|
||||
}
|
||||
@ -456,7 +454,7 @@ function notifier_run($argv, $argc){
|
||||
// don't send deletions onward for other people's stuff
|
||||
// TODO verify this is needed - copied logic from same place in old code
|
||||
|
||||
if(($target_item['item_restrict'] & ITEM_DELETED) && (! intval($target_item['item_wall']))) {
|
||||
if(intval($target_item['item_deleted']) && (! intval($target_item['item_wall']))) {
|
||||
logger('notifier: ignoring delete notification for non-wall item');
|
||||
return;
|
||||
}
|
||||
@ -538,15 +536,12 @@ function notifier_run($argv, $argc){
|
||||
// aren't the owner or author.
|
||||
|
||||
|
||||
$r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
$r = q("select * from hubloc
|
||||
where hubloc_hash in (" . implode(',',$recipients) . ") order by hubloc_connected desc limit 1");
|
||||
}
|
||||
else {
|
||||
$r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
where hubloc_hash in (" . implode(',',$recipients) . ") and not (hubloc_flags & %d) > 0 and not (hubloc_status & %d) > 0",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
intval(HUBLOC_OFFLINE)
|
||||
);
|
||||
$r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ")
|
||||
and hubloc_error = 0 and hubloc_deleted = 0");
|
||||
}
|
||||
|
||||
if(! $r) {
|
||||
|
@ -5,9 +5,6 @@ function format_notification($item) {
|
||||
|
||||
$ret = '';
|
||||
|
||||
// return array();
|
||||
|
||||
|
||||
require_once('include/conversation.php');
|
||||
|
||||
// Call localize_item with the "brief" flag to get a one line status for activities.
|
||||
@ -19,7 +16,7 @@ function format_notification($item) {
|
||||
$itemem_text = $item['localize'];
|
||||
}
|
||||
else {
|
||||
$itemem_text = (($item['item_flags'] & ITEM_THREAD_TOP)
|
||||
$itemem_text = (($item['item_thread_top'])
|
||||
? t('created a new post')
|
||||
: sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ function onedirsync_run($argv, $argc){
|
||||
intval(UPDATE_FLAGS_UPDATED)
|
||||
);
|
||||
if($x) {
|
||||
$y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date < '%s' ",
|
||||
$y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'",
|
||||
intval(UPDATE_FLAGS_UPDATED),
|
||||
dbesc($r[0]['ud_addr']),
|
||||
intval(UPDATE_FLAGS_UPDATED),
|
||||
|
@ -210,6 +210,9 @@ function photo_upload($channel, $observer, $args) {
|
||||
|
||||
// Create item container
|
||||
|
||||
|
||||
$item_hidden = (($visible) ? 0 : 1 );
|
||||
|
||||
$lat = $lon = null;
|
||||
|
||||
if($exif && $exif['GPS']) {
|
||||
@ -219,8 +222,6 @@ function photo_upload($channel, $observer, $args) {
|
||||
}
|
||||
}
|
||||
|
||||
$item_flags = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
$item_restrict = (($visible) ? ITEM_VISIBLE : ITEM_HIDDEN);
|
||||
$title = '';
|
||||
$mid = item_message_id();
|
||||
|
||||
@ -229,23 +230,24 @@ function photo_upload($channel, $observer, $args) {
|
||||
if($lat && $lon)
|
||||
$arr['coord'] = $lat . ' ' . $lon;
|
||||
|
||||
$arr['aid'] = $account_id;
|
||||
$arr['uid'] = $channel_id;
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = $mid;
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_restrict'] = $item_restrict;
|
||||
$arr['resource_type'] = 'photo';
|
||||
$arr['resource_id'] = $photo_hash;
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['author_xchan'] = $observer['xchan_hash'];
|
||||
$arr['title'] = $title;
|
||||
$arr['allow_cid'] = $str_contact_allow;
|
||||
$arr['allow_gid'] = $str_group_allow;
|
||||
$arr['deny_cid'] = $str_contact_deny;
|
||||
$arr['deny_gid'] = $str_group_deny;
|
||||
$arr['verb'] = ACTIVITY_POST;
|
||||
$arr['aid'] = $account_id;
|
||||
$arr['uid'] = $channel_id;
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = $mid;
|
||||
$arr['item_hidden'] = $item_hidden;
|
||||
$arr['resource_type'] = 'photo';
|
||||
$arr['resource_id'] = $photo_hash;
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['author_xchan'] = $observer['xchan_hash'];
|
||||
$arr['title'] = $title;
|
||||
$arr['allow_cid'] = $str_contact_allow;
|
||||
$arr['allow_gid'] = $str_group_allow;
|
||||
$arr['deny_cid'] = $str_contact_deny;
|
||||
$arr['deny_gid'] = $str_group_deny;
|
||||
$arr['verb'] = ACTIVITY_POST;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
|
||||
@ -489,33 +491,34 @@ function photos_create_item($channel, $creator_hash, $photo, $visible = false) {
|
||||
|
||||
// Create item container
|
||||
|
||||
$item_flags = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
$item_restrict = (($visible) ? ITEM_VISIBLE : ITEM_HIDDEN);
|
||||
|
||||
$item_hidden = (($visible) ? 0 : 1 );
|
||||
|
||||
$mid = item_message_id();
|
||||
|
||||
$arr = array();
|
||||
|
||||
$arr['aid'] = $channel['channel_account_id'];
|
||||
$arr['uid'] = $channel['channel_id'];
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = $mid;
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_restrict'] = $item_restrict;
|
||||
$arr['resource_type'] = 'photo';
|
||||
$arr['resource_id'] = $photo['resource_id'];
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['author_xchan'] = $creator_hash;
|
||||
$arr['aid'] = $channel['channel_account_id'];
|
||||
$arr['uid'] = $channel['channel_id'];
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = $mid;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
$arr['item_hidden'] = $item_hidden;
|
||||
$arr['resource_type'] = 'photo';
|
||||
$arr['resource_id'] = $photo['resource_id'];
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['author_xchan'] = $creator_hash;
|
||||
|
||||
$arr['allow_cid'] = $photo['allow_cid'];
|
||||
$arr['allow_gid'] = $photo['allow_gid'];
|
||||
$arr['deny_cid'] = $photo['deny_cid'];
|
||||
$arr['deny_gid'] = $photo['deny_gid'];
|
||||
$arr['allow_cid'] = $photo['allow_cid'];
|
||||
$arr['allow_gid'] = $photo['allow_gid'];
|
||||
$arr['deny_cid'] = $photo['deny_cid'];
|
||||
$arr['deny_gid'] = $photo['deny_gid'];
|
||||
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
|
||||
$arr['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo['resource_id'] . ']'
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
|
||||
$arr['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo['resource_id'] . ']'
|
||||
. '[zmg]' . z_root() . '/photo/' . $photo['resource_id'] . '-' . $photo['scale'] . '[/zmg]'
|
||||
. '[/zrl]';
|
||||
|
||||
|
@ -59,10 +59,9 @@ function poller_run($argv, $argc){
|
||||
// expire any expired items
|
||||
|
||||
$r = q("select id from item where expires != '%s' and expires < %s
|
||||
and ( item_restrict & %d ) = 0 ",
|
||||
and item_deleted = 0 ",
|
||||
dbesc(NULL_DATE),
|
||||
db_utcnow(),
|
||||
intval(ITEM_DELETED)
|
||||
db_utcnow()
|
||||
);
|
||||
if($r) {
|
||||
require_once('include/items.php');
|
||||
|
@ -329,15 +329,13 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
|
||||
and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
|
||||
and not xlink_link in ( select xchan from xign where uid = %d )
|
||||
and xlink_xchan != ''
|
||||
and xchan_hidden = 0
|
||||
and xchan_deleted = 0
|
||||
and xlink_static = 0
|
||||
and not ( xchan_flags & %d )>0
|
||||
and not ( xchan_flags & %d )>0
|
||||
group by xchan_hash order by total desc limit %d offset %d ",
|
||||
intval($uid),
|
||||
intval($uid),
|
||||
intval($uid),
|
||||
intval(XCHAN_FLAGS_HIDDEN),
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
intval($limit),
|
||||
intval($start)
|
||||
);
|
||||
@ -350,14 +348,12 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
|
||||
where xlink_xchan = ''
|
||||
and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
|
||||
and not xlink_link in ( select xchan from xign where uid = %d )
|
||||
and xchan_hidden = 0
|
||||
and xchan_deleted = 0
|
||||
and xlink_static = 0
|
||||
and not ( xchan_flags & %d )>0
|
||||
and not ( xchan_flags & %d )>0
|
||||
group by xchan_hash order by total desc limit %d offset %d ",
|
||||
intval($uid),
|
||||
intval($uid),
|
||||
intval(XCHAN_FLAGS_HIDDEN),
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
intval($limit),
|
||||
intval($start)
|
||||
);
|
||||
@ -609,4 +605,4 @@ function poco($a,$extended = false) {
|
||||
else
|
||||
http_status_exit(500);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -112,10 +112,8 @@ function tagadelic($uid, $count = 0, $authors = '', $flags = 0, $restrict = 0, $
|
||||
$count = intval($count);
|
||||
|
||||
if($flags) {
|
||||
if($flags == ITEM_WALL)
|
||||
if($flags === 'wall')
|
||||
$sql_options .= " and item_wall = 1 ";
|
||||
else
|
||||
$sql_options .= " and ((item_flags & " . intval($flags) . ") = " . intval($flags) . ") ";
|
||||
}
|
||||
|
||||
if($authors) {
|
||||
@ -129,7 +127,7 @@ function tagadelic($uid, $count = 0, $authors = '', $flags = 0, $restrict = 0, $
|
||||
// Fetch tags
|
||||
$r = q("select term, count(term) as total from term left join item on term.oid = item.id
|
||||
where term.uid = %d and term.type = %d
|
||||
and otype = %d and item_restrict = %d
|
||||
and otype = %d and item_type = %d and item_private = 0
|
||||
$sql_options
|
||||
group by term order by total desc %s",
|
||||
intval($uid),
|
||||
|
@ -746,20 +746,21 @@ function contact_block() {
|
||||
return;
|
||||
|
||||
$is_owner = ((local_channel() && local_channel() == $a->profile['uid']) ? true : false);
|
||||
$sql_extra = '';
|
||||
|
||||
$abook_flags = ABOOK_FLAG_PENDING|ABOOK_FLAG_SELF;
|
||||
$xchan_flags = XCHAN_FLAGS_ORPHAN|XCHAN_FLAGS_DELETED;
|
||||
|
||||
if(! $is_owner) {
|
||||
$abook_flags = $abook_flags | ABOOK_FLAG_HIDDEN;
|
||||
$xchan_flags = $xchan_flags | XCHAN_FLAGS_HIDDEN;
|
||||
$sql_extra = " and xchan_hidden = 0 ";
|
||||
}
|
||||
|
||||
if((! is_array($a->profile)) || ($a->profile['hide_friends']))
|
||||
return $o;
|
||||
$r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and ( abook_flags & %d ) = 0 and ( xchan_flags & %d ) = 0",
|
||||
|
||||
$r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and not ( abook_flags & %d )>0 and xchan_orphan = 0 and xchan_deleted = 0 $sql_extra",
|
||||
intval($a->profile['uid']),
|
||||
intval($abook_flags),
|
||||
intval($xchan_flags)
|
||||
intval($abook_flags)
|
||||
);
|
||||
if(count($r)) {
|
||||
$total = intval($r[0]['total']);
|
||||
@ -768,14 +769,13 @@ function contact_block() {
|
||||
$contacts = t('No connections');
|
||||
$micropro = null;
|
||||
} else {
|
||||
|
||||
|
||||
$randfunc = db_getfunc('RAND');
|
||||
|
||||
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND ( abook_flags & %d ) = 0 and ( xchan_flags & %d ) = 0 ORDER BY $randfunc LIMIT %d",
|
||||
intval($a->profile['uid']),
|
||||
intval($abook_flags|ABOOK_FLAG_ARCHIVED),
|
||||
intval($xchan_flags),
|
||||
intval($shown)
|
||||
|
||||
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND not ( abook_flags & %d)>0 and xchan_orphan = 0 and xchan_deleted = 0 $sql_extra ORDER BY $randfunc LIMIT %d",
|
||||
intval($a->profile['uid']),
|
||||
intval($abook_flags|ABOOK_FLAG_ARCHIVED),
|
||||
intval($shown)
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
@ -1179,7 +1179,7 @@ function link_compare($a, $b) {
|
||||
|
||||
|
||||
function unobscure(&$item) {
|
||||
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
|
||||
if(array_key_exists('item_obscured',$item) && intval($item['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
if($item['title'])
|
||||
$item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
|
||||
@ -1620,9 +1620,9 @@ function unamp($s) {
|
||||
}
|
||||
|
||||
function layout_select($channel_id, $current = '') {
|
||||
$r = q("select mid,sid from item left join item_id on iid = item.id where service = 'PDL' and item.uid = item_id.uid and item_id.uid = %d and (item_restrict & %d)>0",
|
||||
$r = q("select mid,sid from item left join item_id on iid = item.id where service = 'PDL' and item.uid = item_id.uid and item_id.uid = %d and item_type = %d ",
|
||||
intval($channel_id),
|
||||
intval(ITEM_PDL)
|
||||
intval(ITEM_TYPE_PDL)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
@ -1975,13 +1975,13 @@ function xchan_query(&$items,$abook = true,$effective_uid = 0) {
|
||||
if(count($arr)) {
|
||||
if($abook) {
|
||||
$chans = q("select * from xchan left join hubloc on hubloc_hash = xchan_hash left join abook on abook_xchan = xchan_hash and abook_channel = %d
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0",
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and hubloc_primary = 1",
|
||||
intval($item['uid'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
$chans = q("select xchan.*,hubloc.* from xchan left join hubloc on hubloc_hash = xchan_hash
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0");
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and hubloc_primary = 1");
|
||||
}
|
||||
$xchans = q("select * from xchan where xchan_hash in (" . implode(',',$arr) . ") and xchan_network in ('rss','unknown')");
|
||||
if(! $chans)
|
||||
@ -2009,7 +2009,7 @@ function xchan_mail_query(&$item) {
|
||||
|
||||
if(count($arr)) {
|
||||
$chans = q("select xchan.*,hubloc.* from xchan left join hubloc on hubloc_hash = xchan_hash
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0");
|
||||
where xchan_hash in (" . implode(',', $arr) . ") and hubloc_primary = 1");
|
||||
}
|
||||
if($chans) {
|
||||
$item['from'] = find_xchan_in_array($item['from_xchan'],$chans);
|
||||
|
@ -29,7 +29,7 @@ function widget_tagcloud($args) {
|
||||
$type = TERM_CATEGORY;
|
||||
|
||||
// FIXME there exists no $authors variable
|
||||
$r = tagadelic($uid, $count, $authors, $flags, ITEM_WEBPAGE, $type);
|
||||
$r = tagadelic($uid, $count, $authors, $flags, ITEM_TYPE_WEBPAGE, $type);
|
||||
|
||||
if($r) {
|
||||
$o = '<div class="tagblock widget"><h3>' . t('Categories') . '</h3><div class="tags" align="center">';
|
||||
@ -393,7 +393,7 @@ function widget_tagcloud_wall($arr) {
|
||||
|
||||
$limit = ((array_key_exists('limit', $arr)) ? intval($arr['limit']) : 50);
|
||||
if(feature_enabled($a->profile['profile_uid'], 'tagadelic'))
|
||||
return wtagblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], ITEM_WALL);
|
||||
return wtagblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], 'wall');
|
||||
|
||||
return '';
|
||||
}
|
||||
@ -408,7 +408,7 @@ function widget_catcloud_wall($arr) {
|
||||
|
||||
$limit = ((array_key_exists('limit',$arr)) ? intval($arr['limit']) : 50);
|
||||
|
||||
return catblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], ITEM_WALL);
|
||||
return catblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], 'wall');
|
||||
}
|
||||
|
||||
|
||||
@ -704,7 +704,7 @@ function widget_item($arr) {
|
||||
require_once('include/security.php');
|
||||
$sql_extra = item_permissions_sql($uid);
|
||||
|
||||
$r = q("select * from item where mid = '%s' and uid = %d and item_restrict = " . intval(ITEM_WEBPAGE) . " $sql_extra limit 1",
|
||||
$r = q("select * from item where mid = '%s' and uid = %d and item_type = " . intval(ITEM_TYPE_WEBPAGE) . " $sql_extra limit 1",
|
||||
dbesc($arr['mid']),
|
||||
intval($uid)
|
||||
);
|
||||
@ -986,3 +986,5 @@ function widget_pubsites() {
|
||||
return;
|
||||
return '<div class="widget"><ul class="nav nav-pills"><li><a href="pubsites">' . t('Public Hubs') . '</a></li></ul></div>';
|
||||
}
|
||||
|
||||
|
||||
|
220
include/zot.php
220
include/zot.php
@ -80,9 +80,8 @@ function zot_get_hublocs($hash) {
|
||||
|
||||
/* Only search for active hublocs - e.g. those that haven't been marked deleted */
|
||||
|
||||
$ret = q("select * from hubloc where hubloc_hash = '%s' and not ( hubloc_flags & %d )>0 order by hubloc_url ",
|
||||
dbesc($hash),
|
||||
intval(HUBLOC_FLAGS_DELETED)
|
||||
$ret = q("select * from hubloc where hubloc_hash = '%s' and hubloc_deleted != 0 order by hubloc_url ",
|
||||
dbesc($hash)
|
||||
);
|
||||
|
||||
return $ret;
|
||||
@ -200,9 +199,8 @@ function zot_finger($webbie, $channel = null, $autofallback = true) {
|
||||
|
||||
$r = q("select xchan.*, hubloc.* from xchan
|
||||
left join hubloc on xchan_hash = hubloc_hash
|
||||
where xchan_addr = '%s' and (hubloc_flags & %d) > 0 limit 1",
|
||||
dbesc($xchan_addr),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
where xchan_addr = '%s' and hubloc_primary = 1 limit 1",
|
||||
dbesc($xchan_addr)
|
||||
);
|
||||
|
||||
if ($r) {
|
||||
@ -709,43 +707,36 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
|
||||
|
||||
$hidden = (1 - intval($arr['searchable']));
|
||||
|
||||
// Be careful - XCHAN_FLAGS_HIDDEN should evaluate to 1
|
||||
if(($r[0]['xchan_flags'] & XCHAN_FLAGS_HIDDEN) != $hidden)
|
||||
$new_flags = $r[0]['xchan_flags'] ^ XCHAN_FLAGS_HIDDEN;
|
||||
else
|
||||
$new_flags = $r[0]['xchan_flags'];
|
||||
$hidden_changed = $adult_changed = $deleted_changed = $pubforum_changed = 0;
|
||||
|
||||
$adult = (($r[0]['xchan_flags'] & XCHAN_FLAGS_SELFCENSORED) ? true : false);
|
||||
$adult_changed = ((intval($adult) != intval($arr['adult_content'])) ? true : false);
|
||||
if($adult_changed)
|
||||
$new_flags = $new_flags ^ XCHAN_FLAGS_SELFCENSORED;
|
||||
if(intval($r[0]['xchan_hidden']) != (1 - intval($arr['searchable'])))
|
||||
$hidden_changed = 1;
|
||||
if(intval($r[0]['xchan_selfcensored']) != intval($arr['adult_content']))
|
||||
$adult_changed = 1;
|
||||
if(intval($r[0]['xchan_deleted']) != intval($arr['deleted']))
|
||||
$deleted_changed = 1;
|
||||
if(intval($r[0]['xchan_pubforum']) != intval($arr['public_forum']))
|
||||
$pubforum_changed = 1;
|
||||
|
||||
$deleted = (($r[0]['xchan_flags'] & XCHAN_FLAGS_DELETED) ? true : false);
|
||||
$deleted_changed = ((intval($deleted) != intval($arr['deleted'])) ? true : false);
|
||||
if($deleted_changed)
|
||||
$new_flags = $new_flags ^ XCHAN_FLAGS_DELETED;
|
||||
|
||||
$public_forum = (($r[0]['xchan_flags'] & XCHAN_FLAGS_PUBFORUM) ? true : false);
|
||||
$pubforum_changed = ((intval($public_forum) != intval($arr['public_forum'])) ? true : false);
|
||||
if($pubforum_changed)
|
||||
$new_flags = $r[0]['xchan_flags'] ^ XCHAN_FLAGS_PUBFORUM;
|
||||
|
||||
if(($r[0]['xchan_name_date'] != $arr['name_updated'])
|
||||
|| ($r[0]['xchan_connurl'] != $arr['connections_url'])
|
||||
|| ($r[0]['xchan_flags'] != $new_flags)
|
||||
if(($r[0]['xchan_name_date'] != $arr['name_updated'])
|
||||
|| ($r[0]['xchan_connurl'] != $arr['connections_url'])
|
||||
|| ($r[0]['xchan_addr'] != $arr['address'])
|
||||
|| ($r[0]['xchan_follow'] != $arr['follow_url'])
|
||||
|| ($r[0]['xchan_connpage'] != $arr['connect_url'])
|
||||
|| ($r[0]['xchan_url'] != $arr['url'])) {
|
||||
$r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s', xchan_connurl = '%s', xchan_follow = '%s',
|
||||
xchan_connpage = '%s', xchan_flags = %d,
|
||||
|| ($r[0]['xchan_connpage'] != $arr['connect_url'])
|
||||
|| ($r[0]['xchan_url'] != $arr['url'])
|
||||
|| $hidden_changed || adult_changed || deleted_changed || $pubforum_changed ) {
|
||||
$r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s', xchan_connurl = '%s', xchan_follow = '%s',
|
||||
xchan_connpage = '%s', xchan_hidden = %d, xchan_selfcensored = %d, xchan_deleted = %d, xchan_pubforum = %d,
|
||||
xchan_addr = '%s', xchan_url = '%s' where xchan_hash = '%s'",
|
||||
dbesc(($arr['name']) ? $arr['name'] : '-'),
|
||||
dbesc($arr['name_updated']),
|
||||
dbesc($arr['connections_url']),
|
||||
dbesc($arr['follow_url']),
|
||||
dbesc($arr['connect_url']),
|
||||
intval($new_flags),
|
||||
intval(1 - intval($arr['searchable'])),
|
||||
intval($arr['adult_content']),
|
||||
intval($arr['deleted']),
|
||||
intval($arr['public_forum']),
|
||||
dbesc($arr['address']),
|
||||
dbesc($arr['url']),
|
||||
dbesc($xchan_hash)
|
||||
@ -764,20 +755,9 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
|
||||
&& ($arr['site']['url'] != z_root()))
|
||||
$arr['searchable'] = false;
|
||||
|
||||
$hidden = (1 - intval($arr['searchable']));
|
||||
|
||||
if($hidden)
|
||||
$new_flags = XCHAN_FLAGS_HIDDEN;
|
||||
else
|
||||
$new_flags = 0;
|
||||
if($arr['adult_content'])
|
||||
$new_flags |= XCHAN_FLAGS_SELFCENSORED;
|
||||
if(array_key_exists('deleted',$arr) && $arr['deleted'])
|
||||
$new_flags |= XCHAN_FLAGS_DELETED;
|
||||
|
||||
$x = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_mimetype,
|
||||
xchan_photo_l, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_flags)
|
||||
values ( '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d) ",
|
||||
xchan_photo_l, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_hidden, xchan_selfcensored, xchan_deleted, xchan_pubforum )
|
||||
values ( '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d) ",
|
||||
dbesc($xchan_hash),
|
||||
dbesc($arr['guid']),
|
||||
dbesc($arr['guid_sig']),
|
||||
@ -793,7 +773,10 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
|
||||
dbesc('zot'),
|
||||
dbescdate($arr['photo_updated']),
|
||||
dbescdate($arr['name_updated']),
|
||||
intval($new_flags)
|
||||
intval(1 - intval($arr['searchable'])),
|
||||
intval($arr['adult_content']),
|
||||
intval($arr['deleted']),
|
||||
intval($arr['public_forum'])
|
||||
);
|
||||
|
||||
$what .= 'new_xchan';
|
||||
@ -1541,11 +1524,11 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
if(($channel['channel_pageflags'] & PAGE_SYSTEM) && (! $arr['item_private']) && (! $relay)) {
|
||||
$local_public = true;
|
||||
|
||||
$r = q("select xchan_flags from xchan where xchan_hash = '%s' limit 1",
|
||||
$r = q("select xchan_selfcensored from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($sender['hash'])
|
||||
);
|
||||
// don't import sys channel posts from selfcensored authors
|
||||
if($r && ($r[0]['xchan_flags'] & XCHAN_FLAGS_SELFCENSORED)) {
|
||||
if($r && (intval($r[0]['xchan_selfcensored']))) {
|
||||
$local_public = false;
|
||||
continue;
|
||||
}
|
||||
@ -1562,10 +1545,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
$arr['item_wall'] = 1;
|
||||
}
|
||||
else {
|
||||
// clear the wall flag if it is set
|
||||
if(intval($arr['item_wall'])) {
|
||||
$arr['item_wall'] = 0;
|
||||
}
|
||||
$arr['item_wall'] = 0;
|
||||
}
|
||||
|
||||
if((! perm_is_allowed($channel['channel_id'],$sender['hash'],$perm)) && (! $tag_delivery) && (! $local_public)) {
|
||||
@ -1653,7 +1633,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
}
|
||||
}
|
||||
|
||||
if($arr['item_restrict'] & ITEM_DELETED) {
|
||||
if(intval($arr['item_deleted'])) {
|
||||
|
||||
// remove_community_tag is a no-op if this isn't a community tag activity
|
||||
remove_community_tag($sender,$arr,$channel['channel_id']);
|
||||
@ -1676,15 +1656,16 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
continue;
|
||||
}
|
||||
|
||||
$r = q("select id, edited, item_restrict, item_flags, mid, parent_mid from item where mid = '%s' and uid = %d limit 1",
|
||||
$r = q("select * from item where mid = '%s' and uid = %d limit 1",
|
||||
dbesc($arr['mid']),
|
||||
intval($channel['channel_id'])
|
||||
);
|
||||
if($r) {
|
||||
// We already have this post.
|
||||
$item_id = $r[0]['id'];
|
||||
if($r[0]['item_restrict'] & ITEM_DELETED) {
|
||||
// It was deleted locally.
|
||||
|
||||
if(intval($r[0]['item_deleted'])) {
|
||||
// It was deleted locally.
|
||||
$result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
|
||||
continue;
|
||||
}
|
||||
@ -1699,9 +1680,10 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
}
|
||||
else {
|
||||
$result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
|
||||
// We need this line to ensure wall-to-wall comments are relayed (by falling through to the relay bit),
|
||||
// and at the same time not relay any other relayable posts more than once, because to do so is very wasteful.
|
||||
if(! ($r[0]['item_flags'] & ITEM_ORIGIN))
|
||||
|
||||
// We need this line to ensure wall-to-wall comments are relayed (by falling through to the relay bit),
|
||||
// and at the same time not relay any other relayable posts more than once, because to do so is very wasteful.
|
||||
if(! intval($r[0]['item_origin']))
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -1848,7 +1830,12 @@ function delete_imported_item($sender, $item, $uid, $relay) {
|
||||
$item_found = false;
|
||||
$post_id = 0;
|
||||
|
||||
$r = q("select id, item_restrict, author_xchan, owner_xchan, source_xchan from item where mid = '%s' and uid = %d limit 1",
|
||||
|
||||
$r = q("select id, item_deleted from item where ( author_xchan = '%s' or owner_xchan = '%s' or source_xchan = '%s' )
|
||||
and mid = '%s' and uid = %d limit 1",
|
||||
dbesc($sender['hash']),
|
||||
dbesc($sender['hash']),
|
||||
dbesc($sender['hash']),
|
||||
dbesc($item['mid']),
|
||||
intval($uid)
|
||||
);
|
||||
@ -1880,8 +1867,10 @@ function delete_imported_item($sender, $item, $uid, $relay) {
|
||||
return false;
|
||||
}
|
||||
|
||||
require_once('include/items.php');
|
||||
|
||||
if ($item_found) {
|
||||
if ($r[0]['item_restrict'] & ITEM_DELETED) {
|
||||
if (intval($r[0]['item_deleted'])) {
|
||||
logger('delete_imported_item: item was already deleted');
|
||||
if (! $relay)
|
||||
return false;
|
||||
@ -1893,9 +1882,8 @@ function delete_imported_item($sender, $item, $uid, $relay) {
|
||||
// back, and we aren't going to (or shouldn't at any rate) delete it again in the future - so losing
|
||||
// this information from the metadata should have no other discernible impact.
|
||||
|
||||
if (($r[0]['id'] != $r[0]['parent']) && ($r[0]['item_flags'] & ITEM_ORIGIN)) {
|
||||
q("update item set item_flags = %d where id = %d and uid = %d",
|
||||
intval($r[0]['item_flags'] ^ ITEM_ORIGIN),
|
||||
if (($r[0]['id'] != $r[0]['parent']) && intval($r[0]['item_origin'])) {
|
||||
q("update item set item_origin = 0 where id = %d and uid = %d",
|
||||
intval($r[0]['id']),
|
||||
intval($r[0]['uid'])
|
||||
);
|
||||
@ -2156,23 +2144,16 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
$current_site = true;
|
||||
}
|
||||
|
||||
// If it is the site we're currently talking to, and it's marked offline,
|
||||
// either we have some bad information - or the thing came back to life.
|
||||
|
||||
if(($current_site) && ($r[0]['hubloc_status'] & HUBLOC_OFFLINE)) {
|
||||
q("update hubloc set hubloc_status = (hubloc_status & ~%d) where hubloc_id = %d",
|
||||
intval(HUBLOC_OFFLINE),
|
||||
if($current_site && intval($r[0]['hubloc_error'])) {
|
||||
q("update hubloc set hubloc_error = 0 where hubloc_id = %d",
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_ORPHANCHECK) {
|
||||
q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_ORPHANCHECK),
|
||||
if(intval($r[0]['hubloc_orphancheck'])) {
|
||||
q("update hubloc set hubloc_orphancheck = 0 where hubloc_id = %d",
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
}
|
||||
q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
|
||||
dbesc($sender['hash'])
|
||||
);
|
||||
}
|
||||
@ -2188,9 +2169,8 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
}
|
||||
}
|
||||
|
||||
if(($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) && (! $location['primary'])) {
|
||||
$m = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
if(intval($r[0]['hubloc_primary']) && (! $location['primary'])) {
|
||||
$m = q("update hubloc set hubloc_primary = 0, hubloc_updated = '%s' where hubloc_id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
@ -2199,14 +2179,13 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
$what .= 'primary_hub ';
|
||||
$changed = true;
|
||||
}
|
||||
elseif((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY)) && ($location['primary'])) {
|
||||
$m = q("update hubloc set hubloc_flags = (hubloc_flags | %d), hubloc_updated = '%s' where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
elseif((! intval($r[0]['hubloc_primary'])) && ($location['primary'])) {
|
||||
$m = q("update hubloc set hubloc_primary = 1, hubloc_updated = '%s' where hubloc_id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
// make sure hubloc_change_primary() has current data
|
||||
$r[0]['hubloc_flags'] = $r[0]['hubloc_flags'] ^ HUBLOC_FLAGS_PRIMARY;
|
||||
$r[0]['hubloc_primary'] = intval($location['primary']);
|
||||
hubloc_change_primary($r[0]);
|
||||
$what .= 'primary_hub ';
|
||||
$changed = true;
|
||||
@ -2219,18 +2198,17 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
$changed = true;
|
||||
}
|
||||
}
|
||||
if(($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED) && (! $location['deleted'])) {
|
||||
$n = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
if((intval($r[0]['hubloc_deleted']) && (! $location['deleted']))
|
||||
|| ((! (intval($r[0]['hubloc_deleted']))) && ($location['deleted']))) {
|
||||
$n = q("update hubloc set hubloc_deleted = 0, hubloc_updated = '%s' where hubloc_id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
$what .= 'delete_hub ';
|
||||
$changed = true;
|
||||
}
|
||||
elseif((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED)) && ($location['deleted'])) {
|
||||
$n = q("update hubloc set hubloc_flags = (hubloc_flags | %d), hubloc_updated = '%s' where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
elseif((! intval($r[0]['hubloc_deleted'])) && ($location['deleted'])) {
|
||||
$n = q("update hubloc set hubloc_deleted = 1, hubloc_updated = '%s' where hubloc_id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['hubloc_id'])
|
||||
);
|
||||
@ -2244,22 +2222,20 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
// New hub claiming to be primary. Make it so by removing any existing primaries.
|
||||
|
||||
if(intval($location['primary'])) {
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_hash = '%s' and (hubloc_flags & %d )>0",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
$r = q("update hubloc set hubloc_primary = 0, hubloc_updated = '%s' where hubloc_hash = '%s' and hubloc_primary = 1",
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($sender['hash']),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
dbesc($sender['hash'])
|
||||
);
|
||||
}
|
||||
logger('sync_locations: new hub: ' . $location['url']);
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_flags, hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_updated, hubloc_connected)
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_primary, hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_updated, hubloc_connected)
|
||||
values ( '%s','%s','%s','%s', '%s', %d ,'%s','%s','%s','%s','%s','%s','%s')",
|
||||
dbesc($sender['guid']),
|
||||
dbesc($sender['guid_sig']),
|
||||
dbesc($sender['hash']),
|
||||
dbesc($location['address']),
|
||||
dbesc('zot'),
|
||||
intval((intval($location['primary'])) ? HUBLOC_FLAGS_PRIMARY : 0),
|
||||
intval($location['primary']),
|
||||
dbesc($location['url']),
|
||||
dbesc($location['url_sig']),
|
||||
dbesc($location['host']),
|
||||
@ -2287,8 +2263,7 @@ function sync_locations($sender, $arr, $absolute = false) {
|
||||
foreach($xisting as $x) {
|
||||
if(! array_key_exists('updated',$x)) {
|
||||
logger('sync_locations: deleting unreferenced hub location ' . $x['hubloc_url']);
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
$r = q("update hubloc set hubloc_deleted = 1, hubloc_updated = '%s' where hubloc_id = %d",
|
||||
dbesc(datetime_convert()),
|
||||
intval($x['hubloc_id'])
|
||||
);
|
||||
@ -2317,20 +2292,19 @@ function zot_encode_locations($channel) {
|
||||
$ret = array();
|
||||
|
||||
$x = zot_get_hublocs($channel['channel_hash']);
|
||||
if ($x && count($x)) {
|
||||
foreach ($x as $hub) {
|
||||
if (! ($hub['hubloc_flags'] & HUBLOC_FLAGS_UNVERIFIED)) {
|
||||
$ret[] = array(
|
||||
'host' => $hub['hubloc_host'],
|
||||
'address' => $hub['hubloc_addr'],
|
||||
'primary' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) ? true : false),
|
||||
'url' => $hub['hubloc_url'],
|
||||
'url_sig' => $hub['hubloc_url_sig'],
|
||||
'callback' => $hub['hubloc_callback'],
|
||||
'sitekey' => $hub['hubloc_sitekey'],
|
||||
'deleted' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_DELETED) ? true : false)
|
||||
);
|
||||
}
|
||||
|
||||
if($x && count($x)) {
|
||||
foreach($x as $hub) {
|
||||
$ret[] = array(
|
||||
'host' => $hub['hubloc_host'],
|
||||
'address' => $hub['hubloc_addr'],
|
||||
'primary' => (intval($hub['hubloc_primary']) ? true : false),
|
||||
'url' => $hub['hubloc_url'],
|
||||
'url_sig' => $hub['hubloc_url_sig'],
|
||||
'callback' => $hub['hubloc_callback'],
|
||||
'sitekey' => $hub['hubloc_sitekey'],
|
||||
'deleted' => (intval($hub['hubloc_deleted']) ? true : false)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2386,9 +2360,8 @@ function import_directory_profile($hash, $profile, $addr, $ud_flags = UPDATE_FLA
|
||||
// These are not translated, so the German "erwachsenen" keyword will not censor the directory profile. Only the English form - "adult".
|
||||
|
||||
|
||||
if (in_arrayi('nsfw', $clean) || in_arrayi('adult', $clean)) {
|
||||
q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_SELFCENSORED),
|
||||
if(in_arrayi('nsfw',$clean) || in_arrayi('adult',$clean)) {
|
||||
q("update xchan set xchan_selfcensored = 1 where xchan_hash = '%s'",
|
||||
dbesc($hash)
|
||||
);
|
||||
}
|
||||
@ -3209,11 +3182,11 @@ function get_rpost_path($observer) {
|
||||
* @return boolean|string return false or a hash
|
||||
*/
|
||||
function import_author_zot($x) {
|
||||
$hash = make_xchan_hash($x['guid'], $x['guid_sig']);
|
||||
$r = q("select hubloc_url from hubloc where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and (hubloc_flags & %d)>0 limit 1",
|
||||
|
||||
$hash = make_xchan_hash($x['guid'],$x['guid_sig']);
|
||||
$r = q("select hubloc_url from hubloc where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and hubloc_primary = 1 limit 1",
|
||||
dbesc($x['guid']),
|
||||
dbesc($x['guid_sig']),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
dbesc($x['guid_sig'])
|
||||
);
|
||||
|
||||
if ($r) {
|
||||
@ -3283,12 +3256,9 @@ function zot_process_message_request($data) {
|
||||
if ($messages) {
|
||||
$env_recips = null;
|
||||
|
||||
$r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host
|
||||
from hubloc where hubloc_hash = '%s' and not (hubloc_flags & %d)>0
|
||||
and not (hubloc_status & %d)>0 ",
|
||||
dbesc($sender_hash),
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
intval(HUBLOC_OFFLINE)
|
||||
$r = q("select * from hubloc where hubloc_hash = '%s' and not hubloc_error and not hubloc_deleted
|
||||
group by hubloc_sitekey",
|
||||
dbesc($sender_hash)
|
||||
);
|
||||
if (! $r) {
|
||||
logger('no hubs');
|
||||
|
30
mod/acl.php
30
mod/acl.php
@ -94,19 +94,18 @@ function acl_init(&$a){
|
||||
|
||||
$r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags
|
||||
FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE (abook_channel = %d $extra_channels_sql) AND not ( abook_flags & %d )>0 and not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
WHERE (abook_channel = %d $extra_channels_sql) AND not ( abook_flags & %d )>0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED)
|
||||
);
|
||||
|
||||
}
|
||||
else { // Visitors
|
||||
$r = q("SELECT xchan_hash as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags
|
||||
FROM xchan left join xlink on xlink_link = xchan_hash
|
||||
WHERE xlink_xchan = '%s' AND NOT (xchan_flags & %d) > 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
dbesc(get_observer_hash()),
|
||||
intval(XCHAN_FLAGS_DELETED));
|
||||
WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
dbesc(get_observer_hash())
|
||||
);
|
||||
|
||||
// Find contacts of extra channels
|
||||
// This is probably more complicated than it needs to be
|
||||
@ -120,9 +119,8 @@ function acl_init(&$a){
|
||||
|
||||
$r2 = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags
|
||||
FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND not ( abook_flags & %d )>0 and not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED|ABOOK_FLAG_HIDDEN),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND not ( abook_flags & %d )>0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED|ABOOK_FLAG_HIDDEN)
|
||||
);
|
||||
if($r2)
|
||||
$r = array_merge($r,$r2);
|
||||
@ -152,8 +150,7 @@ function acl_init(&$a){
|
||||
if((count($r) < 100) && $type == 'c') {
|
||||
$r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags
|
||||
FROM xchan
|
||||
WHERE not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
WHERE xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc"
|
||||
);
|
||||
if($r2)
|
||||
$r = array_merge($r,$r2);
|
||||
@ -165,24 +162,21 @@ function acl_init(&$a){
|
||||
$r = q("SELECT xchan_hash as id, xchan_name as name, xchan_addr as nick, xchan_photo_s as micro, xchan_url as url
|
||||
FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE abook_channel = %d and ( (abook_their_perms = null) or (abook_their_perms & %d )>0)
|
||||
and not (xchan_flags & %d)>0
|
||||
and xchan_deleted = 0
|
||||
$sql_extra3
|
||||
ORDER BY `xchan_name` ASC ",
|
||||
intval(local_channel()),
|
||||
intval(PERMS_W_MAIL),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
intval(PERMS_W_MAIL)
|
||||
);
|
||||
}
|
||||
elseif(($type == 'a') || ($type == 'p')) {
|
||||
|
||||
$r = q("SELECT abook_id as id, xchan_name as name, xchan_hash as hash, xchan_addr as nick, xchan_photo_s as micro, xchan_network as network, xchan_url as url, xchan_addr as attag , abook_their_perms FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE abook_channel = %d
|
||||
and not (xchan_flags & %d)>0
|
||||
and xchan_deleted = 0
|
||||
$sql_extra3
|
||||
ORDER BY xchan_name ASC ",
|
||||
intval(local_channel()),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
|
||||
intval(local_channel())
|
||||
);
|
||||
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ function admin_content(&$a) {
|
||||
*/
|
||||
|
||||
// array( url, name, extra css classes )
|
||||
|
||||
$aside = array(
|
||||
'site' => array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"),
|
||||
'users' => array($a->get_baseurl(true)."/admin/users/", t("Accounts") , "users"),
|
||||
@ -99,6 +100,7 @@ function admin_content(&$a) {
|
||||
// 'hubloc' => array($a->get_baseurl(true)."/admin/hubloc/", t("Server") , "server"),
|
||||
'profs' => array(z_root() . '/admin/profs', t('Profile Config'), 'profs'),
|
||||
'dbsync' => array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync")
|
||||
|
||||
);
|
||||
|
||||
/* get plugins admin page */
|
||||
@ -148,9 +150,9 @@ function admin_content(&$a) {
|
||||
case 'themes':
|
||||
$o = admin_page_themes($a);
|
||||
break;
|
||||
case 'hubloc':
|
||||
$o = admin_page_hubloc($a);
|
||||
break;
|
||||
// case 'hubloc':
|
||||
// $o = admin_page_hubloc($a);
|
||||
// break;
|
||||
case 'logs':
|
||||
$o = admin_page_logs($a);
|
||||
break;
|
||||
@ -1436,4 +1438,4 @@ function admin_page_profs(&$a) {
|
||||
'$submit' => t('Save')
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ function channel_content(&$a, $update = 0, $load = false) {
|
||||
if(($update) && (! $load)) {
|
||||
if ($mid) {
|
||||
$r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d AND item_restrict = 0
|
||||
AND item_wall = 1 $simple_update $sql_extra limit 1",
|
||||
AND item_wall = 1 AND item_unseen = 1 $sql_extra limit 1",
|
||||
dbesc($mid . '%'),
|
||||
intval($a->profile['profile_uid'])
|
||||
);
|
||||
@ -174,7 +174,7 @@ function channel_content(&$a, $update = 0, $load = false) {
|
||||
$r = q("SELECT distinct parent AS `item_id`, created from item
|
||||
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
|
||||
WHERE uid = %d AND item_restrict = 0
|
||||
AND item_wall = 1 $simple_update
|
||||
AND item_wall = 1 AND item_unseen = 1
|
||||
AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
|
||||
$sql_extra
|
||||
ORDER BY created DESC",
|
||||
@ -220,12 +220,11 @@ function channel_content(&$a, $update = 0, $load = false) {
|
||||
$r = q("SELECT distinct id AS item_id, created FROM item
|
||||
left join abook on item.author_xchan = abook.abook_xchan
|
||||
WHERE uid = %d AND item_restrict = 0
|
||||
AND item_wall = 1 and (item_flags & %d)>0
|
||||
AND item_wall = 1 and item_thread_top = 1
|
||||
AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
|
||||
$sql_extra $sql_extra2
|
||||
ORDER BY created DESC $pager_sql ",
|
||||
intval($a->profile['profile_uid']),
|
||||
intval(ITEM_THREAD_TOP),
|
||||
intval(ABOOK_FLAG_BLOCKED)
|
||||
);
|
||||
}
|
||||
@ -334,8 +333,7 @@ function channel_content(&$a, $update = 0, $load = false) {
|
||||
}
|
||||
|
||||
if($is_owner && $update_unseen) {
|
||||
$r = q("UPDATE item SET item_unseen = 0 WHERE item_unseen = 1
|
||||
AND item_wall = 1 AND uid = %d $update_unseen",
|
||||
$r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
|
||||
intval(local_channel())
|
||||
);
|
||||
}
|
||||
|
@ -214,11 +214,10 @@ function connections_content(&$a) {
|
||||
nav_set_selected('intros');
|
||||
break;
|
||||
case 'ifpending':
|
||||
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or (xchan_flags & %d)>0)",
|
||||
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or xchan_deleted = 1 or xchan_orphan = 1)",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_PENDING),
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED)
|
||||
);
|
||||
if($r && $r[0]['total']) {
|
||||
$search_flags = ABOOK_FLAG_PENDING;
|
||||
@ -343,10 +342,9 @@ function connections_content(&$a) {
|
||||
}
|
||||
|
||||
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
|
||||
where abook_channel = %d and not (abook_flags & %d)>0 and not (xchan_flags & %d )>0 $sql_extra $sql_extra2 ",
|
||||
where abook_channel = %d and not (abook_flags & %d)>0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_SELF),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
|
||||
intval(ABOOK_FLAG_SELF)
|
||||
);
|
||||
if($r) {
|
||||
$a->set_pager_total($r[0]['total']);
|
||||
@ -354,10 +352,9 @@ function connections_content(&$a) {
|
||||
}
|
||||
|
||||
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
|
||||
WHERE abook_channel = %d and not (abook_flags & %d)>0 and not ( xchan_flags & %d)>0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ",
|
||||
WHERE abook_channel = %d and not (abook_flags & %d)>0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_SELF),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN),
|
||||
intval($a->pager['itemspage']),
|
||||
intval($a->pager['start'])
|
||||
);
|
||||
|
@ -240,8 +240,9 @@ function connedit_post(&$a) {
|
||||
&& (intval(get_pconfig($channel['channel_id'],'system','post_newfriend')))) {
|
||||
$xarr = array();
|
||||
$xarr['verb'] = ACTIVITY_FRIEND;
|
||||
$xarr['item_flags'] = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
$xarr['item_wall'] = 1;
|
||||
$xarr['item_origin'] = 1;
|
||||
$xarr['item_thread_top'] = 1;
|
||||
$xarr['owner_xchan'] = $xarr['author_xchan'] = $channel['channel_hash'];
|
||||
$xarr['allow_cid'] = $channel['channel_allow_cid'];
|
||||
$xarr['allow_gid'] = $channel['channel_allow_gid'];
|
||||
|
@ -127,7 +127,6 @@ function dirsearch_content(&$a) {
|
||||
if($forums)
|
||||
$safesql .= dir_flag_build(' AND ','xchan_flags',XCHAN_FLAGS_PUBFORUM, $forums);
|
||||
|
||||
|
||||
// we only support an age range currently. You must set both agege
|
||||
// (greater than or equal) and agele (less than or equal)
|
||||
|
||||
@ -170,21 +169,16 @@ function dirsearch_content(&$a) {
|
||||
$sql_extra .= " and xchan_addr like '%%" . get_app()->get_hostname() . "' ";
|
||||
}
|
||||
|
||||
|
||||
$safesql .= (($safe > 0) ? " and not ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " )>0 " : '');
|
||||
$safesql = (($safe > 0) ? " and xchan_censored = 0 and xchan_selfcensored = 0 " : '');
|
||||
if($safe < 0)
|
||||
$safesql .= " and ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " )>0 ";
|
||||
$safesql = " and ( xchan_censored = 1 OR xchan_selfcensored = 1 ) ";
|
||||
|
||||
if($limit)
|
||||
$qlimit = " LIMIT $limit ";
|
||||
else {
|
||||
$qlimit = " LIMIT " . intval($perpage) . " OFFSET " . intval($startrec);
|
||||
if($return_total) {
|
||||
$r = q("SELECT COUNT(xchan_hash) AS `total` FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and xchan_network = 'zot' and not ( xchan_flags & %d)>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $safesql ",
|
||||
intval(XCHAN_FLAGS_HIDDEN),
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
);
|
||||
$r = q("SELECT COUNT(xchan_hash) AS `total` FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and xchan_network = 'zot' and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql ");
|
||||
if($r) {
|
||||
$ret['total_items'] = $r[0]['total'];
|
||||
}
|
||||
@ -251,15 +245,10 @@ function dirsearch_content(&$a) {
|
||||
json_return_and_die($spkt);
|
||||
}
|
||||
else {
|
||||
|
||||
$r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot' and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $safesql $order $qlimit ",
|
||||
intval(XCHAN_FLAGS_HIDDEN),
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
intval(XCHAN_FLAGS_DELETED)
|
||||
);
|
||||
|
||||
$r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot' and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql $order $qlimit ",
|
||||
$ret['page'] = $page + 1;
|
||||
$ret['records'] = count($r);
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -283,7 +272,7 @@ function dirsearch_content(&$a) {
|
||||
$entry['name'] = $rr['xchan_name'];
|
||||
$entry['hash'] = $rr['xchan_hash'];
|
||||
|
||||
$entry['public_forum'] = (($rr['xchan_flags'] & XCHAN_FLAGS_PUBFORUM) ? true : false);
|
||||
$entry['public_forum'] = (intval($rr['xchan_pubforum']) ? true : false);
|
||||
|
||||
$entry['url'] = $rr['xchan_url'];
|
||||
$entry['photo_l'] = $rr['xchan_photo_l'];
|
||||
|
@ -81,7 +81,7 @@ function display_content(&$a, $update = 0, $load = false) {
|
||||
|
||||
$target_item = null;
|
||||
|
||||
$r = q("select id, uid, mid, parent_mid, item_restrict from item where mid like '%s' limit 1",
|
||||
$r = q("select id, uid, mid, parent_mid, item_type, item_deleted from item where mid like '%s' limit 1",
|
||||
dbesc($item_hash . '%')
|
||||
);
|
||||
|
||||
@ -91,7 +91,7 @@ function display_content(&$a, $update = 0, $load = false) {
|
||||
|
||||
$r = null;
|
||||
|
||||
if($target_item['item_restrict'] & ITEM_WEBPAGE) {
|
||||
if($target_item['item_type'] == ITEM_TYPE_WEBPAGE) {
|
||||
$x = q("select * from channel where channel_id = %d limit 1",
|
||||
intval($target_item['uid'])
|
||||
);
|
||||
@ -247,7 +247,7 @@ function display_content(&$a, $update = 0, $load = false) {
|
||||
}
|
||||
|
||||
if($updateable) {
|
||||
$x = q("UPDATE item SET item_unseen = 0 WHERE item_unseen = 1 AND uid = %d and parent = %d ",
|
||||
$x = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 AND uid = %d and parent = %d ",
|
||||
intval(local_channel()),
|
||||
intval($r[0]['parent'])
|
||||
);
|
||||
@ -266,7 +266,7 @@ function display_content(&$a, $update = 0, $load = false) {
|
||||
dbesc($item_hash)
|
||||
);
|
||||
if($r) {
|
||||
if($r[0]['item_flags'] & ITEM_DELETED) {
|
||||
if(intval($r[0]['item_deleted'])) {
|
||||
notice( t('Item has been removed.') . EOL );
|
||||
}
|
||||
else {
|
||||
|
@ -135,7 +135,7 @@ function editlayout_content(&$a) {
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$return_path' => $rp,
|
||||
'$action' => 'item',
|
||||
'$webpage' => ITEM_PDL,
|
||||
'$webpage' => ITEM_TYPE_PDL,
|
||||
'$share' => t('Edit'),
|
||||
'$bold' => t('Bold'),
|
||||
'$italic' => t('Italic'),
|
||||
|
@ -55,7 +55,7 @@ function editpost_content(&$a) {
|
||||
|
||||
|
||||
|
||||
if($itm[0]['item_flags'] & ITEM_OBSCURED) {
|
||||
if(intval($itm[0]['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
if($itm[0]['title'])
|
||||
$itm[0]['title'] = crypto_unencapsulate(json_decode_plus($itm[0]['title']),$key);
|
||||
|
@ -102,7 +102,7 @@ function editwebpage_content(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
if($itm[0]['item_flags'] & ITEM_OBSCURED) {
|
||||
if(intval($itm[0]['item_obscured'])) {
|
||||
$key = get_config('system','prvkey');
|
||||
if($itm[0]['title'])
|
||||
$itm[0]['title'] = crypto_unencapsulate(json_decode_plus($itm[0]['title']),$key);
|
||||
@ -169,7 +169,7 @@ function editwebpage_content(&$a) {
|
||||
|
||||
$editor = replace_macros($tpl,array(
|
||||
'$return_path' => $rp,
|
||||
'$webpage' => ITEM_WEBPAGE,
|
||||
'$webpage' => ITEM_TYPE_WEBPAGE,
|
||||
'$placeholdpagetitle' => t('Page link title'),
|
||||
'$pagetitle' => $page_title,
|
||||
'$writefiles' => (perm_is_allowed($owner, get_observer_hash(), 'post_photos') || perm_is_allowed($owner, get_observer_hash(), 'write_storage')),
|
||||
|
@ -414,8 +414,9 @@ function events_content(&$a) {
|
||||
$is_first = ($d !== $last_date);
|
||||
|
||||
$last_date = $d;
|
||||
// FIXME
|
||||
$edit = ((intval($rr['item_wall'])) ? array($a->get_baseurl().'/events/event/'.$rr['event_hash'],t('Edit event'),'','') : null);
|
||||
|
||||
$edit = (intval($rr['item_wall']) ? array($a->get_baseurl().'/events/event/'.$rr['event_hash'],t('Edit event'),'','') : null);
|
||||
|
||||
$drop = array($a->get_baseurl().'/events/drop/'.$rr['event_hash'],t('Delete event'),'','');
|
||||
|
||||
$title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8'));
|
||||
@ -632,7 +633,7 @@ function events_content(&$a) {
|
||||
'$s_text' => t('Event Starts:'),
|
||||
'$stext' => $stext,
|
||||
'$ftext' => $ftext,
|
||||
'$required' => ' <span class="required" title="' . t('Required') . '">*</span>',
|
||||
'$required' => '<span class="required" title="' . t('Required') . '">*</span>',
|
||||
'$ModalCANCEL' => t('Cancel'),
|
||||
'$ModalOK' => t('OK'),
|
||||
'$s_dsel' => datetimesel($f,new DateTime(),DateTime::createFromFormat('Y',$syear+5),DateTime::createFromFormat('Y-m-d H:i',"$syear-$smonth-$sday $shour:$sminute"),'start_text',true,true,'','',true),
|
||||
|
@ -27,8 +27,7 @@ function filer_content(&$a) {
|
||||
intval(local_channel())
|
||||
);
|
||||
if($r) {
|
||||
$x = q("update item set item_flags = ( item_flags | %d ) where id = %d and uid = %d",
|
||||
intval(ITEM_RETAINED),
|
||||
$x = q("update item set item_retained = 1 where id = %d and uid = %d",
|
||||
intval($r[0]['parent']),
|
||||
intval(local_channel())
|
||||
);
|
||||
|
@ -117,10 +117,9 @@ function group_content(&$a) {
|
||||
|
||||
check_form_security_token_ForbiddenOnErr('group_member_change', 't');
|
||||
|
||||
$r = q("SELECT abook_xchan from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and not (xchan_flags & %d)>0 and not (abook_flags & %d)>0 and not (abook_flags & %d)>0 limit 1",
|
||||
$r = q("SELECT abook_xchan from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and xchan_deleted = 0 and not (abook_flags & %d)>0 and not (abook_flags & %d)>0 limit 1",
|
||||
dbesc(base64url_decode(argv(2))),
|
||||
intval(local_channel()),
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
intval(ABOOK_FLAG_BLOCKED),
|
||||
intval(ABOOK_FLAG_PENDING)
|
||||
);
|
||||
@ -211,10 +210,9 @@ function group_content(&$a) {
|
||||
group_rmv_member(local_channel(),$group['name'],$member['xchan_hash']);
|
||||
}
|
||||
|
||||
$r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND not (abook_flags & %d)>0 and not (xchan_flags & %d)>0 and not (abook_flags & %d)>0 order by xchan_name asc",
|
||||
$r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND not (abook_flags & %d)>0 and xchan_deleted = 0 and not (abook_flags & %d)>0 order by xchan_name asc",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_BLOCKED),
|
||||
intval(XCHAN_FLAGS_DELETED),
|
||||
intval(ABOOK_FLAG_PENDING)
|
||||
);
|
||||
|
||||
|
@ -82,7 +82,7 @@ function home_content(&$a, $update = 0, $load = false) {
|
||||
|
||||
$r = q("select item.* from item left join item_id on item.id = item_id.iid
|
||||
where item.uid = %d and ( sid = '%s' or sid like '%s' ) and service = 'WEBPAGE' and
|
||||
item_restrict = %d ORDER BY $randfunc limit 1",
|
||||
item_type = %d ORDER BY $randfunc limit 1",
|
||||
intval($u[0]['channel_id']),
|
||||
dbesc($page_id),
|
||||
dbesc($randpage_id),
|
||||
|
@ -28,17 +28,17 @@ function impel_init(&$a) {
|
||||
|
||||
switch($j['type']) {
|
||||
case 'webpage':
|
||||
$arr['item_restrict'] = ITEM_WEBPAGE;
|
||||
$arr['item_type'] = ITEM_TYPE_WEBPAGE;
|
||||
$namespace = 'WEBPAGE';
|
||||
$installed_type = t('webpage');
|
||||
break;
|
||||
case 'block':
|
||||
$arr['item_restrict'] = ITEM_BUILDBLOCK;
|
||||
$arr['item_type'] = ITEM_TYPE_BLOCK;
|
||||
$namespace = 'BUILDBLOCK';
|
||||
$installed_type = t('block');
|
||||
break;
|
||||
case 'layout':
|
||||
$arr['item_restrict'] = ITEM_PDL;
|
||||
$arr['item_type'] = ITEM_TYPE_PDL;
|
||||
$namespace = 'PDL';
|
||||
$installed_type = t('layout');
|
||||
break;
|
||||
|
@ -200,8 +200,8 @@ function import_post(&$a) {
|
||||
'url' => $hubloc['hubloc_url'],
|
||||
'url_sig' => $hubloc['hubloc_url_sig']
|
||||
);
|
||||
if(($hubloc['hubloc_hash'] === $channel['channel_hash']) && ($hubloc['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) && ($seize))
|
||||
$hubloc['hubloc_flags'] = ($hubloc['hubloc_flags'] ^ HUBLOC_FLAGS_PRIMARY);
|
||||
if(($hubloc['hubloc_hash'] === $channel['channel_hash']) && intval($hubloc['hubloc_primary']) && ($seize))
|
||||
$hubloc['hubloc_primary'] = 0;
|
||||
|
||||
if(! zot_gethub($arr)) {
|
||||
unset($hubloc['hubloc_id']);
|
||||
@ -220,7 +220,7 @@ function import_post(&$a) {
|
||||
|
||||
// create new hubloc for the new channel at this site
|
||||
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_flags,
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_primary,
|
||||
hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey )
|
||||
values ( '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s' )",
|
||||
dbesc($channel['channel_guid']),
|
||||
@ -228,7 +228,7 @@ function import_post(&$a) {
|
||||
dbesc($channel['channel_hash']),
|
||||
dbesc($channel['channel_address'] . '@' . get_app()->get_hostname()),
|
||||
dbesc('zot'),
|
||||
intval(($seize) ? HUBLOC_FLAGS_PRIMARY : 0),
|
||||
intval(($seize) ? 1 : 0),
|
||||
dbesc(z_root()),
|
||||
dbesc(base64url_encode(rsa_sign(z_root(),$channel['channel_prvkey']))),
|
||||
dbesc(get_app()->get_hostname()),
|
||||
@ -239,9 +239,7 @@ function import_post(&$a) {
|
||||
// reset the original primary hubloc if it is being seized
|
||||
|
||||
if($seize)
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where (hubloc_flags & %d)>0 and hubloc_hash = '%s' and hubloc_url != '%s' ",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
$r = q("update hubloc set hubloc_primary = 0 where hubloc_primary = 1 and hubloc_hash = '%s' and hubloc_url != '%s' ",
|
||||
dbesc($channel['channel_hash']),
|
||||
dbesc(z_root())
|
||||
);
|
||||
|
47
mod/item.php
47
mod/item.php
@ -295,7 +295,7 @@ function item_post(&$a) {
|
||||
// For comments, We need to additionally look at the parent and see if it's a wall post that originated locally.
|
||||
|
||||
if($observer['xchan_name'] != $owner_xchan['xchan_name']) {
|
||||
if($parent_item && ($parent_item['item_flags'] & ITEM_ORIGIN) && intval($parent_item['item_wall'])) {
|
||||
if(($parent_item) && ($parent_item['item_wall'] && $parent_item['item_origin'])) {
|
||||
$walltowall_comment = true;
|
||||
$walltowall = true;
|
||||
}
|
||||
@ -344,11 +344,6 @@ function item_post(&$a) {
|
||||
$body = $_REQUEST['body'];
|
||||
$item_flags = $orig_post['item_flags'];
|
||||
|
||||
// force us to recalculate if we need to obscure this post
|
||||
|
||||
if($item_flags & ITEM_OBSCURED)
|
||||
$item_flags = ($item_flags ^ ITEM_OBSCURED);
|
||||
|
||||
$item_restrict = $orig_post['item_restrict'];
|
||||
$postopts = $orig_post['postopts'];
|
||||
$created = $orig_post['created'];
|
||||
@ -657,14 +652,10 @@ function item_post(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
$item_unseen = 1;
|
||||
$item_wall = 0;
|
||||
|
||||
if($post_type === 'wall' || $post_type === 'wall-comment')
|
||||
$item_wall = 1;
|
||||
|
||||
if($origin)
|
||||
$item_flags = $item_flags | ITEM_ORIGIN;
|
||||
$item_unseen = ((local_channel() != $profile_uid) ? 1 : 0);
|
||||
$item_wall = (($post_type === 'wall' || $post_type === 'wall-comment') ? 1 : 0);
|
||||
$item_origin = (($origin) ? 1 : 0);
|
||||
|
||||
if($moderated)
|
||||
$item_restrict = $item_restrict | ITEM_MODERATED;
|
||||
@ -695,14 +686,10 @@ function item_post(&$a) {
|
||||
|
||||
$datarray = array();
|
||||
|
||||
if(! $parent) {
|
||||
$item_flags = $item_flags | ITEM_THREAD_TOP;
|
||||
}
|
||||
$item_thead_top = ((! $parent) ? 1 : 0);
|
||||
|
||||
if($consensus)
|
||||
$item_flags |= ITEM_CONSENSUS;
|
||||
|
||||
if ((! $plink) && ($item_flags & ITEM_THREAD_TOP)) {
|
||||
if ((! $plink) && ($item_thread_top)) {
|
||||
$plink = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $mid;
|
||||
}
|
||||
|
||||
@ -738,6 +725,10 @@ function item_post(&$a) {
|
||||
$datarray['postopts'] = $postopts;
|
||||
$datarray['item_restrict'] = $item_restrict;
|
||||
$datarray['item_flags'] = $item_flags;
|
||||
$datarray['item_unseen'] = $item_unseen;
|
||||
$datarray['item_wall'] = $item_wall;
|
||||
$datarray['item_origin'] = $item_origin;
|
||||
$datarray['item_thread_top'] = $item_thread_top;
|
||||
$datarray['layout_mid'] = $layout_mid;
|
||||
$datarray['public_policy'] = $public_policy;
|
||||
$datarray['comment_policy'] = map_scope($channel['channel_w_comment']);
|
||||
@ -789,7 +780,7 @@ function item_post(&$a) {
|
||||
if($uid) {
|
||||
if($channel['channel_hash'] === $datarray['author_xchan']) {
|
||||
$datarray['sig'] = base64url_encode(rsa_sign($datarray['body'],$channel['channel_prvkey']));
|
||||
$datarray['item_flags'] = $datarray['item_flags'] | ITEM_VERIFIED;
|
||||
$datarray['item_verified'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -825,7 +816,7 @@ function item_post(&$a) {
|
||||
// only send comment notification if this is a wall-to-wall comment,
|
||||
// otherwise it will happen during delivery
|
||||
|
||||
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && intval($parent_item['item_wall'])) {
|
||||
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && (intval($parent_item['item_wall']))) {
|
||||
notification(array(
|
||||
'type' => NOTIFY_COMMENT,
|
||||
'from_xchan' => $datarray['author_xchan'],
|
||||
@ -867,9 +858,8 @@ function item_post(&$a) {
|
||||
// This way we don't see every picture in your new photo album posted to your wall at once.
|
||||
// They will show up as people comment on them.
|
||||
|
||||
if($parent_item['item_restrict'] & ITEM_HIDDEN) {
|
||||
$r = q("UPDATE `item` SET `item_restrict` = %d WHERE `id` = %d",
|
||||
intval($parent_item['item_restrict'] - ITEM_HIDDEN),
|
||||
if(intval($parent_item['item_hidden'])) {
|
||||
$r = q("UPDATE item SET item_hidden = 0 WHERE id = %d",
|
||||
intval($parent_item['id'])
|
||||
);
|
||||
}
|
||||
@ -1078,11 +1068,10 @@ function item_check_service_class($channel_id,$iswebpage) {
|
||||
$ret = array('success' => false, $message => '');
|
||||
|
||||
if ($iswebpage) {
|
||||
// note: we aren't counting comanche templates and blocks, only webpages
|
||||
$r = q("select count(id) as total from item where parent = id
|
||||
and ( item_restrict & %d ) > 0 and ( item_restrict & %d ) = 0 and uid = %d ",
|
||||
intval(ITEM_WEBPAGE),
|
||||
intval(ITEM_DELETED),
|
||||
$r = q("select count(i.id) as total from item i
|
||||
right join channel c on (i.author_xchan=c.channel_hash and i.uid=c.channel_id )
|
||||
and i.parent=i.id and i.item_type = %d and i.item_deleted = 0 and i.uid= %d ",
|
||||
intval(ITEM_TYPE_WEBPAGE),
|
||||
intval($channel_id)
|
||||
);
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ function layouts_content(&$a) {
|
||||
// This lets you post pages at other people's channels.
|
||||
|
||||
$x = array(
|
||||
'webpage' => ITEM_PDL,
|
||||
'webpage' => ITEM_TYPE_PDL,
|
||||
'is_owner' => true,
|
||||
'nickname' => $a->profile['channel_address'],
|
||||
'bang' => '',
|
||||
|
29
mod/like.php
29
mod/like.php
@ -241,9 +241,10 @@ function like_content(&$a) {
|
||||
|
||||
// get the item. Allow linked photos (which are normally hidden) to be liked
|
||||
|
||||
$r = q("SELECT * FROM item WHERE id = %d and (item_restrict = 0 or item_restrict = %d) LIMIT 1",
|
||||
intval($item_id),
|
||||
intval(ITEM_HIDDEN)
|
||||
$r = q("SELECT * FROM item WHERE id = %d
|
||||
and item_blocked = 0 and item_moderated = 0 and item_spam = 0
|
||||
and item_deleted = 0 and item_unpublished = 0 and item_delayed_publish = 0 LIMIT 1",
|
||||
intval($item_id)
|
||||
);
|
||||
|
||||
if(! $item_id || (! $r)) {
|
||||
@ -337,11 +338,13 @@ function like_content(&$a) {
|
||||
}
|
||||
|
||||
$mid = item_message_id();
|
||||
$item_wall = 0;
|
||||
|
||||
$arr = array();
|
||||
|
||||
if($extended_like) {
|
||||
$item_flags = ITEM_THREAD_TOP|ITEM_ORIGIN;
|
||||
$item_wall = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
}
|
||||
else {
|
||||
$post_type = (($item['resource_type'] === 'photo') ? t('photo') : t('status'));
|
||||
@ -373,18 +376,19 @@ function like_content(&$a) {
|
||||
),
|
||||
));
|
||||
|
||||
if(! ($item['item_flags'] & ITEM_THREAD_TOP))
|
||||
if(! intval($item['item_thread_top']))
|
||||
$post_type = 'comment';
|
||||
|
||||
$item_flags = ITEM_ORIGIN | ITEM_NOTSHOWN;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_notshown'] = 1;
|
||||
|
||||
if(intval($item['item_wall']))
|
||||
$item_wall = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
|
||||
// if this was a linked photo and was hidden, unhide it.
|
||||
|
||||
if($item['item_restrict'] & ITEM_HIDDEN) {
|
||||
$r = q("update item set item_restrict = (item_restrict ^ %d) where id = %d",
|
||||
intval(ITEM_HIDDEN),
|
||||
if(intval($item['item_hidden'])) {
|
||||
$r = q("update item set item_hidden = 0 where id = %d",
|
||||
intval($item['id'])
|
||||
);
|
||||
}
|
||||
@ -412,7 +416,6 @@ function like_content(&$a) {
|
||||
killme();
|
||||
|
||||
|
||||
$arr = array();
|
||||
|
||||
if($extended_like) {
|
||||
$ulink = '[zrl=' . $ch[0]['xchan_url'] . ']' . $ch[0]['xchan_name'] . '[/zrl]';
|
||||
|
20
mod/locs.php
20
mod/locs.php
@ -22,13 +22,10 @@ function locs_post(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags - %d) where (hubloc_flags & %d)>0 and hubloc_hash = '%s' ",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
$r = q("update hubloc set hubloc_primary = 0 where hubloc_primary = 1 and hubloc_hash = '%s' ",
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d and hubloc_hash = '%s'",
|
||||
intval(HUBLOC_FLAGS_PRIMARY),
|
||||
$r = q("update hubloc set hubloc_primary = 1 where hubloc_id = %d and hubloc_hash = '%s'",
|
||||
intval($hubloc_id),
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
@ -42,7 +39,7 @@ function locs_post(&$a) {
|
||||
$hubloc_id = intval($_REQUEST['drop']);
|
||||
|
||||
if($hubloc_id) {
|
||||
$r = q("select hubloc_id, hubloc_flags from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' limit 1",
|
||||
$r = q("select * from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' limit 1",
|
||||
intval($hubloc_id),
|
||||
dbesc(z_root()),
|
||||
dbesc($channel['channel_hash'])
|
||||
@ -52,12 +49,12 @@ function locs_post(&$a) {
|
||||
notice( t('Location not found.') . EOL);
|
||||
return;
|
||||
}
|
||||
if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) {
|
||||
if(intval($r[0]['hubloc_primary'])) {
|
||||
notice( t('Primary location cannot be removed.') . EOL);
|
||||
return;
|
||||
}
|
||||
$r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d and hubloc_hash = '%s'",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
|
||||
$r = q("update hubloc set hubloc_deleted = 1 where hubloc_id = %d and hubloc_hash = '%s'",
|
||||
intval($hubloc_id),
|
||||
dbesc($channel['channel_hash'])
|
||||
);
|
||||
@ -72,7 +69,6 @@ function locs_post(&$a) {
|
||||
function locs_content(&$a) {
|
||||
|
||||
|
||||
|
||||
if(! local_channel()) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return;
|
||||
@ -91,8 +87,8 @@ function locs_content(&$a) {
|
||||
|
||||
|
||||
for($x = 0; $x < count($r); $x ++) {
|
||||
$r[$x]['primary'] = (($r[$x]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) ? true : false);
|
||||
$r[$x]['deleted'] = (($r[$x]['hubloc_flags'] & HUBLOC_FLAGS_DELETED) ? true : false);
|
||||
$r[$x]['primary'] = (intval($r[$x]['hubloc_primary']) ? true : false);
|
||||
$r[$x]['deleted'] = (intval($r[$x]['hubloc_deleted']) ? true : false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -56,7 +56,7 @@ function manage_content(&$a) {
|
||||
$channels[$x]['default_links'] = '1';
|
||||
|
||||
|
||||
$c = q("SELECT id, item_restrict, item_flags, item_wall FROM item
|
||||
$c = q("SELECT id, item_restrict, item_wall FROM item
|
||||
WHERE item_restrict = 0 and item_unseen = 1 and uid = %d",
|
||||
intval($channels[$x]['channel_id'])
|
||||
);
|
||||
@ -71,11 +71,10 @@ function manage_content(&$a) {
|
||||
}
|
||||
|
||||
|
||||
$intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or (xchan_flags & %d)>0)",
|
||||
$intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or xchan_deleted = 1 or xchan_orphan = 1)",
|
||||
intval($channels[$x]['channel_id']),
|
||||
intval(ABOOK_FLAG_PENDING),
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED)
|
||||
);
|
||||
|
||||
if($intr)
|
||||
|
12
mod/mood.php
12
mod/mood.php
@ -61,9 +61,6 @@ function mood_init(&$a) {
|
||||
$mid = item_message_id();
|
||||
|
||||
$action = sprintf( t('%1$s is %2$s','mood'), '[zrl=' . $poster['xchan_url'] . ']' . $poster['xchan_name'] . '[/zrl]' , $verbs[$verb]);
|
||||
$item_flags = ITEM_ORIGIN;
|
||||
if(! $parent_mid)
|
||||
$item_flags |= ITEM_THREAD_TOP;
|
||||
|
||||
$arr = array();
|
||||
|
||||
@ -71,8 +68,6 @@ function mood_init(&$a) {
|
||||
$arr['uid'] = $uid;
|
||||
$arr['mid'] = $mid;
|
||||
$arr['parent_mid'] = (($parent_mid) ? $parent_mid : $mid);
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['author_xchan'] = $poster['xchan_hash'];
|
||||
$arr['owner_xchan'] = (($parent_mid) ? $r[0]['owner_xchan'] : $poster['xchan_hash']);
|
||||
$arr['title'] = '';
|
||||
@ -83,8 +78,13 @@ function mood_init(&$a) {
|
||||
$arr['item_private'] = $private;
|
||||
$arr['verb'] = $activity;
|
||||
$arr['body'] = $action;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_unseen'] = 1;
|
||||
if(! $parent_mid)
|
||||
$item['item_thread_top'] = 1;
|
||||
|
||||
if ((! $arr['plink']) && ($arr['item_flags'] & ITEM_THREAD_TOP)) {
|
||||
if ((! $arr['plink']) && intval($arr['item_thread_top'])) {
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
}
|
||||
|
||||
|
@ -176,12 +176,12 @@ function network_content(&$a, $update = 0, $load = false) {
|
||||
|
||||
|
||||
$sql_options = (($star)
|
||||
? " and (item_flags & " . intval(ITEM_STARRED) . ") > 0"
|
||||
? " and item_starred = 1 "
|
||||
: '');
|
||||
|
||||
$sql_nets = '';
|
||||
|
||||
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ")>0 $sql_options ) ";
|
||||
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE item_thread_top = 1 $sql_options ) ";
|
||||
|
||||
if($group) {
|
||||
$contact_str = '';
|
||||
@ -324,9 +324,8 @@ function network_content(&$a, $update = 0, $load = false) {
|
||||
}
|
||||
|
||||
if($conv) {
|
||||
$sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or ( item_flags & %d ) > 0) and item_restrict = 0 ) ",
|
||||
dbesc(protect_sprintf($channel['channel_hash'])),
|
||||
intval(ITEM_MENTIONSME)
|
||||
$sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or item_mentionsme = 1 )) ",
|
||||
dbesc(protect_sprintf($channel['channel_hash']))
|
||||
);
|
||||
}
|
||||
|
||||
@ -500,7 +499,7 @@ function network_content(&$a, $update = 0, $load = false) {
|
||||
}
|
||||
|
||||
if(($update_unseen) && (! $firehose))
|
||||
$r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 AND uid = %d $update_unseen ",
|
||||
$r = q("UPDATE item SET item_unseen = 0 WHERE item_unseen = 1 AND uid = %d $update_unseen ",
|
||||
intval(local_channel())
|
||||
);
|
||||
|
||||
|
@ -131,8 +131,8 @@ function openid_content(&$a) {
|
||||
|
||||
$x = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_mimetype,
|
||||
xchan_photo_l, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_photo_date,
|
||||
xchan_name_date, xchan_flags)
|
||||
values ( '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d) ",
|
||||
xchan_name_date, xchan_hidden)
|
||||
values ( '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 1) ",
|
||||
dbesc($url),
|
||||
dbesc(''),
|
||||
dbesc(''),
|
||||
@ -147,8 +147,7 @@ function openid_content(&$a) {
|
||||
dbesc($name),
|
||||
dbesc($network),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval(XCHAN_FLAGS_HIDDEN)
|
||||
dbesc(datetime_convert())
|
||||
);
|
||||
if($x) {
|
||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||
|
10
mod/page.php
10
mod/page.php
@ -59,11 +59,11 @@ function page_init(&$a) {
|
||||
$sql_options = item_permissions_sql($u[0]['channel_id']);
|
||||
|
||||
$r = q("select item.* from item left join item_id on item.id = item_id.iid
|
||||
where item.uid = %d and sid = '%s' and (( service = 'WEBPAGE' and
|
||||
item_restrict = %d ) or ( service = 'PDL' and item_restrict = %d )) $sql_options $revision limit 1",
|
||||
where item.uid = %d and sid = '%s' and (( service = 'WEBPAGE' and item_type = %d )
|
||||
OR ( service = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
|
||||
intval($u[0]['channel_id']),
|
||||
dbesc($page_id),
|
||||
intval(ITEM_WEBPAGE),
|
||||
intval(ITEM_TYPE_WEBPAGE),
|
||||
intval(ITEM_PDL)
|
||||
);
|
||||
if(! $r) {
|
||||
@ -72,10 +72,10 @@ function page_init(&$a) {
|
||||
|
||||
$x = q("select item.* from item left join item_id on item.id = item_id.iid
|
||||
where item.uid = %d and sid = '%s' and service = 'WEBPAGE' and
|
||||
item_restrict = %d $revision limit 1",
|
||||
item_type = %d $revision limit 1",
|
||||
intval($u[0]['channel_id']),
|
||||
dbesc($page_id),
|
||||
intval(ITEM_WEBPAGE)
|
||||
intval(ITEM_TYPE_WEBPAGE)
|
||||
);
|
||||
if($x) {
|
||||
// Yes, it's there. You just aren't allowed to see it.
|
||||
|
@ -180,19 +180,8 @@ function photos_post(&$a) {
|
||||
intval($page_owner_uid)
|
||||
);
|
||||
if(count($i)) {
|
||||
q("UPDATE `item` SET item_restrict = (item_restrict | %d), `edited` = '%s', `changed` = '%s' WHERE `parent_mid` = '%s' AND `uid` = %d",
|
||||
intval(ITEM_DELETED),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($i[0]['mid']),
|
||||
intval($page_owner_uid)
|
||||
);
|
||||
|
||||
drop_item($i[0]['id'],true,DROPITEM_PHASE1);
|
||||
$url = $a->get_baseurl();
|
||||
$drop_id = intval($i[0]['id']);
|
||||
|
||||
if($i[0]['visible'])
|
||||
proc_run('php',"include/notifier.php","drop","$drop_id");
|
||||
}
|
||||
}
|
||||
|
||||
@ -878,8 +867,8 @@ function photos_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
if((local_channel()) && (local_channel() == $link_item['uid'])) {
|
||||
q("UPDATE `item` SET item_unseen = 0 WHERE item_unseen = 1 AND parent = %d AND uid = %d ",
|
||||
if((local_channel()) && (local_user() == $link_item['uid'])) {
|
||||
q("UPDATE `item` SET item_unseen = 0 WHERE parent = %d and uid = %d and item_unseen = 1",
|
||||
intval($link_item['parent']),
|
||||
intval(local_channel())
|
||||
);
|
||||
|
12
mod/ping.php
12
mod/ping.php
@ -294,11 +294,10 @@ function ping_init(&$a) {
|
||||
if(argc() > 1 && (argv(1) === 'intros')) {
|
||||
$result = array();
|
||||
|
||||
$r = q("SELECT * FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or (xchan_flags & %d) > 0) ORDER BY abook_created DESC LIMIT 50",
|
||||
$r = q("SELECT * FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or xchan_deleted = 1 or xchan_orphan = 1) ORDER BY abook_created DESC LIMIT 50",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_PENDING),
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
@ -378,7 +377,7 @@ function ping_init(&$a) {
|
||||
|
||||
if($vnotify & (VNOTIFY_NETWORK|VNOTIFY_CHANNEL)) {
|
||||
$r = q("SELECT id, item_restrict, item_flags FROM item
|
||||
WHERE item_restrict = 0 and item_unseen = 1 and uid = %d
|
||||
WHERE (item_restrict = 0) and item_unseen = 1 and uid = %d
|
||||
and author_xchan != '%s'",
|
||||
intval(local_channel()),
|
||||
dbesc($ob_hash)
|
||||
@ -405,11 +404,10 @@ function ping_init(&$a) {
|
||||
$t2 = dba_timer();
|
||||
|
||||
if($vnotify & VNOTIFY_INTRO) {
|
||||
$intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or (xchan_flags & %d) > 0)",
|
||||
$intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or xchan_deleted = 1 or xchan_orphan = 1)",
|
||||
intval(local_channel()),
|
||||
intval(ABOOK_FLAG_PENDING),
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
|
||||
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
|
||||
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED)
|
||||
);
|
||||
|
||||
$t3 = dba_timer();
|
||||
|
10
mod/poke.php
10
mod/poke.php
@ -87,9 +87,6 @@ function poke_init(&$a) {
|
||||
|
||||
|
||||
$arr = array();
|
||||
$arr['item_flags'] = ITEM_ORIGIN;
|
||||
if($parent_item)
|
||||
$arr['item_flags'] |= ITEM_THREAD_TOP;
|
||||
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['owner_xchan'] = (($parent_item) ? $parent_item['owner_xchan'] : $channel['channel_hash']);
|
||||
@ -116,6 +113,13 @@ function poke_init(&$a) {
|
||||
|
||||
$arr['object'] = json_encode($obj);
|
||||
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_unseen'] = 1;
|
||||
if(! $parent_item)
|
||||
$item['item_thread_top'] = 1;
|
||||
|
||||
|
||||
post_activity_item($arr);
|
||||
|
||||
return;
|
||||
|
30
mod/post.php
30
mod/post.php
@ -285,20 +285,13 @@ function post_init(&$a) {
|
||||
$a->set_groups(init_groups_visitor($_SESSION['visitor_id']));
|
||||
info(sprintf( t('Welcome %s. Remote authentication successful.'),$x[0]['xchan_name']));
|
||||
logger('mod_zot: auth success from ' . $x[0]['xchan_addr']);
|
||||
q("update hubloc set hubloc_status = (hubloc_status | %d ) where hubloc_id = %d ",
|
||||
intval(HUBLOC_WORKS),
|
||||
intval($x[0]['hubloc_id'])
|
||||
);
|
||||
} else {
|
||||
if ($test) {
|
||||
}
|
||||
else {
|
||||
if($test) {
|
||||
$ret['message'] .= 'auth failure. ' . print_r($_REQUEST,true) . print_r($j,true) . EOL;
|
||||
json_return_and_die($ret);
|
||||
}
|
||||
logger('mod_zot: magic-auth failure - not authenticated: ' . $x[0]['xchan_addr']);
|
||||
q("update hubloc set hubloc_status = (hubloc_status | %d ) where hubloc_id = %d ",
|
||||
intval(HUBLOC_RECEIVE_ERROR),
|
||||
intval($x[0]['hubloc_id'])
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -693,20 +686,16 @@ function post_post(&$a) {
|
||||
|
||||
// a dead hub came back to life - reset any tombstones we might have
|
||||
|
||||
if ($hub['hubloc_status'] & HUBLOC_OFFLINE) {
|
||||
q("update hubloc set hubloc_status = (hubloc_status & ~%d) where hubloc_id = %d",
|
||||
intval(HUBLOC_OFFLINE),
|
||||
if(intval($hub['hubloc_error'])) {
|
||||
q("update hubloc set hubloc_error = 0 where hubloc_id = %d",
|
||||
intval($hub['hubloc_id'])
|
||||
);
|
||||
if ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_ORPHANCHECK) {
|
||||
q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where hubloc_id = %d",
|
||||
intval(HUBLOC_FLAGS_ORPHANCHECK),
|
||||
if(intval($r[0]['hubloc_orphancheck'])) {
|
||||
q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d",
|
||||
intval($hub['hubloc_id'])
|
||||
);
|
||||
}
|
||||
q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
intval(XCHAN_FLAGS_ORPHAN),
|
||||
q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
|
||||
dbesc($hub['hubloc_hash'])
|
||||
);
|
||||
}
|
||||
@ -718,8 +707,7 @@ function post_post(&$a) {
|
||||
* Get rid of them (mark them deleted). There's a good chance they were re-installs.
|
||||
*/
|
||||
|
||||
q("update hubloc set hubloc_flags = ( hubloc_flags | %d ) where hubloc_url = '%s' and hubloc_sitekey != '%s' ",
|
||||
intval(HUBLOC_FLAGS_DELETED),
|
||||
q("update hubloc set hubloc_deleted = 1 where hubloc_url = '%s' and hubloc_sitekey != '%s' ",
|
||||
dbesc($hub['hubloc_url']),
|
||||
dbesc($hub['hubloc_sitekey'])
|
||||
);
|
||||
|
@ -19,15 +19,15 @@ function starred_init(&$a) {
|
||||
if(! count($r))
|
||||
killme();
|
||||
|
||||
$item_flags = ( $r[0]['item_flags'] ^ ITEM_STARRED );
|
||||
$item_starred = (intval($r[0]['item_starred']) ? 0 : 1);
|
||||
|
||||
$r = q("UPDATE item SET item_flags = %d WHERE uid = %d and id = %d",
|
||||
intval($item_flags),
|
||||
$r = q("UPDATE item SET item_starred = %d WHERE uid = %d and id = %d",
|
||||
intval($item_starred),
|
||||
intval(local_channel()),
|
||||
intval($message_id)
|
||||
);
|
||||
|
||||
header('Content-type: application/json');
|
||||
echo json_encode(array('result' => (($item_flags & ITEM_STARRED) ? 1 : 0)));
|
||||
echo json_encode(array('result' => $item_starred));
|
||||
killme();
|
||||
}
|
||||
|
@ -96,28 +96,28 @@ function subthread_content(&$a) {
|
||||
),
|
||||
));
|
||||
|
||||
if(! ($item['item_flags'] & ITEM_THREAD_TOP))
|
||||
if(! intval($item['item_thread_top']))
|
||||
$post_type = 'comment';
|
||||
|
||||
|
||||
$bodyverb = t('%1$s is following %2$s\'s %3$s');
|
||||
|
||||
$item_flags = ITEM_ORIGIN | ITEM_NOTSHOWN;
|
||||
|
||||
$arr = array();
|
||||
|
||||
$arr['mid'] = $mid;
|
||||
$arr['aid'] = $owner_aid;
|
||||
$arr['uid'] = $owner_uid;
|
||||
$arr['item_flags'] = $item_flags;
|
||||
$arr['item_wall'] = $item['item_wall'];
|
||||
$arr['parent'] = $item['id'];
|
||||
$arr['parent_mid'] = $item['mid'];
|
||||
$arr['thr_parent'] = $item['mid'];
|
||||
$arr['owner_xchan'] = $thread_owner['xchan_hash'];
|
||||
$arr['author_xchan'] = $observer['xchan_hash'];
|
||||
$arr['mid'] = $mid;
|
||||
$arr['aid'] = $owner_aid;
|
||||
$arr['uid'] = $owner_uid;
|
||||
$arr['parent'] = $item['id'];
|
||||
$arr['parent_mid'] = $item['mid'];
|
||||
$arr['thr_parent'] = $item['mid'];
|
||||
$arr['owner_xchan'] = $thread_owner['xchan_hash'];
|
||||
$arr['author_xchan'] = $observer['xchan_hash'];
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_notshown'] = 1;
|
||||
if(intval($item['item_wall']))
|
||||
$arr['item_wall'] = 1;
|
||||
else
|
||||
$arr['item_wall'] = 0;
|
||||
|
||||
|
||||
$ulink = '[zrl=' . $item_author['xchan_url'] . ']' . $item_author['xchan_name'] . '[/zrl]';
|
||||
$alink = '[zrl=' . $observer['xchan_url'] . ']' . $observer['xchan_name'] . '[/zrl]';
|
||||
$plink = '[zrl=' . $a->get_baseurl() . '/display/' . $item['mid'] . ']' . $post_type . '[/zrl]';
|
||||
|
@ -107,10 +107,9 @@ function tagger_content(&$a) {
|
||||
$arr['owner_xchan'] = $item['owner_xchan'];
|
||||
$arr['author_xchan'] = $channel['channel_hash'];
|
||||
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = ((intval($item['item_wall'])) ? 1 : 0);
|
||||
|
||||
$arr['item_flags'] = ITEM_ORIGIN;
|
||||
$arr['item_wall'] = $item['item_wall'];
|
||||
|
||||
$ulink = '[zrl=' . $channel['xchan_url'] . ']' . $channel['channel_name'] . '[/zrl]';
|
||||
$alink = '[zrl=' . $item['xchan_url'] . ']' . $item['xchan_name'] . '[/zrl]';
|
||||
$plink = '[zrl=' . $item['plink'] . ']' . $post_type . '[/zrl]';
|
||||
|
@ -177,8 +177,9 @@ function thing_init(&$a) {
|
||||
$arr['owner_xchan'] = $channel['channel_hash'];
|
||||
$arr['author_xchan'] = $channel['channel_hash'];
|
||||
|
||||
$arr['item_flags'] = ITEM_ORIGIN|ITEM_THREAD_TOP;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
|
||||
$ulink = '[zrl=' . $channel['xchan_url'] . ']' . $channel['channel_name'] . '[/zrl]';
|
||||
$plink = '[zrl=' . $term['url'] . ']' . $term['term'] . '[/zrl]';
|
||||
|
@ -35,25 +35,24 @@ function viewconnections_content(&$a) {
|
||||
$is_owner = ((local_channel() && local_channel() == $a->profile['uid']) ? true : false);
|
||||
|
||||
$abook_flags = ABOOK_FLAG_PENDING|ABOOK_FLAG_SELF;
|
||||
$xchan_flags = XCHAN_FLAGS_ORPHAN|XCHAN_FLAGS_DELETED;
|
||||
$sql_extra = '';
|
||||
|
||||
if(! $is_owner) {
|
||||
$abook_flags = $abook_flags | ABOOK_FLAG_HIDDEN;
|
||||
$xchan_flags = $xchan_flags | XCHAN_FLAGS_HIDDEN;
|
||||
$sql_extra = " and xchan_hidden = 0 ";
|
||||
}
|
||||
|
||||
$r = q("SELECT count(*) as total FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d )>0 and not ( xchan_flags & %d )>0 ",
|
||||
$r = q("SELECT count(*) as total FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d )>0 and xchan_orphan = 0 and xchan_deleted = 0 $sql_extra ",
|
||||
intval($a->profile['uid']),
|
||||
intval($abook_flags),
|
||||
intval($xchan_flags)
|
||||
intval($abook_flags)
|
||||
);
|
||||
if($r) {
|
||||
$a->set_pager_total($r[0]['total']);
|
||||
}
|
||||
|
||||
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not ( abook_flags & %d )>0 and not ( xchan_flags & %d )>0 order by xchan_name LIMIT %d OFFSET %d ",
|
||||
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not ( abook_flags & %d )>0 and xchan_orphan = 0 and xchan_deleted = 0 $sql_extra order by xchan_name LIMIT %d OFFSET %d ",
|
||||
intval($a->profile['uid']),
|
||||
intval($abook_flags),
|
||||
intval($xchan_flags),
|
||||
intval($a->pager['itemspage']),
|
||||
intval($a->pager['start'])
|
||||
);
|
||||
|
@ -20,15 +20,16 @@ function viewsrc_content(&$a) {
|
||||
notice( t('Item not found.') . EOL);
|
||||
}
|
||||
|
||||
|
||||
if(local_channel() && $item_id) {
|
||||
$r = q("select item_flags, body, id from item where item_restrict = 0 and uid in (%d , %d) and id = %d limit 1",
|
||||
$r = q("select id, item_flags, item_obscured, body from item where item_restrict = 0 and uid in (%d , %d) and id = %d limit 1",
|
||||
intval(local_channel()),
|
||||
intval($sys['channel_id']),
|
||||
intval($item_id)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
if($r[0]['item_flags'] & ITEM_OBSCURED)
|
||||
if(intval($r[0]['item_obscured']))
|
||||
$r[0]['body'] = crypto_unencapsulate(json_decode($r[0]['body'],true),get_config('system','prvkey'));
|
||||
$o = (($json) ? json_encode($r[0]['body']) : str_replace("\n",'<br />',$r[0]['body']));
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ function webpages_content(&$a) {
|
||||
$o = profile_tabs($a, $is_owner, $a->profile['channel_address']);
|
||||
|
||||
$x = array(
|
||||
'webpage' => ITEM_WEBPAGE,
|
||||
'webpage' => ITEM_TYPE_WEBPAGE,
|
||||
'is_owner' => true,
|
||||
'nickname' => $a->profile['channel_address'],
|
||||
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
|
||||
|
@ -104,7 +104,7 @@ function zfinger_init(&$a) {
|
||||
$adult_channel = (($e['channel_pageflags'] & PAGE_ADULT) ? true : false);
|
||||
$censored = (($e['channel_pageflags'] & PAGE_CENSORED) ? true : false);
|
||||
$searchable = (($e['channel_pageflags'] & PAGE_HIDDEN) ? false : true);
|
||||
$deleted = (($e['xchan_flags'] & XCHAN_FLAGS_DELETED) ? true : false);
|
||||
$deleted = (intval($e['xchan_deleted']) ? true : false);
|
||||
|
||||
if($deleted || $censored || $sys_channel)
|
||||
$searchable = false;
|
||||
|
@ -40,6 +40,7 @@
|
||||
#event-datetime-break {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#event-nofinish-break {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
@ -51,3 +52,4 @@
|
||||
#event-edit-preview-btn {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user