Commit graph

67 commits

Author SHA1 Message Date
Matthias Pfefferle
7806285d88
Support "read more" for Activity-Summary (#856)
* Support "read more" for Activity-Summary

* add support for excerpt

* use the same function also for the shortcode

* add mentions, hashtags and links support to `the_excerpt`

* do not make unnecessary extra db calls

* fall back to default if options is empty

* remove unused hook

* some fixes

and improvements based on the feedback of @MatzeKitt

* add phpdoc

* also extract hashtags from excerpt

* use filter, so that it is possible to also support mentions

and maybe tags in the future

* Add PHPDoc

* simplify code

* fix test
2024-08-16 12:53:14 +02:00
Matthias Pfefferle
0bbd715d05
Refactor Media Handling a bit and add support for Seriously Simple Podcasting (#839)
* add some filters

* re-order functions for a better readability

* first draft to support Seriously Simple Podcasting

* use icon instead of thumbnail

* fix array_filter

* use transformer instead

* fix phpcs issues

* add some PHPDoc

* some more docs
2024-08-08 15:19:55 +02:00
Matt Wiebe
e6040f5fe8
Fix undefined get_sample_permalink (#832) 2024-08-01 09:41:15 +02:00
Matthias Pfefferle
b240589e78
Add "reply context" support (#819)
* add basic reply context support

* UX improvements

* remove unused style file

* built

* Add bookmarklet!

* add build

* small UX tweaks

* add toolbox box

* improved text

* optimized block filter

* add in-reply-to to activity

* refactor to add inboxes using filters

and retrieve/add inboxes of `in-reply-to` links

* renamings

* plugins do not like slashed IDs

* rename to match new get param

---------

Co-authored-by: Matt Wiebe <wiebe@automattic.com>
2024-07-24 23:44:01 +02:00
Matthias Pfefferle
12cb73bcd6 fix #818 2024-07-24 20:19:36 +02:00
Matthias Pfefferle
5f595c6354
Support Drafts! (#780)
* init

* remove images, text and summary if post is converted to draft

* remove debug infos
2024-07-02 11:00:42 +02:00
Matthias Pfefferle
8e7935f992
Add podcast support (#754)
* generic enclosure support

* prioritise media!

* prioritise media

* get_enclosures function

* remove unneeded check!

* some improvements

* formatting

---------

Co-authored-by: Matt Wiebe <wiebe@automattic.com>
2024-06-01 11:12:42 +02:00
Matt Wiebe
4f7a37aa7f appease the linter 2024-05-29 13:18:27 -05:00
Matthias Pfefferle
3fde5bbe96
Improve lemmy compatibility (#752)
* improve lemmy compatibility

* simplify code

* fix tests

* use string instead of array

* use `actors` instead of `users`

* optimize ID generation

* update ID

* the #threadiverse needs Announces for everything! :)

* change to full Announce Object

* fix indents
2024-05-16 17:30:08 +02:00
Jan Boddez
2b96c6efd2
Improve transformer (#731)
* Factory::get_transformer() may return a WP_Error instance

* Fix templates

* PHPDoc

* "Fix" conneg (for posts, at least)

* (Hopefully) fix conneg for comments, too

* Ugly, but works?

* Fix outboxes, collections

* Clean up a bit

* Use Factory

* Remove outdated `use`

* Use Transformer\Factory instead of Transformer\Post

* "Fix" _deprecated_function() call

* Remove superfluous transformer check

* Remove transformer check

* Call Transformer::get_transformer() only once per request

* PHPDoc

* this should be fine

a failing transformer is very unlikely because there are a lot of checks before `is_singular` or `is_comment` is valid.

* no longer used

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-05-16 15:14:31 +02:00
Matt Wiebe
9e57681701
Only send Mentions to comments in the direct hierarchy (#740)
* add generic get_comment_ancestors function

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-05-03 12:42:07 -05:00
Matthias Pfefferle
f0c52580ff
Improve AUTHORIZED_FETCH (#728)
* simplify code

* show limited profile informations

* exclude application user

* use actor instead of user

* change JS

* use Application instead of Application_User

* re-add use

* add summary

* Improves comment intent

* remove limited actor json in favour of the application user

---------

Co-authored-by: Django Doucet <mediaformat.ux@gmail.com>
2024-05-03 08:54:06 +02:00
Matthias Pfefferle
60d6be00c3
Improve attachment handling (#751) 2024-05-02 22:14:28 +02:00
Django
dd5aa9ba5f
Adds a core/embed block filter to transform iframes to links (#750)
* Add function to transform outgoing embed/iframe to simple url

* Fix descriptions and code style

* filter content for core/embed blocks

* some re-arranges

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-05-02 09:39:25 +02:00
Matthias Pfefferle
119bab3cb4
Always use Note as default (#738) 2024-04-29 12:09:58 +02:00
Matthias Pfefferle
eb23a8a867 fix #732 2024-04-22 15:32:53 +02:00
Matthias Pfefferle
a3189a0f4c small improvements 2024-04-05 13:49:57 +02:00
Matthias Pfefferle
4132fdb501 fix excerpt length 2024-04-05 12:44:18 +02:00
Matt Wiebe
7ae3e7383d
Comment reply federation: support is_single_user sites (#712)
* Comment reply federation: support `is_single_user` sites

* Use the `activitypub` capability

* Use `publish_posts`

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>

* No need to convert to Blog User, happens implicitly

* Other cap instance, update comment

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-04-04 23:16:05 +02:00
Matthias Pfefferle
96626c6438 better validity checks 2024-03-07 16:19:34 +01:00
Matthias Pfefferle
02a86ced95 html_entity_decode text 2024-02-29 15:13:42 +01:00
Matthias Pfefferle
56748f6db8 fix check! 2024-02-29 15:08:27 +01:00
Matthias Pfefferle
cbbbd70890
A better default content handling based on the Object Type (#661)
* nicer default handling!

* use attachment based on the object type

* fix typo

* C&P issue

* update settings

* add default post format

* mixed up `post_format` with `object_type`

* use h2 instead of strong

* add theme support for `post-formats`

if using that feature for ActivityPub

* use Note instead of `image`, `video` and `gallery`

* add `alt` support for images

fix #94

* set type to `Note` if post-type has no title support

* better check

* hide "Post content" when WordPress-Post-Format is selected

* add ACTIVITYPUB_DEFAULT_OBJECT_TYPE const

* move some code

* use note as default
2024-02-29 14:47:10 +01:00
Matthias Pfefferle
1d6c8eaab0
Apply comment_text filter to Activity (#695) 2024-02-13 10:51:01 +01:00
Matthias Pfefferle
61b770f40d fix reply-context 2024-02-12 11:57:57 +01:00
Matthias Pfefferle
2705703ced
Add all repliers as Mentions (#692)
* Add all repliers as Mentions

Add all repliers as Mentions so that they receive notifications.

See: https://wordpress.org/support/topic/ux-deviation-from-expected-behaviour-in-2-0/

* Fix readme

* typo
2024-02-12 11:30:01 +01:00
Matthias Pfefferle
2ed1534471 move generate_id to utils class 2024-02-09 16:31:09 +01:00
Matthias Pfefferle
1fc6869576
improve federated comments (#645)
* fix some times broken reply context

* revert changes

* add a filter to finally verify if an activity should be send or not

* better local comment handling

do not federate local only comments (fix #652) and hide "reply" link for federated comments

* show JSON only for comments that should be federated!

* fix parent_comment handling

* show external id if exists

* disable "edit comments" for federated comments

* some more doc

* added tests

* fix #658

* allow custom reply link!

* some restructurings

* this will be only a minor release

* version bump

* mark WordPress object as federated

* fix content filter issue!

fixes https://wordpress.org/support/topic/yasr-ratings-appear-on-comments-on-mastodon/

* add custom filter

thanks @janboddez for the idea https://github.com/Automattic/wordpress-activitypub/pull/645#issuecomment-1898820529

* optimize code a bit

* consts to enable/disable incoming/outgoing interactions

see https://wordpress.org/support/topic/how-to-suppress-user-comments-from-feed/

* rename state

* cleanup federation check

* fix markdown

* better handling of Create/Update/Delete

* update check
2024-02-01 11:17:03 +01:00
André Menrath
174262d22c
Add/event objects (#629)
* remove redundant property definitions

* Add redused context for actors.

* Add classes to construct Moblizon compatible events

* Bind the context to the activitypub object
- change the propertyname  which stores the json-ld context from context to _context, because context is already reserved in the ActivityStreams vocabulary.
- cleanup currently unused code

* fix phpcs

* Remove PostalAddress object: it's enough (at least atm) to directly write the array in transformers.

* Remove _context property from ActivityPub objects in favour of getter function get_json_ld_context()

* fix unit tests: ActivityPub Activity objects have a custom getter for the JsonLD context

* fix phpcs

* fix unit-tests to also support php5.6

* fix phpcs

* add param include_json_ld_context to to_array function
This allows to not set the @context in the resulting array.

* propagate the param include_json_ld_context to nested calls of to_array.

* fix phpcs

* Nested AcitivityPub objects: never build context in inner items in to_array function

* fix: param of set_address may also be an array

* fix typo in comment

* always prefix json-ld context with json-ld and move event class to sub-namespace

* fix usage of reserved object keyword
seems it should not be used as a namespace either

* Merge commit 'b2271cda6b857f879e0abd4f3c6683642d725267' into add/event-objects

* Fix calling non-static function as static

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>

* Partly fix Json-LD contexts in collections

* Update includes/activity/class-base-object.php

* this is implicit

We already set the correct user with `$transformer->change_wp_user_id( $user_id );` so the Actor will be generated properly. We can change the behaviour, but we should not use both.

* this change prevents the Activity to re-use Object vars

this should stay as is, because it pre-fills the Activity with data (for example cc and to) and it will no longer be done with your change.

It is on purpose that it first sets the object and then replaces it with the URI.

See: https://github.com/Automattic/wordpress-activitypub/blob/master/includes/activity/class-activity.php#L195

* add `$include_json_ld_context` support to `to_json`

* disable some more contexts

* remove whitespace

* Add php-comment for 7ed17c042a

* Fix JSON-LD context for ActivityPub objects: child classes may override it.

* coding standards

* call folder/namespace `Extended_Object`

 to be consistent with folder names in singular

* fix: unnessesary nesting of extended-objects

* remove license

I hope this is fine, to have the complete plugin under the MIT @Menrath ?!?

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-01-18 16:35:52 +01:00
Matthias Pfefferle
fba1c42dc0
fix comment update federation (#651)
fix #649
2024-01-12 10:08:07 +01:00
Sam Lade
d09b2ae9f3
Fix classic editor image finding for large images (#643)
The filename with -scaled in it is used as the primary key in this case.
Fix lookups to take this into account.
2024-01-10 10:44:45 +01:00
Matthias Pfefferle
6437d3d5cf better user handling in post transformer 2024-01-09 09:04:19 +01:00
André Menrath
4c297acfd4
Improve the property names of the transformer classes (#630)
* Improve the property names of the transformer classes
- Rename the property 'object' to 'wp_object' to indicate that its the source
- Enhance some PHP-Docs

* Transformer might also get called with stdClass as a parameter.

Applied as suggestions from code review.

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>

* remove stdClass

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2024-01-04 14:05:00 +01:00
Sam Lade
7855437c5c
Add improved classic editor image detection (#624)
* Add improved classic editor image detection

Parse the HTML if possible to extract image URLs.

* dedupe

* make linter happy

* small changes

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2023-12-26 21:06:58 +01:00
Matthias Pfefferle
f2b231ccac fix some small issues 2023-12-22 11:01:23 +01:00
Matthias Pfefferle
b744dc551d
Comment Federation (#550)
* Comments 1

* Delete FUNDING.yml

* Add basic BuddyPress support

fix #122

thanks and props @skysarwer

* change URL to `bp_core_get_user_domain`

* fix "Follow" issue

fix #133

* fix #135

* version bump

* Create phpunit.yml

* Update composer.json

* Update composer.json

* Update phpunit.yml

* Update composer.json

* Create phpcs.yml

* Update phpcs.xml

* Update composer.json

* phpcs fixes

* fix typo

* Comments update

* webfinger_extract remove extra param

* coding standards

* Replies Collection, settings, other fixes

* Create stale.yml

* move stale file

* code standards cleanup

* Migrate / Update script

* bugfix

* add settings link to plugin page

* fix code standards

* fix cs

* fix PHPCS

* PHPCS fixes

* change background image for wp.org

* fix docker

* fix webfinger for email identifiers

fix #152

* version bump

* update composer file to fix unit testing

* allow plugins

* fix dependencies

* Migrate tools

* code cleanup

* regression fix

* Fix announce, clarified language

* update included filename

* code cleanup

* Improve migration UX

* Add comments view, warnings to migrate page

* style fix

* more style fixes

* Fix send_delete_activity

* replace ap_comment_id to reuse  replytocom var

* Comments class missing attributes

* Post class fix attributes

* move js file to assets/js

* Separate file for Comment processing hooks

* fix file path

* associate comments to back compat post

* Fix js assets enqueue

* change regex matching potential hashtags

Matches any string starting with '#' and consisting of any number and combination of [A-Za-z0-9_] that is directly followed by whitespace or punctuation. Groups everything after '#' for access in functions using this regex.

This fixes #183 (incomplete links on hashtags containing special characters) by not matching these at all.

* also detect hashtags at the start of a paragraph

* restrict html tags after which to detect a hashtag

Hashtags should not be detected after just any html tag - for example not after an opening a or div. To still allow detection at the start of a line, allow specifically p and br to directly precede a hashtag.

* fix pagination

* Add Custom Post Type support to outbox API

* remove comment_type

* fix comparison

* remove trailing spaces

* fix phpcs issues

* fix phpcs issues

* run phpcs also on pull_requests

* fix phpcs issues

* support threaded comments from ActivityPub

* refactor support for threaded comments from ActivityPub

* remove debugging log line

* add first unit tests for class inbox

* fix code smells

* make filter function static

* attempt to resolve backwards compatibility issues

* update js to new file

* delete old js

* Remove migrate code

* update post meta canonical

* remove type and mention meta from comment filters

* extract mentions from comment_content

* phpcbf

* remove extra curly bracket

* Remove migrate code

* remove version_check()

* Update enqueue scripts

* Remove remote comments from preprocessing

* Reply to comments from Dashboard

* rename function, inserts users into reply text

* Update dispatch comments

* update comment model

* fix comment model replies property

* fix preprocess_comment cap check

* Add webfinger filter to comments

* Add comment edit datetime

* cleanup

* fix var name

* cleanup

* phpcbf

* better actual translation support

* Separate comment reply script

* migrate dispatch, migrate comment model to transform

* ignore WP_Comment type for now

* Adds new helpers for resolving inReplyTo url

* Update activitypub_send_comment_activity to include type

* remove redundant id check

* reinclude user_id in saved ap_object meta

* update post field meta

* Fix comment updated datetime

* front-end reply inserts @mentions

* enqueue reply script on front end

* use const instead of dirname

* some simplifications

* move some functions

* fixes

* some more fixes

* fix namespace

* fix unittests

* fix testcase

* fixed typo

* fix tests

* fix tests

* fix PHPCS

* move functions to transformer class

* fix warnings

* Link remote comments on frontend

* Link to comment source as row action

* Init Comments class

* remove dead dispatch action

* re-add extract mentions filter

* Restore and tweak Comment transform

* Schedule comments activities for non-admin users

* lint

* remove context property

* rename get_id method to generate_id

* fix locale

* move functions

* PHPDoc

* this is never used

* remove some edit methods

* remove replies for now

* remove JS calls

* remove reply_recipients

* never used

* remove other query-vars

* otherwise to_json would not work properly

* small changes

* use `c` for comment IDs

* remove comments.php for now

maybe re-add it later

* wp_insert_post is an action

* also parse comment_text

* remove duplicate functions

* add Base transformer

* remove invalid test

* update to new query var

* update dispatcher to support comments and posts

* fix transition

* remove unused functions for now

* schedule_comment_activity seems to ignore create and update

* fix wrong use of functions!

* not every platforms sends an URL

* check source-id first

* remove hashtags for now

* fallback to ID

* fix typo

* move to_activity to Base class

* remove unused function

* add support for announce and like

* also ping inboxes of other commenters in the thread

* restructure WebFinger class

* some small improvements

* simplified to_object class

props @Menrath for the feedback and the idea!

* fix unit tests

* make transformer filterable

/cc @Menrath

* use transformer factory, so that transformer can be overwritten

* phpcs fixes

* fix attachments

* fix comment transformer

* remove comments for now

* update readme/changelog

* simplify and unify json_encodes

---------

Co-authored-by: Django Doucet <mediaformat.ux@gmail.com>
Co-authored-by: Andreas <andreas@bocops.de>
Co-authored-by: Eana Hufwe <eana@1a23.com>
Co-authored-by: Matthew Exon <git.mexon@spamgourmet.com>
Co-authored-by: Django Doucet <django.doucet@webdevstudios.com>
2023-12-22 10:12:26 +01:00
Matthias Pfefferle
9f8bad3e8d
Make Post-Template filterable (#597)
* make template filterable

prepare #596

also #519

* updated changelog
2023-12-12 13:58:44 +01:00
Matt Wiebe
c35ddf1935
Attachments: dedupe earlier to prevent incorrect max_media (#565) 2023-11-17 18:44:59 +01:00
Matthias Pfefferle
a81e20a9ba
fix issue when locale is only two chars (#549)
for example  "de" instead of "de_DE"
2023-11-07 08:49:48 +01:00
Matt Wiebe
9ff4d1251a
Attachments: add support for audio 🔈 and video 📼 (#536)
* only in the block editor
* update settings page copy: media, not just images

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2023-10-27 15:55:44 -05:00
Matt Wiebe
53adfe6b80
PHP 8.1 compatibility (#533)
* PHP 8.1 compatibility

* Update compat.php

---------

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2023-10-25 08:44:04 +02:00
Matt Wiebe
33b61ca2b9
Shortcodes: only register when needed (#526) 2023-10-19 14:46:31 -05:00
Matt Wiebe
ff58070a5e Revert "Shortcodes: only register when needed"
This reverts commit c4daffe5c6.
2023-10-18 16:21:20 -05:00
Matt Wiebe
c4daffe5c6 Shortcodes: only register when needed 2023-10-18 16:20:06 -05:00
Matthias Pfefferle
12b6750c94
do not overwrite $image_ids (#500)
to include post thumbnail also for block-parser.
2023-10-10 20:48:59 +02:00
Brandon Kraft
b956f5b088
Posts: add pre-fetch hook to allow plugins to hang filters on (#487)
Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>
2023-10-05 08:14:32 +02:00
Matthias Pfefferle
336f3e5a62
Fix various encoding issues (#477)
* fix html-entity issue in username

* remove kses

let other platforms decide what to allow and what not

* Remove html_entity_decode to prevent encoding issues (#454)

I've tested this on content which includes MarkDown, HTML, encoded entities, unencoded entities, etc.

Fixes #445

Co-authored-by: Matthias Pfefferle <pfefferle@users.noreply.github.com>

* remove allowed tags

---------

Co-authored-by: Terence Eden <edent@users.noreply.github.com>
2023-10-02 17:11:56 +02:00
Matthias Pfefferle
444c4b2837
Fixes PHP warnings and remote delete (#468)
* fix #463

* fix delete

/cc #465 @janboddez

* add disclaimer to not use the same name as an author login

see #470

* check if url is cached before trashing it
2023-09-27 11:05:11 +02:00
Aslak Raanes
963b2795a6
Move [ap_hashtags] last in post in Content (#462) 2023-09-23 00:15:10 +02:00
Matt Wiebe
dd29775ae4
Activity: try to parse image IDs using blocks (#460)
This will prevent the issue of attaching images that don't were uploaded to the post but not used in the post

The post needs to be using blocks to get the introspection required.
2023-09-22 09:21:49 +02:00