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/editors/ZohoOffi...
File: editor.php
<?php
[0] Fix | Delete
[1] Fix | Delete
class elFinderEditorZohoOffice extends elFinderEditor
[2] Fix | Delete
{
[3] Fix | Delete
private static $curlTimeout = 20;
[4] Fix | Delete
[5] Fix | Delete
protected $allowed = array('init', 'save', 'chk');
[6] Fix | Delete
[7] Fix | Delete
protected $editor_settings = array(
[8] Fix | Delete
'writer' => array(
[9] Fix | Delete
'unit' => 'mm',
[10] Fix | Delete
'view' => 'pageview'
[11] Fix | Delete
),
[12] Fix | Delete
'sheet' => array(
[13] Fix | Delete
'country' => 'US'
[14] Fix | Delete
),
[15] Fix | Delete
'show' => array()
[16] Fix | Delete
);
[17] Fix | Delete
[18] Fix | Delete
private $urls = array(
[19] Fix | Delete
'writer' => 'https://api.office-integrator.com/writer/officeapi/v1/document',
[20] Fix | Delete
'sheet' => 'https://api.office-integrator.com/sheet/officeapi/v1/spreadsheet',
[21] Fix | Delete
'show' => 'https://api.office-integrator.com/show/officeapi/v1/presentation',
[22] Fix | Delete
);
[23] Fix | Delete
[24] Fix | Delete
private $srvs = array(
[25] Fix | Delete
'application/msword' => 'writer',
[26] Fix | Delete
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'writer',
[27] Fix | Delete
'application/pdf' => 'writer',
[28] Fix | Delete
'application/vnd.oasis.opendocument.text' => 'writer',
[29] Fix | Delete
'application/rtf' => 'writer',
[30] Fix | Delete
'text/html' => 'writer',
[31] Fix | Delete
'application/vnd.ms-excel' => 'sheet',
[32] Fix | Delete
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'sheet',
[33] Fix | Delete
'application/vnd.oasis.opendocument.spreadsheet' => 'sheet',
[34] Fix | Delete
'application/vnd.sun.xml.calc' => 'sheet',
[35] Fix | Delete
'text/csv' => 'sheet',
[36] Fix | Delete
'text/tab-separated-values' => 'sheet',
[37] Fix | Delete
'application/vnd.ms-powerpoint' => 'show',
[38] Fix | Delete
'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'show',
[39] Fix | Delete
'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'show',
[40] Fix | Delete
'application/vnd.oasis.opendocument.presentation' => 'show',
[41] Fix | Delete
'application/vnd.sun.xml.impress' => 'show',
[42] Fix | Delete
);
[43] Fix | Delete
[44] Fix | Delete
private $myName = '';
[45] Fix | Delete
[46] Fix | Delete
protected function extentionNormrize($extention, $srvsName) {
[47] Fix | Delete
switch($srvsName) {
[48] Fix | Delete
case 'writer':
[49] Fix | Delete
if (!in_array($extention, array('zdoc', 'docx', 'rtf', 'odt', 'html', 'txt'))) {
[50] Fix | Delete
$extention = 'docx';
[51] Fix | Delete
}
[52] Fix | Delete
break;
[53] Fix | Delete
case 'sheet':
[54] Fix | Delete
if (!in_array($extention, array('zsheet', 'xls', 'xlsx', 'ods', 'csv', 'tsv'))) {
[55] Fix | Delete
$extention = 'xlsx';
[56] Fix | Delete
}
[57] Fix | Delete
break;
[58] Fix | Delete
case 'show':
[59] Fix | Delete
if (!in_array($extention, array('zslides', 'pptx', 'pps', 'ppsx', 'odp', 'sxi'))) {
[60] Fix | Delete
$extention = 'pptx';
[61] Fix | Delete
}
[62] Fix | Delete
break;
[63] Fix | Delete
[64] Fix | Delete
}
[65] Fix | Delete
return $extention;
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
public function __construct($elfinder, $args)
[69] Fix | Delete
{
[70] Fix | Delete
parent::__construct($elfinder, $args);
[71] Fix | Delete
$this->myName = preg_replace('/^elFinderEditor/i', '', get_class($this));
[72] Fix | Delete
}
[73] Fix | Delete
[74] Fix | Delete
public function enabled()
[75] Fix | Delete
{
[76] Fix | Delete
return defined('ELFINDER_ZOHO_OFFICE_APIKEY') && ELFINDER_ZOHO_OFFICE_APIKEY && function_exists('curl_init');
[77] Fix | Delete
}
[78] Fix | Delete
[79] Fix | Delete
public function init()
[80] Fix | Delete
{
[81] Fix | Delete
if (!defined('ELFINDER_ZOHO_OFFICE_APIKEY') || !function_exists('curl_init')) {
[82] Fix | Delete
return array('error', array(elFinder::ERROR_CONF, '`ELFINDER_ZOHO_OFFICE_APIKEY` or curl extension'));
[83] Fix | Delete
}
[84] Fix | Delete
if (!empty($this->args['target'])) {
[85] Fix | Delete
$fp = $cfile = null;
[86] Fix | Delete
$hash = $this->args['target'];
[87] Fix | Delete
/** @var elFinderVolumeDriver $srcVol */
[88] Fix | Delete
if (($srcVol = $this->elfinder->getVolume($hash)) && ($file = $srcVol->file($hash))) {
[89] Fix | Delete
$cdata = empty($this->args['cdata']) ? '' : $this->args['cdata'];
[90] Fix | Delete
$cookie = $this->elfinder->getFetchCookieFile();
[91] Fix | Delete
$save = false;
[92] Fix | Delete
$ch = curl_init();
[93] Fix | Delete
$conUrl = elFinder::getConnectorUrl();
[94] Fix | Delete
curl_setopt($ch, CURLOPT_URL, $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=chk&args[target]=' . rawurlencode($hash) . $cdata);
[95] Fix | Delete
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
[96] Fix | Delete
if ($cookie) {
[97] Fix | Delete
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
[98] Fix | Delete
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
[99] Fix | Delete
}
[100] Fix | Delete
$res = curl_exec($ch);
[101] Fix | Delete
curl_close($ch);
[102] Fix | Delete
if ($res) {
[103] Fix | Delete
if ($data = json_decode($res, true)) {
[104] Fix | Delete
$save = !empty($data['cansave']);
[105] Fix | Delete
}
[106] Fix | Delete
}
[107] Fix | Delete
[108] Fix | Delete
if ($size = $file['size']) {
[109] Fix | Delete
$src = $srcVol->open($hash);
[110] Fix | Delete
$fp = tmpfile();
[111] Fix | Delete
stream_copy_to_stream($src, $fp);
[112] Fix | Delete
$srcVol->close($src, $hash);
[113] Fix | Delete
$info = stream_get_meta_data($fp);
[114] Fix | Delete
if ($info && !empty($info['uri'])) {
[115] Fix | Delete
$srcFile = $info['uri'];
[116] Fix | Delete
if (class_exists('CURLFile')) {
[117] Fix | Delete
$cfile = new CURLFile($srcFile);
[118] Fix | Delete
$cfile->setPostFilename($file['name']);
[119] Fix | Delete
$cfile->setMimeType($file['mime']);
[120] Fix | Delete
} else {
[121] Fix | Delete
$cfile = '@' . $srcFile;
[122] Fix | Delete
}
[123] Fix | Delete
}
[124] Fix | Delete
}
[125] Fix | Delete
//$srv = $this->args['service'];
[126] Fix | Delete
$srvsName = $this->srvs[$file['mime']];
[127] Fix | Delete
$format = $this->extentionNormrize($srcVol->getExtentionByMime($file['mime']), $srvsName);
[128] Fix | Delete
if (!$format) {
[129] Fix | Delete
$format = substr($file['name'], strrpos($file['name'], '.') * -1);
[130] Fix | Delete
}
[131] Fix | Delete
$lang = $this->args['lang'];
[132] Fix | Delete
if ($lang === 'jp') {
[133] Fix | Delete
$lang = 'ja';
[134] Fix | Delete
}
[135] Fix | Delete
$data = array(
[136] Fix | Delete
'apikey' => ELFINDER_ZOHO_OFFICE_APIKEY,
[137] Fix | Delete
'callback_settings' => array(
[138] Fix | Delete
'save_format' => $format,
[139] Fix | Delete
'save_url_params' => array(
[140] Fix | Delete
'hash' => $hash
[141] Fix | Delete
)
[142] Fix | Delete
),
[143] Fix | Delete
'editor_settings' => $this->editor_settings[$srvsName],
[144] Fix | Delete
'document_info' => array(
[145] Fix | Delete
'document_name' => substr($file['name'], 0, strlen($file['name']) - strlen($format)- 1)
[146] Fix | Delete
)
[147] Fix | Delete
);
[148] Fix | Delete
$data['editor_settings']['language'] = $lang;
[149] Fix | Delete
if ($save) {
[150] Fix | Delete
$conUrl = elFinder::getConnectorUrl();
[151] Fix | Delete
$data['callback_settings']['save_url'] = $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=save' . $cdata;
[152] Fix | Delete
}
[153] Fix | Delete
foreach($data as $_k => $_v) {
[154] Fix | Delete
if (is_array($_v)){
[155] Fix | Delete
$data[$_k] = json_encode($_v);
[156] Fix | Delete
}
[157] Fix | Delete
}
[158] Fix | Delete
if ($cfile) {
[159] Fix | Delete
$data['document'] = $cfile;
[160] Fix | Delete
}
[161] Fix | Delete
$ch = curl_init();
[162] Fix | Delete
curl_setopt($ch, CURLOPT_URL, $this->urls[$srvsName]);
[163] Fix | Delete
curl_setopt($ch, CURLOPT_TIMEOUT, self::$curlTimeout);
[164] Fix | Delete
curl_setopt($ch, CURLOPT_HEADER, 0);
[165] Fix | Delete
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
[166] Fix | Delete
curl_setopt($ch, CURLOPT_POST, 1);
[167] Fix | Delete
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
[168] Fix | Delete
$res = curl_exec($ch);
[169] Fix | Delete
$error = curl_error($ch);
[170] Fix | Delete
curl_close($ch);
[171] Fix | Delete
[172] Fix | Delete
$fp && fclose($fp);
[173] Fix | Delete
[174] Fix | Delete
if ($res && $res = @json_decode($res, true)) {
[175] Fix | Delete
if (!empty($res['document_url'])) {
[176] Fix | Delete
$ret = array('zohourl' => $res['document_url']);
[177] Fix | Delete
if (!$save) {
[178] Fix | Delete
$ret['warning'] = 'exportToSave';
[179] Fix | Delete
}
[180] Fix | Delete
return $ret;
[181] Fix | Delete
} else {
[182] Fix | Delete
$error = $res;
[183] Fix | Delete
}
[184] Fix | Delete
}
[185] Fix | Delete
[186] Fix | Delete
if ($error) {
[187] Fix | Delete
return array('error' => is_string($error)? preg_split('/[\r\n]+/', $error) : 'Error code: ' . $error);
[188] Fix | Delete
}
[189] Fix | Delete
}
[190] Fix | Delete
}
[191] Fix | Delete
[192] Fix | Delete
return array('error' => array('errCmdParams', 'editor.' . $this->myName . '.init'));
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
public function save()
[196] Fix | Delete
{
[197] Fix | Delete
if (!empty($_POST) && !empty($_POST['hash']) && !empty($_FILES) && !empty($_FILES['content'])) {
[198] Fix | Delete
$hash = $_POST['hash'];
[199] Fix | Delete
/** @var elFinderVolumeDriver $volume */
[200] Fix | Delete
if ($volume = $this->elfinder->getVolume($hash)) {
[201] Fix | Delete
if ($content = file_get_contents($_FILES['content']['tmp_name'])) {
[202] Fix | Delete
if ($volume->putContents($hash, $content)) {
[203] Fix | Delete
return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 200 OK');
[204] Fix | Delete
}
[205] Fix | Delete
}
[206] Fix | Delete
}
[207] Fix | Delete
}
[208] Fix | Delete
return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 500 Internal Server Error');
[209] Fix | Delete
}
[210] Fix | Delete
[211] Fix | Delete
public function chk()
[212] Fix | Delete
{
[213] Fix | Delete
$hash = $this->args['target'];
[214] Fix | Delete
$res = false;
[215] Fix | Delete
/** @var elFinderVolumeDriver $volume */
[216] Fix | Delete
if ($volume = $this->elfinder->getVolume($hash)) {
[217] Fix | Delete
if ($file = $volume->file($hash)) {
[218] Fix | Delete
$res = (bool)$file['write'];
[219] Fix | Delete
}
[220] Fix | Delete
}
[221] Fix | Delete
return array('cansave' => $res);
[222] Fix | Delete
}
[223] Fix | Delete
}
[224] Fix | Delete
[225] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function