Пример #1
0
 public function asXML($filename = NULL, $human = TRUE)
 {
     #clean fields that not has to be in svg
     unset($this->maxY);
     unset($this->maxX);
     unset($this->startX);
     unset($this->startY);
     unset($this->data);
     return parent::asXML($filename, $human);
 }
        public function create_image_from_svg()
        {
            if (!isset($_POST['order_id']) || !isset($_POST['item_id']) || !isset($_POST['svg']) || !isset($_POST['title'])) {
                exit;
            }
            check_ajax_referer('fpd_ajax_nonce', '_ajax_nonce');
            require_once FPD_PLUGIN_ADMIN_DIR . '/inc/svglib/svglib.php';
            $order_id = trim($_POST['order_id']);
            $item_id = trim($_POST['item_id']);
            $svg = stripslashes(trim($_POST['svg']));
            $width = trim($_POST['width']);
            $height = trim($_POST['height']);
            $title = sanitize_title(trim($_POST['title']));
            //create fancy product orders directory
            if (!file_exists(FPD_ORDER_DIR)) {
                wp_mkdir_p(FPD_ORDER_DIR);
            }
            //create uploads dir
            $images_dir = FPD_ORDER_DIR . 'images/';
            if (!file_exists($images_dir)) {
                wp_mkdir_p($images_dir);
            }
            //shortcode order
            if (empty($item_id)) {
                $shortcode_dir = FPD_ORDER_DIR . 'images/_shortcode/';
                if (!file_exists($shortcode_dir)) {
                    wp_mkdir_p($shortcode_dir);
                }
                $item_dir = $shortcode_dir . $order_id . '/';
                if (!file_exists($item_dir)) {
                    wp_mkdir_p($item_dir);
                }
            } else {
                //create order dir
                $order_dir = $images_dir . $order_id . '/';
                if (!file_exists($order_dir)) {
                    wp_mkdir_p($order_dir);
                }
                //create item dir
                $item_dir = $order_dir . $item_id . '/';
                if (!file_exists($item_dir)) {
                    wp_mkdir_p($item_dir);
                }
            }
            $image_path = $item_dir . $title . '.svg';
            $image_exist = file_exists($image_path);
            header('Content-Type: application/json');
            try {
                $svg = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="' . $width . '" height="' . $height . '" xml:space="preserve">' . $svg . '</svg>';
                $svg_doc = new SVGDocument($svg);
                $svg_doc->asXML($image_path);
                $image_url = content_url(substr($image_path, strrpos($image_path, '/fancy_products_orders/')));
                echo json_encode(array('code' => $image_exist ? 302 : 201, 'url' => $image_url, 'title' => $title));
            } catch (Exception $e) {
                echo json_encode(array('code' => 500));
            }
            die;
        }
    public function createImageFromSvg()
    {
        if (!isset($this->request->post['order_id']) || !isset($this->request->post['item_id']) || !isset($this->request->post['svg']) || !isset($this->request->post['title'])) {
            exit;
        }
        require_once DIR_SYSTEM . 'library/svglib/svglib.php';
        $order_id = trim($this->request->post['order_id']);
        $item_id = trim($this->request->post['item_id']);
        $svg = stripslashes(trim($this->request->post['svg']));
        $width = trim($this->request->post['width']);
        $height = trim($this->request->post['height']);
        $title = trim($this->request->post['title']);
        //create fancy product orders directory
        if (!file_exists(DIR_IMAGE)) {
            mkdir(DIR_IMAGE);
        }
        //create uploads dir
        $images_dir = DIR_IMAGE . 'design_products_orders/';
        if (!file_exists($images_dir)) {
            mkdir($images_dir);
        }
        $images_dir = DIR_IMAGE . 'design_products_orders/images/';
        if (!file_exists($images_dir)) {
            mkdir($images_dir);
        }
        //create order dir
        $order_dir = $images_dir . $order_id . '/';
        if (!file_exists($order_dir)) {
            mkdir($order_dir);
        }
        //create item dir
        $item_dir = $order_dir . $item_id . '/';
        if (!file_exists($item_dir)) {
            mkdir($item_dir);
        }
        $image_path = $item_dir . $title . '.svg';
        $image_exist = file_exists($image_path);
        header('Content-Type: application/json');
        try {
            $svg = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
			<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="' . $width . '" height="' . $height . '" xml:space="preserve">' . $svg . '</svg>';
            $svg_doc = new SVGDocument(html_entity_decode($svg, ENT_QUOTES, 'UTF-8'));
            $svg_doc->asXML($image_path);
            $image_url = str_replace(DIR_IMAGE, HTTP_CATALOG . 'image/', $image_path);
            $this->response->setOutput(json_encode(array('code' => $image_exist ? 302 : 201, 'url' => $image_url, 'title' => $title)));
        } catch (Exception $e) {
            $this->response->setOutput(json_encode(array('code' => 500)));
        }
    }