HEX
Server: Apache
System: Linux efa57bbe-abb1-400d-2985-3b056fbc2701.secureserver.net 6.1.147-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 24 12:33:32 EDT 2025 x86_64
User: root (0)
PHP: 8.0.30.4
Disabled: NONE
Upload Files
File: //var/chroot/var/www/wp-content/mu-plugins/vendor/godaddy/mwc-core/src/Payments/Poynt/Sync/Push.php
<?php

namespace GoDaddy\WordPress\MWC\Core\Payments\Poynt\Sync;

use Exception;
use GoDaddy\WordPress\MWC\Common\Sync\Jobs\PushSyncJob;

/**
 * The Poynt products push sync handler.
 *
 * Holds configuration details about the push settings, and allows initiating a product sync from WooCommerce to Poynt.
 */
class Push extends AbstractSyncHandler
{
    /** @var string name */
    protected static $name = 'push';

    /**
     * Starts the push sync handler.
     *
     * @return PushSyncJob|null
     * @throws Exception
     */
    public static function start()
    {
        if (static::isSyncing()) {
            return null;
        }

        $args = [
            'status' => 'publish',
            'type'   => 'simple',
            'limit'  => -1, // unlimited, otherwise will default to posts_per_page
            'return' => 'ids',
        ];

        // `wc_get_products()` does not support multiple visibility values, so in order to get products that are either
        // visible in the catalog, search, or both, we have to make 2 calls. We then use the combined unique results.
        // Using array_merge instead of the union operator (+) here to prevent overwriting values.
        $products = array_values(array_unique(array_merge(
            (array) wc_get_products($args + ['visibility' => 'catalog']),
            (array) wc_get_products($args + ['visibility' => 'search'])
        )));

        if (! empty($products)) {
            static::setIsSyncing(true);

            return PushSyncJob::create([
                'owner'      => 'poynt',
                'objectType' => 'product',
                'objectIds'  => $products,
                // TODO: consider adjusting or making the batch size a configuration value in MWC-4148 {IT 2022-02-02}
                'batchSize' => 25,
            ]);
        }

        return null;
    }
}