function setup($blogid = null) { global $wpdb; if (null !== $blogid && $blogid != $wpdb->blogid) { $old_blogid = $wpdb->blogid; switch_to_blog($blogid); } // Setup DB tables $installed = get_option('pods_version'); if (0 < strlen($installed) && false === strpos($installed, '.')) { $installed = pods_version_to_point($installed); } if (0 < strlen($installed)) { if (version_compare($installed, PODS_VERSION, '<')) { do_action('pods_update', PODS_VERSION, $installed, $blogid); if (null === apply_filters('pods_update_run', null, PODS_VERSION, $installed, $blogid) && !isset($_GET['pods_bypass_update'])) { include PODS_DIR . '/sql/update.php'; } do_action('pods_update_post', PODS_VERSION, $installed, $blogid); } } else { do_action('pods_install', PODS_VERSION, $installed, $blogid); if (null === apply_filters('pods_install_run', null, PODS_VERSION, $installed, $blogid) && !isset($_GET['pods_bypass_install'])) { $sql = file_get_contents(PODS_DIR . '/sql/dump.sql'); $sql = str_replace("\r", "\n", $sql); $sql = str_replace("\n\n", "\n", $sql); $sql = apply_filters('pods_install_sql', $sql, PODS_VERSION, $installed, $blogid); $charset_collate = 'DEFAULT CHARSET utf8'; if (!empty($wpdb->charset)) { $charset_collate = "DEFAULT CHARSET {$wpdb->charset}"; } if (!empty($wpdb->collate)) { $charset_collate .= " COLLATE {$wpdb->collate}"; } if ('DEFAULT CHARSET utf8' != $charset_collate) { $sql = str_replace('DEFAULT CHARSET utf8', $charset_collate, $sql); } $sql = explode(";\n", str_replace('wp_', '@wp_', $sql)); for ($i = 0, $z = count($sql); $i < $z; $i++) { $sql[$i] = trim($sql[$i]); if (empty($sql[$i])) { continue; } pod_query($sql[$i], 'Cannot setup SQL tables'); } } delete_option('pods_version'); add_option('pods_version', PODS_VERSION); do_action('pods_install_post', PODS_VERSION, $installed, $blogid); } if (null !== $blogid && $blogid != $wpdb->blogid) { switch_to_blog($old_blogid); } }
/** * Validate a package * * * @param mixed $data (optional) An associative array containing a package, or the json encoded package * @since 1.9.0 */ function validate_package($data = false, $output = false) { if (is_array($data) && isset($data['data'])) { $data = $data['data']; $output = true; } if (is_array($data)) { $data = esc_textarea(json_encode($data)); } $found = array(); $warnings = array(); update_option('pods_package', $data); $json_data = @json_decode($data, true); if (!is_array($json_data)) { $json_data = @json_decode(stripslashes($data), true); } if (!is_array($json_data) || empty($json_data)) { $warnings[] = "This is not a valid package. Please try again."; if (true === $output) { echo '<e><br /><div id="message" class="error fade"><p>This is not a valid package. Please try again.</p></div></e>'; return false; } else { return $warnings; } } $data = $json_data; if (0 < strlen($data['meta']['version']) && false === strpos($data['meta']['version'], '.') && (int) $data['meta']['version'] < 1000) { // older style $data['meta']['version'] = implode('.', str_split($data['meta']['version'])); } elseif (0 < strlen($data['meta']['version']) && false === strpos($data['meta']['version'], '.')) { // old style $data['meta']['version'] = pods_version_to_point($data['meta']['version']); } if (isset($data['meta']['compatible_from'])) { if (0 < strlen($data['meta']['compatible_from']) && false === strpos($data['meta']['compatible_from'], '.')) { // old style $data['meta']['compatible_from'] = pods_version_to_point($data['meta']['compatible_from']); } if (version_compare(PODS_VERSION, $data['meta']['compatible_from'], '<')) { $compatible_from = explode('.', $data['meta']['compatible_from']); $compatible_from = $compatible_from[0] . '.' . $compatible_from[1]; $pods_version = explode('.', PODS_VERSION); $pods_version = $pods_version[0] . '.' . $pods_version[1]; if (version_compare($pods_version, $compatible_from, '<')) { $warnings['version'] = 'This package may only compatible with the newer <strong>Pods ' . pods_version_to_point($data['meta']['compatible_from']) . '+</strong>, but you are currently running the older <strong>Pods ' . PODS_VERSION . '</strong><br />Unless the package author has specified it is compatible, it may not have been tested to work with your installed version of Pods.'; } } } if (isset($data['meta']['compatible_to'])) { if (0 < strlen($data['meta']['compatible_to']) && false === strpos($data['meta']['compatible_to'], '.')) { // old style $data['meta']['compatible_to'] = pods_version_to_point($data['meta']['compatible_to']); } if (version_compare($data['meta']['compatible_to'], PODS_VERSION, '<')) { $compatible_to = explode('.', $data['meta']['compatible_to']); $compatible_to = $compatible_to[0] . '.' . $compatible_to[1]; $pods_version = explode('.', PODS_VERSION); $pods_version = $pods_version[0] . '.' . $pods_version[1]; if (version_compare($compatible_to, $pods_version, '<')) { $warnings['version'] = 'This package may only compatible with the older <strong>Pods ' . $data['meta']['compatible_to'] . '</strong>, but you are currently running the newer <strong>Pods ' . PODS_VERSION . '</strong><br />Unless the package author has specified it is compatible, it may not have been tested to work with your installed version of Pods.'; } } } if (!isset($data['meta']['compatible_from']) && !isset($data['meta']['compatible_to'])) { if (version_compare(PODS_VERSION, $data['meta']['version'], '<')) { $compatible_from = explode('.', $data['meta']['version']); $compatible_from = $compatible_from[0] . '.' . $compatible_from[1]; $pods_version = explode('.', PODS_VERSION); $pods_version = $pods_version[0] . '.' . $pods_version[1]; if (version_compare($pods_version, $compatible_from, '<')) { $warnings['version'] = 'This package was built using the newer <strong>Pods ' . $data['meta']['version'] . '</strong>, but you are currently running the older <strong>Pods ' . PODS_VERSION . '</strong><br />Unless the package author has specified it is compatible, it may not have been tested to work with your installed version of Pods.'; } } elseif (version_compare($data['meta']['version'], PODS_VERSION, '<')) { $compatible_to = explode('.', $data['meta']['version']); $compatible_to = $compatible_to[0] . '.' . $compatible_to[1]; $pods_version = explode('.', PODS_VERSION); $pods_version = $pods_version[0] . '.' . $pods_version[1]; if (version_compare($compatible_to, $pods_version, '<')) { $warnings['version'] = 'This package was built using the older <strong>Pods ' . $data['meta']['version'] . '</strong>, but you are currently running the newer <strong>Pods ' . PODS_VERSION . '</strong><br />Unless the package author has specified it is compatible, it may not have been tested to work with your installed version of Pods.'; } } } if (isset($data['pods'])) { foreach ($data['pods'] as $pod) { $pod = pods_sanitize($pod); $existing = $this->load_pod(array('name' => $pod['name'])); if (is_array($existing)) { if (!isset($warnings['pods'])) { $warnings['pods'] = array(); } $warnings['pods'][] = esc_textarea($pod['name']); } if (!isset($found['pods'])) { $found['pods'] = array(); } $found['pods'][] = esc_textarea($pod['name']); } } if (isset($data['templates'])) { foreach ($data['templates'] as $template) { $template = pods_sanitize($template); $existing = $this->load_template(array('name' => $template['name'])); if (is_array($existing)) { if (!isset($warnings['templates'])) { $warnings['templates'] = array(); } $warnings['templates'][] = esc_textarea($template['name']); } if (!isset($found['templates'])) { $found['templates'] = array(); } $found['templates'][] = esc_textarea($template['name']); } } if (isset($data['pod_pages'])) { foreach ($data['pod_pages'] as $pod_page) { $pod_page = pods_sanitize($pod_page); $existing = $this->load_page(array('uri' => $pod_page['uri'])); if (is_array($existing)) { if (!isset($warnings['pod_pages'])) { $warnings['pod_pages'] = array(); } $warnings['pod_pages'][] = esc_textarea($pod_page['uri']); } if (!isset($found['pod_pages'])) { $found['pod_pages'] = array(); } $found['pod_pages'][] = esc_textarea($pod_page['uri']); } } if (isset($data['helpers'])) { foreach ($data['helpers'] as $helper) { $helper = pods_sanitize($helper); $existing = $this->load_helper(array('name' => $helper['name'])); if (is_array($existing)) { if (!isset($warnings['helpers'])) { $warnings['helpers'] = array(); } $warnings['helpers'][] = esc_textarea($helper['name']); } if (!isset($found['helpers'])) { $found['helpers'] = array(); } $found['helpers'][] = esc_textarea($helper['name']); } } if (true === $output) { if (!empty($found)) { echo '<hr />'; echo '<h3>Package Contents:</h3>'; if (isset($warnings['version'])) { echo '<p><em><strong>NOTICE:</strong> ' . $warnings['version'] . '</em></p>'; } if (isset($found['pods'])) { echo '<h4>Pod(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $found['pods']) . '</li></ul>'; } if (isset($found['templates'])) { echo '<h4>Template(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $found['templates']) . '</li></ul>'; } if (isset($found['pod_pages'])) { echo '<h4>Pod Page(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $found['pod_pages']) . '</li></ul>'; } if (isset($found['helpers'])) { echo '<h4>Helper(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $found['helpers']) . '</li></ul>'; } } if (0 < count($warnings) && (!isset($warnings['version']) || 1 < count($warnings))) { echo '<hr />'; echo '<h3 class="red">WARNING: There are portions of this package that already exist</h3>'; if (isset($warnings['pods'])) { echo '<h4>Pod(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $warnings['pods']) . '</li></ul>'; } if (isset($warnings['templates'])) { echo '<h4>Template(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $warnings['templates']) . '</li></ul>'; } if (isset($warnings['pod_pages'])) { echo '<h4>Pod Page(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $warnings['pod_pages']) . '</li></ul>'; } if (isset($warnings['helpers'])) { echo '<h4>Helper(s)</h4>'; echo '<ul class="pretty"><li>' . implode('</li><li>', $warnings['helpers']) . '</li></ul>'; } echo '<p><input type="button" class="button-primary" style="background:#f39400;border-color:#d56500;" onclick="podsImport(\'replace_package\')" value=" Overwrite the existing package (Step 2 of 2) " /> <input type="button" class="button-secondary" onclick="podsImportCancel()" value=" Cancel " /></p>'; return false; } elseif (!empty($found)) { echo '<p><input type="button" class="button-primary" onclick="podsImport(\'import_package\')" value=" Import Package (Step 2 of 2) " /> <input type="button" class="button-secondary" onclick="podsImportCancel()" value=" Cancel " /></p>'; return false; } echo '<e><br /><div id="message" class="error fade"><p>Error: This package is empty, there is nothing to import.</p></div></e>'; return false; } if (0 < count($warnings)) { return $warnings; } elseif (!empty($found)) { return true; } return false; }
/** * */ public function migrate_1_x() { $old_version = get_option('pods_version'); if (0 < strlen($old_version)) { if (false === strpos($old_version, '.')) { $old_version = pods_version_to_point($old_version); } // Last DB change was 1.11 if (version_compare($old_version, '1.11', '<')) { do_action('pods_update', PODS_VERSION, $old_version); if (false !== apply_filters('pods_update_run', null, PODS_VERSION, $old_version)) { include_once PODS_DIR . 'sql/update-1.x.php'; } do_action('pods_update_post', PODS_VERSION, $old_version); } } return '1'; }
/** * @param null $_blog_id */ public function setup($_blog_id = null) { global $wpdb; // Switch DB table prefixes if (null !== $_blog_id && $_blog_id != $wpdb->blogid) { switch_to_blog(pods_absint($_blog_id)); } else { $_blog_id = null; } // Setup DB tables $pods_version = get_option('pods_framework_version'); $pods_version_last = get_option('pods_framework_version_last'); // Install Pods if (empty($pods_version)) { pods_upgrade()->install($_blog_id); $old_version = get_option('pods_version'); if (!empty($old_version)) { if (false === strpos($old_version, '.')) { $old_version = pods_version_to_point($old_version); } delete_option('pods_framework_version_last'); add_option('pods_framework_version_last', $pods_version, '', 'yes'); self::$version_last = $old_version; } } elseif ($this->needs_upgrade($pods_version, $pods_version_last)) { // Do not do anything return; } elseif (version_compare($pods_version, PODS_VERSION, '<=')) { if (false !== apply_filters('pods_update_run', null, PODS_VERSION, $pods_version, $_blog_id) && !isset($_GET['pods_bypass_update'])) { do_action('pods_update', PODS_VERSION, $pods_version, $_blog_id); // Update 2.0 alpha / beta sites if (version_compare('2.0.0-a-1', $pods_version, '<=') && version_compare($pods_version, '2.0.0-b-15', '<=')) { include PODS_DIR . 'sql/update-2.0-beta.php'; } if (version_compare($pods_version, PODS_DB_VERSION, '<=')) { include PODS_DIR . 'sql/update.php'; } do_action('pods_update_post', PODS_VERSION, $pods_version, $_blog_id); } delete_option('pods_framework_version_last'); add_option('pods_framework_version_last', $pods_version, '', 'yes'); self::$version_last = $pods_version; } delete_option('pods_framework_version'); add_option('pods_framework_version', PODS_VERSION, '', 'yes'); delete_option('pods_framework_db_version'); add_option('pods_framework_db_version', PODS_DB_VERSION, '', 'yes'); pods_api()->cache_flush_pods(); // Restore DB table prefix (if switched) if (null !== $_blog_id) { restore_current_blog(); } }
/** * Import a Package * * @param string|array $data a JSON array package string, or an array of Package Data * @param bool $replace Whether to replace existing pods entirely or just update them * * @return array|bool * * @static * @since 2.0.5 */ public static function import($data, $replace = false) { if (!defined('PODS_FIELD_STRICT')) { define('PODS_FIELD_STRICT', false); } if (!is_array($data)) { $json_data = @json_decode($data, true); if (!is_array($json_data)) { $json_data = @json_decode(pods_unslash($data), true); } $data = $json_data; } if (!is_array($data) || empty($data)) { return false; } $api = pods_api(); if (!isset($data['meta']) || !isset($data['meta']['version']) || empty($data['meta']['version'])) { return false; } // Pods 1.x < 1.10 if (false === strpos($data['meta']['version'], '.') && (int) $data['meta']['version'] < 1000) { $data['meta']['version'] = implode('.', str_split($data['meta']['version'])); } elseif (false === strpos($data['meta']['version'], '.')) { $data['meta']['version'] = pods_version_to_point($data['meta']['version']); } $found = array(); if (isset($data['pods']) && is_array($data['pods'])) { foreach ($data['pods'] as $pod_data) { if (isset($pod_data['id'])) { unset($pod_data['id']); } $pod = $api->load_pod(array('name' => $pod_data['name']), false); $existing_fields = array(); if (!empty($pod)) { // Delete Pod if it exists if ($replace) { $api->delete_pod(array('id' => $pod['id'])); $pod = array('fields' => array()); } else { $existing_fields = $pod['fields']; } } else { $pod = array('fields' => array()); } // Backwards compatibility if (version_compare($data['meta']['version'], '2.0', '<')) { $core_fields = array(array('name' => 'created', 'label' => 'Date Created', 'type' => 'datetime', 'options' => array('datetime_format' => 'ymd_slash', 'datetime_time_type' => '12', 'datetime_time_format' => 'h_mm_ss_A'), 'weight' => 1), array('name' => 'modified', 'label' => 'Date Modified', 'type' => 'datetime', 'options' => array('datetime_format' => 'ymd_slash', 'datetime_time_type' => '12', 'datetime_time_format' => 'h_mm_ss_A'), 'weight' => 2), array('name' => 'author', 'label' => 'Author', 'type' => 'pick', 'pick_object' => 'user', 'options' => array('pick_format_type' => 'single', 'pick_format_single' => 'autocomplete', 'default_value' => '{@user.ID}'), 'weight' => 3)); $found_fields = array(); if (!empty($pod_data['fields'])) { foreach ($pod_data['fields'] as $k => $field) { $field_type = $field['coltype']; if ('txt' == $field_type) { $field_type = 'text'; } elseif ('desc' == $field_type) { $field_type = 'wysiwyg'; } elseif ('code' == $field_type) { $field_type = 'paragraph'; } elseif ('bool' == $field_type) { $field_type = 'boolean'; } elseif ('num' == $field_type) { $field_type = 'number'; } elseif ('date' == $field_type) { $field_type = 'datetime'; } $multiple = min(max((int) $field['multiple'], 0), 1); $new_field = array('name' => trim($field['name']), 'label' => trim($field['label']), 'description' => trim($field['comment']), 'type' => $field_type, 'weight' => (int) $field['weight'], 'options' => array('required' => min(max((int) $field['required'], 0), 1), 'unique' => min(max((int) $field['unique'], 0), 1), 'input_helper' => $field['input_helper'])); if (in_array($new_field['name'], $found_fields)) { unset($pod_data['fields'][$k]); continue; } $found_fields[] = $new_field['name']; if ('pick' == $field_type) { $new_field['pick_object'] = 'pod'; $new_field['pick_val'] = $field['pickval']; if ('wp_user' == $field['pickval']) { $new_field['pick_object'] = 'user'; } elseif ('wp_post' == $field['pickval']) { $new_field['pick_object'] = 'post_type-post'; } elseif ('wp_page' == $field['pickval']) { $new_field['pick_object'] = 'post_type-page'; } elseif ('wp_taxonomy' == $field['pickval']) { $new_field['pick_object'] = 'taxonomy-category'; } // This won't work if the field doesn't exist // $new_field[ 'sister_id' ] = $field[ 'sister_field_id' ]; $new_field['options']['pick_filter'] = $field['pick_filter']; $new_field['options']['pick_orderby'] = $field['pick_orderby']; $new_field['options']['pick_display'] = ''; $new_field['options']['pick_size'] = 'medium'; if (1 == $multiple) { $new_field['options']['pick_format_type'] = 'multi'; $new_field['options']['pick_format_multi'] = 'checkbox'; $new_field['options']['pick_limit'] = 0; } else { $new_field['options']['pick_format_type'] = 'single'; $new_field['options']['pick_format_single'] = 'dropdown'; $new_field['options']['pick_limit'] = 1; } } elseif ('file' == $field_type) { $new_field['options']['file_format_type'] = 'multi'; $new_field['options']['file_type'] = 'any'; } elseif ('number' == $field_type) { $new_field['options']['number_decimals'] = 2; } elseif ('desc' == $field['coltype']) { $new_field['options']['wysiwyg_editor'] = 'tinymce'; } elseif ('text' == $field_type) { $new_field['options']['text_max_length'] = 128; } if (isset($pod['fields'][$new_field['name']])) { $new_field = array_merge($pod['fields'][$new_field['name']], $new_field); } $pod_data['fields'][$k] = $new_field; } } if (pods_var('id', $pod, 0) < 1) { $pod_data['fields'] = array_merge($core_fields, $pod_data['fields']); } if (empty($pod_data['label'])) { $pod_data['label'] = ucwords(str_replace('_', ' ', $pod_data['name'])); } if (isset($pod_data['is_toplevel'])) { $pod_data['show_in_menu'] = 1 == $pod_data['is_toplevel'] ? 1 : 0; unset($pod_data['is_toplevel']); } if (isset($pod_data['detail_page'])) { $pod_data['detail_url'] = $pod_data['detail_page']; unset($pod_data['detail_page']); } if (isset($pod_data['before_helpers'])) { $pod_data['pre_save_helpers'] = $pod_data['before_helpers']; unset($pod_data['before_helpers']); } if (isset($pod_data['after_helpers'])) { $pod_data['post_save_helpers'] = $pod_data['after_helpers']; unset($pod_data['after_helpers']); } if (isset($pod_data['pre_drop_helpers'])) { $pod_data['pre_delete_helpers'] = $pod_data['pre_drop_helpers']; unset($pod_data['pre_drop_helpers']); } if (isset($pod_data['post_drop_helpers'])) { $pod_data['post_delete_helpers'] = $pod_data['post_drop_helpers']; unset($pod_data['post_drop_helpers']); } $pod_data['name'] = pods_clean_name($pod_data['name']); $pod_data = array('name' => $pod_data['name'], 'label' => $pod_data['label'], 'type' => 'pod', 'storage' => 'table', 'fields' => $pod_data['fields'], 'options' => array('pre_save_helpers' => pods_var_raw('pre_save_helpers', $pod_data), 'post_save_helpers' => pods_var_raw('post_save_helpers', $pod_data), 'pre_delete_helpers' => pods_var_raw('pre_delete_helpers', $pod_data), 'post_delete_helpers' => pods_var_raw('post_delete_helpers', $pod_data), 'show_in_menu' => 1 == pods_var_raw('show_in_menu', $pod_data, 0) ? 1 : 0, 'detail_url' => pods_var_raw('detail_url', $pod_data), 'pod_index' => 'name')); } $pod = array_merge($pod, $pod_data); foreach ($pod['fields'] as $k => $field) { if (isset($field['id']) && !isset($existing_fields[$field['name']])) { unset($pod['fields'][$k]['id']); } if (isset($field['pod_id'])) { unset($pod['fields'][$k]['pod_id']); } if (isset($existing_fields[$field['name']])) { if ($existing_field = pods_api()->load_field(array('name' => $field['name'], 'pod' => $pod['name']))) { $pod['fields'][$k]['id'] = $existing_field['id']; } } if (isset($field['pod'])) { unset($pod['fields'][$k]['pod']); } } $api->save_pod($pod); if (!isset($found['pods'])) { $found['pods'] = array(); } $found['pods'][$pod['name']] = $pod['label']; } } if (isset($data['templates']) && is_array($data['templates'])) { foreach ($data['templates'] as $template_data) { if (isset($template_data['id'])) { unset($template_data['id']); } $template = $api->load_template(array('name' => $template_data['name'])); if (!empty($template)) { // Delete Template if it exists if ($replace) { $api->delete_template(array('id' => $template['id'])); $template = array(); } } else { $template = array(); } $template = array_merge($template, $template_data); $api->save_template($template); if (!isset($found['templates'])) { $found['templates'] = array(); } $found['templates'][$template['name']] = $template['name']; } } // Backwards compatibility if (isset($data['pod_pages'])) { $data['pages'] = $data['pod_pages']; unset($data['pod_pages']); } if (isset($data['pages']) && is_array($data['pages'])) { foreach ($data['pages'] as $page_data) { if (isset($page_data['id'])) { unset($page_data['id']); } $page = $api->load_page(array('name' => pods_var_raw('name', $page_data, pods_var_raw('uri', $page_data), null, true))); if (!empty($page)) { // Delete Page if it exists if ($replace) { $api->delete_page(array('id' => $page['id'])); $page = array(); } } else { $page = array(); } // Backwards compatibility if (isset($page_data['uri'])) { $page_data['name'] = $page_data['uri']; unset($page_data['uri']); } if (isset($page_data['phpcode'])) { $page_data['code'] = $page_data['phpcode']; unset($page_data['phpcode']); } $page = array_merge($page, $page_data); $page['name'] = trim($page['name'], '/'); $api->save_page($page); if (!isset($found['pages'])) { $found['pages'] = array(); } $found['pages'][$page['name']] = $page['name']; } } if (isset($data['helpers']) && is_array($data['helpers'])) { foreach ($data['helpers'] as $helper_data) { if (isset($helper_data['id'])) { unset($helper_data['id']); } $helper = $api->load_helper(array('name' => $helper_data['name'])); if (!empty($helper)) { // Delete Helper if it exists if ($replace) { $api->delete_helper(array('id' => $helper['id'])); $helper = array(); } } else { $helper = array(); } // Backwards compatibility if (isset($helper_data['phpcode'])) { $helper_data['code'] = $helper_data['phpcode']; unset($helper_data['phpcode']); } if (isset($helper_data['type'])) { if ('before' == $helper_data['type']) { $helper_data['type'] = 'pre_save'; } elseif ('after' == $helper_data['type']) { $helper_data['type'] = 'post_save'; } } $helper = array_merge($helper, $helper_data); if (isset($helper['type'])) { $helper['helper_type'] = $helper['type']; unset($helper['helper_type']); } $api->save_helper($helper); if (!isset($found['helpers'])) { $found['helpers'] = array(); } $found['helpers'][$helper['name']] = $helper['name']; } } $found = apply_filters('pods_packages_import', $found, $data, $replace); if (!empty($found)) { return $found; } return false; }