- * 8e+G2+ET8l5BPuW0sVTnQw==
- * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=
+ * 8e+G2+ET8l5BPuW0sVTnQw==
+ * UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=
***** OBSOLETE
- *
- * Ryan Hughes
- * acct:galaxor@diaspora.pirateship.org
- *
+ *
+ * Ryan Hughes
+ * acct:galaxor@diaspora.pirateship.org
+ *
***** CURRENT
- * galaxor@diaspora.priateship.org
+ * galaxor@diaspora.priateship.org
***** END DIFFS
@@ -576,7 +698,7 @@ function diaspora_request($importer,$xml) {
if($new_connection) {
require_once('include/enotify.php');
notification(array(
- 'type' => NOTIFY_INTRO,
+ 'type' => NOTIFY_INTRO,
'from_xchan' => $ret['xchan_hash'],
'to_xchan' => $importer['channel_hash'],
'link' => z_root() . '/connedit/' . $new_connection[0]['abook_id'],
@@ -585,7 +707,7 @@ function diaspora_request($importer,$xml) {
if($default_perms) {
// Send back a sharing notification to them
diaspora_share($importer['channel_id'],$new_connection[0]);
-
+
}
}
}
@@ -1309,11 +1431,11 @@ function diaspora_conversation($importer,$xml,$msg) {
);
if($r)
$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
- intval($importer['channel_id']),
- dbesc($guid)
- );
- if(count($c))
- $conversation = $c[0];
+ intval($importer['channel_id']),
+ dbesc($guid)
+ );
+ if(count($c))
+ $conversation = $c[0];
}
if(! $conversation) {
logger('diaspora_conversation: unable to create conversation.');
@@ -1578,7 +1700,7 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
$link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n";
$link_text = scale_external_images($link_text, true,
- array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
+ array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
if(strpos($parent_item['body'],$link_text) === false) {
$r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d",
@@ -2044,6 +2166,18 @@ function diaspora_profile($importer,$xml,$msg) {
function diaspora_share($me,$contact) {
$a = get_app();
$myaddr = $me['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+
+ if(! array_key_exists('xchan_hash',$contact)) {
+ $c = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where xchan_hash = '%s' limit 1",
+ dbesc($contact['hubloc_hash'])
+ );
+ if(! $c) {
+ logger('diaspora_share: ' . $contact['hubloc_hash'] . ' not found.');
+ return;
+ }
+ $contact = $c[0];
+ }
+
$theiraddr = $contact['xchan_addr'];
$tpl = get_markup_template('diaspora_share.tpl');
@@ -2052,29 +2186,25 @@ function diaspora_share($me,$contact) {
'$recipient' => $theiraddr
));
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']));
-
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['channel_prvkey'],$contact['xchan_pubkey'])));
return(diaspora_transmit($owner,$contact,$slap, false));
}
function diaspora_unshare($me,$contact) {
$a = get_app();
- $myaddr = $me['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+ $myaddr = $me['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
$tpl = get_markup_template('diaspora_retract.tpl');
$msg = replace_macros($tpl, array(
- '$guid' => $me['guid'],
+ '$guid' => $me['channel_guid'],
'$type' => 'Person',
'$handle' => $myaddr
));
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']));
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['channel_prvkey'],$contact['xchan_pubkey'])));
return(diaspora_transmit($owner,$contact,$slap, false));
-
}
@@ -2082,7 +2212,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
$a = get_app();
$myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
- $theiraddr = $contact['xchan_addr'];
$images = array();
@@ -2112,12 +2241,38 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
}
*/
- //if(strlen($title))
- // $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
+
+ $body = str_ireplace("[quote", "\n\n[quote", $body);
+ $body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
+
+ // strip bookmark indicators
+
+ $body = preg_replace('/\#\^\[([zu])rl/i', '[$1rl', $body);
+ $body = preg_replace('/\#\^http/i', 'http', $body);
+
+ // protect tags and mentions from hijacking
+
+ if(! intval(get_pconfig($owner['channel_id'],'system','allow_tag_hijacking'))) {
+ $new_tag = html_entity_decode('⋕',ENT_COMPAT,'UTF-8');
+ $new_mention = html_entity_decode('@',ENT_COMPAT,'UTF-8');
+
+ // #-tags
+ $body = preg_replace('/\#\[url/i', $new_tag . '[url', $body);
+ $body = preg_replace('/\#\[zrl/i', $new_tag . '[zrl', $body);
+ // @-mentions
+ $body = preg_replace('/\@\[url/i', $new_mention . '[url', $body);
+ $body = preg_replace('/\@\[zrl/i', $new_mention . '[zrl', $body);
+ }
+
+ // remove multiple newlines
+ do {
+ $oldbody = $body;
+ $body = str_replace("\n\n\n", "\n\n", $body);
+ } while ($oldbody != $body);
+
// convert to markdown
$body = xmlify(html_entity_decode(bb2diaspora($body)));
- //$body = bb2diaspora($body);
// Adding the title
if(strlen($title))
@@ -2133,7 +2288,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
}
}
-
$public = (($item['item_private']) ? 'false' : 'true');
require_once('include/datetime.php');
@@ -2150,7 +2304,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
'$handle' => xmlify($myaddr),
'$public' => $public,
'$created' => $created,
- '$provider' => $item['app']
+ '$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
));
} else {
$tpl = get_markup_template('diaspora_post.tpl');
@@ -2160,14 +2314,13 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
'$handle' => xmlify($myaddr),
'$public' => $public,
'$created' => $created,
- '$provider' => $item['app']
+ '$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
));
}
- logger('diaspora_send_status: '.$owner['channel_name'].' -> '.$contact['xchan_name'].' base message: '.$msg, LOGGER_DATA);
+ logger('diaspora_send_status: '.$owner['channel_name'].' -> '.$contact['xchan_name'].' base message: ' . $msg, LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
$return_code = diaspora_transmit($owner,$contact,$slap,$public_batch);
@@ -2210,7 +2363,7 @@ function diaspora_is_reshare($body) {
$ret= array();
$ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
- if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == ""))
+ if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == ""))
return(false);
$link = "";
@@ -2262,7 +2415,6 @@ function diaspora_send_images($item,$owner,$contact,$images,$public_batch = fals
logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
diaspora_transmit($owner,$contact,$slap,$public_batch);
}
@@ -2346,7 +2498,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$a = get_app();
$myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
-// $theiraddr = $contact['addr'];
+
$body = $item['body'];
$text = html_entity_decode(bb2diaspora($body));
@@ -2356,7 +2508,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// likes on comments
if($item['verb'] === ACTIVITY_LIKE && $item['thr_parent']) {
$p = q("select * from item where mid = '%s' limit 1",
- dbesc($item['thr_parent'])
+ dbesc($item['thr_parent'])
);
}
else {
@@ -2364,9 +2516,9 @@ 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 * from item where parent = %d and id = %d limit 1",
- intval($item['parent']),
- intval($item['parent'])
- );
+ intval($item['parent']),
+ intval($item['parent'])
+ );
}
if($p)
$parent = $p[0];
@@ -2471,8 +2623,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
return(diaspora_transmit($owner,$contact,$slap,$public_batch));
@@ -2506,8 +2657,7 @@ function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) {
'$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')))
));
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
return(diaspora_transmit($owner,$contact,$slap,$public_batch));
}
@@ -2542,7 +2692,7 @@ function diaspora_send_mail($item,$owner,$contact) {
$signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';'
. $created . ';' . $myaddr . ';' . $cnv['guid'];
- $sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
+ $sig = base64_encode(rsa_sign($signed_text,$owner['channel_prvkey'],'sha256'));
$msg = array(
'guid' => xmlify($item['guid']),
@@ -2567,8 +2717,7 @@ function diaspora_send_mail($item,$owner,$contact) {
logger('diaspora_conversation: ' . print_r($xmsg,true), LOGGER_DATA);
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false));
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],false)));
return(diaspora_transmit($owner,$contact,$slap,false));
@@ -2582,6 +2731,21 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false)
return 200;
}
+ if($public_batch)
+ $dest_url = $contact['hubloc_callback'] . '/public';
+ else
+ $dest_url = $contact['hubloc_callback'] . '/users/' . $contact['hubloc_guid'];
+
+ logger('diaspora_transmit: URL: ' . $dest_url, LOGGER_DEBUG);
+
+ if(intval(get_config('system','diaspora_test')))
+ return 200;
+
+
+
+return 200;
+
+
$a = get_app();
$logid = random_string(4);
$dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']);
diff --git a/include/items.php b/include/items.php
index f10a5c570..e9f11ee4a 100755
--- a/include/items.php
+++ b/include/items.php
@@ -95,6 +95,7 @@ function collect_recipients($item,&$private_envelope) {
$recipients[] = $item['author_xchan'];
if($item['owner_xchan'] != $item['author_xchan'])
$recipients[] = $item['owner_xchan'];
+
return $recipients;
}
diff --git a/include/network.php b/include/network.php
index 83a3ea4d0..ff0502f5a 100644
--- a/include/network.php
+++ b/include/network.php
@@ -929,7 +929,7 @@ function discover_by_webbie($webbie) {
dbesc($webbie)
);
if(! $r) {
- $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated ) values ('%s','%s','%s','%s','%s','%s','%s','%s')",
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_flags ) values ('%s','%s','%s','%s','%s','%s','%s','%s', %d)",
dbesc($guid),
dbesc($addr),
dbesc($addr),
@@ -937,7 +937,8 @@ function discover_by_webbie($webbie) {
dbesc(trim($diaspora_base,'/')),
dbesc($hostname),
dbesc($notify),
- dbesc(datetime_convert())
+ dbesc(datetime_convert()),
+ intval(HUBLOC_FLAGS_PRIMARY)
);
}
$photos = import_profile_photo($vcard['photo'],$addr);
diff --git a/include/notifier.php b/include/notifier.php
index 180a538bc..7f4d7a9f8 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -103,28 +103,33 @@ function notifier_run($argv, $argc){
);
if($r) {
// Get the sender
- $s = q("select * from channel where channel_id = %d limit 1",
+ $s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
intval($r[0]['abook_channel'])
);
if($s) {
-
- // send a refresh message to each hub they have registered here
- $h = q("select * from hubloc where hubloc_hash = '%s'",
- dbesc($r[0]['hubloc_hash'])
- );
- if($h) {
- foreach($h as $hh) {
- $data = zot_build_packet($s[0],'refresh',array(array(
- 'guid' => $hh['hubloc_guid'],
- 'guid_sig' => $hh['hubloc_guid_sig'],
- 'url' => $hh['hubloc_url'])
- ));
- if($data) {
- $result = zot_zot($hh['hubloc_callback'],$data);
+ if($r[0]['hubloc_network'] === 'diaspora' || $r[0]['hubloc_network'] === 'friendica_over_diaspora') {
+ require_once('include/diaspora.php');
+ diaspora_share($s[0],$r[0]);
+ }
+ else {
+ // send a refresh message to each hub they have registered here
+ $h = q("select * from hubloc where hubloc_hash = '%s'",
+ dbesc($r[0]['hubloc_hash'])
+ );
+ if($h) {
+ foreach($h as $hh) {
+ $data = zot_build_packet($s[0],'refresh',array(array(
+ 'guid' => $hh['hubloc_guid'],
+ 'guid_sig' => $hh['hubloc_guid_sig'],
+ 'url' => $hh['hubloc_url'])
+ ));
+ if($data) {
+ $result = zot_zot($hh['hubloc_callback'],$data);
// zot_queue_item is not yet written
// if(! $result['success'])
// zot_queue_item();
+ }
}
}
}
@@ -366,6 +371,8 @@ function notifier_run($argv, $argc){
}
+ $walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
+
// Generic delivery section, we have an encoded item and recipients
// Now start the delivery process
@@ -438,11 +445,11 @@ function notifier_run($argv, $argc){
// aren't the owner or author.
- $r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
+ $r = q("select hubloc_guid, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
where hubloc_hash in (" . implode(',',$recipients) . ") group by hubloc_sitekey order by hubloc_connected desc limit 1");
}
else {
- $r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
+ $r = q("select hubloc_guid, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
where hubloc_hash in (" . implode(',',$recipients) . ") $sql_extra group by hubloc_sitekey");
}
@@ -485,6 +492,42 @@ function notifier_run($argv, $argc){
}
}
+
+ if($hub['hubloc_network'] === 'diaspora' || $hub['hubloc_network'] === 'friendica-over-diaspora') {
+ if(! get_config('system','diaspora_enabled'))
+ continue;
+
+ require_once('include/diaspora.php');
+
+ diaspora_process_outbound(array(
+ 'channel' => $channel,
+ 'env_recips' => $env_recips,
+ 'recipients' => $recipients,
+ 'item' => $item,
+ 'target_item' => $target_item,
+ 'hub' => $hub,
+ 'top_level_post' => $top_level_post,
+ 'private' => $private,
+ 'followup' => $followup,
+ 'relay_to_owner' => $relay_to_owner,
+ 'uplink' => $uplink,
+ 'cmd' => $cmd,
+ 'expire' => $expire,
+ 'mail' => $mail,
+ 'fsuggest' => $fsuggest,
+ 'normal_mode' => $normal_mode,
+ 'packet_type' => $packet_type,
+ 'walltowall' => $walltowall
+ ));
+
+ continue;
+
+ }
+
+
+ // default: zot protocol
+
+
$hash = random_string();
if($packet_type === 'refresh' || $packet_type === 'purge') {
$n = zot_build_packet($channel,$packet_type);
diff --git a/include/zot.php b/include/zot.php
index a155b2588..65c092b93 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -198,11 +198,17 @@ function zot_finger($webbie,$channel,$autofallback = true) {
if($r) {
$url = $r[0]['hubloc_url'];
+
+ if($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') {
+ logger('zot_finger: alternate network: ' . $webbie);
+ return array('success' => false);
+ }
}
else {
$url = 'https://' . $host;
}
-
+
+
$rhs = '/.well-known/zot-info';
$https = ((strpos($url,'https://') === 0) ? true : false);
@@ -271,6 +277,11 @@ function zot_finger($webbie,$channel,$autofallback = true) {
function zot_refresh($them,$channel = null, $force = false) {
+ if(array_key_exists('xchan_network',$them) && ($them['xchan_network'] !== 'zot')) {
+ logger('zot_refresh: not got zot. ' . $them['xchan_name']);
+ return true;
+ }
+
logger('zot_refresh: them: ' . print_r($them,true), LOGGER_DATA);
if($channel)
logger('zot_refresh: channel: ' . print_r($channel,true), LOGGER_DATA);
diff --git a/view/tpl/diaspora_comment.tpl b/view/tpl/diaspora_comment.tpl
new file mode 100644
index 000000000..27ec3dffc
--- /dev/null
+++ b/view/tpl/diaspora_comment.tpl
@@ -0,0 +1,11 @@
+
+
+
+ {{$guid}}
+ {{$parent_guid}}
+ {{$authorsig}}
+ {{$body}}
+ {{$handle}}
+
+
+
\ No newline at end of file
diff --git a/view/tpl/diaspora_comment_relay.tpl b/view/tpl/diaspora_comment_relay.tpl
new file mode 100644
index 000000000..37a9e88b3
--- /dev/null
+++ b/view/tpl/diaspora_comment_relay.tpl
@@ -0,0 +1,12 @@
+
+
+
+ {{$guid}}
+ {{$parent_guid}}
+ {{$parentsig}}
+ {{$authorsig}}
+ {{$body}}
+ {{$handle}}
+
+
+
\ No newline at end of file
diff --git a/view/tpl/diaspora_conversation.tpl b/view/tpl/diaspora_conversation.tpl
new file mode 100644
index 000000000..dc4482e4b
--- /dev/null
+++ b/view/tpl/diaspora_conversation.tpl
@@ -0,0 +1,29 @@
+
+
+
+ {{$conv.guid}}
+ {{$conv.subject}}
+ {{$conv.created_at}}
+
+ {{foreach $conv.messages as $msg}}
+
+
+ {{$msg.guid}}
+ {{$msg.parent_guid}}
+ {{if $msg.parent_author_signature}}
+ {{$msg.parent_author_signature}}
+ {{/if}}
+ {{$msg.author_signature}}
+ {{$msg.text}}
+ {{$msg.created_at}}
+ {{$msg.diaspora_handle}}
+ {{$msg.conversation_guid}}
+
+
+ {{/foreach}}
+
+ {{$conv.diaspora_handle}}
+ {{$conv.participant_handles}}
+
+
+
diff --git a/view/tpl/diaspora_like.tpl b/view/tpl/diaspora_like.tpl
new file mode 100644
index 000000000..a27e92240
--- /dev/null
+++ b/view/tpl/diaspora_like.tpl
@@ -0,0 +1,12 @@
+
+
+
+ {{$positive}}
+ {{$guid}}
+ {{$target_type}}
+ {{$parent_guid}}
+ {{$authorsig}}
+ {{$handle}}
+
+
+
diff --git a/view/tpl/diaspora_like_relay.tpl b/view/tpl/diaspora_like_relay.tpl
new file mode 100644
index 000000000..8209540c5
--- /dev/null
+++ b/view/tpl/diaspora_like_relay.tpl
@@ -0,0 +1,13 @@
+
+
+
+ {{$positive}}
+ {{$guid}}
+ {{$target_type}}
+ {{$parent_guid}}
+ {{$parentsig}}
+ {{$authorsig}}
+ {{$handle}}
+
+
+
diff --git a/view/tpl/diaspora_message.tpl b/view/tpl/diaspora_message.tpl
new file mode 100644
index 000000000..3413d79b0
--- /dev/null
+++ b/view/tpl/diaspora_message.tpl
@@ -0,0 +1,13 @@
+
+
+
+ {{$msg.guid}}
+ {{$msg.parent_guid}}
+ {{$msg.author_signature}}
+ {{$msg.text}}
+ {{$msg.created_at}}
+ {{$msg.diaspora_handle}}
+ {{$msg.conversation_guid}}
+
+
+
diff --git a/view/tpl/diaspora_photo.tpl b/view/tpl/diaspora_photo.tpl
new file mode 100644
index 000000000..256459d8d
--- /dev/null
+++ b/view/tpl/diaspora_photo.tpl
@@ -0,0 +1,13 @@
+
+
+
+ {{$guid}}
+ {{$handle}}
+ {{$public}}
+ {{$created_at}}
+ {{$path}}
+ {{$filename}}
+ {{$msg_guid}}
+
+
+
diff --git a/view/tpl/diaspora_post.tpl b/view/tpl/diaspora_post.tpl
new file mode 100644
index 000000000..2fe916e00
--- /dev/null
+++ b/view/tpl/diaspora_post.tpl
@@ -0,0 +1,12 @@
+
+
+
+ {{$body}}
+ {{$guid}}
+ {{$handle}}
+ {{$public}}
+ {{$created}}
+ {{$provider}}
+
+
+
diff --git a/view/tpl/diaspora_profile.tpl b/view/tpl/diaspora_profile.tpl
new file mode 100644
index 000000000..cf53f51c0
--- /dev/null
+++ b/view/tpl/diaspora_profile.tpl
@@ -0,0 +1,16 @@
+
+
+ {{$handle}}
+ {{$first}}
+ {{$last}}
+ {{$large}}
+ {{$medium}}
+ {{$small}}
+ {{$dob}}
+ {{$gender}}
+ {{$about}}
+ {{$location}}
+ {{$searchable}}
+ {{$tags}}
+
+
diff --git a/view/tpl/diaspora_relay_retraction.tpl b/view/tpl/diaspora_relay_retraction.tpl
new file mode 100644
index 000000000..5e7aed41f
--- /dev/null
+++ b/view/tpl/diaspora_relay_retraction.tpl
@@ -0,0 +1,10 @@
+
+
+
+ {{$type}}
+ {{$guid}}
+ {{$signature}}
+ {{$handle}}
+
+
+
diff --git a/view/tpl/diaspora_relayable_retraction.tpl b/view/tpl/diaspora_relayable_retraction.tpl
new file mode 100644
index 000000000..4e3ff3243
--- /dev/null
+++ b/view/tpl/diaspora_relayable_retraction.tpl
@@ -0,0 +1,11 @@
+
+
+
+ {{$parentsig}}
+ {{$guid}}
+ {{$target_type}}
+ {{$handle}}
+ {{$authorsig}}
+
+
+
diff --git a/view/tpl/diaspora_reshare.tpl b/view/tpl/diaspora_reshare.tpl
new file mode 100644
index 000000000..963bb9e12
--- /dev/null
+++ b/view/tpl/diaspora_reshare.tpl
@@ -0,0 +1,13 @@
+
+
+
+ {{$root_handle}}
+ {{$root_guid}}
+ {{$guid}}
+ {{$handle}}
+ {{$public}}
+ {{$created}}
+ {{$provider}}
+
+
+
diff --git a/view/tpl/diaspora_retract.tpl b/view/tpl/diaspora_retract.tpl
new file mode 100644
index 000000000..9df066d38
--- /dev/null
+++ b/view/tpl/diaspora_retract.tpl
@@ -0,0 +1,9 @@
+
+
+
+ {{$guid}}
+ {{$handle}}
+ {{$type}}
+
+
+
diff --git a/view/tpl/diaspora_share.tpl b/view/tpl/diaspora_share.tpl
new file mode 100644
index 000000000..59eb06124
--- /dev/null
+++ b/view/tpl/diaspora_share.tpl
@@ -0,0 +1,8 @@
+
+
+
+ {{$sender}}
+ {{$recipient}}
+
+
+
\ No newline at end of file
diff --git a/view/tpl/diaspora_signed_retract.tpl b/view/tpl/diaspora_signed_retract.tpl
new file mode 100644
index 000000000..f0f346da8
--- /dev/null
+++ b/view/tpl/diaspora_signed_retract.tpl
@@ -0,0 +1,10 @@
+
+
+
+ {{$guid}}
+ {{$type}}
+ {{$handle}}
+ {{$signature}}
+
+
+
diff --git a/view/tpl/notifications.tpl b/view/tpl/notifications.tpl
index ae87c8ec8..285efbae0 100755
--- a/view/tpl/notifications.tpl
+++ b/view/tpl/notifications.tpl
@@ -1,6 +1,6 @@
{{$notif_header}}
{{if $notifications_available}}
-{{$notif_link_mark_seen}}
+{{$notif_link_mark_seen}}
{{/if}}
{{$notif_content}}
diff --git a/view/tpl/xrd_diaspora.tpl b/view/tpl/xrd_diaspora.tpl
index 143980bcc..aa0d8c740 100644
--- a/view/tpl/xrd_diaspora.tpl
+++ b/view/tpl/xrd_diaspora.tpl
@@ -1,8 +1,3 @@
-{{*
- * AUTOMATICALLY GENERATED TEMPLATE
- * DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
- *
- *}}