Plugin Directory

Changeset 3027388


Ignore:
Timestamp:
01/26/2024 03:01:26 PM (2 years ago)
Author:
appfulapp
Message:

Improvde post content fetching and exposed appful hooks

Location:
appful-app
Files:
38 added
11 deleted
21 edited
292 copied

Legend:

Unmodified
Added
Removed
  • appful-app/tags/3.1.20/appful-app.php

    r3019874 r3027388  
    1212 * Plugin URI:        https://appful.io
    1313 * Description:       Appful® is the number 1 plugin for turning your WordPress Content into a native, beautiful app on iOS & Android in under 5 minutes.
    14  * Version:           3.1.19
     14 * Version:           3.1.20
    1515 * Requires at least: 5.8
    1616 * Requires PHP:      7.4
  • appful-app/tags/3.1.20/appful.log

    r3019874 r3027388  
    1 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/posts/176 with request body:
    2 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    3 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    4 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/blogs with request body:
    5 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    6 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/appfulUsers/logout with request body:
    7 [INFO    ][09-01-24 02:00:04] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    8 [INFO    ][09-01-24 02:00:04] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"c342-213-143-126-53.ngrok-free.app","site_url":"https:\/\/c342-213-143-126-53.ngrok-free.app","languages":["en"],"token":"7d8f0442acc87a05df10e386ea35faee","hooks":{"create_comment":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    9 [ERROR   ][09-01-24 02:00:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://c342-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    10 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    11 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    12 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    13 [INFO    ][09-01-24 02:01:53] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    14 [INFO    ][09-01-24 02:01:53] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"9ac2bd0c948d321d911ae762db576ffe","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    15 [ERROR   ][09-01-24 02:02:09] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    16 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    17 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    18 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    19 [INFO    ][10-01-24 07:28:22] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    20 [INFO    ][10-01-24 07:28:22] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"c6768cf2a852b5e881277c4d7defb61f","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    21 [ERROR   ][10-01-24 07:28:35] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    22 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    23 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    24 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    25 [INFO    ][10-01-24 07:29:01] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    26 [INFO    ][10-01-24 07:29:01] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"aab52646f0f1b7b4e8bee17ff15c4d58","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    27 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    28 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    29 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    30 [INFO    ][10-01-24 10:00:01] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    31 [INFO    ][10-01-24 10:00:01] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"ebc5a174e9f47b2f447c97228740b3d1","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    32 [ERROR   ][10-01-24 10:00:15] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    33 [INFO    ][10-01-24 10:04:40] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    34 [INFO    ][10-01-24 10:04:40] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    35 [INFO    ][10-01-24 10:04:41] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    36 [INFO    ][10-01-24 10:05:14] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    37 [INFO    ][10-01-24 10:05:14] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"c6fbb09b1d526a3113a31387b807ca54","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    38 [ERROR   ][10-01-24 10:05:15] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    39 [INFO    ][10-01-24 10:28:34] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    40 [INFO    ][10-01-24 10:28:34] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    41 [INFO    ][10-01-24 10:28:35] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    42 [INFO    ][10-01-24 10:30:09] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    43 [INFO    ][10-01-24 10:30:09] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"5a16f8a4bc5cc628d511c687edcd24d8","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    44 [ERROR   ][10-01-24 10:30:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    45 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    46 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    47 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    48 [INFO    ][10-01-24 10:37:08] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    49 [INFO    ][10-01-24 10:37:08] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"2346cb2c69dcae0ae05d9914d3dd9a79","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    50 [ERROR   ][10-01-24 10:37:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    51 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    52 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    53 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    54 [INFO    ][10-01-24 10:40:36] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    55 [INFO    ][10-01-24 10:40:36] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"d99d85d9fc674377ca25601c3dbd64dd","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    56 [ERROR   ][10-01-24 10:40:49] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    57 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    58 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    59 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    60 [INFO    ][10-01-24 11:39:08] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    61 [INFO    ][10-01-24 11:39:08] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"8e89b0c97e63e21d4a3aff3ec880d5ce","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    62 [ERROR   ][10-01-24 11:39:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    63 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    64 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    65 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    66 [INFO    ][10-01-24 11:58:59] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    67 [INFO    ][10-01-24 11:58:59] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"0368a3fd62460a049cfd19b1213d5b19","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    68 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    69 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    70 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    71 [INFO    ][10-01-24 12:01:00] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    72 [INFO    ][10-01-24 12:01:00] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"36efbc47619accec5aae459d10429cdd","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    73 [ERROR   ][10-01-24 12:01:14] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
  • appful-app/tags/3.1.20/includes/api/Api.php

    r3018629 r3027388  
    6969
    7070    private function respond( PluginResponse $response ) {
    71         ob_get_clean();
     71        ob_end_clean();
    7272        if ( $response->get_encoded() ) {
    7373            header( "Content-Type: application/json" );
  • appful-app/tags/3.1.20/includes/api/ReqHandler.php

    r3018629 r3027388  
    4747            new LogRequestHandler( $use_case_manager->get_logs_use_case() ),
    4848            new InfoRequestHandler( $use_case_manager->get_blog_info_use_case() ),
    49             new PostSyncRequestHandler( $use_case_manager->sync_posts_use_case() ),
     49            new PostSyncRequestHandler( $use_case_manager->posts()->get_sync_posts_use_case() ),
    5050            new GetPostsRequestHandler( $use_case_manager->get_posts_by_id_use_case() ),
    5151            new CategorySyncRequestHandler( $use_case_manager->sync_categories_use_case() ),
  • appful-app/tags/3.1.20/includes/api/handlers/PostSyncRequestHandler.php

    r3018629 r3027388  
    77use AppfulPlugin\Api\Responses\PluginResponse;
    88use AppfulPlugin\Helper\Logger;
    9 use AppfulPlugin\UseCases\SyncPostsUseCase;
     9use AppfulPlugin\UseCases\Post\SyncPostsUseCase;
    1010
    1111class PostSyncRequestHandler implements RequestHandler {
  • appful-app/tags/3.1.20/includes/api/mapper/BlogInfoMapper.php

    r3019874 r3027388  
    2626            $blog_info->get_token(),
    2727            $hooks,
    28             "3.1.19",
     28            "3.1.20",
    2929            $stats
    3030        );
  • appful-app/tags/3.1.20/includes/domain/PostContent.php

    r2907312 r3027388  
    2121            ->head( $head )
    2222            ->footer( $footer )
    23             ->content( $content );
     23            ->content( $content )
     24            ->body_class( $body_class );
    2425    }
    2526
  • appful-app/tags/3.1.20/includes/helper/Constants.php

    r2971184 r3027388  
    3030    public static string $USER_PATH = "/users";
    3131    public static string $POST_PATH = "/posts";
     32    public static string $APP_SETTINGS_PATH = "/app/settings";
    3233    public static string $PAGE_PATH = "/pages";
    3334    public static string $COMMENT_PATH = "/comments";
  • appful-app/tags/3.1.20/includes/hooks/Hooks.php

    r2971184 r3027388  
    1818    private UserHook $user_hook;
    1919    private InitHook $init_hook;
     20    private AppSettingsHook $app_settings_hook;
    2021
    2122    private UseCaseManager $use_case_manager;
     
    3233        $this->user_hook              = new UserHook( $use_case_manager );
    3334        $this->init_hook              = new InitHook( $appful_rewrites );
     35        $this->app_settings_hook      = new AppSettingsHook( $use_case_manager );
    3436    }
    3537
     
    4648            $this->attachment_hook->init();
    4749            $this->user_hook->init();
     50            $this->app_settings_hook->init();
    4851        }
    4952    }
  • appful-app/tags/3.1.20/includes/hooks/PostHook.php

    r3018629 r3027388  
    55use AppfulPlugin\Helper\Logger;
    66use AppfulPlugin\UseCases\UseCaseManager;
    7 use AppfulPlugin\Wp\Mapper\PostMapper;
    87use WP_Post;
    98
     
    2928            function ( int $post_id, WP_Post $post ) {
    3029                $this->on_delete_post( $post_id, $post );
     30            },
     31            10,
     32            2
     33        );
     34
     35        add_action(
     36            "appful_app_update_post",
     37            function ( int $post_id ) {
     38                $this->on_appful_post_update( $post_id );
     39            },
     40            10,
     41            1
     42        );
     43
     44        add_action(
     45            "appful_app_update_taxonomy_posts",
     46            function ( string $taxonomy, string $term_slug ) {
     47                $this->on_appful_taxonomy_posts_update( $taxonomy, $term_slug );
    3148            },
    3249            10,
     
    6077        Logger::debug( "Post with id " . $post->ID . " inserted with status " . $post->post_status . "!" );
    6178
    62         $domain_post = PostMapper::to_sync_item( $post, $post->post_status != $post_before->post_status );
    63         $this->use_case_manager->post_save_use_case()->invoke( $domain_post );
     79        $old_post_status = "";
     80        if ( $post_before ) {
     81            $old_post_status = $post_before->post_status;
     82        }
     83
     84        $this->use_case_manager->posts()->get_sync_post_use_case()->invoke( $post->ID, $post->post_status != $old_post_status );
     85    }
     86
     87    private function on_appful_post_update( int $post_id ) {
     88        Logger::debug( "Manual appful post update for id " . $post_id );
     89
     90        $this->use_case_manager->posts()->get_sync_post_use_case()->invoke( $post_id, true );
     91    }
     92
     93    private function on_appful_taxonomy_posts_update( string $taxonomy, string $term_slug ) {
     94        Logger::debug( "Manual appful taxonomy posts update for taxonomy " . $taxonomy . " and term " . $term_slug );
     95
     96        $this->use_case_manager->posts()->get_sync_taxonomy_posts_use_case()->invoke( $taxonomy, $term_slug );
    6497    }
    6598}
  • appful-app/tags/3.1.20/includes/use_cases/GetLocalPostContentByIdUseCase.php

    r2920184 r3027388  
    88class GetLocalPostContentByIdUseCase {
    99    public function invoke( int $id ): ?PostContent {
    10         return WPPostManager::get_post_content_by_id( $id );
     10        $this->configure_active_filter( true );
     11        $post_content = WPPostManager::get_post_content_by_id( $id );
     12        $this->configure_active_filter( false );
     13
     14        return $post_content;
     15    }
     16
     17    private function configure_active_filter( bool $on ) {
     18        add_filter(
     19            "appful_app_is_post_content_call",
     20            function ( bool $is_active ) use ( $on ) {
     21                return $on;
     22            },
     23            10,
     24            1
     25        );
    1126    }
    1227}
  • appful-app/tags/3.1.20/includes/use_cases/SyncAllUseCase.php

    r2971184 r3027388  
    22
    33namespace AppfulPlugin\UseCases;
     4
     5use AppfulPlugin\UseCases\Post\SyncPostsUseCase;
    46
    57class SyncAllUseCase {
  • appful-app/tags/3.1.20/includes/use_cases/UseCaseManager.php

    r2971184 r3027388  
    55use AppfulPlugin\Api\Client\BackendClient;
    66use AppfulPlugin\Api\Client\SelfClient;
     7use AppfulPlugin\UseCases\AppSettings\AppSettingsUseCaseManager;
    78use AppfulPlugin\UseCases\Page\PageUseCaseManager;
     9use AppfulPlugin\UseCases\Post\PostUseCaseManager;
    810
    911class UseCaseManager {
     
    1517    private DeleteSessionUseCase $delete_session_use_case;
    1618    private RegisterBlogUseCase $register_blog_use_case;
    17     private PostSaveUseCase $post_save_use_case;
    1819    private CategorySaveUseCase $category_save_use_case;
    1920    private CategoryDeleteUseCase $category_delete_use_case;
    2021    private TagDeleteUseCase $tag_delete_use_case;
    2122    private TagSaveUseCase $tag_save_use_case;
    22     private GetPostSyncDataUseCase $get_post_sync_data_use_case;
    23     private SendPostChunkSyncUseCase $send_post_chunk_sync_use_case;
    2423    private GetPostsByIdUseCase $get_posts_by_id_use_case;
    2524    private GetTagSyncDataUseCase $get_tag_sync_data_use_case;
     
    3736    private CommentSaveUseCase $comment_save_use_case;
    3837    private LogoutUserUseCase $logout_user_use_case;
    39     private SyncPostsUseCase $sync_posts_use_case;
    4038    private SyncTagsUseCase $sync_tags_use_case;
    4139    private GetCommentSyncDataUseCase $get_comment_sync_data_use_case;
     
    7068    private SyncPagesUseCase $sync_pages_use_case;
    7169    private PageUseCaseManager $page_use_case_manager;
     70    private PostUseCaseManager $post_use_case_manager;
     71    private AppSettingsUseCaseManager $app_settings_use_case_manager;
    7272
    7373    public function __construct( BackendClient $backend_client, SelfClient $self_client ) {
     
    7979        $this->delete_session_use_case                 = new DeleteSessionUseCase( $backend_client );
    8080        $this->register_blog_use_case                  = new RegisterBlogUseCase( $backend_client );
    81         $this->post_save_use_case                      = new PostSaveUseCase( $backend_client );
    8281        $this->category_save_use_case                  = new CategorySaveUseCase( $backend_client );
    8382        $this->category_delete_use_case                = new CategoryDeleteUseCase( $backend_client );
    8483        $this->tag_delete_use_case                     = new TagDeleteUseCase( $backend_client );
    8584        $this->tag_save_use_case                       = new TagSaveUseCase( $backend_client );
    86         $this->get_post_sync_data_use_case             = new GetPostSyncDataUseCase();
    87         $this->send_post_chunk_sync_use_case           = new SendPostChunkSyncUseCase( $backend_client );
    8885        $this->get_posts_by_id_use_case                = new GetPostsByIdUseCase();
    8986        $this->get_tag_sync_data_use_case              = new GetTagSyncDataUseCase();
     
    106103        $this->sync_users_use_case                     = new SyncUsersUseCase( $this->get_user_sync_data_use_case, $this->send_user_chunk_sync_use_case );
    107104        $this->sync_comments_use_case                  = new SyncCommentsUseCase( $this->get_comment_sync_data_use_case, $this->send_comment_chunk_sync_use_case );
    108         $this->sync_posts_use_case                     = new SyncPostsUseCase( $this->get_post_sync_data_use_case, $this->send_post_chunk_sync_use_case );
    109105        $this->sync_tags_use_case                      = new SyncTagsUseCase( $this->get_tag_sync_data_use_case, $this->send_tag_chunk_sync_use_case );
    110106        $this->sync_categories_use_case                = new SyncCategoriesUseCase( $this->get_category_sync_data_use_case, $this->send_category_chunk_sync_use_case );
     
    132128        $this->send_page_chunk_sync_use_case           = new SendPageChunkSyncUseCase( $backend_client );
    133129        $this->sync_pages_use_case                     = new SyncPagesUseCase( $this->get_page_sync_data_use_case, $this->send_page_chunk_sync_use_case );
    134         $this->sync_all_use_case                       = new SyncAllUseCase( $this->sync_posts_use_case, $this->sync_tags_use_case, $this->sync_categories_use_case, $this->sync_attachments_use_case, $this->sync_comments_use_case, $this->sync_users_use_case, $this->sync_roles_use_case, $this->sync_pages_use_case );
    135130        $this->page_use_case_manager                   = new PageUseCaseManager( $self_client );
     131        $this->post_use_case_manager                   = new PostUseCaseManager( $backend_client );
     132        $this->app_settings_use_case_manager           = new AppSettingsUseCaseManager( $backend_client );
     133        $this->sync_all_use_case                       = new SyncAllUseCase( $this->post_use_case_manager->get_sync_posts_use_case(), $this->sync_tags_use_case, $this->sync_categories_use_case, $this->sync_attachments_use_case, $this->sync_comments_use_case, $this->sync_users_use_case, $this->sync_roles_use_case, $this->sync_pages_use_case );
    136134    }
    137135
     
    164162    }
    165163
    166     public function post_save_use_case(): PostSaveUseCase {
    167         return $this->post_save_use_case;
    168     }
    169 
    170164    public function category_save_use_case(): CategorySaveUseCase {
    171165        return $this->category_save_use_case;
     
    184178    }
    185179
    186     public function get_post_sync_data_use_case(): GetPostSyncDataUseCase {
    187         return $this->get_post_sync_data_use_case;
    188     }
    189 
    190     public function send_post_chunk_sync_use_case(): SendPostChunkSyncUseCase {
    191         return $this->send_post_chunk_sync_use_case;
    192     }
    193 
    194180    public function get_posts_by_id_use_case(): GetPostsByIdUseCase {
    195181        return $this->get_posts_by_id_use_case;
     
    256242    }
    257243
    258     public function sync_posts_use_case(): SyncPostsUseCase {
    259         return $this->sync_posts_use_case;
    260     }
    261 
    262244    public function sync_tags_use_case(): SyncTagsUseCase {
    263245        return $this->sync_tags_use_case;
     
    383365        return $this->page_use_case_manager;
    384366    }
     367
     368    public function posts(): PostUseCaseManager {
     369        return $this->post_use_case_manager;
     370    }
     371
     372    public function app_settings(): AppSettingsUseCaseManager {
     373        return $this->app_settings_use_case_manager;
     374    }
    385375}
  • appful-app/tags/3.1.20/includes/wp/WPPostDatabaseManager.php

    r3019874 r3027388  
    2424    }
    2525
     26    /** @return SyncItem[] */
     27    public static function get_sync_items_for_type_and_taxonomy( string $type, string $taxonomy, string $term_slug, int $limit, int $offset ): array {
     28        global $wpdb;
     29
     30        $query   = $wpdb->prepare( "SELECT post.ID, post.post_modified_gmt FROM $wpdb->posts AS post INNER JOIN $wpdb->term_relationships AS term_rel ON post.ID = term_rel.object_id INNER JOIN $wpdb->term_taxonomy AS term_tax ON term_rel.term_taxonomy_id = term_tax.term_taxonomy_id INNER JOIN $wpdb->terms AS term ON term_tax.term_id = term.term_id WHERE post.post_type = %s AND term_tax.taxonomy = %s AND term.slug = %s ORDER BY post.ID DESC LIMIT %d OFFSET %d", $type, $taxonomy, $term_slug, $limit, $offset );
     31        $results = $wpdb->get_results( $query );
     32
     33        return array_map(
     34            function ( $item ) {
     35                return SyncItem::syncItem()
     36                               ->id( $item->ID )
     37                               ->modified( DateParser::fromGmtDate( $item->post_modified_gmt ) );
     38            },
     39            $results
     40        );
     41    }
     42
     43    public static function get_sync_item_for_type( string $type, int $id ): SyncItem {
     44        global $wpdb;
     45
     46        $query  = $wpdb->prepare( "SELECT post.ID, post.post_modified_gmt FROM $wpdb->posts AS post WHERE post.post_type = %s AND post.ID = %d", $type, $id );
     47        $result = $wpdb->get_row( $query );
     48
     49        return SyncItem::syncItem()
     50                       ->id( $result->ID )
     51                       ->modified( DateParser::fromGmtDate( $result->post_modified_gmt ) );
     52    }
     53
    2654    public static function get_count_for_type( string $type ): int {
    2755        global $wpdb;
     
    3159        return $wpdb->get_var( $query );
    3260    }
     61
     62    public static function get_count_for_type_and_taxonomy( string $type, string $taxonomy, string $term_slug ): int {
     63        global $wpdb;
     64
     65        $query = $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts AS post INNER JOIN $wpdb->term_relationships AS term_rel ON post.ID = term_rel.object_id INNER JOIN $wpdb->term_taxonomy AS term_tax ON term_rel.term_taxonomy_id = term_tax.term_taxonomy_id INNER JOIN $wpdb->terms AS term ON term_tax.term_id = term.term_id WHERE post.post_type = %s AND term_tax.taxonomy = %s AND term.slug = %s", $type, $taxonomy, $term_slug );
     66
     67        return $wpdb->get_var( $query );
     68    }
    3369}
  • appful-app/tags/3.1.20/includes/wp/WPPostManager.php

    r3019874 r3027388  
    77use AppfulPlugin\Domain\SyncItem;
    88use AppfulPlugin\Helper\Constants;
     9use AppfulPlugin\Helper\Logger;
    910use AppfulPlugin\Wp\Mapper\PostMapper;
    1011use AppfulPlugin\Wp\Plugins\LanguageHelper;
     
    4748    }
    4849
     50    public static function get_taxonomy_post_count( string $taxonomy, string $term_slug ): int {
     51        return WPPostDatabaseManager::get_count_for_type_and_taxonomy( "post", $taxonomy, $term_slug );
     52    }
     53
    4954    /** @return SyncItem[] */
    5055    public static function get_post_sync_items( int $offset, int $count ): array {
    5156        return WPPostDatabaseManager::get_sync_items_for_type( "post", $count, $offset );
     57    }
     58
     59    /** @return SyncItem[] */
     60    public static function get_taxonomy_post_sync_items( string $taxonomy, string $term_slug, int $offset, int $count ): array {
     61        return WPPostDatabaseManager::get_sync_items_for_type_and_taxonomy( "post", $taxonomy, $term_slug, $count, $offset );
     62    }
     63
     64    public static function get_post_sync_item( int $post_id ): SyncItem {
     65        return WPPostDatabaseManager::get_sync_item_for_type( "post", $post_id );
    5266    }
    5367
     
    8498
    8599        $args = [
    86             "posts_per_page" => 1,
    87             "post_type"      => "post",
    88             "p"              => $id,
    89             "post_status"    => self::get_allowed_post_stati()
     100            "post_type"   => "post",
     101            "p"           => $id,
     102            "post_status" => self::get_allowed_post_stati()
    90103        ];
    91104
    92105        $wp_query = new \WP_Query( $args );
    93106
    94         do_action( 'template_redirect' );
     107        self::setup_wp_call();
    95108
    96109        if ( have_posts() ) {
    97110            the_post();
    98111
    99             ob_start();
    100             wp_head();
    101             $head = ob_get_clean();
    102 
    103             ob_start();
    104             the_content();
    105             $content = ob_get_clean();
    106 
    107             ob_start();
    108             wp_footer();
    109             $footer = ob_get_clean();
    110 
    111             ob_start();
    112             body_class();
    113             $body_class = ob_get_clean();
     112            Logger::debug( "Getting head!" );
     113            $head = self::get_data_code( 'wp_head' );
     114            Logger::debug( "Getting content!" );
     115            $content = self::get_data_code( 'the_content' );
     116            Logger::debug( "Getting footer!" );
     117            $footer = self::get_data_code( 'wp_footer' );
     118            Logger::debug( "Getting body classes!" );
     119            $body_class = self::get_data_code( 'body_class' );
    114120
    115121            wp_reset_postdata();
     
    124130
    125131        return null;
     132    }
     133
     134    private static function get_data_code( callable $data_callback ): string {
     135        // The original buffer level before our handling
     136        $buffer_level_original = ob_get_level();
     137
     138        // Start our custom buffer which we want to use to get the content
     139        ob_start();
     140
     141        // Open some extra buffers in case somehow there is a
     142        // buffer closed which wasn't opened before
     143        for ( $i = 0; $i < 100; $i ++ ) {
     144            ob_start();
     145        }
     146
     147        // Amount of buffers with our custom output buffers opened
     148        $buffer_level_fill = ob_get_level();
     149
     150        call_user_func( $data_callback );
     151
     152        // This is the level after the content call, if it is different from the one before
     153        // we have buffers which weren't closed correctly or were closed too much
     154        // We can't correctly detect what happened when buffers where closed and
     155        // opened at the same time, so we just hope that in one call only one of the both happens
     156        $buffer_level_end = ob_get_level();
     157
     158        if ( $buffer_level_end > $buffer_level_fill ) {
     159            Logger::debug( "Buffers where opened too much, getting data with adjustment" );
     160
     161            // New buffers were opened inside the head
     162            // We can just proceed by closing the buffers and accumulating their content
     163
     164            // Get the information how much more buffers we have to close
     165            $opened_buffer_count = $buffer_level_end - $buffer_level_fill;
     166            Logger::debug( "Closing " . $opened_buffer_count . " extra buffers to get content" );
     167
     168            return self::accumulate_buffer_data( $buffer_level_original );
     169        } else if ( $buffer_level_end < $buffer_level_fill ) {
     170            Logger::debug( "Buffers where closed too much, getting data with adjustment" );
     171
     172            // Unknown buffers were closed inside the head
     173            // We have to reset our buffers and call the function again
     174
     175            // We don't care about the content as we will repeat the call
     176            // with the correct buffer count. After this call we
     177            // should be at the original buffer level
     178            self::accumulate_buffer_data( $buffer_level_original );
     179
     180            // Start our custom buffer which we want to use to get the content
     181            ob_start();
     182
     183            // This is the buffer level before the content call with our custom buffer
     184            $buffer_level_start = ob_get_level();
     185
     186            // Open the correct amount of buffers which are closed in the call
     187            $closed_buffer_count = $buffer_level_fill - $buffer_level_end;
     188            Logger::debug( "Opening " . $closed_buffer_count . " extra buffers to get content" );
     189            while ( $closed_buffer_count > 0 ) {
     190                ob_start();
     191                $closed_buffer_count --;
     192            }
     193
     194            call_user_func( $data_callback );
     195
     196            // Now the buffer level should match with the original one
     197            Logger::debug( "Difference between start level and level after call: " . ( ob_get_level() - $buffer_level_start ) );
     198
     199            return self::accumulate_buffer_data( $buffer_level_original );
     200        } else {
     201            Logger::debug( "Buffer level normal, getting data without adjustment" );
     202
     203            // If we don't have a malicious actor in the content call we can use the normal method
     204
     205            return self::accumulate_buffer_data( $buffer_level_original );
     206        }
     207    }
     208
     209    // Close all buffers until the target level is reached and return the accumulated data
     210    private static function accumulate_buffer_data( int $target_level ): string {
     211        $data = "";
     212        // The first condition is a safety measure in case the target level is negative
     213        while ( ob_get_level() > 0 && ob_get_level() > $target_level ) {
     214            $data .= ob_get_clean();
     215        }
     216
     217        return $data;
     218    }
     219
     220    private static function setup_wp_call() {
     221        // This should trick "smart" plugins to stop posting their spam
     222        // bc. some plugins register a shutdown function, but rightfully don't
     223        // do it when it's a cron. So let's pretend we are.
     224        if ( ! defined( 'DOING_CRON' ) ) {
     225            define( 'DOING_CRON', true );
     226        }
     227
     228        // We try to initialize a "frontend" theme so that alle hooks etc.
     229        // by plugins are setup correctly
     230        do_action( 'template_redirect' );
    126231    }
    127232
  • appful-app/tags/3.1.20/lib/vendor/composer/autoload_classmap.php

    r3019874 r3027388  
    1010    'AppfulPlugin\\Api\\Client\\BackendClient' => $baseDir . '/../includes/api/client/BackendClient.php',
    1111    'AppfulPlugin\\Api\\Client\\SelfClient' => $baseDir . '/../includes/api/client/SelfClient.php',
     12    'AppfulPlugin\\Api\\Dtos\\App\\AppAdBannerDto' => $baseDir . '/../includes/api/dtos/app/AppAdBannerDto.php',
    1213    'AppfulPlugin\\Api\\Dtos\\AttachmentDto' => $baseDir . '/../includes/api/dtos/AttachmentDto.php',
    1314    'AppfulPlugin\\Api\\Dtos\\BlogHooksDto' => $baseDir . '/../includes/api/dtos/BlogHooksDto.php',
     
    5859    'AppfulPlugin\\Api\\Handlers\\TagSyncRequestHandler' => $baseDir . '/../includes/api/handlers/TagSyncRequestHandler.php',
    5960    'AppfulPlugin\\Api\\Handlers\\UserSyncRequestHandler' => $baseDir . '/../includes/api/handlers/UserSyncRequestHandler.php',
     61    'AppfulPlugin\\Api\\Mapper\\AppAdBannerMapper' => $baseDir . '/../includes/api/mapper/AppAdBannerMapper.php',
    6062    'AppfulPlugin\\Api\\Mapper\\AttachmentMapper' => $baseDir . '/../includes/api/mapper/AttachmentMapper.php',
    6163    'AppfulPlugin\\Api\\Mapper\\BlogHooksMapper' => $baseDir . '/../includes/api/mapper/BlogHooksMapper.php',
     
    8183    'AppfulPlugin\\CustomTaxonomies\\AppfulTaxonomies' => $baseDir . '/../includes/custom_taxonomies/AppfulTaxonomies.php',
    8284    'AppfulPlugin\\CustomTaxonomies\\TaxonomyManager' => $baseDir . '/../includes/custom_taxonomies/TaxonomyManager.php',
     85    'AppfulPlugin\\Domain\\App\\AppAdBanner' => $baseDir . '/../includes/domain/app/AppAdBanner.php',
    8386    'AppfulPlugin\\Domain\\Attachment' => $baseDir . '/../includes/domain/Attachment.php',
    8487    'AppfulPlugin\\Domain\\AuthenticateRequest' => $baseDir . '/../includes/domain/AuthenticateRequest.php',
     
    107110    'AppfulPlugin\\Helper\\TemplateLoader' => $baseDir . '/../includes/helper/TemplateLoader.php',
    108111    'AppfulPlugin\\Hooks\\ActivationHook' => $baseDir . '/../includes/hooks/ActivationHook.php',
     112    'AppfulPlugin\\Hooks\\AppSettingsHook' => $baseDir . '/../includes/hooks/AppSettingsHook.php',
    109113    'AppfulPlugin\\Hooks\\AttachmentHook' => $baseDir . '/../includes/hooks/AttachmentHook.php',
    110114    'AppfulPlugin\\Hooks\\CommentHook' => $baseDir . '/../includes/hooks/CommentHook.php',
     
    120124    'AppfulPlugin\\Notice\\Notice' => $baseDir . '/../includes/notice/Notice.php',
    121125    'AppfulPlugin\\TermForm\\TermForm' => $baseDir . '/../includes/term_form/TermForm.php',
     126    'AppfulPlugin\\UseCases\\AppSettings\\AppSettingsUseCaseManager' => $baseDir . '/../includes/use_cases/app_settings/AppSettingsUseCaseManager.php',
     127    'AppfulPlugin\\UseCases\\AppSettings\\UpdateAppAdBannerUseCase' => $baseDir . '/../includes/use_cases/app_settings/UpdateAppAdBannerUseCase.php',
    122128    'AppfulPlugin\\UseCases\\AttachmentDeleteUseCase' => $baseDir . '/../includes/use_cases/AttachmentDeleteUseCase.php',
    123129    'AppfulPlugin\\UseCases\\AttachmentSaveUseCase' => $baseDir . '/../includes/use_cases/AttachmentSaveUseCase.php',
     
    144150    'AppfulPlugin\\UseCases\\GetPagesByIdUseCase' => $baseDir . '/../includes/use_cases/GetPagesByIdUseCase.php',
    145151    'AppfulPlugin\\UseCases\\GetPostContentsByIdUseCase' => $baseDir . '/../includes/use_cases/GetPostContentsByIdUseCase.php',
    146     'AppfulPlugin\\UseCases\\GetPostSyncDataUseCase' => $baseDir . '/../includes/use_cases/GetPostSyncDataUseCase.php',
    147152    'AppfulPlugin\\UseCases\\GetPostsByIdUseCase' => $baseDir . '/../includes/use_cases/GetPostsByIdUseCase.php',
    148153    'AppfulPlugin\\UseCases\\GetRoleSyncDataUseCase' => $baseDir . '/../includes/use_cases/GetRoleSyncDataUseCase.php',
     
    161166    'AppfulPlugin\\UseCases\\Page\\PullLocalPageContentUseCase' => $baseDir . '/../includes/use_cases/page/PullLocalPageContentUseCase.php',
    162167    'AppfulPlugin\\UseCases\\PostDeleteUseCase' => $baseDir . '/../includes/use_cases/PostDeleteUseCase.php',
    163     'AppfulPlugin\\UseCases\\PostSaveUseCase' => $baseDir . '/../includes/use_cases/PostSaveUseCase.php',
     168    'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemUseCase' => $baseDir . '/../includes/use_cases/post/GetPostSyncItemUseCase.php',
     169    'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemsUseCase' => $baseDir . '/../includes/use_cases/post/GetPostSyncItemsUseCase.php',
     170    'AppfulPlugin\\UseCases\\Post\\GetTaxonomyPostSyncItemsUseCase' => $baseDir . '/../includes/use_cases/post/GetTaxonomyPostSyncItemsUseCase.php',
     171    'AppfulPlugin\\UseCases\\Post\\PostUseCaseManager' => $baseDir . '/../includes/use_cases/post/PostUseCaseManager.php',
     172    'AppfulPlugin\\UseCases\\Post\\SendPostChunkSyncUseCase' => $baseDir . '/../includes/use_cases/post/SendPostChunkSyncUseCase.php',
     173    'AppfulPlugin\\UseCases\\Post\\SendPostSyncUseCase' => $baseDir . '/../includes/use_cases/post/SendPostSyncUseCase.php',
     174    'AppfulPlugin\\UseCases\\Post\\SyncPostUseCase' => $baseDir . '/../includes/use_cases/post/SyncPostUseCase.php',
     175    'AppfulPlugin\\UseCases\\Post\\SyncPostsUseCase' => $baseDir . '/../includes/use_cases/post/SyncPostsUseCase.php',
     176    'AppfulPlugin\\UseCases\\Post\\SyncTaxonomyPostsUseCase' => $baseDir . '/../includes/use_cases/post/SyncTaxonomyPostsUseCase.php',
    164177    'AppfulPlugin\\UseCases\\PullLocalPostContentUseCase' => $baseDir . '/../includes/use_cases/PullLocalPostContentUseCase.php',
    165178    'AppfulPlugin\\UseCases\\RegisterBlogUseCase' => $baseDir . '/../includes/use_cases/RegisterBlogUseCase.php',
     
    168181    'AppfulPlugin\\UseCases\\SendCommentChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendCommentChunkSyncUseCase.php',
    169182    'AppfulPlugin\\UseCases\\SendPageChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendPageChunkSyncUseCase.php',
    170     'AppfulPlugin\\UseCases\\SendPostChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendPostChunkSyncUseCase.php',
    171183    'AppfulPlugin\\UseCases\\SendRoleChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendRoleChunkSyncUseCase.php',
    172184    'AppfulPlugin\\UseCases\\SendTagChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendTagChunkSyncUseCase.php',
     
    177189    'AppfulPlugin\\UseCases\\SyncCommentsUseCase' => $baseDir . '/../includes/use_cases/SyncCommentsUseCase.php',
    178190    'AppfulPlugin\\UseCases\\SyncPagesUseCase' => $baseDir . '/../includes/use_cases/SyncPagesUseCase.php',
    179     'AppfulPlugin\\UseCases\\SyncPostsUseCase' => $baseDir . '/../includes/use_cases/SyncPostsUseCase.php',
    180191    'AppfulPlugin\\UseCases\\SyncRolesUseCase' => $baseDir . '/../includes/use_cases/SyncRolesUseCase.php',
    181192    'AppfulPlugin\\UseCases\\SyncTagsUseCase' => $baseDir . '/../includes/use_cases/SyncTagsUseCase.php',
  • appful-app/tags/3.1.20/lib/vendor/composer/autoload_psr4.php

    r2978062 r3027388  
    1818    'AppfulPlugin\\Wp\\Mapper\\' => array($baseDir . '/../includes/wp/mapper'),
    1919    'AppfulPlugin\\Wp\\' => array($baseDir . '/../includes/wp'),
     20    'AppfulPlugin\\UseCases\\Post\\' => array($baseDir . '/../includes/use_cases/post'),
    2021    'AppfulPlugin\\UseCases\\Page\\' => array($baseDir . '/../includes/use_cases/page'),
     22    'AppfulPlugin\\UseCases\\AppSettings\\' => array($baseDir . '/../includes/use_cases/app_settings'),
    2123    'AppfulPlugin\\UseCases\\' => array($baseDir . '/../includes/use_cases'),
    2224    'AppfulPlugin\\TermForm\\' => array($baseDir . '/../includes/term_form'),
     
    2628    'AppfulPlugin\\Hooks\\' => array($baseDir . '/../includes/hooks'),
    2729    'AppfulPlugin\\Helper\\' => array($baseDir . '/../includes/helper'),
     30    'AppfulPlugin\\Domain\\App\\' => array($baseDir . '/../includes/domain/app'),
    2831    'AppfulPlugin\\Domain\\' => array($baseDir . '/../includes/domain'),
    2932    'AppfulPlugin\\CustomTaxonomies\\' => array($baseDir . '/../includes/custom_taxonomies'),
     
    3336    'AppfulPlugin\\Api\\Handlers\\Page\\' => array($baseDir . '/../includes/api/handlers/page'),
    3437    'AppfulPlugin\\Api\\Handlers\\' => array($baseDir . '/../includes/api/handlers'),
     38    'AppfulPlugin\\Api\\Dtos\\App\\' => array($baseDir . '/../includes/api/dtos/app'),
    3539    'AppfulPlugin\\Api\\Dtos\\' => array($baseDir . '/../includes/api/dtos'),
    3640    'AppfulPlugin\\Api\\Client\\' => array($baseDir . '/../includes/api/client'),
  • appful-app/tags/3.1.20/lib/vendor/composer/autoload_static.php

    r3019874 r3027388  
    4242            'AppfulPlugin\\Wp\\Mapper\\' => 23,
    4343            'AppfulPlugin\\Wp\\' => 16,
     44            'AppfulPlugin\\UseCases\\Post\\' => 27,
    4445            'AppfulPlugin\\UseCases\\Page\\' => 27,
     46            'AppfulPlugin\\UseCases\\AppSettings\\' => 34,
    4547            'AppfulPlugin\\UseCases\\' => 22,
    4648            'AppfulPlugin\\TermForm\\' => 22,
     
    5052            'AppfulPlugin\\Hooks\\' => 19,
    5153            'AppfulPlugin\\Helper\\' => 20,
     54            'AppfulPlugin\\Domain\\App\\' => 24,
    5255            'AppfulPlugin\\Domain\\' => 20,
    5356            'AppfulPlugin\\CustomTaxonomies\\' => 30,
     
    5760            'AppfulPlugin\\Api\\Handlers\\Page\\' => 31,
    5861            'AppfulPlugin\\Api\\Handlers\\' => 26,
     62            'AppfulPlugin\\Api\\Dtos\\App\\' => 26,
    5963            'AppfulPlugin\\Api\\Dtos\\' => 22,
    6064            'AppfulPlugin\\Api\\Client\\' => 24,
     
    109113            0 => __DIR__ . '/../..' . '/../includes/wp',
    110114        ),
     115        'AppfulPlugin\\UseCases\\Post\\' =>
     116        array (
     117            0 => __DIR__ . '/../..' . '/../includes/use_cases/post',
     118        ),
    111119        'AppfulPlugin\\UseCases\\Page\\' =>
    112120        array (
    113121            0 => __DIR__ . '/../..' . '/../includes/use_cases/page',
    114122        ),
     123        'AppfulPlugin\\UseCases\\AppSettings\\' =>
     124        array (
     125            0 => __DIR__ . '/../..' . '/../includes/use_cases/app_settings',
     126        ),
    115127        'AppfulPlugin\\UseCases\\' =>
    116128        array (
     
    141153            0 => __DIR__ . '/../..' . '/../includes/helper',
    142154        ),
     155        'AppfulPlugin\\Domain\\App\\' =>
     156        array (
     157            0 => __DIR__ . '/../..' . '/../includes/domain/app',
     158        ),
    143159        'AppfulPlugin\\Domain\\' =>
    144160        array (
     
    168184        array (
    169185            0 => __DIR__ . '/../..' . '/../includes/api/handlers',
     186        ),
     187        'AppfulPlugin\\Api\\Dtos\\App\\' =>
     188        array (
     189            0 => __DIR__ . '/../..' . '/../includes/api/dtos/app',
    170190        ),
    171191        'AppfulPlugin\\Api\\Dtos\\' =>
     
    187207        'AppfulPlugin\\Api\\Client\\BackendClient' => __DIR__ . '/../..' . '/../includes/api/client/BackendClient.php',
    188208        'AppfulPlugin\\Api\\Client\\SelfClient' => __DIR__ . '/../..' . '/../includes/api/client/SelfClient.php',
     209        'AppfulPlugin\\Api\\Dtos\\App\\AppAdBannerDto' => __DIR__ . '/../..' . '/../includes/api/dtos/app/AppAdBannerDto.php',
    189210        'AppfulPlugin\\Api\\Dtos\\AttachmentDto' => __DIR__ . '/../..' . '/../includes/api/dtos/AttachmentDto.php',
    190211        'AppfulPlugin\\Api\\Dtos\\BlogHooksDto' => __DIR__ . '/../..' . '/../includes/api/dtos/BlogHooksDto.php',
     
    235256        'AppfulPlugin\\Api\\Handlers\\TagSyncRequestHandler' => __DIR__ . '/../..' . '/../includes/api/handlers/TagSyncRequestHandler.php',
    236257        'AppfulPlugin\\Api\\Handlers\\UserSyncRequestHandler' => __DIR__ . '/../..' . '/../includes/api/handlers/UserSyncRequestHandler.php',
     258        'AppfulPlugin\\Api\\Mapper\\AppAdBannerMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/AppAdBannerMapper.php',
    237259        'AppfulPlugin\\Api\\Mapper\\AttachmentMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/AttachmentMapper.php',
    238260        'AppfulPlugin\\Api\\Mapper\\BlogHooksMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/BlogHooksMapper.php',
     
    258280        'AppfulPlugin\\CustomTaxonomies\\AppfulTaxonomies' => __DIR__ . '/../..' . '/../includes/custom_taxonomies/AppfulTaxonomies.php',
    259281        'AppfulPlugin\\CustomTaxonomies\\TaxonomyManager' => __DIR__ . '/../..' . '/../includes/custom_taxonomies/TaxonomyManager.php',
     282        'AppfulPlugin\\Domain\\App\\AppAdBanner' => __DIR__ . '/../..' . '/../includes/domain/app/AppAdBanner.php',
    260283        'AppfulPlugin\\Domain\\Attachment' => __DIR__ . '/../..' . '/../includes/domain/Attachment.php',
    261284        'AppfulPlugin\\Domain\\AuthenticateRequest' => __DIR__ . '/../..' . '/../includes/domain/AuthenticateRequest.php',
     
    284307        'AppfulPlugin\\Helper\\TemplateLoader' => __DIR__ . '/../..' . '/../includes/helper/TemplateLoader.php',
    285308        'AppfulPlugin\\Hooks\\ActivationHook' => __DIR__ . '/../..' . '/../includes/hooks/ActivationHook.php',
     309        'AppfulPlugin\\Hooks\\AppSettingsHook' => __DIR__ . '/../..' . '/../includes/hooks/AppSettingsHook.php',
    286310        'AppfulPlugin\\Hooks\\AttachmentHook' => __DIR__ . '/../..' . '/../includes/hooks/AttachmentHook.php',
    287311        'AppfulPlugin\\Hooks\\CommentHook' => __DIR__ . '/../..' . '/../includes/hooks/CommentHook.php',
     
    297321        'AppfulPlugin\\Notice\\Notice' => __DIR__ . '/../..' . '/../includes/notice/Notice.php',
    298322        'AppfulPlugin\\TermForm\\TermForm' => __DIR__ . '/../..' . '/../includes/term_form/TermForm.php',
     323        'AppfulPlugin\\UseCases\\AppSettings\\AppSettingsUseCaseManager' => __DIR__ . '/../..' . '/../includes/use_cases/app_settings/AppSettingsUseCaseManager.php',
     324        'AppfulPlugin\\UseCases\\AppSettings\\UpdateAppAdBannerUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/app_settings/UpdateAppAdBannerUseCase.php',
    299325        'AppfulPlugin\\UseCases\\AttachmentDeleteUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/AttachmentDeleteUseCase.php',
    300326        'AppfulPlugin\\UseCases\\AttachmentSaveUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/AttachmentSaveUseCase.php',
     
    321347        'AppfulPlugin\\UseCases\\GetPagesByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPagesByIdUseCase.php',
    322348        'AppfulPlugin\\UseCases\\GetPostContentsByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostContentsByIdUseCase.php',
    323         'AppfulPlugin\\UseCases\\GetPostSyncDataUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostSyncDataUseCase.php',
    324349        'AppfulPlugin\\UseCases\\GetPostsByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostsByIdUseCase.php',
    325350        'AppfulPlugin\\UseCases\\GetRoleSyncDataUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetRoleSyncDataUseCase.php',
     
    338363        'AppfulPlugin\\UseCases\\Page\\PullLocalPageContentUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/page/PullLocalPageContentUseCase.php',
    339364        'AppfulPlugin\\UseCases\\PostDeleteUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PostDeleteUseCase.php',
    340         'AppfulPlugin\\UseCases\\PostSaveUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PostSaveUseCase.php',
     365        'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetPostSyncItemUseCase.php',
     366        'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetPostSyncItemsUseCase.php',
     367        'AppfulPlugin\\UseCases\\Post\\GetTaxonomyPostSyncItemsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetTaxonomyPostSyncItemsUseCase.php',
     368        'AppfulPlugin\\UseCases\\Post\\PostUseCaseManager' => __DIR__ . '/../..' . '/../includes/use_cases/post/PostUseCaseManager.php',
     369        'AppfulPlugin\\UseCases\\Post\\SendPostChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SendPostChunkSyncUseCase.php',
     370        'AppfulPlugin\\UseCases\\Post\\SendPostSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SendPostSyncUseCase.php',
     371        'AppfulPlugin\\UseCases\\Post\\SyncPostUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncPostUseCase.php',
     372        'AppfulPlugin\\UseCases\\Post\\SyncPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncPostsUseCase.php',
     373        'AppfulPlugin\\UseCases\\Post\\SyncTaxonomyPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncTaxonomyPostsUseCase.php',
    341374        'AppfulPlugin\\UseCases\\PullLocalPostContentUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PullLocalPostContentUseCase.php',
    342375        'AppfulPlugin\\UseCases\\RegisterBlogUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/RegisterBlogUseCase.php',
     
    345378        'AppfulPlugin\\UseCases\\SendCommentChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendCommentChunkSyncUseCase.php',
    346379        'AppfulPlugin\\UseCases\\SendPageChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendPageChunkSyncUseCase.php',
    347         'AppfulPlugin\\UseCases\\SendPostChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendPostChunkSyncUseCase.php',
    348380        'AppfulPlugin\\UseCases\\SendRoleChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendRoleChunkSyncUseCase.php',
    349381        'AppfulPlugin\\UseCases\\SendTagChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendTagChunkSyncUseCase.php',
     
    354386        'AppfulPlugin\\UseCases\\SyncCommentsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncCommentsUseCase.php',
    355387        'AppfulPlugin\\UseCases\\SyncPagesUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncPagesUseCase.php',
    356         'AppfulPlugin\\UseCases\\SyncPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncPostsUseCase.php',
    357388        'AppfulPlugin\\UseCases\\SyncRolesUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncRolesUseCase.php',
    358389        'AppfulPlugin\\UseCases\\SyncTagsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncTagsUseCase.php',
  • appful-app/tags/3.1.20/lib/vendor/composer/installed.php

    r3019874 r3027388  
    22    'root' => array(
    33        'name' => '__root__',
    4         'pretty_version' => '1.0.0+no-version-set',
    5         'version' => '1.0.0.0',
    6         'reference' => NULL,
     4        'pretty_version' => 'dev-main',
     5        'version' => 'dev-main',
     6        'reference' => '51e3f63650fb4b610edc705bf0899e6850b8d8ac',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        '__root__' => array(
    14             'pretty_version' => '1.0.0+no-version-set',
    15             'version' => '1.0.0.0',
    16             'reference' => NULL,
     14            'pretty_version' => 'dev-main',
     15            'version' => 'dev-main',
     16            'reference' => '51e3f63650fb4b610edc705bf0899e6850b8d8ac',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • appful-app/tags/3.1.20/readme.txt

    r3019874 r3027388  
    66Tested up to: 6.4
    77Requires PHP: 7.4
    8 Stable tag: 3.1.19
     8Stable tag: 3.1.20
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
  • appful-app/trunk/appful-app.php

    r3019874 r3027388  
    1212 * Plugin URI:        https://appful.io
    1313 * Description:       Appful® is the number 1 plugin for turning your WordPress Content into a native, beautiful app on iOS & Android in under 5 minutes.
    14  * Version:           3.1.19
     14 * Version:           3.1.20
    1515 * Requires at least: 5.8
    1616 * Requires PHP:      7.4
  • appful-app/trunk/appful.log

    r3019874 r3027388  
    1 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/posts/176 with request body:
    2 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    3 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    4 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/blogs with request body:
    5 [INFO    ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    6 [ERROR   ][09-01-24 01:59:08] - AppfulPlugin\Helper\Logger(error):42                                              |  Received non 200 status code (401) for request path: /v1/appfulUsers/logout with request body:
    7 [INFO    ][09-01-24 02:00:04] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    8 [INFO    ][09-01-24 02:00:04] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"c342-213-143-126-53.ngrok-free.app","site_url":"https:\/\/c342-213-143-126-53.ngrok-free.app","languages":["en"],"token":"7d8f0442acc87a05df10e386ea35faee","hooks":{"create_comment":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/c342-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    9 [ERROR   ][09-01-24 02:00:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://c342-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    10 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    11 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    12 [INFO    ][09-01-24 02:01:05] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    13 [INFO    ][09-01-24 02:01:53] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    14 [INFO    ][09-01-24 02:01:53] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"9ac2bd0c948d321d911ae762db576ffe","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    15 [ERROR   ][09-01-24 02:02:09] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    16 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    17 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    18 [INFO    ][10-01-24 07:27:31] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    19 [INFO    ][10-01-24 07:28:22] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    20 [INFO    ][10-01-24 07:28:22] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"c6768cf2a852b5e881277c4d7defb61f","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    21 [ERROR   ][10-01-24 07:28:35] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    22 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    23 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    24 [INFO    ][10-01-24 07:28:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    25 [INFO    ][10-01-24 07:29:01] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    26 [INFO    ][10-01-24 07:29:01] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"aab52646f0f1b7b4e8bee17ff15c4d58","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    27 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    28 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    29 [INFO    ][10-01-24 09:59:54] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    30 [INFO    ][10-01-24 10:00:01] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    31 [INFO    ][10-01-24 10:00:01] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"ebc5a174e9f47b2f447c97228740b3d1","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    32 [ERROR   ][10-01-24 10:00:15] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    33 [INFO    ][10-01-24 10:04:40] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    34 [INFO    ][10-01-24 10:04:40] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    35 [INFO    ][10-01-24 10:04:41] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    36 [INFO    ][10-01-24 10:05:14] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    37 [INFO    ][10-01-24 10:05:14] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"c6fbb09b1d526a3113a31387b807ca54","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    38 [ERROR   ][10-01-24 10:05:15] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    39 [INFO    ][10-01-24 10:28:34] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    40 [INFO    ][10-01-24 10:28:34] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    41 [INFO    ][10-01-24 10:28:35] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    42 [INFO    ][10-01-24 10:30:09] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    43 [INFO    ][10-01-24 10:30:09] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"5a16f8a4bc5cc628d511c687edcd24d8","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    44 [ERROR   ][10-01-24 10:30:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    45 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    46 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    47 [INFO    ][10-01-24 10:36:44] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    48 [INFO    ][10-01-24 10:37:08] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    49 [INFO    ][10-01-24 10:37:08] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"6d72-213-143-126-53.ngrok-free.app","site_url":"https:\/\/6d72-213-143-126-53.ngrok-free.app","languages":["en"],"token":"2346cb2c69dcae0ae05d9914d3dd9a79","hooks":{"create_comment":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/6d72-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    50 [ERROR   ][10-01-24 10:37:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://6d72-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    51 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    52 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    53 [INFO    ][10-01-24 10:39:10] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    54 [INFO    ][10-01-24 10:40:36] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    55 [INFO    ][10-01-24 10:40:36] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"d99d85d9fc674377ca25601c3dbd64dd","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35}}
    56 [ERROR   ][10-01-24 10:40:49] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    57 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    58 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    59 [INFO    ][10-01-24 11:38:07] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    60 [INFO    ][10-01-24 11:39:08] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    61 [INFO    ][10-01-24 11:39:08] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"8e89b0c97e63e21d4a3aff3ec880d5ce","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    62 [ERROR   ][10-01-24 11:39:23] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
    63 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    64 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    65 [INFO    ][10-01-24 11:41:04] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    66 [INFO    ][10-01-24 11:58:59] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    67 [INFO    ][10-01-24 11:58:59] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"0368a3fd62460a049cfd19b1213d5b19","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    68 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):58                                               |  Logging out user!
    69 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):18                                               |  Unregistering blog!
    70 [INFO    ][10-01-24 12:00:53] - AppfulPlugin\Helper\Logger(info):18                                               |  Logout user!
    71 [INFO    ][10-01-24 12:01:00] - AppfulPlugin\Helper\Logger(info):37                                               |  Logging in user!
    72 [INFO    ][10-01-24 12:01:00] - AppfulPlugin\Helper\Logger(info):24                                               |  Registering blog with data: {"hostname":"d976-213-143-126-53.ngrok-free.app","site_url":"https:\/\/d976-213-143-126-53.ngrok-free.app","languages":["en"],"token":"36efbc47619accec5aae459d10429cdd","hooks":{"create_comment":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/create-comment","authenticate_user":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/authenticate-user","get_page_content":"https:\/\/d976-213-143-126-53.ngrok-free.app\/appful\/api\/get-page-content-hook"},"version":"3.1.19","stats":{"attachment_count":1,"post_count":35,"user_count":6,"page_count":12,"comment_count":10}}
    73 [ERROR   ][10-01-24 12:01:14] - AppfulPlugin\Helper\Logger(error):43                                              |  Error happened when trying to execute backend request: Client error: `GET https://d976-213-143-126-53.ngrok-free.app/appful/api/get-post-content-local?id=182` resulted in a `404 Not Found` response
  • appful-app/trunk/includes/api/Api.php

    r3018629 r3027388  
    6969
    7070    private function respond( PluginResponse $response ) {
    71         ob_get_clean();
     71        ob_end_clean();
    7272        if ( $response->get_encoded() ) {
    7373            header( "Content-Type: application/json" );
  • appful-app/trunk/includes/api/ReqHandler.php

    r3018629 r3027388  
    4747            new LogRequestHandler( $use_case_manager->get_logs_use_case() ),
    4848            new InfoRequestHandler( $use_case_manager->get_blog_info_use_case() ),
    49             new PostSyncRequestHandler( $use_case_manager->sync_posts_use_case() ),
     49            new PostSyncRequestHandler( $use_case_manager->posts()->get_sync_posts_use_case() ),
    5050            new GetPostsRequestHandler( $use_case_manager->get_posts_by_id_use_case() ),
    5151            new CategorySyncRequestHandler( $use_case_manager->sync_categories_use_case() ),
  • appful-app/trunk/includes/api/handlers/PostSyncRequestHandler.php

    r3018629 r3027388  
    77use AppfulPlugin\Api\Responses\PluginResponse;
    88use AppfulPlugin\Helper\Logger;
    9 use AppfulPlugin\UseCases\SyncPostsUseCase;
     9use AppfulPlugin\UseCases\Post\SyncPostsUseCase;
    1010
    1111class PostSyncRequestHandler implements RequestHandler {
  • appful-app/trunk/includes/api/mapper/BlogInfoMapper.php

    r3019874 r3027388  
    2626            $blog_info->get_token(),
    2727            $hooks,
    28             "3.1.19",
     28            "3.1.20",
    2929            $stats
    3030        );
  • appful-app/trunk/includes/domain/PostContent.php

    r2907312 r3027388  
    2121            ->head( $head )
    2222            ->footer( $footer )
    23             ->content( $content );
     23            ->content( $content )
     24            ->body_class( $body_class );
    2425    }
    2526
  • appful-app/trunk/includes/helper/Constants.php

    r2971184 r3027388  
    3030    public static string $USER_PATH = "/users";
    3131    public static string $POST_PATH = "/posts";
     32    public static string $APP_SETTINGS_PATH = "/app/settings";
    3233    public static string $PAGE_PATH = "/pages";
    3334    public static string $COMMENT_PATH = "/comments";
  • appful-app/trunk/includes/hooks/Hooks.php

    r2971184 r3027388  
    1818    private UserHook $user_hook;
    1919    private InitHook $init_hook;
     20    private AppSettingsHook $app_settings_hook;
    2021
    2122    private UseCaseManager $use_case_manager;
     
    3233        $this->user_hook              = new UserHook( $use_case_manager );
    3334        $this->init_hook              = new InitHook( $appful_rewrites );
     35        $this->app_settings_hook      = new AppSettingsHook( $use_case_manager );
    3436    }
    3537
     
    4648            $this->attachment_hook->init();
    4749            $this->user_hook->init();
     50            $this->app_settings_hook->init();
    4851        }
    4952    }
  • appful-app/trunk/includes/hooks/PostHook.php

    r3018629 r3027388  
    55use AppfulPlugin\Helper\Logger;
    66use AppfulPlugin\UseCases\UseCaseManager;
    7 use AppfulPlugin\Wp\Mapper\PostMapper;
    87use WP_Post;
    98
     
    2928            function ( int $post_id, WP_Post $post ) {
    3029                $this->on_delete_post( $post_id, $post );
     30            },
     31            10,
     32            2
     33        );
     34
     35        add_action(
     36            "appful_app_update_post",
     37            function ( int $post_id ) {
     38                $this->on_appful_post_update( $post_id );
     39            },
     40            10,
     41            1
     42        );
     43
     44        add_action(
     45            "appful_app_update_taxonomy_posts",
     46            function ( string $taxonomy, string $term_slug ) {
     47                $this->on_appful_taxonomy_posts_update( $taxonomy, $term_slug );
    3148            },
    3249            10,
     
    6077        Logger::debug( "Post with id " . $post->ID . " inserted with status " . $post->post_status . "!" );
    6178
    62         $domain_post = PostMapper::to_sync_item( $post, $post->post_status != $post_before->post_status );
    63         $this->use_case_manager->post_save_use_case()->invoke( $domain_post );
     79        $old_post_status = "";
     80        if ( $post_before ) {
     81            $old_post_status = $post_before->post_status;
     82        }
     83
     84        $this->use_case_manager->posts()->get_sync_post_use_case()->invoke( $post->ID, $post->post_status != $old_post_status );
     85    }
     86
     87    private function on_appful_post_update( int $post_id ) {
     88        Logger::debug( "Manual appful post update for id " . $post_id );
     89
     90        $this->use_case_manager->posts()->get_sync_post_use_case()->invoke( $post_id, true );
     91    }
     92
     93    private function on_appful_taxonomy_posts_update( string $taxonomy, string $term_slug ) {
     94        Logger::debug( "Manual appful taxonomy posts update for taxonomy " . $taxonomy . " and term " . $term_slug );
     95
     96        $this->use_case_manager->posts()->get_sync_taxonomy_posts_use_case()->invoke( $taxonomy, $term_slug );
    6497    }
    6598}
  • appful-app/trunk/includes/use_cases/GetLocalPostContentByIdUseCase.php

    r2920184 r3027388  
    88class GetLocalPostContentByIdUseCase {
    99    public function invoke( int $id ): ?PostContent {
    10         return WPPostManager::get_post_content_by_id( $id );
     10        $this->configure_active_filter( true );
     11        $post_content = WPPostManager::get_post_content_by_id( $id );
     12        $this->configure_active_filter( false );
     13
     14        return $post_content;
     15    }
     16
     17    private function configure_active_filter( bool $on ) {
     18        add_filter(
     19            "appful_app_is_post_content_call",
     20            function ( bool $is_active ) use ( $on ) {
     21                return $on;
     22            },
     23            10,
     24            1
     25        );
    1126    }
    1227}
  • appful-app/trunk/includes/use_cases/SyncAllUseCase.php

    r2971184 r3027388  
    22
    33namespace AppfulPlugin\UseCases;
     4
     5use AppfulPlugin\UseCases\Post\SyncPostsUseCase;
    46
    57class SyncAllUseCase {
  • appful-app/trunk/includes/use_cases/UseCaseManager.php

    r2971184 r3027388  
    55use AppfulPlugin\Api\Client\BackendClient;
    66use AppfulPlugin\Api\Client\SelfClient;
     7use AppfulPlugin\UseCases\AppSettings\AppSettingsUseCaseManager;
    78use AppfulPlugin\UseCases\Page\PageUseCaseManager;
     9use AppfulPlugin\UseCases\Post\PostUseCaseManager;
    810
    911class UseCaseManager {
     
    1517    private DeleteSessionUseCase $delete_session_use_case;
    1618    private RegisterBlogUseCase $register_blog_use_case;
    17     private PostSaveUseCase $post_save_use_case;
    1819    private CategorySaveUseCase $category_save_use_case;
    1920    private CategoryDeleteUseCase $category_delete_use_case;
    2021    private TagDeleteUseCase $tag_delete_use_case;
    2122    private TagSaveUseCase $tag_save_use_case;
    22     private GetPostSyncDataUseCase $get_post_sync_data_use_case;
    23     private SendPostChunkSyncUseCase $send_post_chunk_sync_use_case;
    2423    private GetPostsByIdUseCase $get_posts_by_id_use_case;
    2524    private GetTagSyncDataUseCase $get_tag_sync_data_use_case;
     
    3736    private CommentSaveUseCase $comment_save_use_case;
    3837    private LogoutUserUseCase $logout_user_use_case;
    39     private SyncPostsUseCase $sync_posts_use_case;
    4038    private SyncTagsUseCase $sync_tags_use_case;
    4139    private GetCommentSyncDataUseCase $get_comment_sync_data_use_case;
     
    7068    private SyncPagesUseCase $sync_pages_use_case;
    7169    private PageUseCaseManager $page_use_case_manager;
     70    private PostUseCaseManager $post_use_case_manager;
     71    private AppSettingsUseCaseManager $app_settings_use_case_manager;
    7272
    7373    public function __construct( BackendClient $backend_client, SelfClient $self_client ) {
     
    7979        $this->delete_session_use_case                 = new DeleteSessionUseCase( $backend_client );
    8080        $this->register_blog_use_case                  = new RegisterBlogUseCase( $backend_client );
    81         $this->post_save_use_case                      = new PostSaveUseCase( $backend_client );
    8281        $this->category_save_use_case                  = new CategorySaveUseCase( $backend_client );
    8382        $this->category_delete_use_case                = new CategoryDeleteUseCase( $backend_client );
    8483        $this->tag_delete_use_case                     = new TagDeleteUseCase( $backend_client );
    8584        $this->tag_save_use_case                       = new TagSaveUseCase( $backend_client );
    86         $this->get_post_sync_data_use_case             = new GetPostSyncDataUseCase();
    87         $this->send_post_chunk_sync_use_case           = new SendPostChunkSyncUseCase( $backend_client );
    8885        $this->get_posts_by_id_use_case                = new GetPostsByIdUseCase();
    8986        $this->get_tag_sync_data_use_case              = new GetTagSyncDataUseCase();
     
    106103        $this->sync_users_use_case                     = new SyncUsersUseCase( $this->get_user_sync_data_use_case, $this->send_user_chunk_sync_use_case );
    107104        $this->sync_comments_use_case                  = new SyncCommentsUseCase( $this->get_comment_sync_data_use_case, $this->send_comment_chunk_sync_use_case );
    108         $this->sync_posts_use_case                     = new SyncPostsUseCase( $this->get_post_sync_data_use_case, $this->send_post_chunk_sync_use_case );
    109105        $this->sync_tags_use_case                      = new SyncTagsUseCase( $this->get_tag_sync_data_use_case, $this->send_tag_chunk_sync_use_case );
    110106        $this->sync_categories_use_case                = new SyncCategoriesUseCase( $this->get_category_sync_data_use_case, $this->send_category_chunk_sync_use_case );
     
    132128        $this->send_page_chunk_sync_use_case           = new SendPageChunkSyncUseCase( $backend_client );
    133129        $this->sync_pages_use_case                     = new SyncPagesUseCase( $this->get_page_sync_data_use_case, $this->send_page_chunk_sync_use_case );
    134         $this->sync_all_use_case                       = new SyncAllUseCase( $this->sync_posts_use_case, $this->sync_tags_use_case, $this->sync_categories_use_case, $this->sync_attachments_use_case, $this->sync_comments_use_case, $this->sync_users_use_case, $this->sync_roles_use_case, $this->sync_pages_use_case );
    135130        $this->page_use_case_manager                   = new PageUseCaseManager( $self_client );
     131        $this->post_use_case_manager                   = new PostUseCaseManager( $backend_client );
     132        $this->app_settings_use_case_manager           = new AppSettingsUseCaseManager( $backend_client );
     133        $this->sync_all_use_case                       = new SyncAllUseCase( $this->post_use_case_manager->get_sync_posts_use_case(), $this->sync_tags_use_case, $this->sync_categories_use_case, $this->sync_attachments_use_case, $this->sync_comments_use_case, $this->sync_users_use_case, $this->sync_roles_use_case, $this->sync_pages_use_case );
    136134    }
    137135
     
    164162    }
    165163
    166     public function post_save_use_case(): PostSaveUseCase {
    167         return $this->post_save_use_case;
    168     }
    169 
    170164    public function category_save_use_case(): CategorySaveUseCase {
    171165        return $this->category_save_use_case;
     
    184178    }
    185179
    186     public function get_post_sync_data_use_case(): GetPostSyncDataUseCase {
    187         return $this->get_post_sync_data_use_case;
    188     }
    189 
    190     public function send_post_chunk_sync_use_case(): SendPostChunkSyncUseCase {
    191         return $this->send_post_chunk_sync_use_case;
    192     }
    193 
    194180    public function get_posts_by_id_use_case(): GetPostsByIdUseCase {
    195181        return $this->get_posts_by_id_use_case;
     
    256242    }
    257243
    258     public function sync_posts_use_case(): SyncPostsUseCase {
    259         return $this->sync_posts_use_case;
    260     }
    261 
    262244    public function sync_tags_use_case(): SyncTagsUseCase {
    263245        return $this->sync_tags_use_case;
     
    383365        return $this->page_use_case_manager;
    384366    }
     367
     368    public function posts(): PostUseCaseManager {
     369        return $this->post_use_case_manager;
     370    }
     371
     372    public function app_settings(): AppSettingsUseCaseManager {
     373        return $this->app_settings_use_case_manager;
     374    }
    385375}
  • appful-app/trunk/includes/wp/WPPostDatabaseManager.php

    r3019874 r3027388  
    2424    }
    2525
     26    /** @return SyncItem[] */
     27    public static function get_sync_items_for_type_and_taxonomy( string $type, string $taxonomy, string $term_slug, int $limit, int $offset ): array {
     28        global $wpdb;
     29
     30        $query   = $wpdb->prepare( "SELECT post.ID, post.post_modified_gmt FROM $wpdb->posts AS post INNER JOIN $wpdb->term_relationships AS term_rel ON post.ID = term_rel.object_id INNER JOIN $wpdb->term_taxonomy AS term_tax ON term_rel.term_taxonomy_id = term_tax.term_taxonomy_id INNER JOIN $wpdb->terms AS term ON term_tax.term_id = term.term_id WHERE post.post_type = %s AND term_tax.taxonomy = %s AND term.slug = %s ORDER BY post.ID DESC LIMIT %d OFFSET %d", $type, $taxonomy, $term_slug, $limit, $offset );
     31        $results = $wpdb->get_results( $query );
     32
     33        return array_map(
     34            function ( $item ) {
     35                return SyncItem::syncItem()
     36                               ->id( $item->ID )
     37                               ->modified( DateParser::fromGmtDate( $item->post_modified_gmt ) );
     38            },
     39            $results
     40        );
     41    }
     42
     43    public static function get_sync_item_for_type( string $type, int $id ): SyncItem {
     44        global $wpdb;
     45
     46        $query  = $wpdb->prepare( "SELECT post.ID, post.post_modified_gmt FROM $wpdb->posts AS post WHERE post.post_type = %s AND post.ID = %d", $type, $id );
     47        $result = $wpdb->get_row( $query );
     48
     49        return SyncItem::syncItem()
     50                       ->id( $result->ID )
     51                       ->modified( DateParser::fromGmtDate( $result->post_modified_gmt ) );
     52    }
     53
    2654    public static function get_count_for_type( string $type ): int {
    2755        global $wpdb;
     
    3159        return $wpdb->get_var( $query );
    3260    }
     61
     62    public static function get_count_for_type_and_taxonomy( string $type, string $taxonomy, string $term_slug ): int {
     63        global $wpdb;
     64
     65        $query = $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts AS post INNER JOIN $wpdb->term_relationships AS term_rel ON post.ID = term_rel.object_id INNER JOIN $wpdb->term_taxonomy AS term_tax ON term_rel.term_taxonomy_id = term_tax.term_taxonomy_id INNER JOIN $wpdb->terms AS term ON term_tax.term_id = term.term_id WHERE post.post_type = %s AND term_tax.taxonomy = %s AND term.slug = %s", $type, $taxonomy, $term_slug );
     66
     67        return $wpdb->get_var( $query );
     68    }
    3369}
  • appful-app/trunk/includes/wp/WPPostManager.php

    r3019874 r3027388  
    77use AppfulPlugin\Domain\SyncItem;
    88use AppfulPlugin\Helper\Constants;
     9use AppfulPlugin\Helper\Logger;
    910use AppfulPlugin\Wp\Mapper\PostMapper;
    1011use AppfulPlugin\Wp\Plugins\LanguageHelper;
     
    4748    }
    4849
     50    public static function get_taxonomy_post_count( string $taxonomy, string $term_slug ): int {
     51        return WPPostDatabaseManager::get_count_for_type_and_taxonomy( "post", $taxonomy, $term_slug );
     52    }
     53
    4954    /** @return SyncItem[] */
    5055    public static function get_post_sync_items( int $offset, int $count ): array {
    5156        return WPPostDatabaseManager::get_sync_items_for_type( "post", $count, $offset );
     57    }
     58
     59    /** @return SyncItem[] */
     60    public static function get_taxonomy_post_sync_items( string $taxonomy, string $term_slug, int $offset, int $count ): array {
     61        return WPPostDatabaseManager::get_sync_items_for_type_and_taxonomy( "post", $taxonomy, $term_slug, $count, $offset );
     62    }
     63
     64    public static function get_post_sync_item( int $post_id ): SyncItem {
     65        return WPPostDatabaseManager::get_sync_item_for_type( "post", $post_id );
    5266    }
    5367
     
    8498
    8599        $args = [
    86             "posts_per_page" => 1,
    87             "post_type"      => "post",
    88             "p"              => $id,
    89             "post_status"    => self::get_allowed_post_stati()
     100            "post_type"   => "post",
     101            "p"           => $id,
     102            "post_status" => self::get_allowed_post_stati()
    90103        ];
    91104
    92105        $wp_query = new \WP_Query( $args );
    93106
    94         do_action( 'template_redirect' );
     107        self::setup_wp_call();
    95108
    96109        if ( have_posts() ) {
    97110            the_post();
    98111
    99             ob_start();
    100             wp_head();
    101             $head = ob_get_clean();
    102 
    103             ob_start();
    104             the_content();
    105             $content = ob_get_clean();
    106 
    107             ob_start();
    108             wp_footer();
    109             $footer = ob_get_clean();
    110 
    111             ob_start();
    112             body_class();
    113             $body_class = ob_get_clean();
     112            Logger::debug( "Getting head!" );
     113            $head = self::get_data_code( 'wp_head' );
     114            Logger::debug( "Getting content!" );
     115            $content = self::get_data_code( 'the_content' );
     116            Logger::debug( "Getting footer!" );
     117            $footer = self::get_data_code( 'wp_footer' );
     118            Logger::debug( "Getting body classes!" );
     119            $body_class = self::get_data_code( 'body_class' );
    114120
    115121            wp_reset_postdata();
     
    124130
    125131        return null;
     132    }
     133
     134    private static function get_data_code( callable $data_callback ): string {
     135        // The original buffer level before our handling
     136        $buffer_level_original = ob_get_level();
     137
     138        // Start our custom buffer which we want to use to get the content
     139        ob_start();
     140
     141        // Open some extra buffers in case somehow there is a
     142        // buffer closed which wasn't opened before
     143        for ( $i = 0; $i < 100; $i ++ ) {
     144            ob_start();
     145        }
     146
     147        // Amount of buffers with our custom output buffers opened
     148        $buffer_level_fill = ob_get_level();
     149
     150        call_user_func( $data_callback );
     151
     152        // This is the level after the content call, if it is different from the one before
     153        // we have buffers which weren't closed correctly or were closed too much
     154        // We can't correctly detect what happened when buffers where closed and
     155        // opened at the same time, so we just hope that in one call only one of the both happens
     156        $buffer_level_end = ob_get_level();
     157
     158        if ( $buffer_level_end > $buffer_level_fill ) {
     159            Logger::debug( "Buffers where opened too much, getting data with adjustment" );
     160
     161            // New buffers were opened inside the head
     162            // We can just proceed by closing the buffers and accumulating their content
     163
     164            // Get the information how much more buffers we have to close
     165            $opened_buffer_count = $buffer_level_end - $buffer_level_fill;
     166            Logger::debug( "Closing " . $opened_buffer_count . " extra buffers to get content" );
     167
     168            return self::accumulate_buffer_data( $buffer_level_original );
     169        } else if ( $buffer_level_end < $buffer_level_fill ) {
     170            Logger::debug( "Buffers where closed too much, getting data with adjustment" );
     171
     172            // Unknown buffers were closed inside the head
     173            // We have to reset our buffers and call the function again
     174
     175            // We don't care about the content as we will repeat the call
     176            // with the correct buffer count. After this call we
     177            // should be at the original buffer level
     178            self::accumulate_buffer_data( $buffer_level_original );
     179
     180            // Start our custom buffer which we want to use to get the content
     181            ob_start();
     182
     183            // This is the buffer level before the content call with our custom buffer
     184            $buffer_level_start = ob_get_level();
     185
     186            // Open the correct amount of buffers which are closed in the call
     187            $closed_buffer_count = $buffer_level_fill - $buffer_level_end;
     188            Logger::debug( "Opening " . $closed_buffer_count . " extra buffers to get content" );
     189            while ( $closed_buffer_count > 0 ) {
     190                ob_start();
     191                $closed_buffer_count --;
     192            }
     193
     194            call_user_func( $data_callback );
     195
     196            // Now the buffer level should match with the original one
     197            Logger::debug( "Difference between start level and level after call: " . ( ob_get_level() - $buffer_level_start ) );
     198
     199            return self::accumulate_buffer_data( $buffer_level_original );
     200        } else {
     201            Logger::debug( "Buffer level normal, getting data without adjustment" );
     202
     203            // If we don't have a malicious actor in the content call we can use the normal method
     204
     205            return self::accumulate_buffer_data( $buffer_level_original );
     206        }
     207    }
     208
     209    // Close all buffers until the target level is reached and return the accumulated data
     210    private static function accumulate_buffer_data( int $target_level ): string {
     211        $data = "";
     212        // The first condition is a safety measure in case the target level is negative
     213        while ( ob_get_level() > 0 && ob_get_level() > $target_level ) {
     214            $data .= ob_get_clean();
     215        }
     216
     217        return $data;
     218    }
     219
     220    private static function setup_wp_call() {
     221        // This should trick "smart" plugins to stop posting their spam
     222        // bc. some plugins register a shutdown function, but rightfully don't
     223        // do it when it's a cron. So let's pretend we are.
     224        if ( ! defined( 'DOING_CRON' ) ) {
     225            define( 'DOING_CRON', true );
     226        }
     227
     228        // We try to initialize a "frontend" theme so that alle hooks etc.
     229        // by plugins are setup correctly
     230        do_action( 'template_redirect' );
    126231    }
    127232
  • appful-app/trunk/lib/vendor/composer/autoload_classmap.php

    r3019874 r3027388  
    1010    'AppfulPlugin\\Api\\Client\\BackendClient' => $baseDir . '/../includes/api/client/BackendClient.php',
    1111    'AppfulPlugin\\Api\\Client\\SelfClient' => $baseDir . '/../includes/api/client/SelfClient.php',
     12    'AppfulPlugin\\Api\\Dtos\\App\\AppAdBannerDto' => $baseDir . '/../includes/api/dtos/app/AppAdBannerDto.php',
    1213    'AppfulPlugin\\Api\\Dtos\\AttachmentDto' => $baseDir . '/../includes/api/dtos/AttachmentDto.php',
    1314    'AppfulPlugin\\Api\\Dtos\\BlogHooksDto' => $baseDir . '/../includes/api/dtos/BlogHooksDto.php',
     
    5859    'AppfulPlugin\\Api\\Handlers\\TagSyncRequestHandler' => $baseDir . '/../includes/api/handlers/TagSyncRequestHandler.php',
    5960    'AppfulPlugin\\Api\\Handlers\\UserSyncRequestHandler' => $baseDir . '/../includes/api/handlers/UserSyncRequestHandler.php',
     61    'AppfulPlugin\\Api\\Mapper\\AppAdBannerMapper' => $baseDir . '/../includes/api/mapper/AppAdBannerMapper.php',
    6062    'AppfulPlugin\\Api\\Mapper\\AttachmentMapper' => $baseDir . '/../includes/api/mapper/AttachmentMapper.php',
    6163    'AppfulPlugin\\Api\\Mapper\\BlogHooksMapper' => $baseDir . '/../includes/api/mapper/BlogHooksMapper.php',
     
    8183    'AppfulPlugin\\CustomTaxonomies\\AppfulTaxonomies' => $baseDir . '/../includes/custom_taxonomies/AppfulTaxonomies.php',
    8284    'AppfulPlugin\\CustomTaxonomies\\TaxonomyManager' => $baseDir . '/../includes/custom_taxonomies/TaxonomyManager.php',
     85    'AppfulPlugin\\Domain\\App\\AppAdBanner' => $baseDir . '/../includes/domain/app/AppAdBanner.php',
    8386    'AppfulPlugin\\Domain\\Attachment' => $baseDir . '/../includes/domain/Attachment.php',
    8487    'AppfulPlugin\\Domain\\AuthenticateRequest' => $baseDir . '/../includes/domain/AuthenticateRequest.php',
     
    107110    'AppfulPlugin\\Helper\\TemplateLoader' => $baseDir . '/../includes/helper/TemplateLoader.php',
    108111    'AppfulPlugin\\Hooks\\ActivationHook' => $baseDir . '/../includes/hooks/ActivationHook.php',
     112    'AppfulPlugin\\Hooks\\AppSettingsHook' => $baseDir . '/../includes/hooks/AppSettingsHook.php',
    109113    'AppfulPlugin\\Hooks\\AttachmentHook' => $baseDir . '/../includes/hooks/AttachmentHook.php',
    110114    'AppfulPlugin\\Hooks\\CommentHook' => $baseDir . '/../includes/hooks/CommentHook.php',
     
    120124    'AppfulPlugin\\Notice\\Notice' => $baseDir . '/../includes/notice/Notice.php',
    121125    'AppfulPlugin\\TermForm\\TermForm' => $baseDir . '/../includes/term_form/TermForm.php',
     126    'AppfulPlugin\\UseCases\\AppSettings\\AppSettingsUseCaseManager' => $baseDir . '/../includes/use_cases/app_settings/AppSettingsUseCaseManager.php',
     127    'AppfulPlugin\\UseCases\\AppSettings\\UpdateAppAdBannerUseCase' => $baseDir . '/../includes/use_cases/app_settings/UpdateAppAdBannerUseCase.php',
    122128    'AppfulPlugin\\UseCases\\AttachmentDeleteUseCase' => $baseDir . '/../includes/use_cases/AttachmentDeleteUseCase.php',
    123129    'AppfulPlugin\\UseCases\\AttachmentSaveUseCase' => $baseDir . '/../includes/use_cases/AttachmentSaveUseCase.php',
     
    144150    'AppfulPlugin\\UseCases\\GetPagesByIdUseCase' => $baseDir . '/../includes/use_cases/GetPagesByIdUseCase.php',
    145151    'AppfulPlugin\\UseCases\\GetPostContentsByIdUseCase' => $baseDir . '/../includes/use_cases/GetPostContentsByIdUseCase.php',
    146     'AppfulPlugin\\UseCases\\GetPostSyncDataUseCase' => $baseDir . '/../includes/use_cases/GetPostSyncDataUseCase.php',
    147152    'AppfulPlugin\\UseCases\\GetPostsByIdUseCase' => $baseDir . '/../includes/use_cases/GetPostsByIdUseCase.php',
    148153    'AppfulPlugin\\UseCases\\GetRoleSyncDataUseCase' => $baseDir . '/../includes/use_cases/GetRoleSyncDataUseCase.php',
     
    161166    'AppfulPlugin\\UseCases\\Page\\PullLocalPageContentUseCase' => $baseDir . '/../includes/use_cases/page/PullLocalPageContentUseCase.php',
    162167    'AppfulPlugin\\UseCases\\PostDeleteUseCase' => $baseDir . '/../includes/use_cases/PostDeleteUseCase.php',
    163     'AppfulPlugin\\UseCases\\PostSaveUseCase' => $baseDir . '/../includes/use_cases/PostSaveUseCase.php',
     168    'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemUseCase' => $baseDir . '/../includes/use_cases/post/GetPostSyncItemUseCase.php',
     169    'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemsUseCase' => $baseDir . '/../includes/use_cases/post/GetPostSyncItemsUseCase.php',
     170    'AppfulPlugin\\UseCases\\Post\\GetTaxonomyPostSyncItemsUseCase' => $baseDir . '/../includes/use_cases/post/GetTaxonomyPostSyncItemsUseCase.php',
     171    'AppfulPlugin\\UseCases\\Post\\PostUseCaseManager' => $baseDir . '/../includes/use_cases/post/PostUseCaseManager.php',
     172    'AppfulPlugin\\UseCases\\Post\\SendPostChunkSyncUseCase' => $baseDir . '/../includes/use_cases/post/SendPostChunkSyncUseCase.php',
     173    'AppfulPlugin\\UseCases\\Post\\SendPostSyncUseCase' => $baseDir . '/../includes/use_cases/post/SendPostSyncUseCase.php',
     174    'AppfulPlugin\\UseCases\\Post\\SyncPostUseCase' => $baseDir . '/../includes/use_cases/post/SyncPostUseCase.php',
     175    'AppfulPlugin\\UseCases\\Post\\SyncPostsUseCase' => $baseDir . '/../includes/use_cases/post/SyncPostsUseCase.php',
     176    'AppfulPlugin\\UseCases\\Post\\SyncTaxonomyPostsUseCase' => $baseDir . '/../includes/use_cases/post/SyncTaxonomyPostsUseCase.php',
    164177    'AppfulPlugin\\UseCases\\PullLocalPostContentUseCase' => $baseDir . '/../includes/use_cases/PullLocalPostContentUseCase.php',
    165178    'AppfulPlugin\\UseCases\\RegisterBlogUseCase' => $baseDir . '/../includes/use_cases/RegisterBlogUseCase.php',
     
    168181    'AppfulPlugin\\UseCases\\SendCommentChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendCommentChunkSyncUseCase.php',
    169182    'AppfulPlugin\\UseCases\\SendPageChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendPageChunkSyncUseCase.php',
    170     'AppfulPlugin\\UseCases\\SendPostChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendPostChunkSyncUseCase.php',
    171183    'AppfulPlugin\\UseCases\\SendRoleChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendRoleChunkSyncUseCase.php',
    172184    'AppfulPlugin\\UseCases\\SendTagChunkSyncUseCase' => $baseDir . '/../includes/use_cases/SendTagChunkSyncUseCase.php',
     
    177189    'AppfulPlugin\\UseCases\\SyncCommentsUseCase' => $baseDir . '/../includes/use_cases/SyncCommentsUseCase.php',
    178190    'AppfulPlugin\\UseCases\\SyncPagesUseCase' => $baseDir . '/../includes/use_cases/SyncPagesUseCase.php',
    179     'AppfulPlugin\\UseCases\\SyncPostsUseCase' => $baseDir . '/../includes/use_cases/SyncPostsUseCase.php',
    180191    'AppfulPlugin\\UseCases\\SyncRolesUseCase' => $baseDir . '/../includes/use_cases/SyncRolesUseCase.php',
    181192    'AppfulPlugin\\UseCases\\SyncTagsUseCase' => $baseDir . '/../includes/use_cases/SyncTagsUseCase.php',
  • appful-app/trunk/lib/vendor/composer/autoload_psr4.php

    r2978062 r3027388  
    1818    'AppfulPlugin\\Wp\\Mapper\\' => array($baseDir . '/../includes/wp/mapper'),
    1919    'AppfulPlugin\\Wp\\' => array($baseDir . '/../includes/wp'),
     20    'AppfulPlugin\\UseCases\\Post\\' => array($baseDir . '/../includes/use_cases/post'),
    2021    'AppfulPlugin\\UseCases\\Page\\' => array($baseDir . '/../includes/use_cases/page'),
     22    'AppfulPlugin\\UseCases\\AppSettings\\' => array($baseDir . '/../includes/use_cases/app_settings'),
    2123    'AppfulPlugin\\UseCases\\' => array($baseDir . '/../includes/use_cases'),
    2224    'AppfulPlugin\\TermForm\\' => array($baseDir . '/../includes/term_form'),
     
    2628    'AppfulPlugin\\Hooks\\' => array($baseDir . '/../includes/hooks'),
    2729    'AppfulPlugin\\Helper\\' => array($baseDir . '/../includes/helper'),
     30    'AppfulPlugin\\Domain\\App\\' => array($baseDir . '/../includes/domain/app'),
    2831    'AppfulPlugin\\Domain\\' => array($baseDir . '/../includes/domain'),
    2932    'AppfulPlugin\\CustomTaxonomies\\' => array($baseDir . '/../includes/custom_taxonomies'),
     
    3336    'AppfulPlugin\\Api\\Handlers\\Page\\' => array($baseDir . '/../includes/api/handlers/page'),
    3437    'AppfulPlugin\\Api\\Handlers\\' => array($baseDir . '/../includes/api/handlers'),
     38    'AppfulPlugin\\Api\\Dtos\\App\\' => array($baseDir . '/../includes/api/dtos/app'),
    3539    'AppfulPlugin\\Api\\Dtos\\' => array($baseDir . '/../includes/api/dtos'),
    3640    'AppfulPlugin\\Api\\Client\\' => array($baseDir . '/../includes/api/client'),
  • appful-app/trunk/lib/vendor/composer/autoload_static.php

    r3019874 r3027388  
    4242            'AppfulPlugin\\Wp\\Mapper\\' => 23,
    4343            'AppfulPlugin\\Wp\\' => 16,
     44            'AppfulPlugin\\UseCases\\Post\\' => 27,
    4445            'AppfulPlugin\\UseCases\\Page\\' => 27,
     46            'AppfulPlugin\\UseCases\\AppSettings\\' => 34,
    4547            'AppfulPlugin\\UseCases\\' => 22,
    4648            'AppfulPlugin\\TermForm\\' => 22,
     
    5052            'AppfulPlugin\\Hooks\\' => 19,
    5153            'AppfulPlugin\\Helper\\' => 20,
     54            'AppfulPlugin\\Domain\\App\\' => 24,
    5255            'AppfulPlugin\\Domain\\' => 20,
    5356            'AppfulPlugin\\CustomTaxonomies\\' => 30,
     
    5760            'AppfulPlugin\\Api\\Handlers\\Page\\' => 31,
    5861            'AppfulPlugin\\Api\\Handlers\\' => 26,
     62            'AppfulPlugin\\Api\\Dtos\\App\\' => 26,
    5963            'AppfulPlugin\\Api\\Dtos\\' => 22,
    6064            'AppfulPlugin\\Api\\Client\\' => 24,
     
    109113            0 => __DIR__ . '/../..' . '/../includes/wp',
    110114        ),
     115        'AppfulPlugin\\UseCases\\Post\\' =>
     116        array (
     117            0 => __DIR__ . '/../..' . '/../includes/use_cases/post',
     118        ),
    111119        'AppfulPlugin\\UseCases\\Page\\' =>
    112120        array (
    113121            0 => __DIR__ . '/../..' . '/../includes/use_cases/page',
    114122        ),
     123        'AppfulPlugin\\UseCases\\AppSettings\\' =>
     124        array (
     125            0 => __DIR__ . '/../..' . '/../includes/use_cases/app_settings',
     126        ),
    115127        'AppfulPlugin\\UseCases\\' =>
    116128        array (
     
    141153            0 => __DIR__ . '/../..' . '/../includes/helper',
    142154        ),
     155        'AppfulPlugin\\Domain\\App\\' =>
     156        array (
     157            0 => __DIR__ . '/../..' . '/../includes/domain/app',
     158        ),
    143159        'AppfulPlugin\\Domain\\' =>
    144160        array (
     
    168184        array (
    169185            0 => __DIR__ . '/../..' . '/../includes/api/handlers',
     186        ),
     187        'AppfulPlugin\\Api\\Dtos\\App\\' =>
     188        array (
     189            0 => __DIR__ . '/../..' . '/../includes/api/dtos/app',
    170190        ),
    171191        'AppfulPlugin\\Api\\Dtos\\' =>
     
    187207        'AppfulPlugin\\Api\\Client\\BackendClient' => __DIR__ . '/../..' . '/../includes/api/client/BackendClient.php',
    188208        'AppfulPlugin\\Api\\Client\\SelfClient' => __DIR__ . '/../..' . '/../includes/api/client/SelfClient.php',
     209        'AppfulPlugin\\Api\\Dtos\\App\\AppAdBannerDto' => __DIR__ . '/../..' . '/../includes/api/dtos/app/AppAdBannerDto.php',
    189210        'AppfulPlugin\\Api\\Dtos\\AttachmentDto' => __DIR__ . '/../..' . '/../includes/api/dtos/AttachmentDto.php',
    190211        'AppfulPlugin\\Api\\Dtos\\BlogHooksDto' => __DIR__ . '/../..' . '/../includes/api/dtos/BlogHooksDto.php',
     
    235256        'AppfulPlugin\\Api\\Handlers\\TagSyncRequestHandler' => __DIR__ . '/../..' . '/../includes/api/handlers/TagSyncRequestHandler.php',
    236257        'AppfulPlugin\\Api\\Handlers\\UserSyncRequestHandler' => __DIR__ . '/../..' . '/../includes/api/handlers/UserSyncRequestHandler.php',
     258        'AppfulPlugin\\Api\\Mapper\\AppAdBannerMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/AppAdBannerMapper.php',
    237259        'AppfulPlugin\\Api\\Mapper\\AttachmentMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/AttachmentMapper.php',
    238260        'AppfulPlugin\\Api\\Mapper\\BlogHooksMapper' => __DIR__ . '/../..' . '/../includes/api/mapper/BlogHooksMapper.php',
     
    258280        'AppfulPlugin\\CustomTaxonomies\\AppfulTaxonomies' => __DIR__ . '/../..' . '/../includes/custom_taxonomies/AppfulTaxonomies.php',
    259281        'AppfulPlugin\\CustomTaxonomies\\TaxonomyManager' => __DIR__ . '/../..' . '/../includes/custom_taxonomies/TaxonomyManager.php',
     282        'AppfulPlugin\\Domain\\App\\AppAdBanner' => __DIR__ . '/../..' . '/../includes/domain/app/AppAdBanner.php',
    260283        'AppfulPlugin\\Domain\\Attachment' => __DIR__ . '/../..' . '/../includes/domain/Attachment.php',
    261284        'AppfulPlugin\\Domain\\AuthenticateRequest' => __DIR__ . '/../..' . '/../includes/domain/AuthenticateRequest.php',
     
    284307        'AppfulPlugin\\Helper\\TemplateLoader' => __DIR__ . '/../..' . '/../includes/helper/TemplateLoader.php',
    285308        'AppfulPlugin\\Hooks\\ActivationHook' => __DIR__ . '/../..' . '/../includes/hooks/ActivationHook.php',
     309        'AppfulPlugin\\Hooks\\AppSettingsHook' => __DIR__ . '/../..' . '/../includes/hooks/AppSettingsHook.php',
    286310        'AppfulPlugin\\Hooks\\AttachmentHook' => __DIR__ . '/../..' . '/../includes/hooks/AttachmentHook.php',
    287311        'AppfulPlugin\\Hooks\\CommentHook' => __DIR__ . '/../..' . '/../includes/hooks/CommentHook.php',
     
    297321        'AppfulPlugin\\Notice\\Notice' => __DIR__ . '/../..' . '/../includes/notice/Notice.php',
    298322        'AppfulPlugin\\TermForm\\TermForm' => __DIR__ . '/../..' . '/../includes/term_form/TermForm.php',
     323        'AppfulPlugin\\UseCases\\AppSettings\\AppSettingsUseCaseManager' => __DIR__ . '/../..' . '/../includes/use_cases/app_settings/AppSettingsUseCaseManager.php',
     324        'AppfulPlugin\\UseCases\\AppSettings\\UpdateAppAdBannerUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/app_settings/UpdateAppAdBannerUseCase.php',
    299325        'AppfulPlugin\\UseCases\\AttachmentDeleteUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/AttachmentDeleteUseCase.php',
    300326        'AppfulPlugin\\UseCases\\AttachmentSaveUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/AttachmentSaveUseCase.php',
     
    321347        'AppfulPlugin\\UseCases\\GetPagesByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPagesByIdUseCase.php',
    322348        'AppfulPlugin\\UseCases\\GetPostContentsByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostContentsByIdUseCase.php',
    323         'AppfulPlugin\\UseCases\\GetPostSyncDataUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostSyncDataUseCase.php',
    324349        'AppfulPlugin\\UseCases\\GetPostsByIdUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetPostsByIdUseCase.php',
    325350        'AppfulPlugin\\UseCases\\GetRoleSyncDataUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/GetRoleSyncDataUseCase.php',
     
    338363        'AppfulPlugin\\UseCases\\Page\\PullLocalPageContentUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/page/PullLocalPageContentUseCase.php',
    339364        'AppfulPlugin\\UseCases\\PostDeleteUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PostDeleteUseCase.php',
    340         'AppfulPlugin\\UseCases\\PostSaveUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PostSaveUseCase.php',
     365        'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetPostSyncItemUseCase.php',
     366        'AppfulPlugin\\UseCases\\Post\\GetPostSyncItemsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetPostSyncItemsUseCase.php',
     367        'AppfulPlugin\\UseCases\\Post\\GetTaxonomyPostSyncItemsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/GetTaxonomyPostSyncItemsUseCase.php',
     368        'AppfulPlugin\\UseCases\\Post\\PostUseCaseManager' => __DIR__ . '/../..' . '/../includes/use_cases/post/PostUseCaseManager.php',
     369        'AppfulPlugin\\UseCases\\Post\\SendPostChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SendPostChunkSyncUseCase.php',
     370        'AppfulPlugin\\UseCases\\Post\\SendPostSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SendPostSyncUseCase.php',
     371        'AppfulPlugin\\UseCases\\Post\\SyncPostUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncPostUseCase.php',
     372        'AppfulPlugin\\UseCases\\Post\\SyncPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncPostsUseCase.php',
     373        'AppfulPlugin\\UseCases\\Post\\SyncTaxonomyPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/post/SyncTaxonomyPostsUseCase.php',
    341374        'AppfulPlugin\\UseCases\\PullLocalPostContentUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/PullLocalPostContentUseCase.php',
    342375        'AppfulPlugin\\UseCases\\RegisterBlogUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/RegisterBlogUseCase.php',
     
    345378        'AppfulPlugin\\UseCases\\SendCommentChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendCommentChunkSyncUseCase.php',
    346379        'AppfulPlugin\\UseCases\\SendPageChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendPageChunkSyncUseCase.php',
    347         'AppfulPlugin\\UseCases\\SendPostChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendPostChunkSyncUseCase.php',
    348380        'AppfulPlugin\\UseCases\\SendRoleChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendRoleChunkSyncUseCase.php',
    349381        'AppfulPlugin\\UseCases\\SendTagChunkSyncUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SendTagChunkSyncUseCase.php',
     
    354386        'AppfulPlugin\\UseCases\\SyncCommentsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncCommentsUseCase.php',
    355387        'AppfulPlugin\\UseCases\\SyncPagesUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncPagesUseCase.php',
    356         'AppfulPlugin\\UseCases\\SyncPostsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncPostsUseCase.php',
    357388        'AppfulPlugin\\UseCases\\SyncRolesUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncRolesUseCase.php',
    358389        'AppfulPlugin\\UseCases\\SyncTagsUseCase' => __DIR__ . '/../..' . '/../includes/use_cases/SyncTagsUseCase.php',
  • appful-app/trunk/lib/vendor/composer/installed.php

    r3019874 r3027388  
    22    'root' => array(
    33        'name' => '__root__',
    4         'pretty_version' => '1.0.0+no-version-set',
    5         'version' => '1.0.0.0',
    6         'reference' => NULL,
     4        'pretty_version' => 'dev-main',
     5        'version' => 'dev-main',
     6        'reference' => '51e3f63650fb4b610edc705bf0899e6850b8d8ac',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        '__root__' => array(
    14             'pretty_version' => '1.0.0+no-version-set',
    15             'version' => '1.0.0.0',
    16             'reference' => NULL,
     14            'pretty_version' => 'dev-main',
     15            'version' => 'dev-main',
     16            'reference' => '51e3f63650fb4b610edc705bf0899e6850b8d8ac',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • appful-app/trunk/readme.txt

    r3019874 r3027388  
    66Tested up to: 6.4
    77Requires PHP: 7.4
    8 Stable tag: 3.1.19
     8Stable tag: 3.1.20
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset for help on using the changeset viewer.