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.../themes/Divi/core/componen...
File: Portability.php
);
[1000] Fix | Delete
}
[1001] Fix | Delete
}
[1002] Fix | Delete
[1003] Fix | Delete
[1004] Fix | Delete
// Merge existing Global Presets with imported ones
[1005] Fix | Delete
foreach ( $presets_to_import as $module_type => $module_presets ) {
[1006] Fix | Delete
foreach ( $module_presets['presets'] as $preset_id => $preset ) {
[1007] Fix | Delete
$global_presets->$module_type->presets->$preset_id = (object) array();
[1008] Fix | Delete
$global_presets->$module_type->presets->$preset_id->name = sanitize_text_field( $preset['name'] );
[1009] Fix | Delete
$global_presets->$module_type->presets->$preset_id->created = $preset['created'];
[1010] Fix | Delete
$global_presets->$module_type->presets->$preset_id->updated = $preset['updated'];
[1011] Fix | Delete
$global_presets->$module_type->presets->$preset_id->version = $preset['version'];
[1012] Fix | Delete
$global_presets->$module_type->presets->$preset_id->settings = (object) array();
[1013] Fix | Delete
[1014] Fix | Delete
foreach ( $preset['settings'] as $setting_name => $value ) {
[1015] Fix | Delete
$setting_name_sanitized = sanitize_text_field( $setting_name );
[1016] Fix | Delete
$value_sanitized = sanitize_text_field( $value );
[1017] Fix | Delete
[1018] Fix | Delete
$global_presets->$module_type->presets->$preset_id->settings->$setting_name_sanitized = $value_sanitized;
[1019] Fix | Delete
}
[1020] Fix | Delete
}
[1021] Fix | Delete
}
[1022] Fix | Delete
[1023] Fix | Delete
et_update_option( ET_Builder_Global_Presets_Settings::GLOBAL_PRESETS_OPTION, $global_presets );
[1024] Fix | Delete
[1025] Fix | Delete
$global_presets_history = ET_Builder_Global_Presets_History::instance();
[1026] Fix | Delete
$global_presets_history->add_global_history_record( $global_presets );
[1027] Fix | Delete
[1028] Fix | Delete
return true;
[1029] Fix | Delete
}
[1030] Fix | Delete
[1031] Fix | Delete
/**
[1032] Fix | Delete
* Import post.
[1033] Fix | Delete
*
[1034] Fix | Delete
* @since 2.7.0
[1035] Fix | Delete
*
[1036] Fix | Delete
* @param array $posts Array of data formatted by the portability exporter.
[1037] Fix | Delete
*
[1038] Fix | Delete
* @return bool
[1039] Fix | Delete
*/
[1040] Fix | Delete
protected function import_posts( $posts ) {
[1041] Fix | Delete
/**
[1042] Fix | Delete
* Filters the array of builder layouts to import. Returning an empty value will
[1043] Fix | Delete
* short-circuit the import process.
[1044] Fix | Delete
*
[1045] Fix | Delete
* @since 3.0.99
[1046] Fix | Delete
*
[1047] Fix | Delete
* @param array $posts
[1048] Fix | Delete
*/
[1049] Fix | Delete
$posts = apply_filters( 'et_core_portability_import_posts', $posts );
[1050] Fix | Delete
[1051] Fix | Delete
if ( empty( $posts ) ) {
[1052] Fix | Delete
return false;
[1053] Fix | Delete
}
[1054] Fix | Delete
[1055] Fix | Delete
foreach ( $posts as $post ) {
[1056] Fix | Delete
if ( isset( $post['post_status'] ) && 'auto-draft' === $post['post_status'] ) {
[1057] Fix | Delete
continue;
[1058] Fix | Delete
}
[1059] Fix | Delete
[1060] Fix | Delete
$fields_validatation = array(
[1061] Fix | Delete
'ID' => 'intval',
[1062] Fix | Delete
'post_title' => 'sanitize_text_field',
[1063] Fix | Delete
'post_type' => 'sanitize_text_field',
[1064] Fix | Delete
);
[1065] Fix | Delete
[1066] Fix | Delete
if ( ! $post = $this->validate( $post, $fields_validatation ) ) {
[1067] Fix | Delete
continue;
[1068] Fix | Delete
}
[1069] Fix | Delete
[1070] Fix | Delete
$layout_exists = self::layout_exists( $post['post_title'], $post['post_name'] );
[1071] Fix | Delete
[1072] Fix | Delete
if ( $layout_exists && get_post_type( $layout_exists ) === $post['post_type'] ) {
[1073] Fix | Delete
// Make sure the post is published.
[1074] Fix | Delete
if ( 'publish' !== get_post_status( $layout_exists ) ) {
[1075] Fix | Delete
wp_update_post( array(
[1076] Fix | Delete
'ID' => intval( $layout_exists ),
[1077] Fix | Delete
'post_status' => 'publish',
[1078] Fix | Delete
) );
[1079] Fix | Delete
}
[1080] Fix | Delete
[1081] Fix | Delete
continue;
[1082] Fix | Delete
}
[1083] Fix | Delete
[1084] Fix | Delete
$post['import_id'] = $post['ID'];
[1085] Fix | Delete
unset( $post['ID'] );
[1086] Fix | Delete
[1087] Fix | Delete
$post['post_author'] = (int) get_current_user_id();
[1088] Fix | Delete
[1089] Fix | Delete
// Insert or update post.
[1090] Fix | Delete
$post_id = wp_insert_post( $post, true );
[1091] Fix | Delete
[1092] Fix | Delete
if ( ! $post_id || is_wp_error( $post_id ) ) {
[1093] Fix | Delete
continue;
[1094] Fix | Delete
}
[1095] Fix | Delete
[1096] Fix | Delete
// Insert and set terms.
[1097] Fix | Delete
if ( isset( $post['terms'] ) && is_array( $post['terms'] ) ) {
[1098] Fix | Delete
$processed_terms = array();
[1099] Fix | Delete
[1100] Fix | Delete
foreach ( $post['terms'] as $term ) {
[1101] Fix | Delete
$fields_validatation = array(
[1102] Fix | Delete
'name' => 'sanitize_text_field',
[1103] Fix | Delete
'slug' => 'sanitize_title',
[1104] Fix | Delete
'taxonomy' => 'sanitize_title',
[1105] Fix | Delete
'parent' => 'sanitize_title',
[1106] Fix | Delete
'description' => 'wp_kses_post',
[1107] Fix | Delete
);
[1108] Fix | Delete
[1109] Fix | Delete
if ( ! $term = $this->validate( $term, $fields_validatation ) ) {
[1110] Fix | Delete
continue;
[1111] Fix | Delete
}
[1112] Fix | Delete
[1113] Fix | Delete
if ( empty( $term['parent'] ) ) {
[1114] Fix | Delete
$parent = 0;
[1115] Fix | Delete
} else {
[1116] Fix | Delete
if ( isset( $term['all_parents'] ) && ! empty( $term['all_parents'] ) ) {
[1117] Fix | Delete
$this->restore_parent_categories( $term['all_parents'], $term['taxonomy'] );
[1118] Fix | Delete
}
[1119] Fix | Delete
[1120] Fix | Delete
$parent = term_exists( $term['parent'], $term['taxonomy'] );
[1121] Fix | Delete
[1122] Fix | Delete
if ( is_array( $parent ) ){
[1123] Fix | Delete
$parent = $parent['term_id'];
[1124] Fix | Delete
}
[1125] Fix | Delete
}
[1126] Fix | Delete
[1127] Fix | Delete
if ( ! $insert = term_exists( $term['slug'], $term['taxonomy'] ) ) {
[1128] Fix | Delete
$insert = wp_insert_term( $term['name'], $term['taxonomy'], array(
[1129] Fix | Delete
'slug' => $term['slug'],
[1130] Fix | Delete
'description' => $term['description'],
[1131] Fix | Delete
'parent' => intval( $parent ),
[1132] Fix | Delete
) );
[1133] Fix | Delete
}
[1134] Fix | Delete
[1135] Fix | Delete
if ( is_array( $insert ) && ! is_wp_error( $insert ) ) {
[1136] Fix | Delete
$processed_terms[$term['taxonomy']][] = $term['slug'];
[1137] Fix | Delete
}
[1138] Fix | Delete
}
[1139] Fix | Delete
[1140] Fix | Delete
// Set post terms.
[1141] Fix | Delete
foreach ( $processed_terms as $taxonomy => $ids ) {
[1142] Fix | Delete
wp_set_object_terms( $post_id, $ids, $taxonomy );
[1143] Fix | Delete
}
[1144] Fix | Delete
}
[1145] Fix | Delete
[1146] Fix | Delete
// Insert or update post meta.
[1147] Fix | Delete
if ( isset( $post['post_meta'] ) && is_array( $post['post_meta'] ) ) {
[1148] Fix | Delete
foreach ( $post['post_meta'] as $meta_key => $meta ) {
[1149] Fix | Delete
[1150] Fix | Delete
$meta_key = sanitize_text_field( $meta_key );
[1151] Fix | Delete
[1152] Fix | Delete
if ( count( $meta ) < 2 ) {
[1153] Fix | Delete
$meta = wp_kses_post( $meta[0] );
[1154] Fix | Delete
} else {
[1155] Fix | Delete
$meta = array_map( 'wp_kses_post', $meta );
[1156] Fix | Delete
}
[1157] Fix | Delete
[1158] Fix | Delete
update_post_meta( $post_id, $meta_key, $meta );
[1159] Fix | Delete
}
[1160] Fix | Delete
}
[1161] Fix | Delete
}
[1162] Fix | Delete
[1163] Fix | Delete
return true;
[1164] Fix | Delete
}
[1165] Fix | Delete
[1166] Fix | Delete
/**
[1167] Fix | Delete
* Restore the categories hierarchy in library.
[1168] Fix | Delete
*
[1169] Fix | Delete
* @since 2.7.0
[1170] Fix | Delete
*
[1171] Fix | Delete
* @param array $parents_array Array of parent categories data.
[1172] Fix | Delete
* @param string $taxonomy
[1173] Fix | Delete
*/
[1174] Fix | Delete
protected function restore_parent_categories( $parents_array, $taxonomy ) {
[1175] Fix | Delete
foreach( $parents_array as $slug => $category_data ) {
[1176] Fix | Delete
$current_category = term_exists( $slug, $taxonomy );
[1177] Fix | Delete
[1178] Fix | Delete
if ( ! is_array( $current_category ) ) {
[1179] Fix | Delete
$parent_id = 0 !== $category_data['parent'] ? term_exists( $category_data['parent'], $taxonomy ) : 0;
[1180] Fix | Delete
wp_insert_term( $category_data['name'], $taxonomy, array(
[1181] Fix | Delete
'slug' => $slug,
[1182] Fix | Delete
'description' => $category_data['description'],
[1183] Fix | Delete
'parent' => is_array( $parent_id ) ? $parent_id['term_id'] : $parent_id,
[1184] Fix | Delete
) );
[1185] Fix | Delete
} else if ( ( ! isset( $current_category['parent'] ) || 0 === $current_category['parent'] ) && 0 !== $category_data['parent'] ) {
[1186] Fix | Delete
$parent_id = 0 !== $category_data['parent'] ? term_exists( $category_data['parent'], $taxonomy ) : 0;
[1187] Fix | Delete
wp_update_term( $current_category['term_id'], $taxonomy, array( 'parent' => is_array( $parent_id ) ? $parent_id['term_id'] : $parent_id ) );
[1188] Fix | Delete
}
[1189] Fix | Delete
}
[1190] Fix | Delete
}
[1191] Fix | Delete
[1192] Fix | Delete
/**
[1193] Fix | Delete
* Generates UUIDs for the presets to avoid collisions.
[1194] Fix | Delete
*
[1195] Fix | Delete
* @since 4.5.0
[1196] Fix | Delete
*
[1197] Fix | Delete
* @param array $global_presets - The Global Presets to be imported
[1198] Fix | Delete
*
[1199] Fix | Delete
* @return array - The list of module types for which preset ids have been changed
[1200] Fix | Delete
*/
[1201] Fix | Delete
public function prepare_to_import_layout_presets( &$global_presets ) {
[1202] Fix | Delete
$preset_rewrite_map = array();
[1203] Fix | Delete
$initial_preset_id = ET_Builder_Global_Presets_Settings::MODULE_INITIAL_PRESET_ID;
[1204] Fix | Delete
[1205] Fix | Delete
foreach ( $global_presets as $component_type => &$component_presets ) {
[1206] Fix | Delete
$preset_rewrite_map[ $component_type ] = array();
[1207] Fix | Delete
foreach ( $component_presets['presets'] as $preset_id => $preset ) {
[1208] Fix | Delete
$new_id = ET_Core_Data_Utils::uuid_v4();
[1209] Fix | Delete
$component_presets['presets'][ $new_id ] = $preset;
[1210] Fix | Delete
$preset_rewrite_map[ $component_type ][ $preset_id ] = $new_id;
[1211] Fix | Delete
unset( $component_presets['presets'][ $preset_id ] );
[1212] Fix | Delete
}
[1213] Fix | Delete
[1214] Fix | Delete
if ( $component_presets['default'] === $initial_preset_id && ! isset( $preset_rewrite_map[ $component_type ][ $initial_preset_id ] ) ) {
[1215] Fix | Delete
$new_id = ET_Core_Data_Utils::uuid_v4();
[1216] Fix | Delete
$component_presets['default'] = $new_id;
[1217] Fix | Delete
if ( isset( $component_presets['presets'][ $initial_preset_id ] ) ) {
[1218] Fix | Delete
$component_presets['presets'][ $new_id ] = $component_presets['presets'][ $initial_preset_id ];
[1219] Fix | Delete
unset( $component_presets['presets'][ $initial_preset_id ] );
[1220] Fix | Delete
}
[1221] Fix | Delete
$preset_rewrite_map[ $component_type ][ $initial_preset_id ] = $new_id;
[1222] Fix | Delete
} else {
[1223] Fix | Delete
$component_presets['default'] = $preset_rewrite_map[ $component_type ][ $component_presets['default'] ];
[1224] Fix | Delete
}
[1225] Fix | Delete
}
[1226] Fix | Delete
[1227] Fix | Delete
return $preset_rewrite_map;
[1228] Fix | Delete
}
[1229] Fix | Delete
[1230] Fix | Delete
/**
[1231] Fix | Delete
* Injects the given Global Presets settings into the imported layout
[1232] Fix | Delete
*
[1233] Fix | Delete
* @since 4.5.0
[1234] Fix | Delete
*
[1235] Fix | Delete
* @param array $shortcode_object - The multidimensional array representing a page/module structure
[1236] Fix | Delete
* @param array $global_presets - The Global Presets to be imported
[1237] Fix | Delete
* @param array $preset_rewrite_map - The list of module types for which preset ids have been changed
[1238] Fix | Delete
*/
[1239] Fix | Delete
protected function rewrite_module_preset_ids( &$shortcode_object, $global_presets, $preset_rewrite_map ) {
[1240] Fix | Delete
$global_presets_manager = ET_Builder_Global_Presets_Settings::instance();
[1241] Fix | Delete
$module_preset_attribute = ET_Builder_Global_Presets_Settings::MODULE_PRESET_ATTRIBUTE;
[1242] Fix | Delete
[1243] Fix | Delete
foreach ( $shortcode_object as &$module ) {
[1244] Fix | Delete
$module_type = $global_presets_manager->maybe_convert_module_type( $module['type'], $module['attrs'] );
[1245] Fix | Delete
$module_preset_id = et_()->array_get( $module, "attrs.{$module_preset_attribute}", 'default' );
[1246] Fix | Delete
[1247] Fix | Delete
if ( $module_preset_id === 'default' ) {
[1248] Fix | Delete
$module['attrs'][ $module_preset_attribute ] = et_()->array_get( $global_presets, "{$module_type}.default", 'default' );
[1249] Fix | Delete
} else {
[1250] Fix | Delete
if ( isset( $preset_rewrite_map[ $module_type ][ $module_preset_id ] ) ) {
[1251] Fix | Delete
$module['attrs'][ $module_preset_attribute ] = $preset_rewrite_map[ $module_type ][ $module_preset_id ];
[1252] Fix | Delete
} else {
[1253] Fix | Delete
$module['attrs'][ $module_preset_attribute ] = et_()->array_get( $global_presets, "{$module_type}.default", 'default' );
[1254] Fix | Delete
}
[1255] Fix | Delete
}
[1256] Fix | Delete
[1257] Fix | Delete
if ( is_array( $module['content'] ) ) {
[1258] Fix | Delete
$this->rewrite_module_preset_ids( $module['content'], $global_presets, $preset_rewrite_map );
[1259] Fix | Delete
}
[1260] Fix | Delete
}
[1261] Fix | Delete
}
[1262] Fix | Delete
[1263] Fix | Delete
/**
[1264] Fix | Delete
* Injects the given Global Presets settings into the imported layout
[1265] Fix | Delete
*
[1266] Fix | Delete
* @since 3.26
[1267] Fix | Delete
*
[1268] Fix | Delete
* @param array $shortcode_object - The multidimensional array representing a page/module structure
[1269] Fix | Delete
* @param array $global_presets - The Global Presets to be applied
[1270] Fix | Delete
*/
[1271] Fix | Delete
protected function apply_global_presets( &$shortcode_object, $global_presets ) {
[1272] Fix | Delete
$global_presets_manager = ET_Builder_Global_Presets_Settings::instance();
[1273] Fix | Delete
$module_preset_attribute = ET_Builder_Global_Presets_Settings::MODULE_PRESET_ATTRIBUTE;
[1274] Fix | Delete
[1275] Fix | Delete
foreach ( $shortcode_object as &$module ) {
[1276] Fix | Delete
$module_type = $global_presets_manager->maybe_convert_module_type( $module['type'], $module['attrs'] );
[1277] Fix | Delete
[1278] Fix | Delete
if ( isset( $global_presets[ $module_type ] ) ) {
[1279] Fix | Delete
$default_preset_id = et_()->array_get( $global_presets, "{$module_type}.default", null );
[1280] Fix | Delete
$module_preset_id = et_()->array_get( $module, "attrs.{$module_preset_attribute}", $default_preset_id );
[1281] Fix | Delete
[1282] Fix | Delete
if ( $module_preset_id === 'default' ) {
[1283] Fix | Delete
$module_preset_id = $default_preset_id;
[1284] Fix | Delete
}
[1285] Fix | Delete
[1286] Fix | Delete
if ( isset( $global_presets[ $module_type ]['presets'][ $module_preset_id ] ) ) {
[1287] Fix | Delete
$module['attrs'] = array_merge( $global_presets[ $module_type ]['presets'][ $module_preset_id ]['settings'], $module['attrs'] );
[1288] Fix | Delete
} else {
[1289] Fix | Delete
if ( isset( $global_presets[ $module_type ]['presets'][ $default_preset_id ]['settings'] ) ) {
[1290] Fix | Delete
$module['attrs'] = array_merge( $global_presets[ $module_type ]['presets'][ $default_preset_id ]['settings'], $module['attrs'] );
[1291] Fix | Delete
}
[1292] Fix | Delete
}
[1293] Fix | Delete
}
[1294] Fix | Delete
[1295] Fix | Delete
if ( is_array( $module['content'] ) ) {
[1296] Fix | Delete
$this->apply_global_presets( $module['content'], $global_presets );
[1297] Fix | Delete
}
[1298] Fix | Delete
}
[1299] Fix | Delete
}
[1300] Fix | Delete
[1301] Fix | Delete
/**
[1302] Fix | Delete
* Restrict data according the argument registered.
[1303] Fix | Delete
*
[1304] Fix | Delete
* @since 2.7.0
[1305] Fix | Delete
*
[1306] Fix | Delete
* @param array $data Array of data the query is applied on.
[1307] Fix | Delete
* @param string $method Whether data should be set or reset. Accepts 'set' or 'unset' which is
[1308] Fix | Delete
* should be used when treating existing data in the db.
[1309] Fix | Delete
*
[1310] Fix | Delete
* @return array
[1311] Fix | Delete
*/
[1312] Fix | Delete
protected function apply_query( $data, $method ) {
[1313] Fix | Delete
$operator = ( $method === 'set' ) ? true : false;
[1314] Fix | Delete
[1315] Fix | Delete
foreach ( $data as $id => $value ) {
[1316] Fix | Delete
if ( ! empty( $this->instance->exclude ) && isset( $this->instance->exclude[$id] ) === $operator ) {
[1317] Fix | Delete
unset( $data[$id] );
[1318] Fix | Delete
}
[1319] Fix | Delete
[1320] Fix | Delete
if ( ! empty( $this->instance->include ) && isset( $this->instance->include[$id] ) === ! $operator ) {
[1321] Fix | Delete
unset( $data[$id] );
[1322] Fix | Delete
}
[1323] Fix | Delete
}
[1324] Fix | Delete
[1325] Fix | Delete
return $data;
[1326] Fix | Delete
}
[1327] Fix | Delete
[1328] Fix | Delete
/**
[1329] Fix | Delete
* Serialize images in chunks.
[1330] Fix | Delete
*
[1331] Fix | Delete
* @since 4.0
[1332] Fix | Delete
*
[1333] Fix | Delete
* @param array $images
[1334] Fix | Delete
* @param string $method Method applied on images.
[1335] Fix | Delete
* @param string $id Unique ID to use for temporary files.
[1336] Fix | Delete
* @param integer $chunk
[1337] Fix | Delete
*
[1338] Fix | Delete
* @return array
[1339] Fix | Delete
*/
[1340] Fix | Delete
protected function chunk_images( $images, $method, $id, $chunk = 0 ) {
[1341] Fix | Delete
$images_per_chunk = 5;
[1342] Fix | Delete
$chunks = 1;
[1343] Fix | Delete
[1344] Fix | Delete
/**
[1345] Fix | Delete
* Filters whether or not images in the file being imported should be paginated.
[1346] Fix | Delete
*
[1347] Fix | Delete
* @since 3.0.99
[1348] Fix | Delete
*
[1349] Fix | Delete
* @param bool $paginate_images Default `true`.
[1350] Fix | Delete
*/
[1351] Fix | Delete
$paginate_images = apply_filters( 'et_core_portability_paginate_images', true );
[1352] Fix | Delete
[1353] Fix | Delete
if ( $paginate_images && count( $images ) > $images_per_chunk ) {
[1354] Fix | Delete
$chunks = ceil( count( $images ) / $images_per_chunk );
[1355] Fix | Delete
$slice = $images_per_chunk * $chunk;
[1356] Fix | Delete
$images = array_slice( $images, $slice, $images_per_chunk );
[1357] Fix | Delete
$images = $this->$method( $images );
[1358] Fix | Delete
$filesystem = $this->get_filesystem();
[1359] Fix | Delete
$temp_file_id = sanitize_file_name( "images_{$id}" );
[1360] Fix | Delete
$temp_file = $this->temp_file( $temp_file_id, 'et_core_export' );
[1361] Fix | Delete
$temp_images = json_decode( $filesystem->get_contents( $temp_file ), true );
[1362] Fix | Delete
[1363] Fix | Delete
if ( is_array( $temp_images ) ) {
[1364] Fix | Delete
$images = array_merge( $temp_images, $images );
[1365] Fix | Delete
}
[1366] Fix | Delete
[1367] Fix | Delete
if ( $chunk + 1 < $chunks ) {
[1368] Fix | Delete
$filesystem->put_contents( $temp_file, wp_json_encode( (array) $images ) );
[1369] Fix | Delete
} else {
[1370] Fix | Delete
$this->delete_temp_files( 'et_core_export', array( $temp_file_id => $temp_file ) );
[1371] Fix | Delete
}
[1372] Fix | Delete
} else {
[1373] Fix | Delete
$images = $this->$method( $images );
[1374] Fix | Delete
}
[1375] Fix | Delete
[1376] Fix | Delete
return array(
[1377] Fix | Delete
'ready' => $chunk + 1 >= $chunks,
[1378] Fix | Delete
'chunks' => $chunks,
[1379] Fix | Delete
'images' => $images,
[1380] Fix | Delete
);
[1381] Fix | Delete
}
[1382] Fix | Delete
[1383] Fix | Delete
/**
[1384] Fix | Delete
* Paginate images processing.
[1385] Fix | Delete
*
[1386] Fix | Delete
* @since 1.0.0
[1387] Fix | Delete
*
[1388] Fix | Delete
* @param $images
[1389] Fix | Delete
* @param string $method Method applied on images.
[1390] Fix | Delete
* @param int $timestamp Timestamp used to store data upon pagination.
[1391] Fix | Delete
*
[1392] Fix | Delete
* @return array
[1393] Fix | Delete
* @internal param array $data Array of images.
[1394] Fix | Delete
*/
[1395] Fix | Delete
protected function maybe_paginate_images( $images, $method, $timestamp ) {
[1396] Fix | Delete
et_core_nonce_verified_previously();
[1397] Fix | Delete
[1398] Fix | Delete
$page = isset( $_POST['page'] ) ? (int) $_POST['page'] : 1;
[1399] Fix | Delete
$result = $this->chunk_images( $images, $method, $timestamp, max( $page - 1, 0 ) );
[1400] Fix | Delete
[1401] Fix | Delete
if ( ! $result['ready'] ) {
[1402] Fix | Delete
wp_send_json( array(
[1403] Fix | Delete
'page' => $page,
[1404] Fix | Delete
'total_pages' => $result['chunks'],
[1405] Fix | Delete
'timestamp' => $timestamp,
[1406] Fix | Delete
) );
[1407] Fix | Delete
}
[1408] Fix | Delete
[1409] Fix | Delete
return $result['images'];
[1410] Fix | Delete
}
[1411] Fix | Delete
[1412] Fix | Delete
/**
[1413] Fix | Delete
* Get all images in the data given.
[1414] Fix | Delete
*
[1415] Fix | Delete
* @since 2.7.0
[1416] Fix | Delete
*
[1417] Fix | Delete
* @param array $data Array of data.
[1418] Fix | Delete
* @param bool $force Set whether the value should be added by force. Usually used for image ids.
[1419] Fix | Delete
*
[1420] Fix | Delete
* @return array
[1421] Fix | Delete
*/
[1422] Fix | Delete
protected function get_data_images( $data, $force = false ) {
[1423] Fix | Delete
$images = array();
[1424] Fix | Delete
$images_src = array();
[1425] Fix | Delete
$basenames = array(
[1426] Fix | Delete
'src',
[1427] Fix | Delete
'image_url',
[1428] Fix | Delete
'background_image',
[1429] Fix | Delete
'image',
[1430] Fix | Delete
'url',
[1431] Fix | Delete
'bg_img_?\d?',
[1432] Fix | Delete
);
[1433] Fix | Delete
$suffixes = array(
[1434] Fix | Delete
'__hover',
[1435] Fix | Delete
'_tablet',
[1436] Fix | Delete
'_phone'
[1437] Fix | Delete
);
[1438] Fix | Delete
[1439] Fix | Delete
foreach ( $basenames as $basename ) {
[1440] Fix | Delete
$images_src[] = $basename;
[1441] Fix | Delete
foreach ( $suffixes as $suffix ) {
[1442] Fix | Delete
$images_src[] = $basename . $suffix;
[1443] Fix | Delete
}
[1444] Fix | Delete
}
[1445] Fix | Delete
[1446] Fix | Delete
foreach ( $data as $value ) {
[1447] Fix | Delete
if ( is_array( $value ) || is_object( $value ) ) {
[1448] Fix | Delete
$images = array_merge( $images, $this->get_data_images( (array) $value ) );
[1449] Fix | Delete
continue;
[1450] Fix | Delete
}
[1451] Fix | Delete
[1452] Fix | Delete
// Extract images from html or shortcodes.
[1453] Fix | Delete
if ( preg_match_all( '/(' . implode( '|', $images_src ) . ')="(?P<src>\w+[^"]*)"/i', $value, $matches ) ) {
[1454] Fix | Delete
foreach ( array_unique( $matches['src'] ) as $key => $src ) {
[1455] Fix | Delete
$images = array_merge( $images, $this->get_data_images( array( $key => $src ) ) );
[1456] Fix | Delete
}
[1457] Fix | Delete
continue;
[1458] Fix | Delete
}
[1459] Fix | Delete
[1460] Fix | Delete
// Extract images from shortcodes gallery.
[1461] Fix | Delete
if ( preg_match_all( '/gallery_ids="(?P<ids>\w+[^"]*)"/i', $value, $matches ) ) {
[1462] Fix | Delete
$explode = explode( ',', str_replace( ' ', '', $matches['ids'][0] ) );
[1463] Fix | Delete
[1464] Fix | Delete
foreach ( $explode as $image_id ) {
[1465] Fix | Delete
$images = array_merge( $images, $this->get_data_images( array( (int) $image_id ), true ) );
[1466] Fix | Delete
}
[1467] Fix | Delete
continue;
[1468] Fix | Delete
}
[1469] Fix | Delete
[1470] Fix | Delete
if ( preg_match( '/^.+?\.(jpg|jpeg|jpe|png|gif)/', $value, $match ) || $force ) {
[1471] Fix | Delete
$basename = basename( $value );
[1472] Fix | Delete
[1473] Fix | Delete
// Avoid duplicates.
[1474] Fix | Delete
if ( isset( $images[$value] ) ) {
[1475] Fix | Delete
continue;
[1476] Fix | Delete
}
[1477] Fix | Delete
[1478] Fix | Delete
$images[$value] = $value;
[1479] Fix | Delete
}
[1480] Fix | Delete
}
[1481] Fix | Delete
[1482] Fix | Delete
return $images;
[1483] Fix | Delete
}
[1484] Fix | Delete
[1485] Fix | Delete
/**
[1486] Fix | Delete
* Get the attachment post id for the given url.
[1487] Fix | Delete
*
[1488] Fix | Delete
* @since 3.22.3
[1489] Fix | Delete
*
[1490] Fix | Delete
* @param string $url The url of an attachment file.
[1491] Fix | Delete
*
[1492] Fix | Delete
* @return int
[1493] Fix | Delete
*/
[1494] Fix | Delete
protected function _get_attachment_id_by_url( $url ) {
[1495] Fix | Delete
global $wpdb;
[1496] Fix | Delete
[1497] Fix | Delete
// Remove any thumbnail size suffix from the filename and use that as a fallback.
[1498] Fix | Delete
$fallback_url = preg_replace( '/-\d+x\d+(\.[^.]+)$/i', '$1', $url );
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function