aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/contacts.php12
-rw-r--r--mod/dfrn_notify.php31
-rw-r--r--mod/display.php19
-rw-r--r--mod/follow.php60
-rw-r--r--mod/invite.php8
-rw-r--r--mod/item.php4
-rw-r--r--mod/network.php12
-rw-r--r--mod/profile.php9
-rw-r--r--mod/settings.php20
9 files changed, 150 insertions, 25 deletions
diff --git a/mod/contacts.php b/mod/contacts.php
index 7236a200d..177ca9973 100644
--- a/mod/contacts.php
+++ b/mod/contacts.php
@@ -53,9 +53,9 @@ function contacts_post(&$a) {
return;
}
}
+logger('contact_edit ' . print_r($_POST,true));
-
- $priority = intval($_POST['priority']);
+ $priority = intval($_POST['poll']);
if($priority == (-1))
if($priority > 5 || $priority < 0)
@@ -177,6 +177,12 @@ function contacts_content(&$a) {
}
}
+ if($orig_record[0]['network'] === 'dfrn') {
+ require_once('include/items.php');
+ dfrn_deliver($a->user,$orig_record[0],'placeholder', 1);
+ }
+
+
contact_remove($contact_id);
notice( t('Contact has been removed.') . EOL );
goaway($a->get_baseurl() . '/contacts');
@@ -246,7 +252,7 @@ function contacts_content(&$a) {
'$contact_id' => $r[0]['id'],
'$block_text' => (($r[0]['blocked']) ? t('Unblock this contact') : t('Block this contact') ),
'$ignore_text' => (($r[0]['readonly']) ? t('Unignore this contact') : t('Ignore this contact') ),
- '$insecure' => (($r[0]['network'] === 'dfrn') ? '' : load_view_file('view/insecure_net.tpl')),
+ '$insecure' => (($r[0]['network'] === 'stat') ? load_view_file('view/insecure_net.tpl') : ''),
'$info' => $r[0]['info'],
'$blocked' => (($r[0]['blocked']) ? '<div id="block-message">' . t('Currently blocked') . '</div>' : ''),
'$ignored' => (($r[0]['readonly']) ? '<div id="ignore-message">' . t('Currently ignored') . '</div>' : ''),
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index 49356d358..f581702d8 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -11,6 +11,7 @@ function dfrn_notify_post(&$a) {
$challenge = ((x($_POST,'challenge')) ? notags(trim($_POST['challenge'])) : '');
$data = ((x($_POST,'data')) ? $_POST['data'] : '');
$key = ((x($_POST,'key')) ? $_POST['key'] : '');
+ $dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0);
$direction = (-1);
if(strpos($dfrn_id,':') == 1) {
@@ -51,6 +52,8 @@ function dfrn_notify_post(&$a) {
}
+
+
$r = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`,
`contact`.`pubkey` AS `cpubkey`, `contact`.`prvkey` AS `cprvkey`, `user`.* FROM `contact`
LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
@@ -65,17 +68,24 @@ function dfrn_notify_post(&$a) {
//NOTREACHED
}
+ // $importer in this case contains the contact record for the remote contact joined with the user record of our user.
+
$importer = $r[0];
logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
- if($importer['readonly']) {
- // We aren't receiving stuff from this person. But we will quietly ignore them
- // rather than a blatant "go away" message.
- logger('dfrn_notify: ignoring');
+ if($dissolve == 1) {
+
+ /**
+ * Relationship is dissolved permanently
+ */
+
+ require_once('include/Contact.php');
+ contact_remove($importer['id']);
+ logger('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']);
xml_status(0);
- //NOTREACHED
+
}
if(strlen($key)) {
@@ -95,6 +105,17 @@ function dfrn_notify_post(&$a) {
logger('rino: decrypted data: ' . $data, LOGGER_DATA);
}
+
+
+
+ if($importer['readonly']) {
+ // We aren't receiving stuff from this person. But we will quietly ignore them
+ // rather than a blatant "go away" message.
+ logger('dfrn_notify: ignoring');
+ xml_status(0);
+ //NOTREACHED
+ }
+
// Consume notification feed. This may differ from consuming a public feed in several ways
// - might contain email
// - might contain remote followup to our message
diff --git a/mod/display.php b/mod/display.php
index de11ec35d..3215ae90a 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -173,6 +173,9 @@ function display_content(&$a) {
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
+ // I think this is redundant now but too chicken to remove it unless
+ // I've had six cups of coffee and tested it completely
+
if(($item['network'] === 'dfrn') && (! $item['self'] )) {
$profile_url = $redirect_url;
$sparkle = ' sparkle';
@@ -216,7 +219,18 @@ function display_content(&$a) {
$profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $item['thumb']);
- $profile_link = $profile_url;
+ // Can we use our special contact URL for this author?
+
+ if(strlen($item['author-link'])) {
+ if((link_compare($item['author-link'],$item['url'])) && ($item['network'] === 'dfrn') && (! $item['self'])) {
+ $profile_link = $redirect_url;
+ $sparkle = ' sparkle';
+ }
+ else {
+ $profile_link = $item['author-link'];
+ $sparkle = '';
+ }
+ }
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
$drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id']));
@@ -291,6 +305,9 @@ function display_content(&$a) {
}
}
+
+ $o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
+
return $o;
}
diff --git a/mod/follow.php b/mod/follow.php
index 14bdb9fc6..b4e50fa45 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -48,6 +48,9 @@ function follow_post(&$a) {
}
}
+ $network = 'stat';
+ $priority = 0;
+
if($hcard) {
$vcard = scrape_vcard($hcard);
@@ -63,13 +66,58 @@ function follow_post(&$a) {
if(! $profile)
$profile = $url;
- // do we have enough information?
if(! x($vcard,'fn'))
if(x($vcard,'nick'))
$vcard['fn'] = $vcard['nick'];
+ if((! isset($vcard)) && (! $poll)) {
+
+ $ret = scrape_feed($url);
+
+ if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
+ $poll = ((x($ret,'feed_atom')) ? $ret['feed_atom'] : $ret['feed_rss']);
+ $vcard = array();
+ require_once('simplepie/simplepie.inc');
+ $feed = new SimplePie();
+ $xml = fetch_url($poll);
+
+ $feed->set_raw_data($xml);
+
+ $feed->init();
+
+ $vcard['photo'] = $feed->get_image_url();
+ $author = $feed->get_author();
+ if($author) {
+ $vcard['fn'] = trim($author->get_name());
+ $vcard['nick'] = strtolower($vcard['fn']);
+ if(strpos($vcard['nick'],' '))
+ $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
+ $email = $author->get_email();
+ }
+ else {
+ $item = $feed->get_item(0);
+ if($item) {
+ $author = $item->get_author();
+ if($author) {
+ $vcard['fn'] = trim($author->get_name());
+ $vcard['nick'] = strtolower($vcard['fn']);
+ if(strpos($vcard['nick'],' '))
+ $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
+ $email = $author->get_email();
+ }
+ }
+ }
+ if((! $vcard['photo']) && strlen($email))
+ $vcard['photo'] = gravatar_img($email);
+ $network = 'feed';
+ $priority = 2;
+ }
+ }
+
logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true));
+
+ // do we have enough information?
if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {
notice( t('The profile address specified does not provide adequate information.') . EOL);
@@ -104,7 +152,7 @@ function follow_post(&$a) {
}
else {
// create contact record
- $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`,
+ $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`,
`blocked`, `readonly`, `pending` )
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 0 ) ",
intval(local_user()),
@@ -115,8 +163,9 @@ function follow_post(&$a) {
dbesc($vcard['fn']),
dbesc($vcard['nick']),
dbesc($vcard['photo']),
- dbesc('stat'),
- intval(REL_FAN)
+ dbesc($network),
+ intval(REL_FAN),
+ intval($priority)
);
}
@@ -158,6 +207,9 @@ function follow_post(&$a) {
// pull feed and consume it, which should subscribe to the hub.
+ $php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
+ proc_close(proc_open("\"$php_path\" \"include/poller.php\" \"$contact_id\" &", array(), $foo));
+
// create a follow slap
diff --git a/mod/invite.php b/mod/invite.php
index 9d4497f5d..f67432746 100644
--- a/mod/invite.php
+++ b/mod/invite.php
@@ -57,10 +57,10 @@ function invite_content(&$a) {
'$invite' => t('Send invitations'),
'$addr_text' => t('Enter email addresses, one per line:'),
'$msg_text' => t('Your message:'),
- '$default_message' => t('Please join my social network on ') . $a->config['sitename'] . t("\r\n") . t("\r\n")
- . t('To accept this invitation, please visit:') . t("\r\n") . t("\r\n") . $a->get_baseurl()
- . t("\r\n") . t("\r\n") . t('Once you have registered, please connect with me via my profile page at:')
- . t("\r\n") . t("\r\n") . $a->get_baseurl() . '/profile/' . $a->user['nickname'] ,
+ '$default_message' => t('Please join my social network on ') . $a->config['sitename'] . "\r\n" . "\r\n"
+ . t('To accept this invitation, please visit:') . "\r\n" . "\r\n" . $a->get_baseurl()
+ . "\r\n" . "\r\n" . t('Once you have registered, please connect with me via my profile page at:')
+ . "\r\n" . "\r\n" . $a->get_baseurl() . '/profile/' . $a->user['nickname'] ,
'$submit' => t('Submit')
));
diff --git a/mod/item.php b/mod/item.php
index f964e7737..feef7c95f 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -165,7 +165,11 @@ function item_post(&$a) {
}
}
+ /**
+ * Fold multi-line [code] sequences
+ */
+ $body = preg_replace('/\[\/code\]\s*\[code\]/m',"\n",$body);
/**
* Look for any tags and linkify them
diff --git a/mod/network.php b/mod/network.php
index 096c8a79f..50d7134c1 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -79,6 +79,9 @@ function network_content(&$a, $update = 0) {
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
+ $jotplugins = "";
+ call_hooks('jot_tool', $jotplugins);
+
$o .= replace_macros($tpl,array(
'$return_path' => $a->cmd,
'$baseurl' => $a->get_baseurl(),
@@ -87,7 +90,8 @@ function network_content(&$a, $update = 0) {
'$lockstate' => $lockstate,
'$acl' => populate_acl((($group) ? $group_acl : $a->user), $celeb),
'$bang' => (($group) ? '!' : ''),
- '$profile_uid' => $_SESSION['uid']
+ '$profile_uid' => $_SESSION['uid'],
+ '$jotplugins' => $jotplugins
));
@@ -240,7 +244,7 @@ function network_content(&$a, $update = 0) {
'$lock' => $lock,
'$thumb' => $profile_avatar,
'$title' => $item['title'],
- '$body' => bbcode($item['body']),
+ '$body' => smilies(bbcode($item['body'])),
'$ago' => relative_date($item['created']),
'$location' => $location,
'$indent' => '',
@@ -430,8 +434,10 @@ function network_content(&$a, $update = 0) {
}
}
- if(! $update)
+ if(! $update) {
$o .= paginate($a);
+ $o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
+ }
return $o;
} \ No newline at end of file
diff --git a/mod/profile.php b/mod/profile.php
index 936379360..c84b493c5 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -134,6 +134,10 @@ function profile_content(&$a, $update = 0) {
$lockstate = 'lock';
else
$lockstate = 'unlock';
+
+ $jotplugins = "";
+ call_hooks('jot_tool', $jotplugins);
+
$o .= replace_macros($tpl,array(
'$baseurl' => $a->get_baseurl(),
'$defloc' => (($is_owner) ? $a->user['default-location'] : ''),
@@ -142,7 +146,8 @@ function profile_content(&$a, $update = 0) {
'$lockstate' => $lockstate,
'$bang' => '',
'$acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
- '$profile_uid' => $a->profile['profile_uid']
+ '$profile_uid' => $a->profile['profile_uid'],
+ '$jotplugins' => $jotplugins
));
}
@@ -379,6 +384,8 @@ function profile_content(&$a, $update = 0) {
}
$o .= paginate($a);
+ $o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
+
return $o;
}
diff --git a/mod/settings.php b/mod/settings.php
index 1923c58da..32906d86e 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -87,11 +87,14 @@ function settings_post(&$a) {
$err = '';
+ $name_change = false;
+
if($username != $a->user['username']) {
- if(strlen($username) > 40)
- $err .= t(' Please use a shorter name.');
- if(strlen($username) < 3)
- $err .= t(' Name too short.');
+ $name_change = true;
+ if(strlen($username) > 40)
+ $err .= t(' Please use a shorter name.');
+ if(strlen($username) < 3)
+ $err .= t(' Name too short.');
}
if($email != $a->user['email']) {
@@ -165,6 +168,15 @@ function settings_post(&$a) {
intval(local_user())
);
+
+ if($name_change) {
+ q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `self` = 1 LIMIT 1",
+ dbesc($username),
+ dbesc(datetime_convert()),
+ intval(local_user())
+ );
+ }
+
if($old_visibility != $net_publish) {
// Update global directory in background
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');