first commit

This commit is contained in:
2026-04-28 15:13:50 +02:00
commit a95acc355b
63745 changed files with 9487948 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
<?php
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*
* @package MetaCommerce
*/
namespace WooCommerce\Facebook\Feed;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\ActionSchedulerJobFramework\Proxies\ActionScheduler;
/**
* Ratings and Reviews Feed class
*
* Extends Abstract Feed class to handle ratings and reviews feed requests and generation for Facebook integration.
*
* @package WooCommerce\Facebook\Feed
* @since 3.5.0
*/
class RatingsAndReviewsFeed extends AbstractFeed {
/** Header for the ratings and reviews feed file. @var string */
const RATINGS_AND_REVIEWS_FEED_HEADER = 'aggregator,store.name,store.id,store.storeUrls,review_id,rating,title,content,created_at,updated_at,review_image_urls,incentivized,has_verified_purchase,reviewer.name,reviewer.reviewerID,reviewer.isAnonymous,product.name,product.url,product.productIdentifiers.skus' . PHP_EOL;
/**
* Constructor.
*
* @since 3.5.0
*/
public function __construct() {
$file_writer = new CsvFeedFileWriter( self::get_data_stream_name(), self::RATINGS_AND_REVIEWS_FEED_HEADER );
$feed_handler = new RatingsAndReviewsFeedHandler( $file_writer );
$scheduler = new ActionScheduler();
$feed_generator = new RatingsAndReviewsFeedGenerator( $scheduler, $file_writer, self::get_data_stream_name() );
$this->init(
$file_writer,
$feed_handler,
$feed_generator,
);
}
protected static function get_feed_type(): string {
return 'PRODUCT_RATINGS_AND_REVIEWS';
}
protected static function get_data_stream_name(): string {
return FeedManager::RATINGS_AND_REVIEWS;
}
protected static function get_feed_gen_interval(): int {
return WEEK_IN_SECONDS;
}
}

View File

@@ -0,0 +1,59 @@
<?php
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*
* @package MetaCommerce
*/
namespace WooCommerce\Facebook\Feed;
defined( 'ABSPATH' ) || exit;
/**
* Class RatingsAndReviewsFeedGenerator
*
* This class generates the feed as a batch job.
*
* @package WooCommerce\Facebook\Feed
* @since 3.5.0
*/
class RatingsAndReviewsFeedGenerator extends FeedGenerator {
/**
* Retrieves items for a specific batch.
*
* @param int $batch_number The batch number.
* @param array $args Additional arguments.
*
* @return array The items for the batch.
* @inheritdoc
* @since 3.5.0
*/
protected function get_items_for_batch( int $batch_number, array $args ): array {
$batch_number = max( 1, $batch_number );
$batch_size = $this->get_batch_size();
$offset = ( $batch_number - 1 ) * $batch_size;
$query_args = array(
'number' => $batch_size,
'offset' => $offset,
'status' => 'approve',
'post_type' => 'product',
'comment_type' => 'review',
);
return FeedUploadUtils::get_ratings_and_reviews_data( $query_args );
}
/**
* Get the job's batch size.
*
* @return int
* @since 3.5.0
*/
protected function get_batch_size(): int {
return 100;
}
}

View File

@@ -0,0 +1,49 @@
<?php
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*
* @package MetaCommerce
*/
namespace WooCommerce\Facebook\Feed;
defined( 'ABSPATH' ) || exit;
/**
* Ratings and Reviews Feed Handler class
*
* Extends the AbstractFeedHandler class to handle ratings and reviews feed file generation.
*
* @package WooCommerce\Facebook\Feed
* @since 3.5.0
*/
class RatingsAndReviewsFeedHandler extends AbstractFeedHandler {
/**
* Constructor.
*
* @param AbstractFeedFileWriter $feed_writer An instance of the CSV feed file writer.
*/
public function __construct( AbstractFeedFileWriter $feed_writer ) {
$this->feed_writer = $feed_writer;
$this->feed_type = FeedManager::RATINGS_AND_REVIEWS;
}
/**
* Get the feed data and return as an array.
*
* @return array
*/
public function get_feed_data(): array {
$query_args = array(
'status' => 'approve',
'post_type' => 'product',
'comment_type' => 'review',
);
return FeedUploadUtils::get_ratings_and_reviews_data( $query_args );
}
}