RCCWP_CustomWritePanel::Import PHP Method

Import() public method

Import a write panel given the file path.
public Import ( string $panelFilePath, string $writePanelName = false, boolean $overwrite = false ) : the
$panelFilePath string the full path of the panel file
$writePanelName string the write panel name, if this value if false, the function will use the pnl filename as the write panel name. The default value is false
$overwrite boolean whether to overwrite existing panels with the same name
return the panel id, or false in case of error.
    function Import($panelFilePath, $writePanelName = false, $overwrite = false)
    {
        global $wpdb;
        include_once 'RCCWP_CustomGroup.php';
        include_once 'RCCWP_CustomField.php';
        include_once 'RCCWP_Application.php';
        if (!$writePanelName) {
            //use filename
            $writePanelName = basename($panelFilePath, ".pnl");
        }
        if ($writePanelName == '') {
            return false;
        }
        $writePanelID = RCCWP_CustomWritePanel::GetIdByName($writePanelName);
        if ($writePanelID && !$overwrite) {
            // Append a number if the panel already exists,
            $i = 2;
            $temp_name = $writePanelName . "_1";
            while (RCCWP_CustomWritePanel::GetIdByName($temp_name)) {
                $temp_name = $writePanelName . "_" . $i++;
            }
            $writePanelName = $temp_name;
        }
        // Unserialize file
        $imported_data = unserialize(file_get_contents($panelFilePath));
        $types_results = RCCWP_CustomField::GetCustomFieldTypes();
        $types = array();
        foreach ($types_results as $types_result) {
            $types[$types_result->name] = $types_result->id;
        }
        // Prepare categories list
        $assignedCategories = array();
        if (is_array($imported_data['panel']->assignedCategories)) {
            foreach ($imported_data['panel']->assignedCategories as $cat_name) {
                wp_create_category($cat_name);
                $assignedCategories[] = $cat_name;
            }
        }
        //Create write panel
        if ($writePanelID && $overwrite) {
            RCCWP_CustomWritePanel::Update($existingPanelId, $writePanelName, $imported_data['panel']->description, $imported_data['panel']->standardFieldsIDs, $assignedCategories, $imported_data['panel']->display_order, $imported_data['panel']->type, false, $imported_data['panel']->single, $imported_data['panel']->theme, $imported_data['panel']->parent_page);
            foreach (RCCWP_CustomWritePanel::GetCustomGroups($writePanelID) as $group) {
                RCCWP_CustomGroup::Delete($group->id);
            }
        } else {
            $writePanelID = RCCWP_CustomWritePanel::Create($writePanelName, $imported_data['panel']->description, $imported_data['panel']->standardFieldsIDs, $assignedCategories, $imported_data['panel']->display_order, $imported_data['panel']->type, false, $imported_data['panel']->single, $imported_data['panel']->theme, $imported_data['panel']->parent_page);
        }
        if (is_array($imported_data['fields'])) {
            foreach ($imported_data['fields'] as $groupName => $group) {
                // For backward compatability
                if (!isset($group->fields)) {
                    $newGroup->fields = $group;
                    $group = $newGroup;
                }
                // Import group
                $groupID = RCCWP_CustomGroup::Create($writePanelID, $groupName, $group->duplicate, $group->at_right);
                // Import group fields
                foreach ($group->fields as $field) {
                    $fieldOptions = @implode("\n", $field->options);
                    $fieldDefault = @implode("\n", $field->default_value);
                    if ($field->type == "Related Type") {
                        $field->properties["panel_id"] = RCCWP_CustomWritePanel::GetIdByName($field->properties["panel_name"]);
                        unset($field->properties["panel_name"]);
                    }
                    RCCWP_CustomField::Create($groupID, $field->name, $field->description, $field->display_order, $field->required_field, $types[$field->type], $fieldOptions, $fieldDefault, $field->properties, $field->duplicate, $field->help_text);
                }
            }
        }
        return $writePanelID;
    }

Usage Example

function install()
{
    require_once dirname(__FILE__) . '/../magic-fields/RCCWP_CustomWritePanel.php';
    // Create default write pages
    $existing_write_panels = array();
    foreach (RCCWP_CustomWritePanel::GetCustomWritePanels() as $panel) {
        array_push($existing_write_panels, $panel->name);
    }
    $panels_dir_name = dirname(__FILE__) . '/panels/';
    $panels_dir = opendir($panels_dir_name);
    $panels = array();
    while (false !== ($panel_file = readdir($panels_dir))) {
        $panel_name = basename($panel_file, ".pnl");
        if (!is_dir($panel_file) && $panel_name && $panel_name != $panel_file && !in_array($panel_name, $existing_write_panels)) {
            // If this file isn't a directory, ends with .pnl, and isn't already an existing panel, create and store it for import.
            // $panel_id = RCCWP_CustomWritePanel::Create($panel_name, '', array(), array(), 1, "post", false);
            RCCWP_CustomWritePanel::Import($panels_dir_name . $panel_file);
            $panels[$panel_name] = $panel_file;
        }
    }
    foreach ($panels as $panel_name => $panel_file) {
        RCCWP_CustomWritePanel::Import($panels_dir_name . $panel_file, $panel_name, true);
    }
}
All Usage Examples Of RCCWP_CustomWritePanel::Import