public function layout_handle_save($layout_json, $layout_name, $overwrite = false, $delete = false, $overwrite_assignment = false) { if (is_object($layout_json) || is_array($layout_json)) { $layout = $layout_json; } else { Toolset_ErrorHandler::start(E_ALL); $layout = json_decode(str_replace('\\\\"', '\\"', $layout_json)); } if (is_null($layout) === false) { if (is_object($layout) && isset($layout->media)) { $this->media = $layout->media; unset($layout->media); } elseif (is_array($layout) && isset($layout['media'])) { $this->media = $layout['media']; unset($layout['media']); } try { $layout_json = wp_json_encode(self::fix_toolset_association_on_import_export($layout, 'import')); } catch (Exception $e) { printf("Error: %s in %s at %d", $e->getMessage(), $e->getFile(), $e->getLine()); } $this->existing_layout = self::layout_exists($layout_name); if ($this->media && is_array($this->media) && count($this->media) > 0) { $files = $this->create_and_save_media_files(); if ($files) { $layout_json = $this->handle_layout_media_url_patch($layout_json); } } if ($overwrite === false) { if ($this->existing_layout === null) { $ret = $this->save_layout($layout_name, $layout_json, $layout, $overwrite_assignment); if ($ret !== 0) { if ($delete) { $this->imported_layouts[] = $ret; } $this->track_for_mm[$layout->name] = $ret; $this->layouts_saved++; } return $ret; } elseif ($this->existing_layout !== null) { $ret = $this->manage_assignments($this->existing_layout, $layout, $overwrite_assignment); if ($ret) { $this->layouts_overwritten++; return $ret; } } } elseif ($overwrite === true) { if ($this->existing_layout === null) { $ret = $this->save_layout($layout_name, $layout_json, $layout, $overwrite_assignment); if ($ret !== 0) { if ($delete) { $this->imported_layouts[] = $ret; } $this->track_for_mm[$layout->name] = $ret; $this->layouts_saved++; } return $ret; } else { $ret = $this->update_layout($this->existing_layout, $layout_name, $layout_json, $layout, $overwrite_assignment); if ($ret !== 0) { if ($delete) { $this->imported_layouts[] = $ret; } $this->track_for_mm[$layout->name] = $ret; $this->layouts_overwritten++; } return $ret; } } } return false; }
/** * Stop all active handler * * @return void */ public static function clean() { if (self::$stack) { restore_error_handler(); } self::$stack = array(); }