File "EditMediaController.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/shortpixel-image-optimiser/class/Controller/EditMediaController.php
File
size: 11.43 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace ShortPixel\Controller;
use ShortPixel\ShortpixelLogger\ShortPixelLogger as Log;
use ShortPixel\Model\ImageModel as ImageModel;
// Future contoller for the edit media metabox view.
class EditMediaController extends \ShortPixel\Controller
{
protected $template = 'view-edit-media';
protected $model = 'image';
protected $post_id;
protected $legacyViewObj;
public function __construct()
{
parent::__construct();
}
// This data should be rendered by Image Model in the future.
public function setTempData($data)
{
$this->data = $data;
}
public function load($post_id)
{
$this->post_id = $post_id;
$this->imageModel = new ImageModel();
$this->imageModel->setByPostID($post_id);
$this->imageModel->reAcquire(); // single display mode - reset things.
$this->view->id = $post_id;
$this->view->status_message = null;
// $this->actions_allowed = $this->checkUserPrivileges();
$this->view->status_message = $this->getStatusMessage();
$this->view->actions = $this->getActions();
$this->view->stats = $this->getStatistics();
$this->view->todo = $this->getTodo();
$this->view->debugInfo = $this->getDebugInfo();
$this->view->message = isset($this->data['message']) ? $this->data['message'] : '';
//$this->view->r
$this->loadView();
}
// The old view, we are trying to get rid of.
public function setLegacyView($legacyView)
{
$this->legacyViewObj = $legacyView;
}
protected function getStatusMessage()
{
if (! isset($this->data['status']))
return;
switch($this->data['status'])
{
case 'n/a':
return _e('Optimization N/A','shortpixel-image-optimiser');
break;
case 'notFound':
return _e('Image does not exist.','shortpixel-image-optimiser');
break;
case 'invalidKey':
return _e('Invalid API Key. <a href="options-general.php?page=wp-shortpixel-settings">Check your Settings</a>','shortpixel-image-optimiser');
break;
case 'quotaExceeded':
return __('Quota Exceeded','shortpixel-image-optimiser');
break;
}
}
protected function getActions()
{
$actions = array();
if (! $this->userIsAllowed)
return $actions;
switch($this->data['status'])
{
case 'optimizeNow':
$actions[] = '<a class="button button-smaller button-primary" href="javascript:manualOptimization(' . $this->post_id . ',false)">
' . __('Optimize now','shortpixel-image-optimiser') . '
</a>';
break;
case 'retry':
case 'waiting':
if (isset($this->data['cleanup']))
{
$actions[] = '<a class="button button-smaller button-primary" href="javascript:manualOptimization(' . $this->post_id . ', true)">' .
__('Cleanup&Retry','shortpixel-image-optimiser') . '</a>';
}
else {
if($this->data['status'] == 'retry' && (isset($this->data['backup']) && $this->data['backup']) ) {
$actions[] = '<a class="button button-smaller sp-action-restore"
href="admin.php?action=shortpixel_restore_backup&attachment_ID=' . $this->post_id . '" style="margin-left:5px;"
title="' . __('Restore Image from Backup', 'shortpixel-image-optimiser') . '">
' . __('Cleanup','shortpixel-image-optimiser') . '</a>';
}
$actions[] = '<a class="button button-smaller button-primary" href="javascript:manualOptimization(' . $this->post_id . ', false)">' .
__('Retry','shortpixel-image-optimiser') . '</a>';
}
break;
}
return $actions;
}
protected function getStatistics()
{
$data = $this->data;
if ( $data['status'] != 'pdfOptimized' && $data['status'] != 'imgOptimized')
return array();
$stats = array();
if ($data['percent'] && $data['percent'] > 0)
{
$stats[] = array(__('Reduced by','shortpixel-image-optimiser'), '<strong>' . $data['percent'] . '% </strong>');
}
$stats[] = array(__('Type: ', 'shortpixel-image-optimiser'), $data['type']);
if ($data['bonus'])
$stats[] = array(__('Bonus processing','shortpixel-image-optimiser'), '');
if ($data['thumbsOpt'])
{
if ($data['thumbsTotal'] > $data['thumbsOpt'] )
$stats[] = array(sprintf(__('+%s of %s thumbnails optimized','shortpixel-image-optimiser'),$data['thumbsOpt'],$data['thumbsTotal']), '');
else
$stats[] = array(sprintf(__('+ %s thumbnails optimized','shortpixel-image-optimiser'),$data['thumbsOpt']), '');
}
if ($data['retinasOpt'])
{
$stats[] = array(sprintf(__('+%s Retina images optimized','shortpixel-image-optimiser') , $data['retinasOpt']), '');
}
if ($data['webpCount'])
{
$stats[] = array(__(" WebP images", 'shortpixel-image-optimiser'), $data['webpCount']);
}
if ($data['avifCount'])
{
$stats[] = array(__(" Avif images", 'shortpixel-image-optimiser'), $data['avifCount']);
}
if ($data['exifKept'])
$stats[] = array(__('EXIF kept', 'shortpixel-image-optimiser'), '');
else {
$stats[] = array(__('EXIF removed', 'shortpixel-image-optimiser'), '');
}
if ($data['png2jpg'])
{
$stats[] = array( __('Converted from PNG','shortpixel-image-optimiser'), '');
}
$stats[] = array(__("Optimized on", 'shortpixel-image-optimiser') . ": " . $data['date'], '');
/* $successText .= ($data['webpCount'] ? "<br>+" . $data['webpCount'] . __(" WebP images", 'shortpixel-image-optimiser') : "")
. "<br>EXIF: " . ($data['exifKept'] ? __('kept','shortpixel-image-optimiser') : __('removed','shortpixel-image-optimiser'))
. ($data['png2jpg'] ? '<br>' . __('Converted from PNG','shortpixel-image-optimiser'): '')
. "<br>" . __("Optimized on", 'shortpixel-image-optimiser') . ": " . $data['date']
. $todoSizes . $excludeSizes . $missingThumbs;
*/
return $stats;
}
protected function getTodo()
{
$data = $this->data;
if ( $data['status'] != 'pdfOptimized' && $data['status'] != 'imgOptimized')
return array();
$excluded = (isset($data['excludeSizes']) ? count($data['excludeSizes']) : 0);
$todoSizes = $missingThumbs = $excludeSizes = '';
if(isset($data['thumbsToOptimizeList']) && count($data['thumbsToOptimizeList'])) {
$todoSizes .= "<br><span style='word-break: break-all;'> <span style='font-weight: bold;'>" . __("To optimize:", 'shortpixel-image-optimiser') . "</span>";
foreach($data['thumbsToOptimizeList'] as $todoItem) {
$todoSizes .= "<br> • " . $todoItem;
}
$todoSizes .= '</span>';
}
if(isset($data['excludeSizes']) && count($data['excludeSizes']) > 0 ) {
$excludeSizes .= "<br><span style='word-break: break-all;'> <span style='font-weight: bold;'>" . __("Excluded thumbnails:", 'shortpixel-image-optimiser') . "</span>";
foreach($data['excludeSizes'] as $excludedItem) {
$excludeSizes .= "<br> • " . $excludedItem;
}
$excludeSizes .= '</span>';
}
if(count($data['thumbsMissing'])) {
$missingThumbs .= "<br><span style='word-break: break-all;'> <span style='font-weight: bold;'>" . __("Missing thumbnails:", 'shortpixel-image-optimiser') . "</span>";
foreach($data['thumbsMissing'] as $miss) {
$missingThumbs .= "<br> • " . $miss;
}
$missingThumbs .= '</span>';
}
return array($todoSizes, $excludeSizes, $missingThumbs);
}
protected function getDebugInfo()
{
if(! \wpSPIO()->env()->is_debug )
{
return array();
}
$meta = \wp_get_attachment_metadata($this->post_id);
$imageObj = new ImageModel();
$imageObj->setByPostID($this->post_id);
$imageFile = $imageObj->getFile();
$sizes = isset($this->data['sizes']) ? $this->data['sizes'] : array();
$debugInfo = array();
$debugInfo[] = array(__('URL', 'shortpixel_image_optiser'), wp_get_attachment_url($this->post_id));
$debugInfo[] = array(__('File'), get_attached_file($this->post_id));
$debugInfo[] = array(__('Status'), $this->imageModel->getMeta()->getStatus() );
$debugInfo[] = array(__('WPML Duplicates'), json_encode(\ShortPixelMetaFacade::getWPMLDuplicates($this->post_id)) );
$debugInfo['shortpixeldata'] = array(__('Data'), $this->data);
$debugInfo['wpmetadata'] = array(__('Meta'), $meta );
if ($imageFile->hasBackup())
{
$backupFile = $imageFile->getBackupFile();
$debugInfo[] = array(__('Backup Folder'), $this->shortPixel->getBackupFolderAny($this->imageModel->getFile()->getFullPath(), $sizes));
$debugInfo[] = array(__('Backup File'), (string) $backupFile . '(' . \ShortPixelTools::formatBytes($backupFile->getFileSize()) . ')' );
}
else {
$debugInfo[] = array(__("No Backup Available"), '');
}
if ($or = $imageObj->has_original())
{
$debugInfo[] = array(__('Original File'), $or->getFullPath() . '(' . \ShortPixelTools::formatBytes($or->getFileSize()) . ')');
$orbackup = $or->getBackupFile();
if ($orbackup)
$debugInfo[] = array(__('Backup'), $orbackup->getFullPath() . '(' . \ShortPixelTools::formatBytes($orbackup->getFileSize()) . ')');
}
if (! isset($meta['sizes']) )
{
$debugInfo[] = array('', __('Thumbnails were not generated', 'shortpixel-image-optimiser'));
}
else
{
foreach($meta['sizes'] as $size => $data)
{
$display_size = ucfirst(str_replace("_", " ", $size));
$img = wp_get_attachment_image_src($this->post_id, $size);
//var_dump($img);
$debugInfo[] = array('', "<div class='$size previewwrapper'><img src='" . $img[0] . "'><span class='label'>$img[0] ( $display_size )</span></div>");
}
}
return $debugInfo;
}
protected function renderLegacyCell()
{
$data = $this->data;
if ( $data['status'] != 'pdfOptimized' && $data['status'] != 'imgOptimized')
return null;
$this->legacyViewObj->renderListCell($this->post_id, $data['status'], $data['showActions'], $data['thumbsToOptimize'],
$data['backup'], $data['type'], $data['invType'], '');
}
} // controller .