| Server IP : 78.24.162.143 / Your IP : 216.73.216.17 Web Server : Apache System : Linux hosting.cormo.systems 5.15.0-179-generic #189-Ubuntu SMP Tue May 5 18:20:56 UTC 2026 x86_64 User : web63 ( 5058) PHP Version : 7.4.33 Disable Function : create_functions,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/clients/client34/web63/web/wp-content/plugins/pods/src/Pods/Tools/ |
Upload File : |
<?php
namespace Pods\Tools;
use PodsForm;
use Pods\Whatsit\Field;
use Pods\Whatsit\Pod;
/**
* Reset tool functionality.
*
* @since 2.9.10
*/
class Reset extends Base {
/**
* Delete all content for a Pod.
*
* @since 2.9.10
*
* @param Pod $pod The Pod object.
* @param string $mode The reset mode (preview or full).
*
* @return array The results with information about the reset done.
*/
public function delete_all_content_for_pod( Pod $pod, $mode ) {
$this->setup();
$this->errors = [];
$results = [];
if ( 'preview' !== $mode ) {
$this->api->reset_pod( [], $pod );
}
$results[ __( 'Delete all content for pod' ) ] = __( 'Pod content has been deleted' );
$tool_heading = sprintf(
// translators: %s: The Pod label.
__( 'Reset results for %s', 'pods' ),
$pod->get_label() . ' (' . $pod->get_name() . ')'
);
$results['message_html'] = $this->get_message_html( $tool_heading, $results, $mode );
return $results;
}
/**
* Delete all relationship data for a Pod.
*
* @since 2.9.10
*
* @param Pod $pod The Pod object.
* @param null|string|array $field_names The fields to use (comma-separated or an array), otherwise delete relationships for all fields on Pod.
* @param string $mode The reset mode (preview or full).
*
* @return array The results with information about the reset done.
*/
public function delete_all_relationship_data_for_pod( Pod $pod, $field_names, $mode ) {
$this->setup();
$this->errors = [];
if ( $field_names ) {
$fields = [];
if ( is_string( $field_names ) ) {
$field_names = explode( ',', $field_names );
$field_names = pods_trim( $field_names );
$field_names = array_filter( $field_names );
foreach ( $field_names as $field_name ) {
$field = $pod->get_field( $field_name );
if ( $field ) {
$fields[] = $field;
}
}
}
} else {
$fields = $pod->get_fields( [
'type' => PodsForm::tableless_field_types(),
] );
}
$results = [];
global $wpdb;
foreach ( $fields as $field_to_delete_from_podsrel ) {
if ( 'preview' !== $mode ) {
$total_deleted_from_podsrel = (int) $wpdb->query(
$wpdb->prepare(
"
DELETE *
FROM `{$wpdb->prefix}podsrel`
WHERE `pod_id` = %d AND `field_id` = %d
",
[
$pod->get_id(),
$field_to_delete_from_podsrel->get_id(),
]
)
);
$total_related_deleted_from_podsrel = (int) $wpdb->query(
$wpdb->prepare(
"
DELETE *
FROM `{$wpdb->prefix}podsrel`
WHERE `related_pod_id` = %d AND `related_field_id` = %d
",
[
$pod->get_id(),
$field_to_delete_from_podsrel->get_id(),
]
)
);
} else {
$total_deleted_from_podsrel = (int) $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT(*)
FROM `{$wpdb->prefix}podsrel`
WHERE `pod_id` = %d AND `field_id` = %d
",
[
$pod->get_id(),
$field_to_delete_from_podsrel->get_id(),
]
)
);
$total_related_deleted_from_podsrel = (int) $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT(*)
FROM `{$wpdb->prefix}podsrel`
WHERE `related_pod_id` = %d AND `related_field_id` = %d
",
[
$pod->get_id(),
$field_to_delete_from_podsrel->get_id(),
]
)
);
}
$heading = sprintf(
// translators: %1$s: The field label; %2$s: The field name.
__( 'Relationship data removed from podsrel table for field: %1$s (%2$s)', 'pods' ),
$field_to_delete_from_podsrel->get_label(),
$field_to_delete_from_podsrel->get_name()
);
$results[ $heading ] = sprintf(
'%1$s %2$s',
number_format_i18n( $total_deleted_from_podsrel ),
_n( 'row', 'rows', $total_deleted_from_podsrel, 'pods' )
);
$heading = sprintf(
// translators: %1$s: The field label; %2$s: The field name.
__( 'Bidirectional Relationship data removed from podsrel table for field: %1$s (%2$s)', 'pods' ),
$field_to_delete_from_podsrel->get_label(),
$field_to_delete_from_podsrel->get_name()
);
$results[ $heading ] = sprintf(
'%1$s %2$s',
number_format_i18n( $total_related_deleted_from_podsrel ),
_n( 'row', 'rows', $total_related_deleted_from_podsrel, 'pods' )
);
}
$tool_heading = sprintf(
// translators: %s: The Pod label.
__( 'Reset results for %s', 'pods' ),
$pod->get_label() . ' (' . $pod->get_name() . ')'
);
$results['message_html'] = $this->get_message_html( $tool_heading, $results, $mode );
return $results;
}
/**
* Delete all Groups and Fields for a Pod.
*
* @since 2.9.10
*
* @param Pod $pod The Pod object.
* @param string $mode The reset mode (preview or full).
*
* @return array The results with information about the reset done.
*/
public function delete_all_groups_and_fields_for_pod( Pod $pod, $mode ) {
$this->setup();
$this->errors = [];
$results = [];
if ( 'preview' !== $mode ) {
$results[ __( 'Delete all fields for pod', 'pods' ) ] = $this->delete_all_fields_for_pod( $pod, $mode );
$results[ __( 'Delete all groups for pod', 'pods' ) ] = $this->delete_all_groups_for_pod( $pod, $mode );
}
$tool_heading = sprintf(
// translators: %s: The Pod label.
__( 'Reset results for %s', 'pods' ),
$pod->get_label() . ' (' . $pod->get_name() . ')'
);
$results['message_html'] = $this->get_message_html( $tool_heading, $results, $mode );
return $results;
}
/**
* Delete all Groups and Fields for a Pod.
*
* @since 2.9.10
*
* @param Pod $pod The Pod object.
* @param string $mode The reset mode (preview or full).
*
* @return string The text result.
*/
protected function delete_all_fields_for_pod( Pod $pod, $mode ) {
$this->setup();
$fields = $pod->get_fields();
$total_deleted = count( $fields );
foreach ( $fields as $field ) {
if ( 'preview' !== $mode ) {
$this->api->delete_field( $field );
}
}
// translators: %1$s: The total number of fields deleted; %2$s: The singular or plural text for fields.
return sprintf(
_x( 'Deleted %1$s %2$s', 'The text for how many fields were deleted', 'pods' ),
number_format_i18n( $total_deleted ),
_n( 'field', 'fields', $total_deleted, 'pods' )
);
}
/**
* Delete all Groups and Fields for a Pod.
*
* @since 2.9.10
*
* @param Pod $pod The Pod object.
* @param string $mode The reset mode (preview or full).
*
* @return string The text result.
*/
protected function delete_all_groups_for_pod( Pod $pod, $mode ) {
$this->setup();
$groups = $pod->get_groups();
$total_deleted = count( $groups );
foreach ( $groups as $group ) {
if ( 'preview' !== $mode ) {
$this->api->delete_group( $group );
}
}
// translators: %1$s: The total number of groups deleted; %2$s: The singular or plural text for groups.
return sprintf(
_x( 'Deleted %1$s %2$s', 'The text for how many groups were deleted', 'pods' ),
number_format_i18n( $total_deleted ),
_n( 'group', 'groups', $total_deleted, 'pods' )
);
}
}