first
This commit is contained in:
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
namespace ShortPixel\Controller\Queue;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
use ShortPixel\ShortQ\ShortQ as ShortQ;
|
||||
use ShortPixel\Controller\CacheController as CacheController;
|
||||
use ShortPixel\ShortPixelLogger\ShortPixelLogger as Log;
|
||||
|
||||
|
||||
class MediaLibraryQueue extends Queue
|
||||
{
|
||||
protected $queueName = '';
|
||||
protected $cacheName = 'MediaCache'; // When preparing, write needed data to cache.
|
||||
|
||||
protected static $instance;
|
||||
|
||||
|
||||
/* MediaLibraryQueue Instance */
|
||||
public function __construct($queueName = 'Media')
|
||||
{
|
||||
$shortQ = new ShortQ(self::PLUGIN_SLUG);
|
||||
$this->q = $shortQ->getQueue($queueName);
|
||||
$this->queueName = $queueName;
|
||||
|
||||
$options = array(
|
||||
'numitems' => 2, // amount of items to pull per tick when optimizing
|
||||
'mode' => 'wait',
|
||||
'process_timeout' => 7000, // time between request for the image. (in milisecs)
|
||||
'retry_limit' => 30, // amount of times it will retry without errors before giving up
|
||||
'enqueue_limit' => 200, // amount of items added to the queue when preparing.
|
||||
);
|
||||
|
||||
$options = apply_filters('shortpixel/medialibraryqueue/options', $options);
|
||||
|
||||
$this->q->setOptions($options);
|
||||
}
|
||||
|
||||
public function getType()
|
||||
{
|
||||
return 'media';
|
||||
}
|
||||
|
||||
protected function prepare()
|
||||
{
|
||||
|
||||
$items = $this->queryPostMeta();
|
||||
return $this->prepareItems($items);
|
||||
|
||||
}
|
||||
|
||||
private function queryPostMeta()
|
||||
{
|
||||
$last_id = $this->getStatus('last_item_id');
|
||||
$limit = $this->q->getOption('enqueue_limit');
|
||||
$prepare = array();
|
||||
global $wpdb;
|
||||
|
||||
$sqlmeta = "SELECT DISTINCT post_id FROM " . $wpdb->prefix . "postmeta where (meta_key = %s or meta_key = %s)";
|
||||
|
||||
$prepare[] = '_wp_attached_file';
|
||||
$prepare[] = '_wp_attachment_metadata';
|
||||
|
||||
if ($last_id > 0)
|
||||
{
|
||||
$sqlmeta .= " and post_id < %d ";
|
||||
$prepare [] = intval($last_id);
|
||||
}
|
||||
$sqlmeta .= ' order by post_id DESC LIMIT %d ';
|
||||
$prepare[] = $limit;
|
||||
|
||||
$sqlmeta = $wpdb->prepare($sqlmeta, $prepare);
|
||||
$results = $wpdb->get_col($sqlmeta);
|
||||
|
||||
$fs = \wpSPIO()->filesystem();
|
||||
$items = array();
|
||||
|
||||
foreach($results as $item_id)
|
||||
{
|
||||
$items[] = $item_id; //$fs->getImage($item_id, 'media');
|
||||
}
|
||||
|
||||
// Remove failed object, ie if getImage returned false.
|
||||
return array_filter($items);
|
||||
|
||||
}
|
||||
|
||||
/* public function queueToMediaItem($queueItem)
|
||||
{
|
||||
$id = $queueItem->id;
|
||||
return $fs->getMediaImage($id);
|
||||
} */
|
||||
|
||||
}
|
Reference in New Issue
Block a user