public function setFormat(Format $format = NULL)
 {
     if (isset($format)) {
         // only XSLT format for templates
         if ($format->getType() != c\T::XSLTFORMAT) {
             throw new \Exception(S_SPAN . "Wrong type of format." . E_SPAN);
         }
         $this->getProperty()->formatId = $format->getId();
         $this->getProperty()->formatPath = $format->getPath();
     } else {
         $this->getProperty()->formatId = NULL;
         $this->getProperty()->formatPath = NULL;
     }
     return $this;
 }
 public function setFormat(a\Format $format = NULL)
 {
     if (isset($format)) {
         if ($this->type != c\T::PAGE && $format->getType() != c\T::XSLTFORMAT) {
             throw new \Exception(S_SPAN . "Wrong type of format." . E_SPAN);
         }
         $this->format_id = $format->getId();
         $this->format_path = $format->getPath();
     } else {
         $this->format_id = NULL;
         $this->format_path = NULL;
     }
     return $this;
 }
 public static function assetTreeUpdatePage(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL)
 {
     $source_content = NULL;
     if (isset($params['source-cascade'])) {
         $source_cascade = $params['source-cascade'];
     } else {
         echo c\M::SOURCE_CASCADE_NOT_SET . BR;
         return;
     }
     if (isset($params['target-cascade'])) {
         $target_cascade = $params['target-cascade'];
     } else {
         echo c\M::TARGET_CASCADE_NOT_SET . BR;
         return;
     }
     if (isset($params['source-site'])) {
         $source_site = $params['source-site'];
     } else {
         echo c\M::SOURCE_SITE_NOT_SET . BR;
         return;
     }
     if (isset($params['target-site'])) {
         $target_site = $params['target-site'];
     } else {
         echo c\M::TARGET_SITE_NOT_SET . BR;
         return;
     }
     if (isset($params['exception-thrown'])) {
         $exception_thrown = $params['exception-thrown'];
     } else {
         echo c\M::EXCEPTION_THROWN_NOT_SET . BR;
         return;
     }
     if (isset($params['update-data'])) {
         $update_data = $params['update-data'];
     } else {
         $update_data = true;
     }
     if (isset($params['update-metadata'])) {
         $update_metadata = $params['update-metadata'];
     } else {
         $update_metadata = true;
     }
     try {
         $source_page = $child->getAsset($service);
         $source_page_path = u\StringUtility::removeSiteNameFromPath($source_page->getPath());
     } catch (\Exception $e) {
         throw new e\CascadeInstancesErrorException($e . BR . S_SPAN . "Path: " . $child->getPathPath() . E_SPAN);
     }
     // it will fail if there is any irregularity in the page
     if ($source_page->hasStructuredData()) {
         $source_page_dd = $source_page->getDataDefinition();
         $source_page_dd_path = u\StringUtility::removeSiteNameFromPath($source_page_dd->getPath());
         $source_page_dd_site = $source_page_dd->getSiteName();
         $target_page_dd_site = $source_page_dd_site;
         // compare the two data definitions
         $source_dd = Asset::getAsset($service, DataDefinition::TYPE, $source_page_dd_path, $source_page_dd_site);
         // data definition must be there
         $target_dd = $target_cascade->getAsset(DataDefinition::TYPE, $source_page_dd_path, $target_page_dd_site);
         $source_xml = new \SimpleXMLElement($source_dd->getXml());
         $target_xml = new \SimpleXMLElement($target_dd->getXml());
         if (!u\XMLUtility::isXmlIdentical($source_xml, $target_xml)) {
             throw new e\CascadeInstancesErrorException(S_SPAN . c\M::DIFFERENT_DATA_DEFINITIONS . E_SPAN);
         }
         $source_structured_data_std = $source_page->getStructuredData()->toStdClass();
         $target_dd_id = $target_dd->getId();
         $target_structured_data_std = $source_structured_data_std;
         $target_structured_data_std->definitionId = $target_dd_id;
     } else {
         $source_content = $source_page->getXhtml();
     }
     // content type
     $source_page_ct = $source_page->getContentType();
     $source_page_ct_path = u\StringUtility::removeSiteNameFromPath($source_page_ct->getPath());
     $source_page_ct_site = $source_page_ct->getSiteName();
     $target_page_ct_site = $source_page_ct_site;
     // content type must be there
     $target_page_ct = $target_cascade->getAsset(ContentType::TYPE, $source_page_ct_path, $target_page_ct_site);
     $source_page_path_array = u\StringUtility::getExplodedStringArray("/", $source_page_path);
     $source_page_path = $source_page_path_array[count($source_page_path_array) - 1];
     $source_page_parent_path = $source_page->getParentContainerPath();
     // create page
     $target_site_name = $target_site->getName();
     // parent must be there
     $target_parent = $target_cascade->getAsset(Folder::TYPE, $source_page_parent_path, $target_site_name);
     $target_page = $target_cascade->createPage($target_parent, $source_page_path, $target_page_ct, $source_content);
     // update data
     if ($update_data) {
         if ($target_page->hasStructuredData()) {
             try {
                 $target_service = $target_cascade->getService();
                 $identifiers = $source_page->getIdentifiers();
                 $identifier_asset_map = array();
                 $identifier_method_map = array();
                 $structured_data = new p\StructuredData($target_structured_data_std, $target_service);
                 foreach ($identifiers as $identifier) {
                     // store the resources
                     if ($source_page->isAssetNode($identifier)) {
                         $block_id = $source_page->getBlockId($identifier);
                         if (isset($block_id)) {
                             $resource_id = $block_id;
                             $source_resource_type = Block::getBlockType($service, $resource_id);
                         }
                         $file_id = $source_page->getFileId($identifier);
                         if (isset($file_id)) {
                             $resource_id = $file_id;
                             $source_resource_type = File::TYPE;
                         }
                         $page_id = $source_page->getPageId($identifier);
                         if (isset($page_id)) {
                             $resource_id = $page_id;
                             $source_resource_type = Page::TYPE;
                         }
                         $symlink_id = $source_page->getSymlinkId($identifier);
                         if (isset($symlink_id)) {
                             $resource_id = $symlink_id;
                             $source_resource_type = Symlink::TYPE;
                         }
                         if (isset($resource_id)) {
                             try {
                                 $source_resource = $service->retrieve($service->createId($source_resource_type, $resource_id));
                                 if ($service->isSuccessful()) {
                                     $source_resource_site = $source_resource->siteName;
                                     $source_resource_path = $source_resource->path;
                                     $target_resource_site = $source_resource_site;
                                     try {
                                         $asset = $target_cascade->getAsset($source_resource_type, $source_resource_path, $source_resource_site);
                                         $target_resource_id = $asset->getId();
                                         $identifier_asset_map[$identifier] = $asset;
                                         $resource_id = NULL;
                                     } catch (\Exception $e) {
                                         if ($exception_thrown) {
                                             throw new e\CascadeInstancesErrorException($e . BR . S_SPAN . "Path: " . $source_resource_path . E_SPAN);
                                         } else {
                                             DebugUtility::out($e->getMessage());
                                         }
                                     }
                                 }
                             } catch (\Exception $e) {
                                 if ($exception_thrown) {
                                     throw new e\CascadeInstancesErrorException($e);
                                 } else {
                                     DebugUtility::out($e->getMessage());
                                 }
                             }
                         }
                         // reinitialized for next round
                         $resource_id = NULL;
                     }
                 }
                 $identifiers = array_keys($identifier_asset_map);
                 $count = count($identifiers);
                 if ($count > 0) {
                     foreach ($identifiers as $identifier) {
                         $asset = $identifier_asset_map[$identifier];
                         $type = $asset->getType();
                         switch ($type) {
                             case 'file':
                                 $method = 'setFile';
                                 break;
                             case 'page':
                                 $method = 'setPage';
                                 break;
                             case 'symlink':
                                 $method = 'setSymlink';
                                 break;
                             default:
                                 $method = 'setBlock';
                         }
                         $identifier_method_map[$identifier] = $method;
                         // unplug everything from source
                         $structured_data->{$method}($identifier, NULL);
                         // unset method name
                         $method = NULL;
                     }
                 }
                 try {
                     $target_page->setStructuredData($structured_data);
                 } catch (\Exception $e) {
                     if ($exception_thrown) {
                         throw new e\CascadeInstancesErrorException($e);
                     } else {
                         DebugUtility::out($e->getMessage());
                     }
                 }
                 if ($count > 0) {
                     foreach ($identifier_method_map as $identifier => $method) {
                         $asset = $identifier_asset_map[$identifier];
                         $target_page->{$method}($identifier, $identifier_asset_map[$identifier]);
                     }
                 }
                 $target_page->edit();
             } catch (\Exception $e) {
                 if ($exception_thrown) {
                     throw new e\CascadeInstancesErrorException($e);
                 } else {
                     DebugUtility::out($e->getMessage());
                 }
             }
         }
         // page-level blocks and formats
         $map = self::getPageLevelBlockFormat($source_cascade, $source_page);
         foreach ($map as $config_name => $regions) {
             if (count($regions[0]) > 0) {
                 $region_map = $regions[0];
                 foreach ($region_map as $region => $block_format) {
                     if (isset($block_format['block'])) {
                         if (self::DEBUG) {
                             u\DebugUtility::out("Block " . $block_format['block']);
                         }
                         $type = Block::getBlockType($service, $block_format['block']);
                         if (self::DEBUG) {
                             u\DebugUtility::out("Type " . $type);
                         }
                         $source_block = $source_cascade->getAsset($type, $block_format['block']);
                         $source_block_path = u\StringUtility::removeSiteNameFromPath($source_block->getPath());
                         $source_block_site = $source_block->getSiteName();
                         if ($source_block_site == $source_page->getSiteName()) {
                             $target_block_site = $target_page->getSiteName();
                         } else {
                             $target_block_site = $source_block_site;
                         }
                         try {
                             $target_block = $target_cascade->getAsset($type, $source_block_path, $target_block_site);
                             $target_page->setRegionBlock($config_name, $region, $target_block)->edit();
                             if (self::DEBUG) {
                                 u\DebugUtility::out("Page: " . $target_page->getName() . " Region: " . $region);
                             }
                         } catch (\Exception $e) {
                             if ($exception_thrown) {
                                 throw new e\CascadeInstancesErrorException($e);
                             } else {
                                 DebugUtility::out($e->getMessage());
                             }
                         }
                     } else {
                         if (isset($block_format['no-block'])) {
                             $target_page->setRegionNoBlock($config_name, $region, true);
                         }
                     }
                     if (isset($block_format['format'])) {
                         if (self::DEBUG) {
                             u\DebugUtility::out("Format " . $block_format['format']);
                         }
                         $type = Format::getFormatType($service, $block_format['format']);
                         if (self::DEBUG) {
                             u\DebugUtility::out("Type " . $type);
                         }
                         $source_format = $source_cascade->getAsset($type, $block_format['format']);
                         $source_format_path = u\StringUtility::removeSiteNameFromPath($source_format->getPath());
                         $source_format_site = $source_format->getSiteName();
                         if ($source_format_site == $source_page->getSiteName()) {
                             $target_format_site = $target_page->getSiteName();
                         } else {
                             $target_format_site = $source_format_site;
                         }
                         try {
                             $target_format = $target_cascade->getAsset($type, $source_format_path, $target_format_site);
                             $target_page->setRegionFormat($config_name, $region, $target_format)->edit();
                             if (self::DEBUG) {
                                 u\DebugUtility::out("Page: " . $target_page->getName() . " Region: " . $region);
                             }
                         } catch (\Exception $e) {
                             if ($exception_thrown) {
                                 throw new e\CascadeInstancesErrorException($e);
                             } else {
                                 DebugUtility::out($e->getMessage());
                             }
                         }
                     } else {
                         if (isset($block_format['no-format'])) {
                             $target_page->setRegionNoFormat($config_name, $region, true);
                         }
                     }
                 }
             }
         }
     }
     $target_page->setMaintainAbsoluteLinks($source_page->getMaintainAbsoluteLinks())->setShouldBeIndexed($source_page->getShouldBeIndexed())->setShouldBePublished($source_page->getShouldBePublished())->edit();
     // commit everything before metadata
     // metadata
     if ($update_metadata) {
         $target_page->setMetadata($source_page->getMetadata());
     }
 }
<?php

require_once 'auth_tutorial7.php';
use cascade_ws_constants as c;
use cascade_ws_asset as a;
use cascade_ws_property as p;
use cascade_ws_utility as u;
use cascade_ws_exception as e;
try {
    // static methods
    echo a\Format::getFormatType($service, "9fea17498b7ffe83164c931447df1bfb");
    $f = a\Format::getFormat($service, "9fea0fa68b7ffe83164c9314f20b318a");
    echo "getCreatedBy: ", $f->getCreatedBy(), BR, "getCreatedDate: ", $f->getCreatedDate(), BR, "getLastModifiedBy: ", $f->getLastModifiedBy(), BR, "getLastModifiedDate: ", $f->getLastModifiedDate(), BR;
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}