in web/wp-content/plugins/acf-extended/includes/modules/performance/module-performance-connector.php [142:360]
function delete_orphan_meta($return, $post_id, $confirm){
// engine name
$engine_name = acfe_get_object_performance_engine_name($post_id);
// performance enabled
if(acfe_is_object_performance_enabled($post_id)){
// engine
$performance_mode = acfe_get_object_performance_mode($post_id);
$engine = acfe_get_performance_engine($engine_name);
// performance deleted
$performance_deleted = $return['normal'];
$performance_key = $engine->get_meta_key($post_id);
// reset return
$return = array(
'normal' => array(),
);
// if engine = hybrid
// previous 'clean meta' cleaned reference + meta in the whole '$performance_deleted'
// we must fix that by moving non prefixed meta into normal return
if($engine_name === 'hybrid'){
foreach(array_keys($performance_deleted) as $key){
$value = $performance_deleted[ $key ];
// prefixed meta
if(strpos($key, '_') !== 0){
$return['normal'][ $key ] = $value;
unset($performance_deleted[ $key ]);
}
}
}
if(!empty($performance_deleted)){
$return[ $performance_key ] = $performance_deleted;
}
// clean normal orphan
// this will clean orphan from normal meta
$normal_deleted = acfe_do_performance_bypass(function($post_id, $confirm){
// get orphan
$meta = acfe_get_orphan_meta($post_id);
$deleted = array();
// loop
foreach($meta as $row){
// vars
$key = $row['key'];
$name = $row['name'];
$value = $row['value'];
// delete
if($confirm){
acf_delete_metadata($post_id, $name, true); // prefix
acf_delete_metadata($post_id, $name); // normal
}
// store
$deleted[ "_{$name}" ] = $key;
$deleted[ $name ] = $value;
}
return $deleted;
}, array($post_id, $confirm));
// return
$return['normal'] = array_merge($return['normal'], $normal_deleted);
// clean normal meta
// this will clean normal meta which should be removed in mode=production
if($performance_mode === 'production'){
$normal_deleted = acfe_do_performance_bypass(function($post_id, $confirm){
// meta (acf / _acf)
$acf = acfe_get_object_performance_meta($post_id);
$engine_name = acfe_get_object_performance_engine_name($post_id);
// performance meta doesn't exist
// mode=rollback was probably used
if($acf === null){
return array();
}
// get orphan
$meta = acfe_get_meta($post_id);
$deleted = array();
// loop
foreach($meta as $row){
// vars
$field = $row['field'];
$key = $row['key'];
$name = $row['name'];
$value = $row['value'];
switch($engine_name){
case 'ultra': {
// check if field has 'save as individual meta' and already in 'acf' meta
if(!acf_maybe_get($field, 'acfe_save_meta') || !isset($acf[ $name ])){
// delete
if($confirm){
acf_delete_metadata($post_id, $name, true); // prefix
acf_delete_metadata($post_id, $name); // normal
}
// store
$deleted[ "_{$name}" ] = $key;
$deleted[ $name ] = $value;
}
break;
}
case 'hybrid': {
// delete
if($confirm){
acf_delete_metadata($post_id, $name, true); // prefix
}
// store
$deleted[ "_{$name}" ] = $key;
break;
}
}
}
return $deleted;
}, array($post_id, $confirm));
// return
$return['normal'] = array_merge($return['normal'], $normal_deleted);
}
}
// this is done on
// performance enabled +
// performance disabled
// not ultra
if($engine_name !== 'ultra'){
// ultra engine
$ultra = acfe_get_performance_engine('ultra');
if($ultra){
// meta key
$meta_key = $ultra->get_meta_key($post_id);
// clean ultra residue (acf)
$meta = $ultra->get_meta($post_id);
if($meta !== null){
$ultra->delete_meta($post_id);
$return['normal'][ $meta_key ] = $meta;
}
}
}
// not hybrid
if($engine_name !== 'hybrid'){
// hybrid engine
$hybrid = acfe_get_performance_engine('hybrid');
if($hybrid){
// meta key
$meta_key = $hybrid->get_meta_key($post_id);
// clean hybrid residue (_acf)
$meta = $hybrid->get_meta($post_id);
if($meta !== null){
$hybrid->delete_meta($post_id);
$return['normal'][ $meta_key ] = $meta;
}
}
}
// return
return $return;
}