X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=mod%2Fitem.php;h=5cefb3be3e61bdf22a2691be3b41fe8c7a82c0eb;hb=ee11a74d0b7cff5061a4d498f8ecd15e55b91b07;hp=cbdd11eb976eecf590eeee067db7a527f7cdc158;hpb=c948ab8f211c54ca73643ba23ddcde3da0c256a3;p=friendica.git diff --git a/mod/item.php b/mod/item.php index cbdd11eb97..5cefb3be3e 100644 --- a/mod/item.php +++ b/mod/item.php @@ -51,7 +51,7 @@ function item_post(&$a) { } $profile_uid = ((x($_POST,'profile_uid')) ? intval($_POST['profile_uid']) : 0); - + $post_id = ((x($_POST['post_id'])) ? intval($_POST['post_id']) : 0); if(! can_write_wall($a,$profile_uid)) { notice( t('Permission denied.') . EOL) ; @@ -60,6 +60,21 @@ function item_post(&$a) { killme(); } + + // is this an edited post? + + $orig_post = null; + + if($post_id) { + $i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", + intval($profile_uid), + intval($post_id) + ); + if(! count($i)) + killme(); + $orig_post = $i[0]; + } + $user = null; $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", @@ -68,37 +83,51 @@ function item_post(&$a) { if(count($r)) $user = $r[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']); - - $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); - - if(($parent_item) && - (($parent_item['private']) - || strlen($parent_item['allow_cid']) - || strlen($parent_item['allow_gid']) - || strlen($parent_item['deny_cid']) - || strlen($parent_item['deny_gid']) - ) - ) { - $private = 1; + if($orig_post) { + $str_group_allow = $orig_post['allow_gid']; + $str_contact_allow = $orig_post['allow_cid']; + $str_group_deny = $orig_post['deny_gid']; + $str_contact_deny = $orig_post['deny_cid']; + $title = $orig_post['title']; + $location = $orig_post['location']; + $coord = $orig_post['coord']; + $verb = $orig_post['verb']; + $emailcc = $orig_post['emailcc']; + + $body = escape_tags(trim($_POST['body'])); + $private = $orig_post['private']; } + else { + $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']); + $title = notags(trim($_POST['title'])); + $location = notags(trim($_POST['location'])); + $coord = notags(trim($_POST['coord'])); + $verb = notags(trim($_POST['verb'])); + $emailcc = notags(trim($_POST['emailcc'])); + + $body = escape_tags(trim($_POST['body'])); + $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); + + if(($parent_item) && + (($parent_item['private']) + || strlen($parent_item['allow_cid']) + || strlen($parent_item['allow_gid']) + || strlen($parent_item['deny_cid']) + || strlen($parent_item['deny_gid']) + )) { + $private = 1; + } + - $title = notags(trim($_POST['title'])); - $body = escape_tags(trim($_POST['body'])); - $location = notags(trim($_POST['location'])); - $coord = notags(trim($_POST['coord'])); - $verb = notags(trim($_POST['verb'])); - $emailcc = notags(trim($_POST['emailcc'])); - - if(! strlen($body)) { - notice( t('Empty post discarded.') . EOL ); - if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); - killme(); + if(! strlen($body)) { + notice( t('Empty post discarded.') . EOL ); + if(x($_POST,'return')) + goaway($a->get_baseurl() . "/" . $_POST['return'] ); + killme(); + } } // get contact info for poster @@ -151,7 +180,6 @@ function item_post(&$a) { } } - /** * * When a photo was uploaded into the message using the (profile wall) ajax @@ -212,6 +240,8 @@ function item_post(&$a) { if(count($tags)) { foreach($tags as $tag) { if(strpos($tag,'#') === 0) { + if(strpos($tag,'[url=')) + continue; $basetag = str_replace('_',' ',substr($tag,1)); $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body); if(strlen($str_tags)) @@ -220,6 +250,8 @@ function item_post(&$a) { continue; } if(strpos($tag,'@') === 0) { + if(strpos($tag,'[url=')) + continue; $stat = false; $name = substr($tag,1); if((strpos($name,'@')) || (strpos($name,'http://'))) { @@ -239,6 +271,7 @@ function item_post(&$a) { } else { $newname = $name; + $alias = ''; if(strstr($name,'_')) { $newname = str_replace('_',' ',$name); $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", @@ -257,6 +290,8 @@ function item_post(&$a) { if($r[0]['network'] === 'stat') { $newname = $r[0]['nick']; $stat = true; + if($r[0]['alias']) + $alias = $r[0]['alias']; } else $newname = $r[0]['name']; @@ -271,14 +306,22 @@ function item_post(&$a) { if(strlen($str_tags)) $str_tags .= ','; $str_tags .= '@[url=' . $profile . ']' . $newname . '[/url]'; + + // Status.Net seems to require the numeric ID URL in a mention if the person isn't + // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. + + if(strlen($alias)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= '@[url=' . $alias . ']' . $newname . '[/url]'; + } } } } } - - $wall = 0; + if($post_type === 'wall' || $post_type === 'wall-comment') $wall = 1; @@ -329,9 +372,31 @@ function item_post(&$a) { $datarray['parent'] = $parent; $datarray['self'] = $self; + if($orig_post) + $datarray['edit'] = true; call_hooks('post_local',$datarray); + + if($orig_post) { + $r = q("UPDATE `item` SET `body` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", + dbesc($body), + dbesc(datetime_convert()), + intval($post_id), + intval($profile_uid) + ); + + proc_run('php', "include/notifier.php", 'edit_post', "$post_id"); + if((x($_POST,'return')) && strlen($_POST['return'])) { + logger('return: ' . $_POST['return']); + goaway($a->get_baseurl() . "/" . $_POST['return'] ); + } + killme(); + } + else + $post_id = 0; + + $r = q("INSERT INTO `item` (`uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`, `author-name`, `author-link`, `author-avatar`, `created`, `edited`, `changed`, `uri`, `title`, `body`, `location`, `coord`, `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private` ) @@ -406,8 +471,8 @@ function item_post(&$a) { '$body' => strip_tags(bbcode($datarray['body'])) )); - $res = mail($user['email'], $from . t(" commented on your item at ") . $a->config['sitename'], - $email_tpl,t("From: Administrator@") . $a->get_hostname() ); + $res = mail($user['email'], sprintf( t("%s commented on your item at %s") ,$from,$a->config['sitename']), + $email_tpl,"From: " . t("Administrator") . "@" . $a->get_hostname() ); } } else { @@ -429,8 +494,8 @@ function item_post(&$a) { '$body' => strip_tags(bbcode($datarray['body'])) )); - $res = mail($user['email'], $from . t(" posted on your profile wall at ") . $a->config['sitename'], - $email_tpl,t("From: Administrator@") . $a->get_hostname() ); + $res = mail($user['email'], sprintf( t("%s posted on your profile wall at %s") ,$from, $a->config['sitename']), + $email_tpl,"From: " . t("Administrator") . "@" . $a->get_hostname() ); } } @@ -460,11 +525,7 @@ function item_post(&$a) { // NOTREACHED } - $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - - logger('mod_item: notifier invoked: ' . "\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &"); - - proc_run($php_path, "include/notifier.php", $notify_type, "$post_id"); + proc_run('php', "include/notifier.php", $notify_type, "$post_id"); $datarray['id'] = $post_id; @@ -477,13 +538,13 @@ function item_post(&$a) { $addr = trim($recip); if(! strlen($addr)) continue; - $disclaimer = '