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;
 }
Example #2
0
 /**
  * Stop all active handler
  *
  * @return void
  */
 public static function clean()
 {
     if (self::$stack) {
         restore_error_handler();
     }
     self::$stack = array();
 }