diff options
Diffstat (limited to 'mod')
-rw-r--r-- | mod/contacts.php | 12 | ||||
-rw-r--r-- | mod/dfrn_notify.php | 31 | ||||
-rw-r--r-- | mod/display.php | 19 | ||||
-rw-r--r-- | mod/follow.php | 60 | ||||
-rw-r--r-- | mod/invite.php | 8 | ||||
-rw-r--r-- | mod/item.php | 4 | ||||
-rw-r--r-- | mod/network.php | 12 | ||||
-rw-r--r-- | mod/profile.php | 9 | ||||
-rw-r--r-- | mod/settings.php | 20 |
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'); |