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/follow.php | 16 | ||||
-rw-r--r-- | mod/network.php | 8 | ||||
-rw-r--r-- | mod/photos.php | 110 | ||||
-rw-r--r-- | mod/profile.php | 7 | ||||
-rw-r--r-- | mod/settings.php | 20 |
7 files changed, 151 insertions, 53 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 39d882411..f904b06bc 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/follow.php b/mod/follow.php index 102f46aec..a90ae3f51 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -48,7 +48,8 @@ function follow_post(&$a) { } } - $network = 'stat'; + $network = 'stat'; + $priority = 0; if($hcard) { $vcard = scrape_vcard($hcard); @@ -74,8 +75,8 @@ function follow_post(&$a) { $ret = scrape_feed($url); - if(count($ret) && $ret['feed_atom']) { - $poll = $ret['feed_atom']; + 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(); @@ -110,12 +111,12 @@ function follow_post(&$a) { 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))) { @@ -151,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()), @@ -163,7 +164,8 @@ function follow_post(&$a) { dbesc($vcard['nick']), dbesc($vcard['photo']), dbesc($network), - intval(REL_FAN) + intval(REL_FAN), + intval($priority) ); } diff --git a/mod/network.php b/mod/network.php index f9badda78..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' => '', diff --git a/mod/photos.php b/mod/photos.php index 11d234bf7..82060378e 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -1,5 +1,4 @@ <?php - require_once('include/Photo.php'); require_once('include/items.php'); require_once('include/acl_selectors.php'); @@ -49,9 +48,18 @@ function photos_init(&$a) { - function photos_post(&$a) { +logger('mod/photos.php: photos_post(): begin' , 'LOGGER_DEBUG'); + +foreach($_REQUEST AS $key => $val) { + logger('mod/photos.php: photos_post(): $_REQUEST key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG'); +} + +foreach($_FILES AS $key => $val) { + logger('mod/photos.php: photos_post(): $_FILES key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG'); +} + $can_post = false; $visitor = 0; @@ -465,18 +473,20 @@ function photos_post(&$a) { } - // default post action - upload a photo + /** + * default post action - upload a photo + */ - if(! x($_FILES,'userfile')) - killme(); + call_hooks('photo_post_init', $_POST); - if($_POST['partitionCount']) - $java_upload = true; - else - $java_upload = false; + /** + * Determine the album to use + */ + + $album = notags(trim($_REQUEST['album'])); + $newalbum = notags(trim($_REQUEST['newalbum'])); - $album = notags(trim($_POST['album'])); - $newalbum = notags(trim($_POST['newalbum'])); + logger('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , 'LOGGER_DEBUG'); if(! strlen($album)) { if(strlen($newalbum)) @@ -485,6 +495,16 @@ function photos_post(&$a) { $album = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y'); } + /** + * + * We create a wall item for every photo, but we don't want to + * overwhelm the data stream with a hundred newly uploaded photos. + * So we will make one photo (the first one uploaded to this album) + * visible by default, the rest will become visible over time when and if + * they acquire comments, likes, dislikes, and/or tags + * + */ + $r = q("SELECT * FROM `photo` WHERE `album` = '%s' AND `uid` = %d", dbesc($album), intval($page_owner_uid) @@ -494,15 +514,25 @@ function photos_post(&$a) { else $visible = 0; + $str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',',$_REQUEST['group_allow']))); + $str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',',$_REQUEST['contact_allow']))); + $str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',',$_REQUEST['group_deny']))); + $str_contact_deny = perms2str(((is_array($_REQUEST['contact_deny'])) ? $_REQUEST['contact_deny'] : explode(',',$_REQUEST['contact_deny']))); + + $ret = array('src' => '', 'filename' => '', 'filesize' => 0); - $str_group_allow = perms2str($_POST['group_allow']); - $str_contact_allow = perms2str($_POST['contact_allow']); - $str_group_deny = perms2str($_POST['group_deny']); - $str_contact_deny = perms2str($_POST['contact_deny']); + call_hooks('photo_post_file',$ret); - $src = $_FILES['userfile']['tmp_name']; - $filename = basename($_FILES['userfile']['name']); - $filesize = intval($_FILES['userfile']['size']); + if(x($ret,'src') && x($ret,'filesize')) { + $src = $ret['src']; + $filename = $ret['filename']; + $filesize = $ret['filesize']; + } + else { + $src = $_FILES['userfile']['tmp_name']; + $filename = basename($_FILES['userfile']['name']); + $filesize = intval($_FILES['userfile']['size']); + } $maximagesize = get_config('system','maximagesize'); @@ -512,10 +542,13 @@ function photos_post(&$a) { return; } + logger('mod/photos.php: photos_post(): loading the contents of ' . $src , 'LOGGER_DEBUG'); + $imagedata = @file_get_contents($src); $ph = new Photo($imagedata); if(! $ph->is_valid()) { + logger('mod/photos.php: photos_post(): unable to process image' , 'LOGGER_DEBUG'); notice( t('Unable to process image.') . EOL ); @unlink($src); killme(); @@ -523,7 +556,7 @@ function photos_post(&$a) { @unlink($src); - $width = $ph->getWidth(); + $width = $ph->getWidth(); $height = $ph->getHeight(); $smallest = 0; @@ -533,6 +566,7 @@ function photos_post(&$a) { $r = $ph->store($page_owner_uid, $visitor, $photo_hash, $filename, $album, 0 , 0, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny); if(! $r) { + logger('mod/photos.php: photos_post(): image store failed' , 'LOGGER_DEBUG'); notice( t('Image upload failed.') . EOL ); killme(); } @@ -554,7 +588,6 @@ function photos_post(&$a) { // Create item container - $arr = array(); $arr['uid'] = $page_owner_uid; @@ -583,14 +616,13 @@ function photos_post(&$a) { $item_id = item_store($arr); - if(! $java_upload) { - goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); - return; // NOTREACHED - } + call_hooks('photo_post_end',intval($item_id)); - killme(); - return; // NOTREACHED + // addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook + // if they do not wish to be redirected + goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); + // NOTREACHED } @@ -736,6 +768,22 @@ function photos_content(&$a) { $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false); $albumselect .= '</select>'; + + $uploader = ''; + + $ret = array('post_url' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'], + 'addon_text' => $uploader, + 'default_upload' => true); + + + call_hooks('photo_upload_form',$ret); + + $default_upload = '<input type="file" name="userfile" /> <div class="photos-upload-submit-wrapper" > + <input type="submit" name="submit" value="' . t('Submit') . '" id="photos-upload-submit" /> </div>'; + + + + $tpl = load_view_file('view/photos_upload.tpl'); $o .= replace_macros($tpl,array( '$pagename' => t('Upload Photos'), @@ -743,14 +791,13 @@ function photos_content(&$a) { '$nickname' => $a->data['user']['nickname'], '$newalbum' => t('New album name: '), '$existalbumtext' => t('or existing album name: '), - '$filestext' => t('Select files to upload: '), '$albumselect' => $albumselect, '$permissions' => t('Permissions'), '$aclselect' => (($visitor) ? '' : populate_acl($a->user, $celeb)), - '$archive' => $a->get_baseurl() . '/jumploader_z.jar', - '$nojava' => t('Use the following controls only if the Java uploader [above] fails to launch.'), - '$uploadurl' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'], - '$submit' => t('Submit') + '$uploader' => $ret['addon_text'], + '$default' => (($ret['default_upload']) ? $default_upload : ''), + '$uploadurl' => $ret['post_url'] + )); return $o; @@ -1153,3 +1200,4 @@ function photos_content(&$a) { $o .= paginate($a); return $o; } + diff --git a/mod/profile.php b/mod/profile.php index 505edf5ce..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 )); } diff --git a/mod/settings.php b/mod/settings.php index fd75657c7..dbbac8bde 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'); |