honour the admin censored flag in the directory, and some slow progress on extended likes
This commit is contained in:
parent
301c7cdb89
commit
1dacfb375e
2
boot.php
2
boot.php
@ -47,7 +47,7 @@ define ( 'RED_PLATFORM', 'Red Matrix' );
|
|||||||
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
|
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
|
||||||
define ( 'ZOT_REVISION', 1 );
|
define ( 'ZOT_REVISION', 1 );
|
||||||
|
|
||||||
define ( 'DB_UPDATE_VERSION', 1113 );
|
define ( 'DB_UPDATE_VERSION', 1114 );
|
||||||
|
|
||||||
define ( 'EOL', '<br />' . "\r\n" );
|
define ( 'EOL', '<br />' . "\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
@ -575,13 +575,15 @@ CREATE TABLE IF NOT EXISTS `item_id` (
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `likes` (
|
CREATE TABLE IF NOT EXISTS `likes` (
|
||||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`channel_id` int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
`liker` char(128) NOT NULL DEFAULT '',
|
`liker` char(128) NOT NULL DEFAULT '',
|
||||||
`likee` char(128) NOT NULL DEFAULT '',
|
`likee` char(128) NOT NULL DEFAULT '',
|
||||||
`iid` int(11) NOT NULL DEFAULT '0',
|
`iid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
`verb` char(255) NOT NULL DEFAULT '',
|
`verb` char(255) NOT NULL DEFAULT '',
|
||||||
`target_type` char(255) NOT NULL DEFAULT '',
|
`target_type` char(255) NOT NULL DEFAULT '',
|
||||||
`target` mediumtext NOT NULL,
|
`target` mediumtext NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `channel_id` (`channel_id`),
|
||||||
KEY `liker` (`liker`),
|
KEY `liker` (`liker`),
|
||||||
KEY `likee` (`likee`),
|
KEY `likee` (`likee`),
|
||||||
KEY `iid` (`iid`),
|
KEY `iid` (`iid`),
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1113 );
|
define( 'UPDATE_VERSION' , 1114 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -1273,3 +1273,13 @@ function update_r1112() {
|
|||||||
return UPDATE_SUCCESS;
|
return UPDATE_SUCCESS;
|
||||||
return UPDATE_FAILED;
|
return UPDATE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_r1113() {
|
||||||
|
$r = q("ALTER TABLE `likes` ADD `channel_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
|
||||||
|
CHANGE `iid` `iid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
|
ADD INDEX ( `channel_id` )");
|
||||||
|
if($r)
|
||||||
|
return UPDATE_SUCCESS;
|
||||||
|
return UPDATE_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
193
mod/like.php
193
mod/like.php
@ -16,7 +16,6 @@ function like_content(&$a) {
|
|||||||
if(! $verb)
|
if(! $verb)
|
||||||
$verb = 'like';
|
$verb = 'like';
|
||||||
|
|
||||||
|
|
||||||
switch($verb) {
|
switch($verb) {
|
||||||
case 'like':
|
case 'like':
|
||||||
case 'unlike':
|
case 'unlike':
|
||||||
@ -31,81 +30,149 @@ function like_content(&$a) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$extended_like = false;
|
||||||
|
|
||||||
$item_id = ((argc() > 1) ? notags(trim(argv(1))) : 0);
|
if(argc() == 3) {
|
||||||
|
|
||||||
logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG);
|
$observer = $a->get_observer();
|
||||||
|
|
||||||
|
if(! $observer)
|
||||||
$r = q("SELECT * FROM item WHERE id = %d and item_restrict = 0 LIMIT 1",
|
|
||||||
dbesc($item_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
if(! $item_id || (! $r)) {
|
|
||||||
logger('like: no item ' . $item_id);
|
|
||||||
killme();
|
|
||||||
}
|
|
||||||
|
|
||||||
$item = $r[0];
|
|
||||||
|
|
||||||
$sys = get_sys_channel();
|
|
||||||
|
|
||||||
$owner_uid = $item['uid'];
|
|
||||||
$owner_aid = $item['aid'];
|
|
||||||
|
|
||||||
// if this is a "discover" item, (item['uid'] is the sys channel),
|
|
||||||
// fallback to the item comment policy, which should've been
|
|
||||||
// respected when generating the conversation thread.
|
|
||||||
// Even if the activity is rejected by the item owner, it should still get attached
|
|
||||||
// to the local discover conversation on this site.
|
|
||||||
|
|
||||||
if(($owner_uid != $sys['channel_id']) && (! perm_is_allowed($owner_uid,$observer['xchan_hash'],'post_comments'))) {
|
|
||||||
notice( t('Permission denied') . EOL);
|
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
|
$extended_like = true;
|
||||||
|
$obj_type = argv(1);
|
||||||
|
$obj_id = argv(2);
|
||||||
|
$public = true;
|
||||||
|
|
||||||
|
if($obj_type == 'profile') {
|
||||||
|
$r = q("select * from profile where profile_guid = '%s' limit 1",
|
||||||
|
dbesc(argv(2))
|
||||||
|
);
|
||||||
|
if(! $r)
|
||||||
|
killme();
|
||||||
|
$owner_id = $r[0]['uid'];
|
||||||
|
if($r[0]['is_default'])
|
||||||
|
$public = true;
|
||||||
|
if(! $public) {
|
||||||
|
$d = q("select abook_xchan from abook where abook_profile = '%s' and abook_channel = %d",
|
||||||
|
dbesc($r[0]['profile_guid']),
|
||||||
|
intval($owner_id)
|
||||||
|
);
|
||||||
|
if(! $d) {
|
||||||
|
// forgery - illegal
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
// $d now contains a list of those who can see this profile - only send the status notification
|
||||||
|
// to them.
|
||||||
|
$allow_cid = $allow_gid = $deny_cid = $deny_gid = '';
|
||||||
|
foreach($d as $dd) {
|
||||||
|
$allow_gid .= '<' . $dd['abook_xchan'] . '>';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($obj_type == 'thing') {
|
||||||
|
$r = q("select * from obj where obj_id = %d limit 1",
|
||||||
|
intval(argv(2))
|
||||||
|
);
|
||||||
|
if(! $r)
|
||||||
|
killme();
|
||||||
|
|
||||||
|
$owner_id = $r[0]['obj_channel'];
|
||||||
|
|
||||||
|
$allow_cid = $r[0]['allow_cid'];
|
||||||
|
$allow_gid = $r[0]['allow_gid'];
|
||||||
|
$deny_cid = $r[0]['deny_cid'];
|
||||||
|
$deny_gid = $r[0]['deny_gid'];
|
||||||
|
if($allow_cid || $allow_gid || $deny_cid || $deny_gid)
|
||||||
|
$public = false;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
killme();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
$item_id = ((argc() == 2) ? notags(trim(argv(1))) : 0);
|
||||||
dbesc($item['owner_xchan'])
|
|
||||||
);
|
|
||||||
if($r)
|
|
||||||
$thread_owner = $r[0];
|
|
||||||
else
|
|
||||||
killme();
|
|
||||||
|
|
||||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG);
|
||||||
dbesc($item['author_xchan'])
|
|
||||||
);
|
|
||||||
if($r)
|
|
||||||
$item_author = $r[0];
|
|
||||||
else
|
|
||||||
killme();
|
|
||||||
|
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM item WHERE id = %d and item_restrict = 0 LIMIT 1",
|
||||||
$r = q("SELECT * FROM item WHERE verb = '%s' AND item_restrict = 0
|
dbesc($item_id)
|
||||||
AND author_xchan = '%s' AND ( parent = %d OR thr_parent = '%s') LIMIT 1",
|
|
||||||
dbesc($activity),
|
|
||||||
dbesc($observer['xchan_hash']),
|
|
||||||
intval($item_id),
|
|
||||||
dbesc($item['mid'])
|
|
||||||
);
|
|
||||||
if($r) {
|
|
||||||
$like_item = $r[0];
|
|
||||||
|
|
||||||
// Already liked/disliked it, delete it
|
|
||||||
|
|
||||||
$r = q("UPDATE item SET item_restrict = ( item_restrict ^ %d ), changed = '%s' WHERE id = %d LIMIT 1",
|
|
||||||
intval(ITEM_DELETED),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
intval($like_item['id'])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
proc_run('php',"include/notifier.php","like",$like_item['id']);
|
if(! $item_id || (! $r)) {
|
||||||
return;
|
logger('like: no item ' . $item_id);
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$item = $r[0];
|
||||||
|
$owner_uid = $item['uid'];
|
||||||
|
$owner_aid = $item['aid'];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$sys = get_sys_channel();
|
||||||
|
|
||||||
|
|
||||||
|
// if this is a "discover" item, (item['uid'] is the sys channel),
|
||||||
|
// fallback to the item comment policy, which should've been
|
||||||
|
// respected when generating the conversation thread.
|
||||||
|
// Even if the activity is rejected by the item owner, it should still get attached
|
||||||
|
// to the local discover conversation on this site.
|
||||||
|
|
||||||
|
if(($owner_uid != $sys['channel_id']) && (! perm_is_allowed($owner_uid,$observer['xchan_hash'],'post_comments'))) {
|
||||||
|
notice( t('Permission denied') . EOL);
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||||
|
dbesc($item['owner_xchan'])
|
||||||
|
);
|
||||||
|
if($r)
|
||||||
|
$thread_owner = $r[0];
|
||||||
|
else
|
||||||
|
killme();
|
||||||
|
|
||||||
|
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||||
|
dbesc($item['author_xchan'])
|
||||||
|
);
|
||||||
|
if($r)
|
||||||
|
$item_author = $r[0];
|
||||||
|
else
|
||||||
|
killme();
|
||||||
|
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM item WHERE verb = '%s' AND item_restrict = 0
|
||||||
|
AND author_xchan = '%s' AND ( parent = %d OR thr_parent = '%s') LIMIT 1",
|
||||||
|
dbesc($activity),
|
||||||
|
dbesc($observer['xchan_hash']),
|
||||||
|
intval($item_id),
|
||||||
|
dbesc($item['mid'])
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
$like_item = $r[0];
|
||||||
|
|
||||||
|
// Already liked/disliked it, delete it
|
||||||
|
|
||||||
|
$r = q("UPDATE item SET item_restrict = ( item_restrict ^ %d ), changed = '%s' WHERE id = %d LIMIT 1",
|
||||||
|
intval(ITEM_DELETED),
|
||||||
|
dbesc(datetime_convert()),
|
||||||
|
intval($like_item['id'])
|
||||||
|
);
|
||||||
|
|
||||||
|
proc_run('php',"include/notifier.php","like",$like_item['id']);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$mid = item_message_id();
|
$mid = item_message_id();
|
||||||
|
|
||||||
$post_type = (($item['resource_type'] === 'photo') ? t('photo') : t('status'));
|
$post_type = (($item['resource_type'] === 'photo') ? t('photo') : t('status'));
|
||||||
|
@ -101,10 +101,11 @@ function zfinger_init(&$a) {
|
|||||||
|
|
||||||
$special_channel = (($e['channel_pageflags'] & PAGE_PREMIUM) ? true : false);
|
$special_channel = (($e['channel_pageflags'] & PAGE_PREMIUM) ? true : false);
|
||||||
$adult_channel = (($e['channel_pageflags'] & PAGE_ADULT) ? true : false);
|
$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);
|
$searchable = (($e['channel_pageflags'] & PAGE_HIDDEN) ? false : true);
|
||||||
$deleted = (($e['xchan_flags'] & XCHAN_FLAGS_DELETED) ? true : false);
|
$deleted = (($e['xchan_flags'] & XCHAN_FLAGS_DELETED) ? true : false);
|
||||||
|
|
||||||
if(($e['xchan_flags'] & XCHAN_FLAGS_HIDDEN) || $deleted)
|
if(($e['xchan_flags'] & XCHAN_FLAGS_HIDDEN) || $deleted || $censored)
|
||||||
$searchable = false;
|
$searchable = false;
|
||||||
|
|
||||||
// This is for birthdays and keywords, but must check access permissions
|
// This is for birthdays and keywords, but must check access permissions
|
||||||
|
Reference in New Issue
Block a user