aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-03-27 15:35:29 -0700
committerfriendica <info@friendica.com>2014-03-27 15:35:29 -0700
commita0674af4169a8c929c89887d4e7796b21ee55a91 (patch)
tree1b3e673a0acbbf07377871c5c09015fc2abf44ba
parent7b24b78af949f2645459e4698ee2f96a17becef4 (diff)
downloadvolse-hubzilla-a0674af4169a8c929c89887d4e7796b21ee55a91.tar.gz
volse-hubzilla-a0674af4169a8c929c89887d4e7796b21ee55a91.tar.bz2
volse-hubzilla-a0674af4169a8c929c89887d4e7796b21ee55a91.zip
firehose fixes and optimisations. In particular get rid of the unresponsive script warning when trying to load updates (sine they aren't our posts, we can't check for unseen, hence we can't really load updates). Also make the url selection pluggable.
-rw-r--r--include/ConversationObject.php10
-rw-r--r--include/conversation.php4
-rw-r--r--include/externals.php54
-rw-r--r--include/poller.php25
-rw-r--r--mod/network.php30
-rw-r--r--mod/update_community.php33
6 files changed, 82 insertions, 74 deletions
diff --git a/include/ConversationObject.php b/include/ConversationObject.php
index 103c3664b..d97438a5d 100644
--- a/include/ConversationObject.php
+++ b/include/ConversationObject.php
@@ -52,8 +52,14 @@ class Conversation extends BaseObject {
switch($mode) {
case 'network':
- $this->profile_owner = local_user();
- $this->writable = true;
+ if(array_key_exists('firehose',$a->data) && intval($a->data['firehose'])) {
+ $this->profile_owner = intval($a->data['firehose']);
+ $this->writable = false;
+ }
+ else {
+ $this->profile_owner = local_user();
+ $this->writable = true;
+ }
break;
case 'channel':
$this->profile_owner = $a->profile['profile_uid'];
diff --git a/include/conversation.php b/include/conversation.php
index 6a0936a09..eef2635df 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1384,10 +1384,10 @@ function network_tabs() {
// tabs
$tabs = array(
array(
- 'label' => t('Public'),
+ 'label' => t('External'),
'url'=>$a->get_baseurl(true) . '/' . $cmd . '?f=&fh=1' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
'sel'=> $public_active,
- 'title'=> t('View Public Streams'),
+ 'title'=> t('Imported public streams'),
),
array(
diff --git a/include/externals.php b/include/externals.php
new file mode 100644
index 000000000..48aeaf6b3
--- /dev/null
+++ b/include/externals.php
@@ -0,0 +1,54 @@
+<?php /** @file */
+
+require_once('boot.php');
+require_once('include/cli_startup.php');
+require_once('include/zot.php');
+require_once('include/identity.php');
+
+function externals_run($argv, $argc){
+
+ cli_startup();
+ $a = get_app();
+
+
+ // pull in some public posts
+
+ $arr = array('url' => '');
+ call_hooks('externals_url_select',$arr);
+
+ if($arr['url']) {
+ $url = $arr['url'];
+ }
+ else {
+ $r = q("select site_url from site where site_url != '%s' order by rand() limit 1",
+ dbesc(z_root())
+ );
+ if($r)
+ $url = $r[0]['site_url'];
+ }
+
+ if($url) {
+ $feedurl = $url . '/zotfeed?f=&mindate=' . urlencode(datetime_convert('','','now - 15 days'));
+ $x = z_fetch_url($feedurl);
+
+ if(($x) && ($x['success'])) {
+ $total = 0;
+ $j = json_decode($x['body'],true);
+ if($j['success'] && $j['messages']) {
+ $sys = get_sys_channel();
+ foreach($j['messages'] as $message) {
+ $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
+ array(array('hash' => $sys['xchan_hash'])), false, true);
+ $total ++;
+ }
+ logger('import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG);
+ }
+ }
+ }
+
+}
+
+if (array_search(__file__,get_included_files())===0){
+ externals_run($argv,$argc);
+ killme();
+}
diff --git a/include/poller.php b/include/poller.php
index 9b8ac4165..19037ef17 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -167,31 +167,10 @@ function poller_run($argv, $argc){
}
}
- // pull in some public posts
- $r = q("select site_url from site where site_url != '%s' order by rand() limit 1",
- dbesc(z_root())
- );
+ // pull in some public posts
+ proc_run('php','include/externals.php');
- if($r) {
- $feedurl = $r[0]['site_url'] . '/zotfeed?f=&mindate=' . urlencode(datetime_convert('','','now - 15 days'));
- $x = z_fetch_url($feedurl);
-
- if(($x) && ($x['success'])) {
- $total = 0;
- $j = json_decode($x['body'],true);
- if($j['success'] && $j['messages']) {
- require_once('include/identity.php');
- $sys = get_sys_channel();
- foreach($j['messages'] as $message) {
- $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
- array(array('hash' => $sys['xchan_hash'])), false, true);
- $total ++;
- }
- logger('import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG);
- }
- }
- }
$manual_id = 0;
$generation = 0;
diff --git a/mod/network.php b/mod/network.php
index 1a463f467..81d86e8e1 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -322,7 +322,8 @@ function network_content(&$a, $update = 0, $load = false) {
if($firehose) {
require_once('include/identity.php');
$sys = get_sys_channel();
- $uids = " and item.uid in ( " . intval(local_user()) . "," . intval($sys['channel_id']) . ") ";
+ $uids = " and item.uid = " . intval($sys['channel_id']) . " ";
+ $a->data['firehose'] = intval($sys['channel_id']);
}
else {
$uids = " and item.uid = " . local_user() . " ";
@@ -341,7 +342,7 @@ function network_content(&$a, $update = 0, $load = false) {
$items = q("SELECT `item`.*, `item`.`id` AS `item_id` FROM `item`
WHERE true $uids AND item_restrict = 0
$simple_update
- $sql_extra $sql_nets group by item.mid
+ $sql_extra $sql_nets
ORDER BY `item`.`received` DESC $pager_sql "
);
@@ -369,22 +370,23 @@ function network_content(&$a, $update = 0, $load = false) {
WHERE true $uids AND item.item_restrict = 0
AND item.parent = item.id
and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
- $sql_extra3 $sql_extra $sql_nets group by item.mid
+ $sql_extra3 $sql_extra $sql_nets
ORDER BY item.$ordering DESC $pager_sql ",
intval(ABOOK_FLAG_BLOCKED)
);
}
else {
- // update
- $r = q("SELECT item.parent AS item_id FROM item
- left join abook on item.author_xchan = abook.abook_xchan
- WHERE true $uids AND item.item_restrict = 0 $simple_update
- and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
- $sql_extra3 $sql_extra $sql_nets group by item.mid ",
- intval(ABOOK_FLAG_BLOCKED)
- );
-
+ if(! $firehose) {
+ // update
+ $r = q("SELECT item.parent AS item_id FROM item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE true $uids AND item.item_restrict = 0 $simple_update
+ and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
+ $sql_extra3 $sql_extra $sql_nets ",
+ intval(ABOOK_FLAG_BLOCKED)
+ );
+ }
}
$first = dba_timer();
@@ -400,7 +402,7 @@ function network_content(&$a, $update = 0, $load = false) {
$items = q("SELECT `item`.*, `item`.`id` AS `item_id` FROM `item`
WHERE true $uids AND `item`.`item_restrict` = 0
AND `item`.`parent` IN ( %s )
- $sql_extra group by item.mid",
+ $sql_extra ",
dbesc($parents_str)
);
@@ -432,7 +434,7 @@ function network_content(&$a, $update = 0, $load = false) {
// logger('items: ' . count($items));
- if($update_unseen)
+ if(($update_unseen) && (! $firehose))
$r = q("UPDATE `item` SET item_flags = ( item_flags ^ %d)
WHERE (item_flags & %d) AND `uid` = %d $update_unseen ",
intval(ITEM_UNSEEN),
diff --git a/mod/update_community.php b/mod/update_community.php
deleted file mode 100644
index 3dcbce6b1..000000000
--- a/mod/update_community.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-// See update_profile.php for documentation
-
-require_once('mod/community.php');
-
-function update_community_content(&$a) {
-
- header("Content-type: text/html");
- echo "<!DOCTYPE html><html><body>\r\n";
- echo (($_GET['msie'] == 1) ? '<div>' : '<section>');
-
- $text = community_content($a,true);
- $pattern = "/<img([^>]*) src=\"([^\"]*)\"/";
- $replace = "<img\${1} dst=\"\${2}\"";
- $text = preg_replace($pattern, $replace, $text);
-
- $replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
- $pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
- $text = preg_replace($pattern, $replace, $text);
- $pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
- $text = preg_replace($pattern, $replace, $text);
- $pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
- $text = preg_replace($pattern, $replace, $text);
- $pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
- $text = preg_replace($pattern, $replace, $text);
-
- echo str_replace("\t",' ',$text);
- echo (($_GET['msie'] == 1) ? '</div>' : '</section>');
- echo "</body></html>\r\n";
- killme();
-
-} \ No newline at end of file