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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/string-l.../includes
File: class-string-locator.php
'string_locator',
[500] Fix | Delete
array(
[501] Fix | Delete
'CodeMirror' => $code_mirror,
[502] Fix | Delete
'goto_line' => ( isset( $_GET['string-locator-line'] ) ? absint( $_GET['string-locator-line'] ) : 0 ),
[503] Fix | Delete
'goto_linepos' => ( isset( $_GET['string-locator-linepos'] ) ? absint( $_GET['string-locator-linepos'] ) : 0 ),
[504] Fix | Delete
'url' => array(
[505] Fix | Delete
'save' => get_rest_url( null, 'string-locator/v1/save' ),
[506] Fix | Delete
),
[507] Fix | Delete
)
[508] Fix | Delete
);
[509] Fix | Delete
}
[510] Fix | Delete
}
[511] Fix | Delete
[512] Fix | Delete
/**
[513] Fix | Delete
* Add our plugin to the 'Tools' menu.
[514] Fix | Delete
*
[515] Fix | Delete
* @return void
[516] Fix | Delete
*/
[517] Fix | Delete
function populate_menu() {
[518] Fix | Delete
// if ( is_multisite() ) {
[519] Fix | Delete
// return;
[520] Fix | Delete
// }
[521] Fix | Delete
$page_title = __( 'String Locator', 'string-locator' );
[522] Fix | Delete
$menu_title = __( 'String Locator', 'string-locator' );
[523] Fix | Delete
$capability = 'install_plugins';
[524] Fix | Delete
$parent_slug = 'tools.php';
[525] Fix | Delete
$menu_slug = 'string-locator';
[526] Fix | Delete
$function = array( $this, 'options_page' );
[527] Fix | Delete
[528] Fix | Delete
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
[529] Fix | Delete
}
[530] Fix | Delete
[531] Fix | Delete
/**
[532] Fix | Delete
* Add our plugin to the main menu in the Network Admin.
[533] Fix | Delete
*
[534] Fix | Delete
* @return void
[535] Fix | Delete
*/
[536] Fix | Delete
function populate_network_menu() {
[537] Fix | Delete
$page_title = __( 'String Locator', 'string-locator' );
[538] Fix | Delete
$menu_title = __( 'String Locator', 'string-locator' );
[539] Fix | Delete
$capability = 'install_plugins';
[540] Fix | Delete
$menu_slug = 'string-locator';
[541] Fix | Delete
$function = array( $this, 'options_page' );
[542] Fix | Delete
[543] Fix | Delete
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, 'dashicons-edit' );
[544] Fix | Delete
}
[545] Fix | Delete
[546] Fix | Delete
/**
[547] Fix | Delete
* Function for including the actual plugin Admin UI page.
[548] Fix | Delete
*
[549] Fix | Delete
* @return mixed
[550] Fix | Delete
*/
[551] Fix | Delete
function options_page() {
[552] Fix | Delete
/**
[553] Fix | Delete
* Don't load anything if the user can't edit themes any way
[554] Fix | Delete
*/
[555] Fix | Delete
if ( ! current_user_can( 'edit_users' ) ) {
[556] Fix | Delete
return false;
[557] Fix | Delete
}
[558] Fix | Delete
[559] Fix | Delete
$include_path = '';
[560] Fix | Delete
[561] Fix | Delete
/**
[562] Fix | Delete
* Show the edit page if;
[563] Fix | Delete
* - The edit file path query var is set
[564] Fix | Delete
* - The edit file path query var isn't empty
[565] Fix | Delete
* - The edit file path query var does not contains double dots (used to traverse directories)
[566] Fix | Delete
* - The user is capable of editing files.
[567] Fix | Delete
*/
[568] Fix | Delete
if ( isset( $_GET['string-locator-path'] ) && self::is_valid_location( $_GET['string-locator-path'] ) && current_user_can( String_Locator::$default_capability ) ) {
[569] Fix | Delete
$include_path = trailingslashit( STRING_LOCATOR_PLUGIN_DIR ) . 'views/editors/default.php';
[570] Fix | Delete
} else {
[571] Fix | Delete
$include_path = trailingslashit( STRING_LOCATOR_PLUGIN_DIR ) . 'views/search.php';
[572] Fix | Delete
}
[573] Fix | Delete
[574] Fix | Delete
$include_path = apply_filters( 'string_locator_view', $include_path );
[575] Fix | Delete
[576] Fix | Delete
if ( ! empty( $include_path ) ) {
[577] Fix | Delete
include_once $include_path;
[578] Fix | Delete
}
[579] Fix | Delete
}
[580] Fix | Delete
[581] Fix | Delete
function admin_body_class( $class ) {
[582] Fix | Delete
if ( isset( $_GET['string-locator-path'] ) && self::is_valid_location( $_GET['string-locator-path'] ) && current_user_can( String_Locator::$default_capability ) ) {
[583] Fix | Delete
$class .= ' file-edit-screen';
[584] Fix | Delete
}
[585] Fix | Delete
[586] Fix | Delete
return $class;
[587] Fix | Delete
}
[588] Fix | Delete
[589] Fix | Delete
/**
[590] Fix | Delete
* Hook the admin notices and loop over any notices we've registered in the plugin.
[591] Fix | Delete
*
[592] Fix | Delete
* @return void
[593] Fix | Delete
*/
[594] Fix | Delete
function admin_notice() {
[595] Fix | Delete
if ( ! empty( $this->notice ) ) {
[596] Fix | Delete
foreach ( $this->notice as $note ) {
[597] Fix | Delete
printf(
[598] Fix | Delete
'<div class="%s"><p>%s</p></div>',
[599] Fix | Delete
esc_attr( $note['type'] ),
[600] Fix | Delete
$note['message']
[601] Fix | Delete
);
[602] Fix | Delete
}
[603] Fix | Delete
}
[604] Fix | Delete
}
[605] Fix | Delete
[606] Fix | Delete
/**
[607] Fix | Delete
* Check if a file path is valid for editing.
[608] Fix | Delete
*
[609] Fix | Delete
* @param string $path Path to file.
[610] Fix | Delete
*
[611] Fix | Delete
* @return bool
[612] Fix | Delete
*/
[613] Fix | Delete
public static function is_valid_location( $path ) {
[614] Fix | Delete
$path = str_replace( array( '/' ), array( DIRECTORY_SEPARATOR ), stripslashes( $path ) );
[615] Fix | Delete
$abspath = str_replace( array( '/' ), array( DIRECTORY_SEPARATOR ), ABSPATH );
[616] Fix | Delete
[617] Fix | Delete
/*
[618] Fix | Delete
* Check that the ABSPath is the start of the path.
[619] Fix | Delete
* This helps ensure that no protocol triggers can be used as part of the file path.
[620] Fix | Delete
*/
[621] Fix | Delete
if ( substr( $path, 0, strlen( $abspath ) ) !== $abspath ) {
[622] Fix | Delete
return false;
[623] Fix | Delete
}
[624] Fix | Delete
[625] Fix | Delete
// Check that it is a valid file we are trying to access as well.
[626] Fix | Delete
if ( ! file_exists( $path ) ) {
[627] Fix | Delete
return false;
[628] Fix | Delete
}
[629] Fix | Delete
[630] Fix | Delete
if ( empty( $path ) ) {
[631] Fix | Delete
return false;
[632] Fix | Delete
}
[633] Fix | Delete
if ( stristr( $path, '..' ) ) {
[634] Fix | Delete
return false;
[635] Fix | Delete
}
[636] Fix | Delete
[637] Fix | Delete
return true;
[638] Fix | Delete
}
[639] Fix | Delete
[640] Fix | Delete
public static function create_preview( $string_preview, $string, $regex = false ) {
[641] Fix | Delete
/**
[642] Fix | Delete
* Define class variables requiring expressions
[643] Fix | Delete
*/
[644] Fix | Delete
$excerpt_length = apply_filters( 'string_locator_excerpt_length', 25 );
[645] Fix | Delete
[646] Fix | Delete
$string_preview_is_cut = false;
[647] Fix | Delete
[648] Fix | Delete
if ( strlen( $string_preview ) > ( strlen( $string ) + $excerpt_length ) ) {
[649] Fix | Delete
$string_location = strpos( $string_preview, $string );
[650] Fix | Delete
[651] Fix | Delete
$string_location_start = $string_location - $excerpt_length;
[652] Fix | Delete
if ( $string_location_start < 0 ) {
[653] Fix | Delete
$string_location_start = 0;
[654] Fix | Delete
}
[655] Fix | Delete
[656] Fix | Delete
$string_location_end = ( strlen( $string ) + ( $excerpt_length * 2 ) );
[657] Fix | Delete
if ( $string_location_end > strlen( $string_preview ) ) {
[658] Fix | Delete
$string_location_end = strlen( $string_preview );
[659] Fix | Delete
}
[660] Fix | Delete
[661] Fix | Delete
$string_preview = substr( $string_preview, $string_location_start, $string_location_end );
[662] Fix | Delete
$string_preview_is_cut = true;
[663] Fix | Delete
}
[664] Fix | Delete
[665] Fix | Delete
if ( $regex ) {
[666] Fix | Delete
$string_preview = preg_replace( preg_replace( '/\/(.+)\//', '/($1)/', $string ), '<strong>$1</strong>', esc_html( $string_preview ) );
[667] Fix | Delete
} else {
[668] Fix | Delete
$string_preview = preg_replace( '/(' . preg_quote( $string, '/' ) . ')/i', '<strong>$1</strong>', esc_html( $string_preview ) );
[669] Fix | Delete
}
[670] Fix | Delete
if ( $string_preview_is_cut ) {
[671] Fix | Delete
$string_preview = sprintf(
[672] Fix | Delete
'&hellip;%s&hellip;',
[673] Fix | Delete
$string_preview
[674] Fix | Delete
);
[675] Fix | Delete
}
[676] Fix | Delete
[677] Fix | Delete
return $string_preview;
[678] Fix | Delete
}
[679] Fix | Delete
}
[680] Fix | Delete
[681] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function