Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 /**
  * 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) " />&nbsp;&nbsp;&nbsp;<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) " />&nbsp;&nbsp;&nbsp;<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';
 }
Exemplo n.º 4
0
 /**
  * @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;
 }