Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Prog
/
File explorer
/
08
/
include
:
edit.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // ensure this file is being included by a parent file if( !defined( '_JEXEC' ) && !defined( '_VALID_MOS' ) ) die( 'Restricted access' ); /** * @version $Id: edit.php 242 2015-08-19 06:29:26Z soeren $ * @package eXtplorer * @copyright soeren 2007-2015 * @author The eXtplorer project (http://extplorer.net) * @author The The QuiX project (http://quixplorer.sourceforge.net) * * @license * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Alternatively, the contents of this file may be used under the terms * of the GNU General Public License Version 2 or later (the "GPL"), in * which case the provisions of the GPL are applicable instead of * those above. If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting the provisions above and replace them with the notice and * other provisions required by the GPL. If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the GPL." * */ /** * File-Edit Functions */ class ext_Edit extends ext_Action { var $lang_tbl = Array( 'czech' => 'cs', 'german' => 'de', 'danish' => 'dk', 'english' => 'en', 'esperanto' => 'eo', 'spanish' => 'es', 'french' => 'fr', 'croatian' => 'hr', 'italian' => 'it', 'japanese' => 'ja', 'macedonian' => 'mk', 'dutch' => 'nl', 'polish' => 'pl', 'portuguese' => 'pt', 'russian' => 'ru', 'slovenian' => 'sk' ); function execAction($dir, $item) { // edit file global $mainframe, $mosConfig_live_site; if(($GLOBALS["permissions"]&01)!=01) { ext_Result::sendResult('edit', false, ext_Lang::err('accessfunc' )); } $fname = ext_TextEncoding::fromUTF8(get_abs_item($dir, $item)); if(!get_is_file($fname)) { ext_Result::sendResult('edit', false, ext_TextEncoding::toUTF8($item).": ".ext_Lang::err('fileexist' )); } if(!get_show_item($dir, $item)) { ext_Result::sendResult('edit', false, $item.": ".ext_Lang::err('accessfile' )); } // CSRF Security Check if( !ext_checkToken($GLOBALS['__POST']["token"]) ) { ext_Result::sendResult('tokencheck', false, 'Request failed: Security Token not valid.'); } if(isset($GLOBALS['__POST']["dosave"]) && $GLOBALS['__POST']["dosave"]=="yes") { // Save / Save As $item=basename(stripslashes($GLOBALS['__POST']["fname"])); $fname2=ext_TextEncoding::fromUTF8(get_abs_item($dir, $item)); if(!isset($item) || $item=="") { ext_Result::sendResult('edit', false, ext_Lang::err('miscnoname' )); } if($fname!=$fname2 && @$GLOBALS['ext_File']->file_exists($fname2)) { ext_Result::sendResult('edit', false, $item.": ".ext_Lang::err('itemdoesexist' )); } $this->savefile($fname2); $fname=$fname2; ext_Result::sendResult('edit', true, ext_Lang::msg('savefile').': '.$item ); } if(isset($GLOBALS['__POST']["doreopen"]) && $GLOBALS['__POST']["doreopen"]=="yes") { // File Reopen $extra = Array(); $content = $GLOBALS['ext_File']->file_get_contents( $fname ); if( get_magic_quotes_runtime()) { $content = stripslashes( $content ); } $langs = $GLOBALS["language"]; if ($langs == "japanese"){ $_encoding = $GLOBALS['__POST']["file_encoding"]; if ($content){ $content = mb_convert_encoding($content, "UTF-8", $_encoding); } $extra["file_encoding"] = $_encoding; } $extra["content"] = $content; ext_Result::sendResult('edit', true, ext_Lang::msg('reopenfile').': '.$item, $extra); } // header $s_item=get_rel_item($dir,$item); if(strlen($s_item)>50) $s_item="...".substr($s_item,-47); $id_hash = substr('f'.md5($s_item),0, 10); $s_info = pathinfo( $s_item ); $s_extension = str_replace('.', '', $s_info['extension'] ); switch (strtolower($s_extension)) { case 'txt': $cp_lang = 'text'; break; case 'cs': $cp_lang = 'csharp'; break; case 'css': $cp_lang = 'css'; break; case 'html': case 'htm': case 'xhtml': $cp_lang = 'html'; break; case 'java': $cp_lang = 'java'; break; case 'js': $cp_lang = 'js'; break; case 'pl': $cp_lang = 'perl'; break; case 'py': $cp_lang = 'python'; break; case 'ruby': $cp_lang = 'ruby'; break; case 'sql': $cp_lang = 'sql'; break; case 'vb': case 'vbs': $cp_lang = 'vb'; break; case 'php': $cp_lang = 'php'; break; case 'xml': $cp_lang = 'xml'; break; default: $cp_lang = ''; } $content = $GLOBALS['ext_File']->file_get_contents( $fname ); if( get_magic_quotes_runtime()) { $content = stripslashes( $content ); } $cw = 250; $langs = $GLOBALS["language"]; if ($langs == "japanese"){ $cw = 200; if ($content){ $_encoding = strtoupper(mb_detect_encoding($content, Array("ASCII", "ISO-2022-JP", "UTF-8", "EUCJP-WIN", "SJIS-WIN"), true)); $content = mb_convert_encoding($content, "UTF-8", $_encoding); if ($_encoding == "SJIS-WIN"){ $_encoding_label = "SJIS"; } elseif ($_encoding == "EUCJP-WIN"){ $_encoding_label = "EUC-JP"; } elseif ($_encoding == "ISO-2022-JP"){ $_encoding_label = "JIS"; } elseif ($_encoding == "ASCII"){ $_encoding_label = "UTF-8"; } else { $_encoding_label = $_encoding; } } else { $_encoding_label = "UTF-8"; } } ?> { "xtype": "form", "id": "<?php echo $id_hash ?>", "labelWidth": "300", "autoScroll": "true", "url":"<?php echo basename( $GLOBALS['script_name']) ?>", "title": "<?php echo strlen($s_item) > 50 ? substr( htmlentities($s_item,ENT_QUOTES), strlen($s_item)-30, 30 ) : htmlentities($s_item,ENT_QUOTES); ?>", "frame": "true", "closable": "true", "tbar": [{ "text": "<?php echo ext_Lang::msg('btnsave', true ) ?>", "handler": function() { statusBarMessage( '<?php echo ext_Lang::msg('save_processing', true ) ?>', true ); form = Ext.getCmp("<?php echo $id_hash ?>").getForm(); form.submit({ waitMsg: 'Saving the File, please wait...', reset: false, success: function(form, action) { datastore.reload(); statusBarMessage( action.result.message, false, true ); }, failure: function(form, action) { statusBarMessage( action.result.error, false, false ); Ext.Msg.alert('<?php echo ext_Lang::err('error', true) ?>!', action.result.error); }, scope: form, // add some vars to the request, similar to hidden fields params: {option: 'com_extplorer', action: 'edit', code: editAreaLoader.getValue("ext_codefield<?php echo $id_hash ?>"), dir: '<?php echo stripslashes($dir) ?>', item: '<?php echo stripslashes($item) ?>', dosave: 'yes', token: "<?php echo ext_getToken() ?>" } }); }, "cls":"x-btn-text-icon", "icon": "<?php echo _EXT_URL ?>/images/_save.png" },{ "text": "<?php echo ext_Lang::msg('btnreopen', true ) ?>", "handler": function() { statusBarMessage( '<?php echo ext_Lang::msg('reopen_processing', true ) ?>', true ); form = Ext.getCmp("<?php echo $id_hash ?>").getForm(); form.submit({ waitMsg: 'Processing Data, please wait...', reset: false, success: function(form, action) { statusBarMessage( action.result.message, false, true ); editAreaLoader.setValue("ext_codefield<?php echo $id_hash ?>", action.result.content); }, failure: function(form, action) { statusBarMessage( action.result.error, false, false ); Ext.Msg.alert('<?php echo ext_Lang::err('error', true) ?>!', action.result.error); }, scope: form, // add some vars to the request, similar to hidden fields params: { option: 'com_extplorer', action: 'edit', dir: '<?php echo stripslashes($dir) ?>', item: '<?php echo stripslashes($item) ?>', doreopen: 'yes', token: "<?php echo ext_getToken() ?>" } }); }, "cls":"x-btn-text-icon", "icon": "<?php echo _EXT_URL ?>/images/_reload.png" }, { "text": "<?php echo ext_Lang::msg('btncancel', true ) ?>", "handler": function() { Ext.getCmp("mainpanel").remove( Ext.getCmp("mainpanel").getActiveTab() ); }, "cls":"x-btn-text-icon", "icon": "<?php echo _EXT_URL ?>/images/_cancel.png" }], "items": [{ "xtype": "displayfield", "value": "<?php echo $GLOBALS["messages"]["actedit"].': '.htmlentities($s_item,ENT_QUOTES) ?>" }, { "xtype": "textarea", "hideLabel": true, "name": "thecode", "id": "ext_codefield<?php echo $id_hash ?>", "fieldClass": "x-form-field", "value": "<?php echo str_replace(Array("\r", "\n"), Array( '\r', '\n') , addslashes($content)) ?>", "width": "100%", "height": 500, "plugins": new Ext.ux.plugins.EditAreaEditor({ "id" : "ext_codefield<?php echo $id_hash ?>", "syntax": "<?php echo $cp_lang ?>", "start_highlight": true, "display": "later", "toolbar": "search, go_to_line, |, undo, redo, |, select_font,|, change_smooth_selection, highlight, reset_highlight, |, help" <?php if (array_key_exists($langs, $this->lang_tbl)){?> ,"language": "<?php echo $this->lang_tbl[$langs] ?>" <?php } ?> }) }, { "width": "<?php echo $cw ?>", "xtype": "textfield", "fieldLabel": "<?php echo ext_Lang::msg('copyfile', true ) ?>", "name": "fname", "value": "<?php echo addslashes($item) ?>", "clear": "true" } <?php if ($langs == "japanese"){ ?> ,{ "width": "<?php echo $cw ?>", "style":"margin-left:10px", "clear":"true", "xtype": "combo", "fieldLabel": "<?php echo ext_Lang::msg('fileencoding', true ) ?>", "name": "file_encoding", "store": [ ["UTF-8", "UTF-8"], ["SJIS-WIN", "SJIS"], ["EUCJP-WIN", "EUC-JP"], ["ISO-2022-JP","JIS"] ], "value" : "<?php echo $_encoding_label ?>", "typeAhead": "true", "mode": "local", "triggerAction": "all", "editable": "false", "forceSelection": "true" } <?php } ?> ] } <?php } function savefile($file_name) { // save edited file if( get_magic_quotes_gpc() ) { $code = stripslashes($GLOBALS['__POST']["code"]); } else { $code = $GLOBALS['__POST']["code"]; } $langs = $GLOBALS["language"]; if ($langs == "japanese"){ $_encoding = $GLOBALS['__POST']["file_encoding"]; if ($_encoding != "UTF-8"){ $code = mb_convert_encoding($code, $_encoding, "UTF-8"); } } $res = $GLOBALS['ext_File']->file_put_contents( $file_name, $code ); if( $res==false || PEAR::isError( $res )) { $err = basename($file_name).": ".ext_Lang::err('savefile' ); if( PEAR::isError( $res ) ) { $err .= $res->getMessage(); } ext_Result::sendResult( 'edit', false, $err ); } } } //------------------------------------------------------------------------------ ?>