Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
e31600f24f
5
README
5
README
@ -3,8 +3,9 @@ Friendica RED Interaction Engine
|
|||||||
|
|
||||||
Red is a new concept in electronic communications which is based on our earlier work with Friendica and our pioneering developments in decentralised, federated social networking.
|
Red is a new concept in electronic communications which is based on our earlier work with Friendica and our pioneering developments in decentralised, federated social networking.
|
||||||
|
|
||||||
Red is prototype code and does not currently function. This message will be changed when it approaches stability.
|
Red is prototype code and has limited functionality at the present time. This message will be changed when it approaches stability.
|
||||||
|
|
||||||
|
At its heart, Red is a decentralised collection of location agnostic info streams (e.g. "channels") which are attached to permission controlled web resources, and which have the ability to discover each other and interact. You could call it a type of social network, but that would be degrading. This is a different concept in online communications, starting where social networks leave off and extending those somewhat primitive types of interactions in new ways - particularly when it comes to privacy.
|
||||||
|
|
||||||
At its heart, Red is a decentralised collection of location agnostic info streams (e.g. "channels") which are attached to permission controlled web resources, and which have the ability to discover each other and interact.
|
|
||||||
|
|
||||||
Social networking emulation is one form that these streams can take, but they can take many other forms - limited only by your imagination.
|
Social networking emulation is one form that these streams can take, but they can take many other forms - limited only by your imagination.
|
||||||
|
17
boot.php
17
boot.php
@ -17,7 +17,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica Red');
|
|||||||
define ( 'FRIENDICA_VERSION', trim(file_get_contents('version.inc')) . 'R');
|
define ( 'FRIENDICA_VERSION', trim(file_get_contents('version.inc')) . 'R');
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||||
define ( 'ZOT_REVISION', 1 );
|
define ( 'ZOT_REVISION', 1 );
|
||||||
define ( 'DB_UPDATE_VERSION', 1003 );
|
define ( 'DB_UPDATE_VERSION', 1005 );
|
||||||
|
|
||||||
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' );
|
||||||
@ -143,12 +143,13 @@ define ( 'UPDATE_FAILED', 1);
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define ( 'PAGE_NORMAL', 0 );
|
define ( 'PAGE_NORMAL', 0x0000 );
|
||||||
define ( 'PAGE_SOAPBOX', 1 );
|
define ( 'PAGE_HIDDEN', 0x0001 );
|
||||||
define ( 'PAGE_COMMUNITY', 2 );
|
define ( 'PAGE_AUTOCONNECT', 0x0002 );
|
||||||
define ( 'PAGE_FREELOVE', 3 );
|
|
||||||
define ( 'PAGE_BLOG', 4 );
|
//define ( 'PAGE_FREELOVE', 3 );
|
||||||
define ( 'PAGE_PRVGROUP', 5 );
|
//define ( 'PAGE_BLOG', 4 );
|
||||||
|
//define ( 'PAGE_PRVGROUP', 5 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Network and protocol family types
|
* Network and protocol family types
|
||||||
@ -647,7 +648,7 @@ if(! class_exists('App')) {
|
|||||||
|
|
||||||
if(is_array($this->config) && array_key_exists('system',$this->config) &&
|
if(is_array($this->config) && array_key_exists('system',$this->config) &&
|
||||||
array_key_exists('baseurl',$this->config['system']) && strlen($this->config['system']['baseurl'])) {
|
array_key_exists('baseurl',$this->config['system']) && strlen($this->config['system']['baseurl'])) {
|
||||||
$url = $a->config['system']['baseurl'];
|
$url = $this->config['system']['baseurl'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$parsed = @parse_url($url);
|
$parsed = @parse_url($url);
|
||||||
|
BIN
images/red.png
BIN
images/red.png
Binary file not shown.
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.8 KiB |
6
include/dir_fns.php
Normal file
6
include/dir_fns.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
function find_upstream_directory($dirmode) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,9 @@
|
|||||||
<?php
|
g<?php
|
||||||
require_once('boot.php');
|
require_once('boot.php');
|
||||||
require_once('include/zot.php');
|
require_once('include/zot.php');
|
||||||
require_once('include/cli_startup.php');
|
require_once('include/cli_startup.php');
|
||||||
|
require_once('include/dir_fns.php');
|
||||||
|
|
||||||
function find_upstream_directory($dirmode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function directory_run($argv, $argc){
|
function directory_run($argv, $argc){
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ function zot_refresh($them,$channel = null) {
|
|||||||
intval($default_perms),
|
intval($default_perms),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
intval(($default_perms) ? 0 : ABOOK_FLAG_BLOCKED|ABOOK_FLAG_IGNORED|ABOOK_FLAG_PENDING)
|
intval(($default_perms) ? 0 : ABOOK_FLAG_PENDING)
|
||||||
);
|
);
|
||||||
if($y) {
|
if($y) {
|
||||||
logger("New introduction received for {$channel['channel_name']}");
|
logger("New introduction received for {$channel['channel_name']}");
|
||||||
|
@ -208,7 +208,6 @@ CREATE TABLE IF NOT EXISTS `config` (
|
|||||||
UNIQUE KEY `access` (`cat`,`k`)
|
UNIQUE KEY `access` (`cat`,`k`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `event` (
|
CREATE TABLE IF NOT EXISTS `event` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`aid` int(10) unsigned NOT NULL DEFAULT '0',
|
`aid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
@ -761,6 +760,17 @@ CREATE TABLE IF NOT EXISTS `session` (
|
|||||||
KEY `expire` (`expire`)
|
KEY `expire` (`expire`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `site` (
|
||||||
|
`site_url` char(255) NOT NULL,
|
||||||
|
`site_flags` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`site_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
`site_directory` char(255) NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY (`site_url`),
|
||||||
|
KEY `site_flags` (`site_flags`),
|
||||||
|
KEY `site_update` (`site_update`),
|
||||||
|
KEY `site_directory` (`site_directory`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `spam` (
|
CREATE TABLE IF NOT EXISTS `spam` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`uid` int(11) NOT NULL,
|
`uid` int(11) NOT NULL,
|
||||||
@ -834,6 +844,7 @@ CREATE TABLE IF NOT EXISTS `xchan` (
|
|||||||
`xchan_url` char(255) NOT NULL DEFAULT '',
|
`xchan_url` char(255) NOT NULL DEFAULT '',
|
||||||
`xchan_name` char(255) NOT NULL DEFAULT '',
|
`xchan_name` char(255) NOT NULL DEFAULT '',
|
||||||
`xchan_network` char(255) NOT NULL DEFAULT '',
|
`xchan_network` char(255) NOT NULL DEFAULT '',
|
||||||
|
`xchan_flags` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
`xchan_photo_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`xchan_photo_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
`xchan_name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`xchan_name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
PRIMARY KEY (`xchan_hash`),
|
PRIMARY KEY (`xchan_hash`),
|
||||||
@ -841,5 +852,6 @@ CREATE TABLE IF NOT EXISTS `xchan` (
|
|||||||
KEY `xchan_addr` (`xchan_addr`),
|
KEY `xchan_addr` (`xchan_addr`),
|
||||||
KEY `xchan_name` (`xchan_name`),
|
KEY `xchan_name` (`xchan_name`),
|
||||||
KEY `xchan_network` (`xchan_network`),
|
KEY `xchan_network` (`xchan_network`),
|
||||||
KEY `xchan_url` (`xchan_url`)
|
KEY `xchan_url` (`xchan_url`),
|
||||||
|
KEY `xchan_flags` (`xchan_flags`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1003 );
|
define( 'UPDATE_VERSION' , 1005 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -74,3 +74,28 @@ function update_r1002() {
|
|||||||
return UPDATE_SUCCESS;
|
return UPDATE_SUCCESS;
|
||||||
return UPDATE_FAILED;
|
return UPDATE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function update_r1003() {
|
||||||
|
$r = q("ALTER TABLE `xchan` ADD `xchan_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `xchan_network` ,
|
||||||
|
ADD INDEX ( `xchan_flags` ) ");
|
||||||
|
if($r)
|
||||||
|
return UPDATE_SUCCESS;
|
||||||
|
return UPDATE_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_r1004() {
|
||||||
|
$r = q("CREATE TABLE if not exists `site` (
|
||||||
|
`site_url` CHAR( 255 ) NOT NULL ,
|
||||||
|
`site_flags` INT NOT NULL DEFAULT '0',
|
||||||
|
`site_update` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
`site_directory` CHAR( 255 ) NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY ( `site_url` )
|
||||||
|
) ENGINE = MYISAM ");
|
||||||
|
|
||||||
|
$r2 = q("alter table site add index (site_flags), add index (site_update), add index (site_directory) ");
|
||||||
|
|
||||||
|
if($r && $r2)
|
||||||
|
return UPDATE_SUCCESS;
|
||||||
|
return UPDATE_FAILED;
|
||||||
|
}
|
@ -1,14 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once('include/dir_fns.php');
|
||||||
|
|
||||||
|
|
||||||
function directory_init(&$a) {
|
function directory_init(&$a) {
|
||||||
$a->set_pager_itemspage(60);
|
$a->set_pager_itemspage(60);
|
||||||
|
|
||||||
if(local_user()) {
|
|
||||||
require_once('include/contact_widgets.php');
|
|
||||||
|
|
||||||
$a->page['aside'] .= findpeople_widget();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function directory_aside(&$a) {
|
function directory_aside(&$a) {
|
||||||
@ -35,56 +32,65 @@ function directory_content(&$a) {
|
|||||||
else
|
else
|
||||||
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
|
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
|
||||||
|
|
||||||
|
|
||||||
$tpl = get_markup_template('directory_header.tpl');
|
$tpl = get_markup_template('directory_header.tpl');
|
||||||
|
|
||||||
$globaldir = '';
|
|
||||||
$gdirpath = dirname(get_config('system','directory_submit_url'));
|
$dirmode = get_config('system','directory_mode');
|
||||||
if(strlen($gdirpath)) {
|
if($dirmode === false)
|
||||||
$globaldir = '<ul><li><div id="global-directory-link"><a href="'
|
$dirmode = DIRECTORY_MODE_NORMAL;
|
||||||
. zid($gdirpath,true) . '">' . t('Global Directory') . '</a></div></li></ul>';
|
|
||||||
|
if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
|
||||||
|
$localdir = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$admin = '';
|
// FIXME
|
||||||
|
$localdir = true;
|
||||||
|
|
||||||
$o .= replace_macros($tpl, array(
|
|
||||||
'$search' => $search,
|
|
||||||
'$globaldir' => $globaldir,
|
|
||||||
'$desc' => t('Find on this site'),
|
|
||||||
'$admin' => $admin,
|
|
||||||
'$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
|
|
||||||
'$sitedir' => t('Site Directory'),
|
|
||||||
'$submit' => t('Find')
|
|
||||||
));
|
|
||||||
|
|
||||||
|
if(! $localdir) {
|
||||||
|
$directory = find_upstream_directory($dirmode);
|
||||||
|
|
||||||
|
if($directory) {
|
||||||
|
$url = $directory['url'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$url = DIRECTORY_FALLBACK_MASTER . '/post';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if($localdir) {
|
||||||
if($search)
|
if($search)
|
||||||
$search = dbesc($search);
|
$search = dbesc($search);
|
||||||
$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country_name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
|
$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, channel.channel_address, `pdesc`, `locality`,`region`,`country_name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
|
||||||
|
|
||||||
$publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " );
|
|
||||||
|
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is_default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra ");
|
$r = q("SELECT COUNT(channel_id) AS `total` FROM channel left join profile on channel.channel_id = profile.uid WHERE `is_default` = 1 and not ( channel_pageflags & %d ) $sql_extra ",
|
||||||
if(count($r))
|
intval(PAGE_HIDDEN)
|
||||||
|
);
|
||||||
|
if($r)
|
||||||
$a->set_pager_total($r[0]['total']);
|
$a->set_pager_total($r[0]['total']);
|
||||||
|
|
||||||
$order = " ORDER BY `name` ASC ";
|
$order = " ORDER BY `name` ASC ";
|
||||||
|
|
||||||
|
|
||||||
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is_default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ",
|
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, channel_name, channel_address, channel_hash, channel_timezone, channel_pageflags FROM `profile` LEFT JOIN channel ON channel_id = `profile`.`uid` WHERE `is_default` = 1 and not ( channel_pageflags & %d ) $sql_extra $order LIMIT %d , %d ",
|
||||||
|
intval(PAGE_HIDDEN),
|
||||||
intval($a->pager['start']),
|
intval($a->pager['start']),
|
||||||
intval($a->pager['itemspage'])
|
intval($a->pager['itemspage'])
|
||||||
);
|
);
|
||||||
if(count($r)) {
|
if($r) {
|
||||||
|
|
||||||
|
$entries = array();
|
||||||
|
|
||||||
if(in_array('small', $a->argv))
|
|
||||||
$photo = 'thumb';
|
$photo = 'thumb';
|
||||||
else
|
|
||||||
$photo = 'photo';
|
|
||||||
|
|
||||||
foreach($r as $rr) {
|
foreach($r as $rr) {
|
||||||
|
|
||||||
|
$profile_link = chanlink_hash($rr['channel_hash']);
|
||||||
$profile_link = $a->get_baseurl() . '/channel/' . $rr['nickname'];
|
|
||||||
|
|
||||||
$pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '<br />' : '');
|
$pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '<br />' : '');
|
||||||
|
|
||||||
@ -108,16 +114,7 @@ function directory_content(&$a) {
|
|||||||
if(strlen($rr['gender']))
|
if(strlen($rr['gender']))
|
||||||
$details .= '<br />' . t('Gender: ') . $rr['gender'];
|
$details .= '<br />' . t('Gender: ') . $rr['gender'];
|
||||||
|
|
||||||
if($rr['page-flags'] == PAGE_NORMAL)
|
$page_type = '';
|
||||||
$page_type = "Personal Profile";
|
|
||||||
if($rr['page-flags'] == PAGE_SOAPBOX)
|
|
||||||
$page_type = "Fan Page";
|
|
||||||
if($rr['page-flags'] == PAGE_COMMUNITY)
|
|
||||||
$page_type = "Community Forum";
|
|
||||||
if($rr['page-flags'] == PAGE_FREELOVE)
|
|
||||||
$page_type = "Open Forum";
|
|
||||||
if($rr['page-flags'] == PAGE_PRVGROUP)
|
|
||||||
$page_type = "Private Group";
|
|
||||||
|
|
||||||
$profile = $rr;
|
$profile = $rr;
|
||||||
|
|
||||||
@ -136,25 +133,24 @@ function directory_content(&$a) {
|
|||||||
|
|
||||||
$about = ((x($profile,'about') == 1) ? t('About:') : False);
|
$about = ((x($profile,'about') == 1) ? t('About:') : False);
|
||||||
|
|
||||||
$tpl = get_markup_template('directory_item.tpl');
|
|
||||||
|
|
||||||
$entry = replace_macros($tpl,array(
|
|
||||||
'$id' => $rr['id'],
|
|
||||||
'$profile-link' => $profile_link,
|
|
||||||
'$photo' => $a->get_cached_avatar_image($rr[$photo]),
|
|
||||||
'$alt-text' => $rr['name'],
|
|
||||||
'$name' => $rr['name'],
|
|
||||||
'$details' => $pdesc . $details,
|
|
||||||
'$page-type' => $page_type,
|
|
||||||
'$profile' => $profile,
|
|
||||||
'$location' => template_escape($location),
|
|
||||||
'$gender' => $gender,
|
|
||||||
'$pdesc' => $pdesc,
|
|
||||||
'$marital' => $marital,
|
|
||||||
'$homepage' => $homepage,
|
|
||||||
'$about' => $about,
|
|
||||||
|
|
||||||
));
|
$entry = array(
|
||||||
|
'id' => $rr['id'],
|
||||||
|
'profile_link' => $profile_link,
|
||||||
|
'photo' => $rr[$photo],
|
||||||
|
'alttext' => $rr['channel_name'],
|
||||||
|
'name' => $rr['channel_name'],
|
||||||
|
'details' => $pdesc . $details,
|
||||||
|
'profile' => $profile,
|
||||||
|
'location' => $location,
|
||||||
|
'gender' => $gender,
|
||||||
|
'pdesc' => $pdesc,
|
||||||
|
'marital' => $marital,
|
||||||
|
'homepage' => $homepage,
|
||||||
|
'about' => $about,
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
$arr = array('contact' => $rr, 'entry' => $entry);
|
$arr = array('contact' => $rr, 'entry' => $entry);
|
||||||
|
|
||||||
@ -163,16 +159,31 @@ function directory_content(&$a) {
|
|||||||
unset($profile);
|
unset($profile);
|
||||||
unset($location);
|
unset($location);
|
||||||
|
|
||||||
$o .= $entry;
|
$entries[] = $entry;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$o .= "<div class=\"directory-end\" ></div>\r\n";
|
logger('entries: ' . print_r($entries,true));
|
||||||
|
|
||||||
|
$o .= replace_macros($tpl, array(
|
||||||
|
'$search' => $search,
|
||||||
|
'$desc' => t('Find'),
|
||||||
|
'$finddsc' => t('Finding:'),
|
||||||
|
'$safetxt' => htmlspecialchars($search,ENT_QUOTES,'UTF-8'),
|
||||||
|
'$entries' => $entries,
|
||||||
|
'$dirlbl' => t('Directory'),
|
||||||
|
'$submit' => t('Find')
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
$o .= paginate($a);
|
$o .= paginate($a);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
info( t("No entries \x28some entries may be hidden\x29.") . EOL);
|
info( t("No entries (some entries may be hidden).") . EOL);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
19
mod/ping.php
19
mod/ping.php
@ -158,7 +158,7 @@ function ping_init(&$a) {
|
|||||||
$t1 = dba_timer();
|
$t1 = dba_timer();
|
||||||
|
|
||||||
$r = q("SELECT id, item_restrict, item_flags FROM item
|
$r = q("SELECT id, item_restrict, item_flags FROM item
|
||||||
WHERE item_restrict = %d and ( item_flags & %d ) and uid = %d",
|
WHERE (item_restrict = %d) and ( item_flags & %d ) and uid = %d",
|
||||||
intval(ITEM_VISIBLE),
|
intval(ITEM_VISIBLE),
|
||||||
intval(ITEM_UNSEEN),
|
intval(ITEM_UNSEEN),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
@ -180,24 +180,15 @@ function ping_init(&$a) {
|
|||||||
|
|
||||||
$t2 = dba_timer();
|
$t2 = dba_timer();
|
||||||
|
|
||||||
$intros1 = q("SELECT `intro`.`id`, `intro`.`datetime`,
|
$intr = q("select count(abook_id) as total from abook where (abook_flags & %d) and abook_channel = %d",
|
||||||
`fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo`
|
intval(ABOOK_FLAG_PENDING),
|
||||||
FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
|
|
||||||
WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`fid`!=0",
|
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
$t3 = dba_timer();
|
$t3 = dba_timer();
|
||||||
|
|
||||||
$intros2 = q("SELECT `intro`.`id`, `intro`.`datetime`,
|
if($intr)
|
||||||
`contact`.`name`, `contact`.`url`, `contact`.`photo`
|
$result['intros'] = intval($intr[0]['total']);
|
||||||
FROM `intro` LEFT JOIN `contact` ON `intro`.`contact-id` = `contact`.`id`
|
|
||||||
WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`contact-id`!=0",
|
|
||||||
intval(local_user())
|
|
||||||
);
|
|
||||||
|
|
||||||
$intros = count($intros1) + count($intros2);
|
|
||||||
$result['intros'] = intval($intros);
|
|
||||||
|
|
||||||
$t4 = dba_timer();
|
$t4 = dba_timer();
|
||||||
$channel = get_app()->get_channel();
|
$channel = get_app()->get_channel();
|
||||||
|
@ -58,6 +58,9 @@ function zfinger_init(&$a) {
|
|||||||
|
|
||||||
$id = $e['channel_id'];
|
$id = $e['channel_id'];
|
||||||
|
|
||||||
|
$searchable = (($e['channel_pageflags'] & PAGE_HIDDEN) ? false : true);
|
||||||
|
|
||||||
|
|
||||||
// This is for birthdays and keywords, but must check access permissions
|
// This is for birthdays and keywords, but must check access permissions
|
||||||
// $r = q("select contact.*, profile.*
|
// $r = q("select contact.*, profile.*
|
||||||
// from contact left join profile on contact.uid = profile.uid
|
// from contact left join profile on contact.uid = profile.uid
|
||||||
@ -86,6 +89,7 @@ function zfinger_init(&$a) {
|
|||||||
$ret['name_updated'] = $e['xchan_name_date'];
|
$ret['name_updated'] = $e['xchan_name_date'];
|
||||||
$ret['target'] = $ztarget;
|
$ret['target'] = $ztarget;
|
||||||
$ret['target_sig'] = $zsig;
|
$ret['target_sig'] = $zsig;
|
||||||
|
$ret['searchable'] = $searchable;
|
||||||
|
|
||||||
// FIXME encrypt permissions when targeted so that only the target can view them, requires sending the pubkey and also checking that the target_sig is signed with that pubkey and isn't a forgery.
|
// FIXME encrypt permissions when targeted so that only the target can view them, requires sending the pubkey and also checking that the target_sig is signed with that pubkey and isn't a forgery.
|
||||||
|
|
||||||
@ -119,6 +123,20 @@ function zfinger_init(&$a) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ret['site'] = array();
|
||||||
|
$ret['site']['url'] = z_root();
|
||||||
|
$dirmode = get_config('system','directory_mode');
|
||||||
|
if(($dirmode === false) || ($dirmode == DIRECTORY_MODE_NORMAL))
|
||||||
|
$ret['site']['directory_mode'] = 'normal';
|
||||||
|
if($dirmode == DIRECTORY_MODE_PRIMARY)
|
||||||
|
$ret['site']['directory_mode'] = 'primary';
|
||||||
|
elseif($dirmode == DIRECTORY_MODE_SECONDARY)
|
||||||
|
$ret['site']['directory_mode'] = 'secondary';
|
||||||
|
elseif($dirmode == DIRECTORY_MODE_STANDALONE)
|
||||||
|
$ret['site']['directory_mode'] = 'standalone';
|
||||||
|
if($dirmode != DIRECTORY_MODE_NORMAL)
|
||||||
|
$ret['site']['directory_url'] = z_root() . '/dir';
|
||||||
|
|
||||||
json_return_and_die($ret);
|
json_return_and_die($ret);
|
||||||
|
|
||||||
}
|
}
|
@ -1 +1 @@
|
|||||||
2012-12-18.173
|
2012-12-19.174
|
||||||
|
12
view/css/mod_profile_photo.css
Normal file
12
view/css/mod_profile_photo.css
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.form-label {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
float: left;
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.form-input {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile-photo-submit-wrapper {
|
||||||
|
clear: both;
|
||||||
|
}
|
@ -1,16 +1,16 @@
|
|||||||
<h1>$sitedir</h1>
|
<h1>$dirlbl</h1>
|
||||||
|
|
||||||
$globaldir
|
{{ if $search }}
|
||||||
$admin
|
<h4>$finddsc $safetxt</h4>
|
||||||
|
{{ endif }}
|
||||||
|
|
||||||
$finding
|
{{for $entries as $entry}}
|
||||||
|
|
||||||
<div id="directory-search-wrapper">
|
{{ inc direntry.tpl }}{{ endinc }}
|
||||||
<form id="directory-search-form" action="directory" method="get" >
|
|
||||||
<span class="dirsearch-desc">$desc</span>
|
{{ endfor }}
|
||||||
<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" />
|
|
||||||
<input type="submit" name="submit" id="directory-search-submit" value="$submit" class="button" />
|
|
||||||
</form>
|
|
||||||
</div>
|
<div class="directory-end"></div>
|
||||||
<div id="directory-search-end"></div>
|
|
||||||
|
|
||||||
|
11
view/tpl/direntry.tpl
Normal file
11
view/tpl/direntry.tpl
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
<div class="directory-item lframe" id="directory-item-$entry.id" >
|
||||||
|
<div class="contact-photo-wrapper" id="directory-photo-wrapper-$entry.id" >
|
||||||
|
<div class="contact-photo" id="directory-photo-$entry.id" >
|
||||||
|
<a href="$entry.profile_link" class="directory-profile-link" id="directory-profile-link-$entry.id" ><img class="directory-photo-img" src="$entry.photo" alt="$entry.alttext" title="$entry.alttext" /></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-name" id="directory-name-$entry.id">$entry.name</div>
|
||||||
|
<div class="contact-details">$entry.details</div>
|
||||||
|
</div>
|
@ -4,20 +4,23 @@
|
|||||||
<input type='hidden' name='form_security_token' value='$form_security_token'>
|
<input type='hidden' name='form_security_token' value='$form_security_token'>
|
||||||
|
|
||||||
<div id="profile-photo-upload-wrapper">
|
<div id="profile-photo-upload-wrapper">
|
||||||
<label id="profile-photo-upload-label" for="profile-photo-upload">$lbl_upfile </label>
|
|
||||||
<input name="userfile" type="file" id="profile-photo-upload" size="48" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<label id="profile-photo-profiles-label" for="profile-photo-profiles">$lbl_profiles </label>
|
<label id="profile-photo-upload-label" class="form-label" for="profile-photo-upload">$lbl_upfile</label>
|
||||||
<select name="profile" id="profile-photo-profiles" />
|
<input name="userfile" class="form-input" type="file" id="profile-photo-upload" size="48" />
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<label id="profile-photo-profiles-label" class="form-label" for="profile-photo-profiles">$lbl_profiles</label>
|
||||||
|
<select name="profile" id="profile-photo-profiles" class="form-input" >
|
||||||
{{ for $profiles as $p }}
|
{{ for $profiles as $p }}
|
||||||
<option value="$p.id" {{ if $p.default }}selected="selected"{{ endif }}>$p.name</option>
|
<option value="$p.id" {{ if $p.default }}selected="selected"{{ endif }}>$p.name</option>
|
||||||
{{ endfor }}
|
{{ endfor }}
|
||||||
</select>
|
</select>
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
<div id="profile-photo-submit-wrapper">
|
<div id="profile-photo-submit-wrapper">
|
||||||
<input type="submit" name="submit" id="profile-photo-submit" value="$submit">
|
<input type="submit" name="submit" id="profile-photo-submit" value="$submit">
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user