/** * Saves the enabled icons. * * @since 1.0 * @access private * @return void */ private static function save_enabled_icons() { if (isset($_POST['fl-icons-nonce']) && wp_verify_nonce($_POST['fl-icons-nonce'], 'icons')) { // Make sure we have at least one enabled icon set. if (!isset($_POST['fl-enabled-icons']) && empty($_POST['fl-new-icon-set'])) { self::add_error(__("Error! You must have at least one icon set enabled.", 'fl-builder')); return; } $filesystem = FLBuilderUtils::get_filesystem(); $enabled_icons = array(); // Sanitize the enabled icons. if (isset($_POST['fl-enabled-icons']) && is_array($_POST['fl-enabled-icons'])) { $enabled_icons = array_map('sanitize_text_field', $_POST['fl-enabled-icons']); } // Update the enabled sets. self::update_enabled_icons($enabled_icons); // Delete a set? if (!empty($_POST['fl-delete-icon-set'])) { $sets = FLBuilderIcons::get_sets(); $key = sanitize_text_field($_POST['fl-delete-icon-set']); $index = array_search($key, $enabled_icons); if (false !== $index) { unset($enabled_icons[$index]); } if (isset($sets[$key])) { $filesystem->rmdir($sets[$key]['path'], true); FLBuilderIcons::remove_set($key); } } // Upload a new set? if (!empty($_POST['fl-new-icon-set'])) { $dir = FLBuilderModel::get_cache_dir('icons'); $id = (int) $_POST['fl-new-icon-set']; $path = get_attached_file($id); $new_path = $dir['path'] . 'icon-' . time() . '/'; $unzipped = unzip_file($path, $new_path); // Unzip failed. if (!$unzipped) { self::add_error(__("Error! Could not unzip file.", 'fl-builder')); return; } // Move files if unzipped into a subfolder. $files = $filesystem->dirlist($new_path); if (1 == count($files)) { $values = array_values($files); $subfolder_info = array_shift($values); $subfolder = $new_path . $subfolder_info['name'] . '/'; if (file_exists($subfolder) && is_dir($subfolder)) { $files = $filesystem->dirlist($subfolder); if ($files) { foreach ($files as $file) { $filesystem->move($subfolder . $file['name'], $new_path . $file['name']); } } $filesystem->rmdir($subfolder); } } // Check for supported sets. $is_icomoon = file_exists($new_path . 'selection.json'); $is_fontello = file_exists($new_path . 'config.json'); // Show an error if we don't have a supported icon set. if (!$is_icomoon && !$is_fontello) { $filesystem->rmdir($new_path, true); self::add_error(__("Error! Please upload an icon set from either Icomoon or Fontello.", 'fl-builder')); return; } // Enable the new set. if (is_array($enabled_icons)) { $key = FLBuilderIcons::get_key_from_path($new_path); $enabled_icons[] = $key; } } // Update the enabled sets again in case they have changed. self::update_enabled_icons($enabled_icons); } }
/** * Deletes almost all database data and asset cache for the builder. * We don't delete _fl_builder_enabled, _fl_builder_data and _fl_builder_draft * so layouts can be recovered should the plugin be installed again. * * @since 1.0 * @return void */ public static function uninstall_database() { if (current_user_can('delete_plugins')) { // Delete builder options. delete_option('_fl_builder_settings'); delete_option('_fl_builder_enabled_modules'); delete_option('_fl_builder_enabled_templates'); delete_option('_fl_builder_user_templates_admin'); delete_option('_fl_builder_templates_override'); delete_option('_fl_builder_templates_override_rows'); delete_option('_fl_builder_templates_override_modules'); delete_option('_fl_builder_post_types'); delete_option('_fl_builder_enabled_icons'); delete_option('_fl_builder_branding'); delete_option('_fl_builder_branding_icon'); delete_option('_fl_builder_theme_branding'); delete_option('_fl_builder_editing_capability'); delete_option('_fl_builder_global_templates_editing_capability'); delete_option('_fl_builder_help_button'); delete_option('_fl_builder_color_presets'); // Delete builder user meta. delete_metadata('user', 0, '_fl_builder_launched', 1, true); // Delete uploaded files and folders. $upload_dir = self::get_upload_dir(); $filesystem = FLBuilderUtils::get_filesystem(); $filesystem->rmdir($upload_dir['path'], true); // Deactivate and delete the plugin. deactivate_plugins(array(self::plugin_basename()), false, is_network_admin()); delete_plugins(array(self::plugin_basename())); // Redirect to the plugins page. wp_redirect(admin_url('plugins.php?deleted=true&plugin_status=all&paged=1&s=')); exit; } }
/** * Update to version 1.4.6 or later. * * @since 1.4.6 * @access private * @return void */ private static function v_1_4_6() { // Remove the old fl-builder uploads folder. $filesystem = FLBuilderUtils::get_filesystem(); $upload_dir = wp_upload_dir(); $path = trailingslashit($upload_dir['basedir']) . 'fl-builder'; if (file_exists($path)) { $filesystem->rmdir($path, true); } }
> <div class="fl-form-field-preview-text"> <?php if (isset($field['preview_text']) && is_object($value)) { $form = FLBuilderModel::get_settings_form($field['form']); $form_fields = FLBuilderModel::get_settings_form_fields($form['tabs']); if (isset($form_fields[$field['preview_text']])) { $preview_field = $form_fields[$field['preview_text']]; if ('icon' == $preview_field['type']) { echo '<i class="' . $value->{$field}['preview_text'] . '"></i>'; } else { if ('select' == $preview_field['type']) { echo $preview_field['options'][$value->{$field}['preview_text']]; } else { if (!empty($value->{$field['preview_text']})) { echo FLBuilderUtils::snippetwop(strip_tags(str_replace(''', "'", $value->{$field['preview_text']})), 35); } } } } } ?> </div> <a class="fl-form-field-edit" href="javascript:void(0);" onclick="return false;" data-type="<?php echo $field['form']; ?> "><?php printf(_x('Edit %s', '%s stands for form field label.', 'fl-builder'), $field['label']); ?> </a> <input name="<?php