honour the admin censored flag in the directory, and some slow progress on extended likes

This commit is contained in:
friendica 2014-06-22 17:15:42 -07:00
parent 301c7cdb89
commit 1dacfb375e
5 changed files with 147 additions and 67 deletions

View File

@ -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' );

View File

@ -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`),

View File

@ -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;
}

View File

@ -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,8 +30,74 @@ function like_content(&$a) {
break; break;
} }
$extended_like = false;
$item_id = ((argc() > 1) ? notags(trim(argv(1))) : 0); if(argc() == 3) {
$observer = $a->get_observer();
if(! $observer)
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 {
$item_id = ((argc() == 2) ? notags(trim(argv(1))) : 0);
logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG); logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG);
@ -46,12 +111,15 @@ function like_content(&$a) {
killme(); killme();
} }
$item = $r[0]; $item = $r[0];
$owner_uid = $item['uid'];
$owner_aid = $item['aid'];
$sys = get_sys_channel(); $sys = get_sys_channel();
$owner_uid = $item['uid'];
$owner_aid = $item['aid'];
// if this is a "discover" item, (item['uid'] is the sys channel), // if this is a "discover" item, (item['uid'] is the sys channel),
// fallback to the item comment policy, which should've been // fallback to the item comment policy, which should've been
@ -81,7 +149,6 @@ function like_content(&$a) {
killme(); killme();
$r = q("SELECT * FROM item WHERE verb = '%s' AND item_restrict = 0 $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", AND author_xchan = '%s' AND ( parent = %d OR thr_parent = '%s') LIMIT 1",
dbesc($activity), dbesc($activity),
@ -104,7 +171,7 @@ function like_content(&$a) {
return; return;
} }
}
$mid = item_message_id(); $mid = item_message_id();

View File

@ -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