<?php
+/**
+ * @file mod/item.php
+ */
/*
* This is the POST destination for most all locally posted
* Posts that originate externally or do not fall into the above
* posting categories go through item_store() instead of this function.
*/
-
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBM;
-use Friendica\Model\GlobalContact;
+use Friendica\Model\Contact;
+use Friendica\Model\GContact;
use Friendica\Network\Probe;
-use Friendica\Object\Contact;
use Friendica\Protocol\Diaspora;
+use Friendica\Protocol\Email;
use Friendica\Util\Emailer;
-require_once 'include/crypto.php';
require_once 'include/enotify.php';
-require_once 'include/email.php';
require_once 'include/tags.php';
require_once 'include/files.php';
require_once 'include/threads.php';
function item_post(App $a) {
- if ((! local_user()) && (! remote_user()) && (! x($_REQUEST, 'commenter'))) {
+ if (!local_user() && !remote_user() && !x($_REQUEST, 'commenter')) {
return;
}
}
// Is this a reply to something?
- $parent = ((x($_REQUEST, 'parent')) ? intval($_REQUEST['parent']) : 0);
- $parent_uri = ((x($_REQUEST, 'parent_uri')) ? trim($_REQUEST['parent_uri']) : '');
+ $parent = (x($_REQUEST, 'parent') ? intval($_REQUEST['parent']) : 0);
+ $parent_uri = (x($_REQUEST, 'parent_uri') ? trim($_REQUEST['parent_uri']) : '');
$parent_item = null;
$parent_contact = null;
}
}
- if (! DBM::is_result($r)) {
+ if (!DBM::is_result($r)) {
notice( t('Unable to locate original post.') . EOL);
if (x($_REQUEST, 'return')) {
goaway($return_path);
// First check that the parent exists and it is a wall item.
- if ((x($_REQUEST, 'commenter')) && ((! $parent) || (! $parent_item['wall']))) {
+ if (x($_REQUEST, 'commenter') && (!$parent || !$parent_item['wall'])) {
notice(t('Permission denied.') . EOL) ;
if (x($_REQUEST, 'return')) {
goaway($return_path);
killme();
}
+ // Allow commenting if it is an answer to a public post
+ $allow_comment = ($profile_uid == 0) && $parent && in_array($parent_item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA]);
+
/*
* Now check that it is a page_type of PAGE_BLOG, and that valid personal details
* have been provided, and run any anti-spam plugins
*/
- if ((! can_write_wall($a, $profile_uid)) && (! $allow_moderated)) {
+ if (!(can_write_wall($a, $profile_uid) || $allow_comment) && !$allow_moderated) {
notice(t('Permission denied.') . EOL) ;
if (x($_REQUEST, 'return')) {
goaway($return_path);
$self = false;
$contact_id = 0;
- if ((local_user()) && (local_user() == $profile_uid)) {
+ if (local_user() && ((local_user() == $profile_uid) || $allow_comment)) {
$self = true;
- $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1",
intval($_SESSION['uid']));
- } elseif(remote_user()) {
+ } elseif (remote_user()) {
if (x($_SESSION, 'remote') && is_array($_SESSION['remote'])) {
foreach ($_SESSION['remote'] as $v) {
if ($v['uid'] == $profile_uid) {
// get contact info for owner
- if ($profile_uid == local_user()) {
+ if ($profile_uid == local_user() || $allow_comment) {
$contact_record = $author;
} else {
- $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1",
intval($profile_uid)
);
if (DBM::is_result($r)) {
$datarray['postopts'] = $postopts;
$datarray['origin'] = $origin;
$datarray['moderated'] = $allow_moderated;
- $datarray['gcontact-id'] = GlobalContact::getId(array("url" => $datarray['author-link'], "network" => $datarray['network'],
+ $datarray['gcontact-id'] = GContact::getId(array("url" => $datarray['author-link'], "network" => $datarray['network'],
"photo" => $datarray['author-avatar'], "name" => $datarray['author-name']));
$datarray['object'] = $object;
$disclaimer .= sprintf( t('You may visit them online at %s'), System::baseUrl() . '/profile/' . $a->user['nickname']) . EOL;
$disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . EOL;
if (!$datarray['title']=='') {
- $subject = email_header_encode($datarray['title'], 'UTF-8');
+ $subject = Email::encodeHeader($datarray['title'], 'UTF-8');
} else {
- $subject = email_header_encode('[Friendica]' . ' ' . sprintf( t('%s posted an update.'), $a->user['username']), 'UTF-8');
+ $subject = Email::encodeHeader('[Friendica]' . ' ' . sprintf( t('%s posted an update.'), $a->user['username']), 'UTF-8');
}
$link = '<a href="' . System::baseUrl() . '/profile/' . $a->user['nickname'] . '"><img src="' . $author['thumb'] . '" alt="' . $a->user['username'] . '" /></a><br /><br />';
$html = prepare_body($datarray);
if (!DBM::is_result($r)) {
$probed = Probe::uri($name);
if ($result['network'] != NETWORK_PHANTOM) {
- GlobalContact::update($probed);
+ GContact::update($probed);
$r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
dbesc(normalise_link($probed["url"])));
}