File "json.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/redirection/fileio/json.php
File size: 2.36 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

class Red_Json_File extends Red_FileIO
{
    public function force_download()
    {
        parent::force_download();
        header('Content-Type: application/json');
        header('Content-Disposition: attachment; filename="' . $this->export_filename('json') . '"');
    }
    public function get_data(array $items, array $groups)
    {
        $version = red_get_plugin_data(dirname(dirname(__FILE__)) . '/redirection.php');
        $items = array('plugin' => array('version' => trim($version['Version']), 'date' => date('r')), 'groups' => $groups, 'redirects' => array_map(function ($item) {
            return $item->to_json();
        }, $items));
        return wp_json_encode($items, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . PHP_EOL;
    }
    public function load($group, $filename, $data)
    {
        global $wpdb;
        $count = 0;
        $json = @json_decode($data, true);
        if ($json === false) {
            return 0;
        }
        $groups = array();
        $group_map = array();
        if (isset($json['groups'])) {
            foreach ($json['groups'] as $group) {
                $old_group_id = $group['id'];
                unset($group['id']);
                $group = Red_Group::create($group['name'], $group['module_id'], $group['enabled'] ? true : false);
                if ($group) {
                    $group_map[$old_group_id] = $group->get_id();
                }
            }
        }
        unset($json['groups']);
        if (isset($json['redirects'])) {
            foreach ($json['redirects'] as $pos => $redirect) {
                unset($redirect['id']);
                if (!isset($group_map[$redirect['group_id']])) {
                    $new_group = Red_Group::create('Group', 1);
                    $group_map[$redirect['group_id']] = $new_group->get_id();
                }
                if ($redirect['match_type'] === 'url' && isset($redirect['action_data']) && !is_array($redirect['action_data'])) {
                    $redirect['action_data'] = array('url' => $redirect['action_data']);
                }
                $redirect['group_id'] = $group_map[$redirect['group_id']];
                Red_Item::create($redirect);
                $count++;
                unset($json['redirects'][$pos]);
                $wpdb->queries = array();
                $wpdb->num_queries = 0;
            }
        }
        return $count;
    }
}