diff --git a/boot.php b/boot.php
index 6f6403398..b47164f10 100644
--- a/boot.php
+++ b/boot.php
@@ -364,6 +364,7 @@ if(! class_exists('App')) {
public $sourcename = '';
public $videowidth = 425;
public $videoheight = 350;
+ public $force_max_items = 0;
private $scheme;
private $hostname;
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index 9ede42f6c..b0e12027a 100644
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -196,6 +196,14 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
// The bbcode parser now handles youtube-links (and the other stuff) correctly.
// Additionally the html code is now fixed so that lists are now working.
+ /**
+ * Transform #tags, strip off the [url] and replace spaces with underscore
+ */
+ $Text = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
+ 'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
+ ), $Text);
+
+
// Converting images with size parameters to simple images. Markdown doesn't know it.
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
diff --git a/include/diaspora.php b/include/diaspora.php
index 96b0b184e..3e9f20a47 100755
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -102,6 +102,37 @@ function diaspora_dispatch($importer,$msg) {
return $ret;
}
+function diaspora_handle_from_contact($contact_id) {
+ $handle = False;
+
+ logger("diaspora_handle_from_contact: contact id is " . $contact_id, LOGGER_DEBUG);
+
+ $r = q("SELECT network, addr, self, url, nick FROM contact WHERE id = %d",
+ intval($contact_id)
+ );
+ if($r) {
+ $contact = $r[0];
+
+ logger("diaspora_handle_from_contact: contact 'self' = " . $contact['self'] . " 'url' = " . $contact['url'], LOGGER_DEBUG);
+
+ if($contact['network'] === NETWORK_DIASPORA) {
+ $handle = $contact['addr'];
+
+// logger("diaspora_handle_from_contact: contact id is a Diaspora person, handle = " . $handle, LOGGER_DEBUG);
+ }
+ elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) {
+ $baseurl_start = strpos($contact['url'],'://') + 3;
+ $baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle
+ $baseurl = substr($contact['url'], $baseurl_start, $baseurl_length);
+ $handle = $contact['nick'] . '@' . $baseurl;
+
+// logger("diaspora_handle_from_contact: contact id is a DFRN person, handle = " . $handle, LOGGER_DEBUG);
+ }
+ }
+
+ return $handle;
+}
+
function diaspora_get_contact_by_handle($uid,$handle) {
$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
dbesc(NETWORK_DIASPORA),
@@ -1282,7 +1313,7 @@ function diaspora_comment($importer,$xml,$msg) {
// the existence of parent_author_signature means the parent_author or owner
// is already relaying.
- proc_run('php','include/notifier.php','comment',$message_id);
+ proc_run('php','include/notifier.php','comment-import',$message_id);
}
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0 ",
@@ -1867,7 +1898,7 @@ EOT;
// is already relaying. The parent_item['origin'] indicates the message was created on our system
if(($parent_item['origin']) && (! $parent_author_signature))
- proc_run('php','include/notifier.php','comment',$message_id);
+ proc_run('php','include/notifier.php','comment-import',$message_id);
return;
}
@@ -1993,7 +2024,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
// is already relaying.
logger('diaspora_signed_retraction: relaying relayable_retraction');
- proc_run('php','include/notifier.php','relayable_retraction',$r[0]['id']);
+ proc_run('php','include/notifier.php','drop',$r[0]['id']);
}
}
}
@@ -2153,12 +2184,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
}
}
*/
- /**
- * Transform #tags, strip off the [url] and replace spaces with underscore
- */
- $body = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
- 'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
- ), $body);
//if(strlen($title))
// $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
@@ -2344,8 +2369,8 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
$p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1",
- intval($item['parent']),
- intval($item['parent'])
+ intval($item['parent']),
+ intval($item['parent'])
);
//}
if(count($p))
@@ -2368,7 +2393,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$like = true;
$target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment');
-// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post');
// $positive = (($item['deleted']) ? 'false' : 'true');
$positive = 'true';
@@ -2382,7 +2406,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// fetch the original signature if the relayable was created by a Diaspora
// or DFRN user. Relayables for other networks are not supported.
- $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
+/* $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
intval($item['id'])
);
if(count($r)) {
@@ -2398,7 +2422,25 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// function is called
logger('diaspora_send_relay: original author signature not found, cannot send relayable');
return;
- }
+ }*/
+
+ /* Since the author signature is only checked by the parent, not by the relay recipients,
+ * I think it may not be necessary for us to do so much work to preserve all the original
+ * signatures. The important thing that Diaspora DOES need is the original creator's handle.
+ * Let's just generate that and forget about all the original author signature stuff.
+ *
+ * Note: this might be more of an problem if we want to support likes on comments for older
+ * versions of Diaspora (diaspora-pistos), but since there are a number of problems with
+ * doing that, let's ignore it for now.
+ *
+ * Currently, only DFRN contacts are supported. StatusNet shouldn't be hard, but it hasn't
+ * been done yet
+ */
+
+ $handle = diaspora_handle_from_contact($item['contact-id']);
+ if(! $handle)
+ return;
+
if($relay_retract)
$sender_signed_text = $item['guid'] . ';' . $target_type;
diff --git a/include/items.php b/include/items.php
index 93200cc4b..0ba40e0fa 100755
--- a/include/items.php
+++ b/include/items.php
@@ -2459,6 +2459,7 @@ function local_delivery($importer,$data) {
$is_a_remote_delete = false;
+ // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used?
$r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`,
`contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
@@ -2472,7 +2473,7 @@ function local_delivery($importer,$data) {
intval($importer['importer_uid'])
);
if($r && count($r))
- $is_a_remote_delete = true;
+ $is_a_remote_delete = true;
// Does this have the characteristics of a community or private group comment?
// If it's a reply to a wall post on a community/prvgroup page it's a
@@ -2799,7 +2800,7 @@ function local_delivery($importer,$data) {
}
if($posted_id && $parent) {
-
+
proc_run('php',"include/notifier.php","comment-import","$posted_id");
if((! $is_like) && (! $importer['self'])) {
diff --git a/include/notifier.php b/include/notifier.php
index f54efba31..947818d59 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -18,6 +18,31 @@ require_once('include/html2plain.php');
* us by hosting providers.
*/
+/*
+ * The notifier is typically called with:
+ *
+ * proc_run('php', "include/notifier.php", COMMAND, ITEM_ID);
+ *
+ * where COMMAND is one of the following:
+ *
+ * activity (in diaspora.php, dfrn_confirm.php, profiles.php)
+ * comment-import (in diaspora.php, items.php)
+ * comment-new (in item.php)
+ * drop (in diaspora.php, items.php, photos.php)
+ * edit_post (in item.php)
+ * event (in events.php)
+ * expire (in items.php)
+ * like (in like.php, poke.php)
+ * mail (in message.php)
+ * suggest (in fsuggest.php)
+ * tag (in photos.php, poke.php, tagger.php)
+ * tgroup (in items.php)
+ * wall-new (in photos.php, item.php)
+ *
+ * and ITEM_ID is the id of the item in the database that needs to be sent to others.
+ */
+
+
function notifier_run($argv, $argc){
global $a, $db;
diff --git a/mod/network.php b/mod/network.php
index 17368ab92..97f00eeda 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -563,7 +563,7 @@ function network_content(&$a, $update = 0) {
}
else {
- if(! get_pconfig(local_user(),'system','alt_pager')) {
+ if(! get_pconfig(local_user(),'system','alt_pager')) {
$r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
@@ -576,10 +576,15 @@ function network_content(&$a, $update = 0) {
if(count($r)) {
$a->set_pager_total($r[0]['total']);
}
- }
- $itemspage_network = get_pconfig(local_user(),'system','itemspage_network');
- $a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40));
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
+ }
+
+ $itemspage_network = get_pconfig(local_user(),'system','itemspage_network');
+ $itemspage_network = ((intval($itemspage_network)) ? $itemspage_network : 40);
+ if(($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network))
+ $itemspage_network = $a->force_max_items;
+
+ $a->set_pager_itemspage($itemspage_network);
+ $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
}
$simple_update = (($update) ? " and `item`.`unseen` = 1 " : '');
diff --git a/view/theme/frost-mobile/TODO b/view/theme/frost-mobile/TODO
index 940d9e588..0ffd4f8c3 100644
--- a/view/theme/frost-mobile/TODO
+++ b/view/theme/frost-mobile/TODO
@@ -12,11 +12,18 @@ Photo album display?
- Admin: access to more pages than summary?
-- Embedded video playback is way too big
+- Find a way to show embedded videos at the normal size for tablets that can handle it
+
+- Need to find a way to deal with freakin annoying elements that don't respect screen width limits.
+ Specifically, need to find a way to keep them from forcing a horizontal scroll bar to show up and
+ making the rest of the body text overflow the item's borders that is screen-width sensitive (it's
+ annoying to have a 300px truncated code block on a 1024px wide screen). At least the following cause problems:
+ - code blocks
+ - blockquote blocks
+ - #reallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongtags
- Needs to be faster!
- Reduce DOM elements (~2400 for 10 items, ~8400 for 40 items)
- - Automatically set limit of 10 items for Network and Profile?
diff --git a/view/theme/frost-mobile/head.tpl b/view/theme/frost-mobile/head.tpl
index 8496667e1..a849f4459 100644
--- a/view/theme/frost-mobile/head.tpl
+++ b/view/theme/frost-mobile/head.tpl
@@ -1,7 +1,10 @@
-
+
+
+
+