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/wp-conte.../plugins/advanced.../modules/import-e.../classes
File: import.php
}
[500] Fix | Delete
[501] Fix | Delete
return (int) $found;
[502] Fix | Delete
}
[503] Fix | Delete
[504] Fix | Delete
/**
[505] Fix | Delete
* Create new options based on import information.
[506] Fix | Delete
*
[507] Fix | Delete
* @param array $decoded decoded XML.
[508] Fix | Delete
*/
[509] Fix | Delete
private function import_options( &$decoded ) {
[510] Fix | Delete
if ( isset( $decoded['options'] ) && is_array( $decoded['options'] ) ) {
[511] Fix | Delete
foreach ( $decoded['options'] as $option_name => $imported_option ) {
[512] Fix | Delete
// Ignore options not belonging to advanced ads.
[513] Fix | Delete
if (
[514] Fix | Delete
0 !== strpos( $option_name, 'advads-' )
[515] Fix | Delete
&& 0 !== strpos( $option_name, 'advads_' )
[516] Fix | Delete
&& 0 !== strpos( $option_name, 'advanced-ads' )
[517] Fix | Delete
&& 0 !== strpos( $option_name, 'advanced_ads' )
[518] Fix | Delete
) {
[519] Fix | Delete
continue;
[520] Fix | Delete
}
[521] Fix | Delete
[522] Fix | Delete
$existing_option = get_option( $option_name, [] );
[523] Fix | Delete
[524] Fix | Delete
if ( ! is_array( $imported_option ) ) {
[525] Fix | Delete
$imported_option = [];
[526] Fix | Delete
}
[527] Fix | Delete
if ( ! is_array( $existing_option ) ) {
[528] Fix | Delete
$existing_option = [];
[529] Fix | Delete
}
[530] Fix | Delete
[531] Fix | Delete
$option_to_import = array_merge( $existing_option, $imported_option );
[532] Fix | Delete
[533] Fix | Delete
/* translators: %s: Option name. */
[534] Fix | Delete
$this->messages[] = [ 'update', sprintf( __( 'Option was updated: <em>%s</em>', 'advanced-ads' ), $option_name ) ];
[535] Fix | Delete
update_option( $option_name, WordPress::maybe_unserialize( $option_to_import ) );
[536] Fix | Delete
}
[537] Fix | Delete
}
[538] Fix | Delete
}
[539] Fix | Delete
[540] Fix | Delete
/**
[541] Fix | Delete
* Handles the XML upload
[542] Fix | Delete
*
[543] Fix | Delete
* @return bool false if error, true otherwise
[544] Fix | Delete
*/
[545] Fix | Delete
private function handle_upload() {
[546] Fix | Delete
$uploads_dir = wp_upload_dir();
[547] Fix | Delete
if ( ! empty( $uploads_dir['error'] ) ) {
[548] Fix | Delete
$this->messages[] = [ 'error', $uploads_dir['error'] ];
[549] Fix | Delete
return;
[550] Fix | Delete
}
[551] Fix | Delete
[552] Fix | Delete
$import_dir = $uploads_dir['basedir'] . '/advads-import';
[553] Fix | Delete
$this->import_id = $import_dir . '/' . md5( time() . NONCE_SALT );
[554] Fix | Delete
[555] Fix | Delete
if ( ! is_dir( $import_dir) && ! wp_mkdir_p( $import_dir ) ) {
[556] Fix | Delete
/* translators: %s import directory */
[557] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Failed to create import directory <em>%s</em>', 'advanced-ads' ), $import_dir ) ];
[558] Fix | Delete
return;
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
if ( ! is_writable( $import_dir ) ) {
[562] Fix | Delete
/* translators: %s import directory */
[563] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Import directory is not writable: <em>%s</em>', 'advanced-ads' ), $import_dir ) ];
[564] Fix | Delete
return;
[565] Fix | Delete
}
[566] Fix | Delete
[567] Fix | Delete
if ( ! @file_exists( $import_dir . '/index.php') ) {
[568] Fix | Delete
@touch( $import_dir . '/index.php' );
[569] Fix | Delete
}
[570] Fix | Delete
[571] Fix | Delete
if ( ! isset( $_FILES['import'] ) ) {
[572] Fix | Delete
$this->messages[] = [ 'error', __( 'File is empty, uploads are disabled or post_max_size is smaller than upload_max_filesize in php.ini', 'advanced-ads' ) ];
[573] Fix | Delete
return;
[574] Fix | Delete
}
[575] Fix | Delete
[576] Fix | Delete
$file = $_FILES['import'];
[577] Fix | Delete
[578] Fix | Delete
// determine if uploaded file exceeds space quota.
[579] Fix | Delete
$file = apply_filters( 'wp_handle_upload_prefilter', $file );
[580] Fix | Delete
[581] Fix | Delete
if ( ! empty( $file['error'] ) ) {
[582] Fix | Delete
/* translators: %s error in file */
[583] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Failed to upload file, error: <em>%s</em>', 'advanced-ads' ), $file['error'] ) ];
[584] Fix | Delete
return;
[585] Fix | Delete
}
[586] Fix | Delete
[587] Fix | Delete
if ( ! ( $file['size'] > 0 ) ) {
[588] Fix | Delete
$this->messages[] = [ 'error', __( 'File is empty.', 'advanced-ads' ), $file['error'] ];
[589] Fix | Delete
return;
[590] Fix | Delete
}
[591] Fix | Delete
[592] Fix | Delete
if ( ! is_uploaded_file( $file['tmp_name'] ) || ! @ move_uploaded_file( $file['tmp_name'], $this->import_id ) || ! is_readable( $this->import_id ) ) {
[593] Fix | Delete
/* translators: %s import id */
[594] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'The file could not be created: <em>%s</em>. This is probably a permissions problem', 'advanced-ads' ), $this->import_id ) ];
[595] Fix | Delete
return;
[596] Fix | Delete
}
[597] Fix | Delete
[598] Fix | Delete
// Set correct file permissions.
[599] Fix | Delete
$stat = stat( dirname( $import_dir ) );
[600] Fix | Delete
$perms = $stat['mode'] & 0000666;
[601] Fix | Delete
@ chmod( $this->import_id, $perms );
[602] Fix | Delete
[603] Fix | Delete
// cleanup in case of failed import.
[604] Fix | Delete
wp_schedule_single_event( time() + 10 * MINUTE_IN_SECONDS, 'advanced-ads-cleanup-import-file', [ $this->import_id ] );
[605] Fix | Delete
[606] Fix | Delete
return true;
[607] Fix | Delete
}
[608] Fix | Delete
[609] Fix | Delete
/**
[610] Fix | Delete
* Ad content manipulations
[611] Fix | Delete
*
[612] Fix | Delete
* @param string $content Content.
[613] Fix | Delete
*
[614] Fix | Delete
* @return string $content
[615] Fix | Delete
*/
[616] Fix | Delete
private function process_ad_content( $content ) {
[617] Fix | Delete
$replacement_map = [];
[618] Fix | Delete
[619] Fix | Delete
if ( preg_match_all( '/\<advads_import_img\>(\S+?)\<\/advads_import_img\>/i', $content, $matches ) ) {
[620] Fix | Delete
foreach ( $matches[1] as $k => $url ) {
[621] Fix | Delete
if ( isset( $this->created_attachments[ $url ] ) ) {
[622] Fix | Delete
$replacement_map[ $url ] = $this->created_attachments[ $url ]['attachment_url'];
[623] Fix | Delete
} else if ( $attachment = $this->upload_image_from_url( $url ) ) {
[624] Fix | Delete
$link = ( $link = get_attachment_link( $attachment['post_id'] ) ) ? sprintf( '<a href="%s">%s</a>', esc_url( $link ), __( 'Edit', 'advanced-ads' ) ) : '';
[625] Fix | Delete
/* translators: 1: Attachment ID 2: Attachment link */
[626] Fix | Delete
$this->messages[] = [ 'update', sprintf( __( 'New attachment created <em>%1$s</em> %2$s', 'advanced-ads' ), $attachment['post_id'], $link ) ];
[627] Fix | Delete
$this->created_attachments[ $url ] = $attachment;
[628] Fix | Delete
$replacement_map[ $url ] = $attachment['attachment_url'];
[629] Fix | Delete
}
[630] Fix | Delete
}
[631] Fix | Delete
}
[632] Fix | Delete
[633] Fix | Delete
$content = str_replace( [ '<advads_import_img>', '</advads_import_img>' ], '', $content );
[634] Fix | Delete
[635] Fix | Delete
if ( count( $replacement_map ) ) {
[636] Fix | Delete
$content = str_replace( array_keys( $replacement_map ), array_values( $replacement_map ), $content );
[637] Fix | Delete
}
[638] Fix | Delete
[639] Fix | Delete
return $this->replace_placeholders( $content );
[640] Fix | Delete
}
[641] Fix | Delete
[642] Fix | Delete
/**
[643] Fix | Delete
* Replace placeholders
[644] Fix | Delete
*
[645] Fix | Delete
* @param string $content The content.
[646] Fix | Delete
*
[647] Fix | Delete
* @return string with replaced placeholders
[648] Fix | Delete
*/
[649] Fix | Delete
private function replace_placeholders( $content ) {
[650] Fix | Delete
$content = str_replace( '{ADVADS_BASE_URL}', ADVADS_BASE_URL, $content );
[651] Fix | Delete
return $content;
[652] Fix | Delete
}
[653] Fix | Delete
[654] Fix | Delete
/**
[655] Fix | Delete
* Upload image from URL and create attachment
[656] Fix | Delete
*
[657] Fix | Delete
* @param string $image_url Image url.
[658] Fix | Delete
* @return array with indices: post_id, attachment_url, false on failure
[659] Fix | Delete
*/
[660] Fix | Delete
private function upload_image_from_url( $image_url ) {
[661] Fix | Delete
$file_name = basename( current( explode( '?', $image_url ) ) );
[662] Fix | Delete
$wp_filetype = wp_check_filetype( $file_name, null );
[663] Fix | Delete
$parsed_url = @parse_url( $image_url );
[664] Fix | Delete
$image_url = str_replace( ' ', '%20', $image_url );
[665] Fix | Delete
[666] Fix | Delete
if ( ! $wp_filetype['type'] ) {
[667] Fix | Delete
/* translators: %s image url */
[668] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Invalid filetype <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[669] Fix | Delete
return false;
[670] Fix | Delete
}
[671] Fix | Delete
[672] Fix | Delete
if ( ! $parsed_url || ! is_array( $parsed_url ) ) {
[673] Fix | Delete
/* translators: %s image url */
[674] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Error getting remote image <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[675] Fix | Delete
return false;
[676] Fix | Delete
}
[677] Fix | Delete
[678] Fix | Delete
$response = wp_safe_remote_get( $image_url, [ 'timeout' => 20 ] );
[679] Fix | Delete
[680] Fix | Delete
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
[681] Fix | Delete
/* translators: %s image url */
[682] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Error getting remote image <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[683] Fix | Delete
return false;
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
// Upload the file.
[687] Fix | Delete
$upload = wp_upload_bits( $file_name, '', wp_remote_retrieve_body( $response ) );
[688] Fix | Delete
[689] Fix | Delete
if ( $upload['error'] ) {
[690] Fix | Delete
/* translators: %s image url */
[691] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Error getting remote image <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[692] Fix | Delete
return false;
[693] Fix | Delete
}
[694] Fix | Delete
[695] Fix | Delete
// Get filesize.
[696] Fix | Delete
$filesize = filesize( $upload['file'] );
[697] Fix | Delete
[698] Fix | Delete
if ( 0 == $filesize ) {
[699] Fix | Delete
@unlink( $upload['file'] );
[700] Fix | Delete
/* translators: %s image url */
[701] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Zero size file downloaded <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[702] Fix | Delete
return false;
[703] Fix | Delete
}
[704] Fix | Delete
[705] Fix | Delete
/**
[706] Fix | Delete
* Get allowed image mime types.
[707] Fix | Delete
*
[708] Fix | Delete
* @var string Single mime type.
[709] Fix | Delete
*/
[710] Fix | Delete
$mime_types = array_filter( get_allowed_mime_types(), function( $mime_type ) {
[711] Fix | Delete
return preg_match( '/image\//', $mime_type );
[712] Fix | Delete
} );
[713] Fix | Delete
$fileinfo = @getimagesize( $upload['file'] );
[714] Fix | Delete
[715] Fix | Delete
if ( ! $fileinfo || ! in_array( $fileinfo['mime'], $mime_types, true ) ) {
[716] Fix | Delete
@unlink( $upload['file'] );
[717] Fix | Delete
/* translators: %s image url */
[718] Fix | Delete
$this->messages[] = [ 'error', sprintf( __( 'Error getting remote image <em>%s</em>', 'advanced-ads' ), $image_url ) ];
[719] Fix | Delete
[720] Fix | Delete
return false;
[721] Fix | Delete
}
[722] Fix | Delete
[723] Fix | Delete
// create new post
[724] Fix | Delete
$new_post = [
[725] Fix | Delete
'post_title' => $file_name,
[726] Fix | Delete
'post_mime_type' => $wp_filetype['type'],
[727] Fix | Delete
'guid' => $upload['url'],
[728] Fix | Delete
];
[729] Fix | Delete
[730] Fix | Delete
if ( ! function_exists( 'wp_generate_attachment_metadata' ) ) {
[731] Fix | Delete
require_once( ABSPATH . 'wp-admin/includes/image.php' );
[732] Fix | Delete
}
[733] Fix | Delete
[734] Fix | Delete
$post_id = wp_insert_attachment( $new_post, $upload['file'] );
[735] Fix | Delete
wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) );
[736] Fix | Delete
[737] Fix | Delete
return [ 'post_id' => $post_id, 'attachment_url' => wp_get_attachment_url( $post_id ) ];
[738] Fix | Delete
}
[739] Fix | Delete
[740] Fix | Delete
public function get_messages() {
[741] Fix | Delete
return $this->messages;
[742] Fix | Delete
}
[743] Fix | Delete
}
[744] Fix | Delete
[745] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function