Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/wp-file-.../lib/php/plugins/AutoRota...
File: plugin.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* elFinder Plugin AutoRotate
[3] Fix | Delete
* Auto rotation on file upload of JPEG file by EXIF Orientation.
[4] Fix | Delete
* ex. binding, configure on connector options
[5] Fix | Delete
* $opts = array(
[6] Fix | Delete
* 'bind' => array(
[7] Fix | Delete
* 'upload.presave' => array(
[8] Fix | Delete
* 'Plugin.AutoRotate.onUpLoadPreSave'
[9] Fix | Delete
* )
[10] Fix | Delete
* ),
[11] Fix | Delete
* // global configure (optional)
[12] Fix | Delete
* 'plugin' => array(
[13] Fix | Delete
* 'AutoRotate' => array(
[14] Fix | Delete
* 'enable' => true, // For control by volume driver
[15] Fix | Delete
* 'quality' => 95, // JPEG image save quality
[16] Fix | Delete
* 'offDropWith' => null, // Enabled by default. To disable it if it is dropped with pressing the meta key
[17] Fix | Delete
* // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
[18] Fix | Delete
* // In case of using any key, specify it as an array
[19] Fix | Delete
* 'onDropWith' => null // Disabled by default. To enable it if it is dropped with pressing the meta key
[20] Fix | Delete
* // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
[21] Fix | Delete
* // In case of using any key, specify it as an array
[22] Fix | Delete
* )
[23] Fix | Delete
* ),
[24] Fix | Delete
* // each volume configure (optional)
[25] Fix | Delete
* 'roots' => array(
[26] Fix | Delete
* array(
[27] Fix | Delete
* 'driver' => 'LocalFileSystem',
[28] Fix | Delete
* 'path' => '/path/to/files/',
[29] Fix | Delete
* 'URL' => 'http://localhost/to/files/'
[30] Fix | Delete
* 'plugin' => array(
[31] Fix | Delete
* 'AutoRotate' => array(
[32] Fix | Delete
* 'enable' => true, // For control by volume driver
[33] Fix | Delete
* 'quality' => 95, // JPEG image save quality
[34] Fix | Delete
* 'offDropWith' => null, // Enabled by default. To disable it if it is dropped with pressing the meta key
[35] Fix | Delete
* // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
[36] Fix | Delete
* // In case of using any key, specify it as an array
[37] Fix | Delete
* 'onDropWith' => null // Disabled by default. To enable it if it is dropped with pressing the meta key
[38] Fix | Delete
* // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
[39] Fix | Delete
* // In case of using any key, specify it as an array
[40] Fix | Delete
* )
[41] Fix | Delete
* )
[42] Fix | Delete
* )
[43] Fix | Delete
* )
[44] Fix | Delete
* );
[45] Fix | Delete
*
[46] Fix | Delete
* @package elfinder
[47] Fix | Delete
* @author Naoki Sawada
[48] Fix | Delete
* @license New BSD
[49] Fix | Delete
*/
[50] Fix | Delete
class elFinderPluginAutoRotate extends elFinderPlugin
[51] Fix | Delete
{
[52] Fix | Delete
[53] Fix | Delete
public function __construct($opts)
[54] Fix | Delete
{
[55] Fix | Delete
$defaults = array(
[56] Fix | Delete
'enable' => true, // For control by volume driver
[57] Fix | Delete
'quality' => 95, // JPEG image save quality
[58] Fix | Delete
'offDropWith' => null, // To disable it if it is dropped with pressing the meta key
[59] Fix | Delete
// Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
[60] Fix | Delete
// In case of using any key, specify it as an array
[61] Fix | Delete
'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
[62] Fix | Delete
);
[63] Fix | Delete
[64] Fix | Delete
$this->opts = array_merge($defaults, $opts);
[65] Fix | Delete
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
[69] Fix | Delete
{
[70] Fix | Delete
if (!$src) {
[71] Fix | Delete
return false;
[72] Fix | Delete
}
[73] Fix | Delete
[74] Fix | Delete
$opts = $this->getCurrentOpts($volume);
[75] Fix | Delete
[76] Fix | Delete
if (!$this->iaEnabled($opts, $elfinder)) {
[77] Fix | Delete
return false;
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
$imageType = null;
[81] Fix | Delete
$srcImgInfo = null;
[82] Fix | Delete
if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
[83] Fix | Delete
$mime = mime_content_type($src);
[84] Fix | Delete
if (substr($mime, 0, 5) !== 'image') {
[85] Fix | Delete
return false;
[86] Fix | Delete
}
[87] Fix | Delete
}
[88] Fix | Delete
if (extension_loaded('exif') && function_exists('exif_imagetype')) {
[89] Fix | Delete
$imageType = exif_imagetype($src);
[90] Fix | Delete
if ($imageType === false) {
[91] Fix | Delete
return false;
[92] Fix | Delete
}
[93] Fix | Delete
} else {
[94] Fix | Delete
$srcImgInfo = getimagesize($src);
[95] Fix | Delete
if ($srcImgInfo === false) {
[96] Fix | Delete
return false;
[97] Fix | Delete
}
[98] Fix | Delete
$imageType = $srcImgInfo[2];
[99] Fix | Delete
}
[100] Fix | Delete
[101] Fix | Delete
// check target image type
[102] Fix | Delete
if ($imageType !== IMAGETYPE_JPEG) {
[103] Fix | Delete
return false;
[104] Fix | Delete
}
[105] Fix | Delete
[106] Fix | Delete
if (!$srcImgInfo) {
[107] Fix | Delete
$srcImgInfo = getimagesize($src);
[108] Fix | Delete
}
[109] Fix | Delete
[110] Fix | Delete
return $this->rotate($volume, $src, $srcImgInfo, $opts['quality']);
[111] Fix | Delete
}
[112] Fix | Delete
[113] Fix | Delete
private function rotate($volume, $src, $srcImgInfo, $quality)
[114] Fix | Delete
{
[115] Fix | Delete
if (!function_exists('exif_read_data')) {
[116] Fix | Delete
return false;
[117] Fix | Delete
}
[118] Fix | Delete
$degree = 0;
[119] Fix | Delete
$errlev =error_reporting();
[120] Fix | Delete
error_reporting($errlev ^ E_WARNING);
[121] Fix | Delete
$exif = exif_read_data($src);
[122] Fix | Delete
error_reporting($errlev);
[123] Fix | Delete
if ($exif && !empty($exif['Orientation'])) {
[124] Fix | Delete
switch ($exif['Orientation']) {
[125] Fix | Delete
case 8:
[126] Fix | Delete
$degree = 270;
[127] Fix | Delete
break;
[128] Fix | Delete
case 3:
[129] Fix | Delete
$degree = 180;
[130] Fix | Delete
break;
[131] Fix | Delete
case 6:
[132] Fix | Delete
$degree = 90;
[133] Fix | Delete
break;
[134] Fix | Delete
}
[135] Fix | Delete
}
[136] Fix | Delete
if (!$degree) {
[137] Fix | Delete
return false;
[138] Fix | Delete
}
[139] Fix | Delete
$opts = array(
[140] Fix | Delete
'degree' => $degree,
[141] Fix | Delete
'jpgQuality' => $quality,
[142] Fix | Delete
'checkAnimated' => true
[143] Fix | Delete
);
[144] Fix | Delete
return $volume->imageUtil('rotate', $src, $opts);
[145] Fix | Delete
}
[146] Fix | Delete
}
[147] Fix | Delete
[148] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function