File "BulkViewController.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/shortpixel-image-optimiser/class/Controller/View/BulkViewController.php
File
size: 6.84 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace ShortPixel\Controller\View;
use ShortPixel\ShortpixelLogger\ShortPixelLogger as Log;
use ShortPixel\Notices\NoticeController as Notices;
use \ShortPixel\Controller\AdminNoticesController as AdminNoticesController;
class BulkViewController extends \ShortPixel\Controller
{
protected $form_action = 'sp-bulk';
protected $quotaData;
protected $pendingMeta;
protected $selected_folders = array();
public function load()
{
$this->checkPost();
if ($this->is_form_submit)
{
$this->doBulkAction();
}
$this->quotaData = \wpSPIO()->getShortPixel()->checkQuotaAndAlert(null, isset($_GET['checkquota']), 0);
if ($this->checkDoingBulk())
{
$this->loadViewProgress();
}
else
{
$this->loadView();
}
}
public function checkDoingBulk()
{
$prioQ = \wpSPIO()->getShortPixel()->getPrioQ();
$settings = \wpSPIO()->settings();
$spMetaDao = \wpSPIO()->getShortPixel()->getSPMetaDao();
global $wpdb;
$qry_left = "SELECT count(meta_id) FilesLeftToBeProcessed FROM " . $wpdb->prefix . "postmeta
WHERE meta_key = '_wp_attached_file' AND post_id <= " . (0 + $prioQ->getStartBulkId());
$filesLeft = $wpdb->get_results($qry_left);
//check the custom bulk
$pendingMeta = $settings->hasCustomFolders ? $spMetaDao->getPendingMetaCount() : 0;
$this->pendingMeta = $pendingMeta;
return ( ($filesLeft[0]->FilesLeftToBeProcessed > 0 && $prioQ->bulkRunning())
|| (0 + $pendingMeta > 0 && !$settings->customBulkPaused && $prioQ->bulkRan() )//bulk processing was started
&& (!$prioQ->bulkPaused() || $settings->skipToCustom));
}
public function doBulkAction()
{
$spMetaDao = \wpSPIO()->getShortPixel()->getSPMetaDao();
$prioQ = \wpSPIO()->getShortPixel()->getPrioQ();
$settings = \wpSPIO()->settings();
if(isset($_POST['bulkProcessPause']))
{//pause an ongoing bulk processing, it might be needed sometimes
$prioQ->pauseBulk();
if($settings->hasCustomFolders && $spMetaDao->getPendingMetaCount()) {
$settings->customBulkPaused = 1;
}
}
if(isset($_POST['bulkProcessStop']))
{//stop an ongoing bulk processing
$prioQ->stopBulk();
if($settings->hasCustomFolders && $spMetaDao->getPendingMetaCount()) {
$settings->customBulkPaused = 1;
}
$settings->cancelPointer = NULL;
}
if(isset($_POST["bulkProcess"]))
{
//set the thumbnails option
if ( isset($_POST['thumbnails']) ) {
$settings->processThumbnails = 1;
} else {
$settings->processThumbnails = 0;
}
if (isset($_POST['createWebp']) )
$settings->createWebp = 1;
else
$settings->createWebp = 0;
if (isset($_POST['createAvif']))
$settings->createAvif = 1;
else
$settings->createAvif = 0;
//clean the custom files errors in order to process them again
if($settings->hasCustomFolders) {
$spMetaDao->resetFailed();
$spMetaDao->resetRestored();
$spMetaDao->setPending();
}
$prioQ->startBulk(\ShortPixelQueue::BULK_TYPE_OPTIMIZE);
$settings->customBulkPaused = 0;
Log::addInfo("BULK: Start: " . $prioQ->getStartBulkId() . ", stop: " . $prioQ->getStopBulkId() . " PrioQ: "
.json_encode($prioQ->get()));
}//end bulk process was clicked
if(isset($_POST["bulkRestore"]))
{
Log::addInfo('Bulk Process - Bulk Restore');
$bulkRestore = new BulkRestoreAll(); // controller
$bulkRestore->setupBulk();
$prioQ->startBulk(\ShortPixelQueue::BULK_TYPE_RESTORE);
$settings->customBulkPaused = 0;
}//end bulk restore was clicked
if(isset($_POST["bulkCleanup"]))
{
Log::addInfo('Bulk Process - Bulk Cleanup ');
$prioQ->startBulk(\ShortPixelQueue::BULK_TYPE_CLEANUP);
$settings->customBulkPaused = 0;
}//end bulk restore was clicked
if(isset($_POST["bulkCleanupPending"]))
{
Log::addInfo('Bulk Process - Clean Pending');
$prioQ->startBulk(\ShortPixelQueue::BULK_TYPE_CLEANUP_PENDING);
$settings->customBulkPaused = 0;
}//end bulk restore was clicked
if(isset($_POST["bulkProcessResume"]))
{
Log::addInfo('Bulk Process - Bulk Resume');
$prioQ->resumeBulk();
$settings->customBulkPaused = 0;
}//resume was clicked
if(isset($_POST["skipToCustom"]))
{
Log::addInfo('Bulk Process - Skipping to Custom Media Process');
$settings->skipToCustom = true;
$settings->customBulkPaused = 0;
}//resume was clicked
}
public function loadView($template = null)
{
$settings = \wpSPIO()->settings();
$prioQ = \wpSPIO()->getShortPixel()->getPrioQ();
$averageCompression = \wpSPIO()->getShortPixel()->getAverageCompression();
$thumbsProcessedCount = $settings->thumbsCount;//amount of optimized thumbnails
$under5PercentCount = $settings->under5Percent;//amount of under 5% optimized imgs.
$quotaData = $this->quotaData;
$percent = $prioQ->bulkPaused() ? \wpSPIO()->getShortPixel()->getPercent($quotaData) : false;
$view = new \ShortPixelView(\wpSPIO()->getShortPixel());
$view->displayBulkProcessingForm($quotaData, $thumbsProcessedCount, $under5PercentCount,
$prioQ->bulkRan(), $averageCompression, $settings->fileCount,
\ShortPixelTools::formatBytes($settings->savedSpace), $percent, $this->pendingMeta);
}
public function loadViewProgress()
{
$settings = \wpSPIO()->settings();
$prioQ = \wpSPIO()->getShortPixel()->getPrioQ();
if($settings->quotaExceeded == 1) {
AdminNoticesController::reInstateQuotaExceeded();
$this->loadView();
return false;
}
if( $settings->verifiedKey == false ) {//invalid API Key
return;
}
$quotaData = $this->quotaData;
$prioQ = \wpSPIO()->getShortPixel()->getPrioQ();
//average compression
$averageCompression = \wpSPIO()->getShortPixel()->getAverageCompression();
$msg = \wpSPIO()->getShortPixel()->bulkProgressMessage($prioQ->getDeltaBulkPercent(), $prioQ->getTimeRemaining());
$view = new \ShortPixelView(\wpSPIO()->getShortPixel());
$view->displayBulkProcessingRunning(\wpSPIO()->getShortPixel()->getPercent($quotaData), $msg, $quotaData['APICallsRemaining'], $averageCompression,
$prioQ->getBulkType() == \ShortPixelQueue::BULK_TYPE_RESTORE ? 0 :
( $prioQ->getBulkType() == \ShortPixelQueue::BULK_TYPE_CLEANUP
|| $prioQ->getBulkType() == \ShortPixelQueue::BULK_TYPE_CLEANUP_PENDING ? -1 : ($this->pendingMeta !== null ? ($prioQ->bulkRunning() ? 3 : 2) : 1)), $quotaData);
}
} // class