Merge pull request #9017 from annando/issue-9015
Issue 9015: Reducing load of remote systems
This commit is contained in:
		
				commit
				
					
						977e4fe5d9
					
				
			
		
					 6 changed files with 34 additions and 32 deletions
				
			
		| 
						 | 
				
			
			@ -1355,7 +1355,7 @@ class Item
 | 
			
		|||
	 * @param array $item
 | 
			
		||||
	 * @return boolean item is valid
 | 
			
		||||
	 */
 | 
			
		||||
	private static function isValid(array $item)
 | 
			
		||||
	public static function isValid(array $item)
 | 
			
		||||
	{
 | 
			
		||||
		// When there is no content then we don't post it
 | 
			
		||||
		if ($item['body'].$item['title'] == '') {
 | 
			
		||||
| 
						 | 
				
			
			@ -1384,7 +1384,7 @@ class Item
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (Contact::isBlocked($item['author-id'])) {
 | 
			
		||||
		if (!empty($item['author-id']) && Contact::isBlocked($item['author-id'])) {
 | 
			
		||||
			Logger::notice('Author is blocked node-wide', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]);
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1394,12 +1394,12 @@ class Item
 | 
			
		|||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!empty($item['uid']) && Contact\User::isBlocked($item['author-id'], $item['uid'])) {
 | 
			
		||||
		if (!empty($item['uid']) && !empty($item['author-id']) && Contact\User::isBlocked($item['author-id'], $item['uid'])) {
 | 
			
		||||
			Logger::notice('Author is blocked by user', ['author-link' => $item['author-link'], 'uid' => $item['uid'], 'item-uri' => $item['uri']]);
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (Contact::isBlocked($item['owner-id'])) {
 | 
			
		||||
		if (!empty($item['owner-id']) && Contact::isBlocked($item['owner-id'])) {
 | 
			
		||||
			Logger::notice('Owner is blocked node-wide', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]);
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1409,7 +1409,7 @@ class Item
 | 
			
		|||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!empty($item['uid']) && Contact\User::isBlocked($item['owner-id'], $item['uid'])) {
 | 
			
		||||
		if (!empty($item['uid']) && !empty($item['owner-id']) && Contact\User::isBlocked($item['owner-id'], $item['uid'])) {
 | 
			
		||||
			Logger::notice('Owner is blocked by user', ['owner-link' => $item['owner-link'], 'uid' => $item['uid'], 'item-uri' => $item['uri']]);
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1547,7 +1547,7 @@ class Transmitter
 | 
			
		|||
	 */
 | 
			
		||||
	public static function isAnnounce($item)
 | 
			
		||||
	{
 | 
			
		||||
		if ($item['verb'] == Activity::ANNOUNCE) {
 | 
			
		||||
		if (!empty($item['verb']) && ($item['verb'] == Activity::ANNOUNCE)) {
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,6 @@ use Friendica\Model\Contact;
 | 
			
		|||
use Friendica\Model\Item;
 | 
			
		||||
use Friendica\Model\Tag;
 | 
			
		||||
use Friendica\Model\User;
 | 
			
		||||
use Friendica\Network\HTTPRequest;
 | 
			
		||||
use Friendica\Util\DateTimeFormat;
 | 
			
		||||
use Friendica\Util\Network;
 | 
			
		||||
use Friendica\Util\ParseUrl;
 | 
			
		||||
| 
						 | 
				
			
			@ -496,6 +495,14 @@ class Feed
 | 
			
		|||
				$item["title"] = '';
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if ($dryRun) {
 | 
			
		||||
				$items[] = $item;
 | 
			
		||||
				break;
 | 
			
		||||
			} elseif (!Item::isValid($item)) {
 | 
			
		||||
				Logger::info('Feed is invalid', ['created' => $item['created'], 'uid' => $item['uid'], 'uri' => $item['uri']]);
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			$preview = '';
 | 
			
		||||
			if (!empty($contact["fetch_further_information"]) && ($contact["fetch_further_information"] < 3)) {
 | 
			
		||||
				// Handle enclosures and treat them as preview picture
 | 
			
		||||
| 
						 | 
				
			
			@ -564,34 +571,29 @@ class Feed
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if ($dryRun) {
 | 
			
		||||
				$items[] = $item;
 | 
			
		||||
				break;
 | 
			
		||||
			} else {
 | 
			
		||||
				Logger::info('Stored feed', ['item' => $item]);
 | 
			
		||||
			Logger::info('Stored feed', ['item' => $item]);
 | 
			
		||||
 | 
			
		||||
				$notify = Item::isRemoteSelf($contact, $item);
 | 
			
		||||
			$notify = Item::isRemoteSelf($contact, $item);
 | 
			
		||||
 | 
			
		||||
				// Distributed items should have a well formatted URI.
 | 
			
		||||
				// Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
 | 
			
		||||
				if ($notify) {
 | 
			
		||||
					$item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
 | 
			
		||||
					unset($item['uri']);
 | 
			
		||||
					unset($item['parent-uri']);
 | 
			
		||||
			// Distributed items should have a well formatted URI.
 | 
			
		||||
			// Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
 | 
			
		||||
			if ($notify) {
 | 
			
		||||
				$item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
 | 
			
		||||
				unset($item['uri']);
 | 
			
		||||
				unset($item['parent-uri']);
 | 
			
		||||
 | 
			
		||||
					// Set the delivery priority for "remote self" to "medium"
 | 
			
		||||
					$notify = PRIORITY_MEDIUM;
 | 
			
		||||
				}
 | 
			
		||||
				// Set the delivery priority for "remote self" to "medium"
 | 
			
		||||
				$notify = PRIORITY_MEDIUM;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
				$id = Item::insert($item, $notify);
 | 
			
		||||
			$id = Item::insert($item, $notify);
 | 
			
		||||
 | 
			
		||||
				Logger::info("Feed for contact " . $contact["url"] . " stored under id " . $id);
 | 
			
		||||
			Logger::info("Feed for contact " . $contact["url"] . " stored under id " . $id);
 | 
			
		||||
 | 
			
		||||
				if (!empty($id) && !empty($taglist)) {
 | 
			
		||||
					$feeditem = Item::selectFirst(['uri-id'], ['id' => $id]);
 | 
			
		||||
					foreach ($taglist as $tag) {
 | 
			
		||||
						Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag);
 | 
			
		||||
					}					
 | 
			
		||||
			if (!empty($id) && !empty($taglist)) {
 | 
			
		||||
				$feeditem = Item::selectFirst(['uri-id'], ['id' => $id]);
 | 
			
		||||
				foreach ($taglist as $tag) {
 | 
			
		||||
					Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -181,7 +181,7 @@ class Cron
 | 
			
		|||
	 * @throws \Friendica\Network\HTTPException\InternalServerErrorException
 | 
			
		||||
	 */
 | 
			
		||||
	private static function pollContacts() {
 | 
			
		||||
		$min_poll_interval = DI::config()->get('system', 'min_poll_interval', 1);
 | 
			
		||||
		$min_poll_interval = DI::config()->get('system', 'min_poll_interval');
 | 
			
		||||
 | 
			
		||||
		Addon::reload();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ class OnePoll
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (($contact['network'] != Protocol::MAIL) || $force) {
 | 
			
		||||
		if (($contact['network'] != Protocol::MAIL) && $force) {
 | 
			
		||||
			Contact::updateFromProbe($contact_id);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -331,7 +331,7 @@ return [
 | 
			
		|||
 | 
			
		||||
		// min_poll_interval (Integer)
 | 
			
		||||
		// minimal distance in minutes between two polls for a contact. Reasonable values are between 1 and 59.
 | 
			
		||||
		'min_poll_interval' => 1,
 | 
			
		||||
		'min_poll_interval' => 15,
 | 
			
		||||
 | 
			
		||||
		// no_count (Boolean)
 | 
			
		||||
		// Don't do count calculations (currently only when showing photo albums).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue