$rmsc = $cascade->getAsset(a\MetadataSetContainer::TYPE, $id);
            u\DebugUtility::dump($rmsc->getParentContainer());
            // NULL
            // metadata set container
            $id = 'e10375238b7ffe8364375ac7a41ad6e3';
            $msc = $cascade->getAsset(a\MetadataSetContainer::TYPE, $id);
            $msc->getParentContainer()->display();
            // folder
            $id = '38906a9f8b7ffe83164c9314b9bdebfd';
            $f = $cascade->getAsset(a\Folder::TYPE, $id);
            $f->getParentContainer()->display();
            // data definition
            $id = '38a20d858b7ffe83164c931479486e6f';
            $dd = $cascade->getAsset(a\DataDefinition::TYPE, $id);
            $dd->getParentContainer()->display();
            echo $dd->getParentContainerId(), BR, $dd->getParentContainerPath(), BR;
            echo u\StringUtility::boolToString($dd->isDescendantOf($msc)), BR;
            if ($mode != 'all') {
                break;
            }
        case 'raw':
            if ($mode != 'all') {
                break;
            }
    }
    echo u\ReflectionUtility::getClassDocumentation("cascade_ws_asset\\ContainedAsset");
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
     echo $tb->getPropertyName() . BR;
     //u\DebugUtility::dump( $tb->getService() );
     echo $tb->getSiteId() . BR;
     echo $tb->getSiteName() . BR;
     u\DebugUtility::dump($tb->getSubscribers());
     echo $tb->getType() . BR;
     echo $tb->getText() . BR;
     echo $tb->getLastModifiedBy() . BR;
     echo $tb->getLastModifiedDate() . BR;
     // folder
     //$tb->getParentContainer()->dump( true );
     echo $tb->getParentContainerId() . BR;
     echo $tb->getParentContainerPath() . BR;
     echo u\StringUtility::getCoalescedString($tb->getExpirationFolderId()), BR;
     echo u\StringUtility::getCoalescedString($tb->getExpirationFolderPath()), BR;
     echo u\StringUtility::boolToString($tb->getExpirationFolderRecycled()), BR;
     if ($mode != 'all') {
         break;
     }
 case 'metadata':
     echo $tb->getCreatedBy() . BR;
     echo $tb->getCreatedDate() . BR;
     $field_name = "text";
     if ($tb->hasDynamicField($field_name)) {
         $df = $tb->getDynamicField($field_name);
     } else {
         echo "The dynamic field {$field_name} does not exist", BR;
     }
     if ($tb->hasDynamicFields()) {
         u\DebugUtility::dump($tb->getDynamicFields());
     } else {
     echo u\StringUtility::getCoalescedString($t->getTargetId()), BR;
     echo u\StringUtility::getCoalescedString($t->getTargetPath()), BR;
     $f = $t->getFormat();
     if ($f != NULL) {
         $f->display();
     }
     echo S_PRE;
     //u\DebugUtility::dump( $t->getPageRegion( 'STORAGE' ) );
     echo E_PRE;
     $block = $t->getPageRegionBlock('STORAGE');
     if (isset($block)) {
         $block->dump();
     }
     $format = $t->getPageRegionFormat('STORAGE');
     //echo $t->getXml(), BR;
     echo u\StringUtility::boolToString($t->hasPageRegion('STORAGE')), BR;
     if (isset($format)) {
         $format->dump();
     }
     //u\DebugUtility::dump( $t->getPageRegionNames() );
     //u\DebugUtility::dump( $t->getPageRegions() );
     //u\DebugUtility::dump( $t->getPageRegionStdForPageConfiguration() );
     if ($mode != 'all') {
         break;
     }
 case 'set':
     $format_id = "4ad593f38b7f085600a28ff77fe83c04";
     $format = $cascade->getAsset(a\XsltFormat::TYPE, $format_id);
     /*
                 $xml = <<<XML
     <system-region name="DEFAULT"/>
 // folder-index
 $ifb = $cascade->getAsset(a\IndexBlock::TYPE, $id);
 switch ($mode) {
     case 'all':
     case 'display':
         $ifb->display();
         if ($mode != 'all') {
             break;
         }
     case 'dump':
         $ifb->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'get':
         echo c\L::ID . $ifb->getId() . BR . "Index type: " . $ifb->getIndexBlockType() . BR . "Append calling page data: " . u\StringUtility::boolToString($ifb->getAppendCallingPageData()) . BR . "Depth of index: " . $ifb->getDepthOfIndex() . BR . "Index access rights: " . u\StringUtility::boolToString($ifb->getIndexAccessRights()) . BR . "Index blocks: " . u\StringUtility::boolToString($ifb->getIndexBlocks()) . BR . "Indexed content type ID: " . u\StringUtility::getCoalescedString($ifb->getIndexedContentTypeId()) . BR . "Indexed content type path: " . u\StringUtility::getCoalescedString($ifb->getIndexedContentTypePath()) . BR . "Indexed folder ID: " . u\StringUtility::getCoalescedString($ifb->getIndexedFolderId()) . BR . "Indexed folder path: " . u\StringUtility::getCoalescedString($ifb->getIndexedFolderPath()) . BR . "Indexed folder recycled: " . u\StringUtility::boolToString($ifb->getIndexedFolderRecycled()) . BR . "Index files: " . u\StringUtility::boolToString($ifb->getIndexFiles()) . BR . "Index links: " . u\StringUtility::boolToString($ifb->getIndexLinks()) . BR . "Index pages: " . u\StringUtility::boolToString($ifb->getIndexPages()) . BR . "Index regular content: " . u\StringUtility::boolToString($ifb->getIndexRegularContent()) . BR . "Index system metadata: " . u\StringUtility::boolToString($ifb->getIndexSystemMetadata()) . BR . "Index user info: " . u\StringUtility::boolToString($ifb->getIndexUserInfo()) . BR . "Index user metadata: " . u\StringUtility::boolToString($ifb->getIndexUserMetadata()) . BR . "Index workflow info: " . u\StringUtility::boolToString($ifb->getIndexWorkflowInfo()) . BR . "Max rendered assets: " . $ifb->getMaxRenderedAssets() . BR . "Page xml: " . $ifb->getPageXML() . BR . "Rendering behavior: " . $ifb->getRenderingBehavior() . BR . "Sort method: " . $ifb->getSortMethod() . BR . "Sort order: " . $ifb->getSortOrder() . BR . "Is content: " . u\StringUtility::boolToString($ifb->isContent()) . BR . "Is folder: " . u\StringUtility::boolToString($ifb->isFolder()) . BR;
         $ifb->getFolder()->dump();
         if ($mode != 'all') {
             break;
         }
     case 'set':
         //$fid = '980d6d088b7f0856015997e451c5e052';
         //$folder = $cascade->getAsset( a\Folder::TYPE, $fid );
         $ifb->setDepthOfIndex(3)->edit()->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'raw':
         $ifb = $service->retrieve($service->createId(c\T::INDEXBLOCK, $id), c\P::INDEXBLOCK);
         echo S_PRE;
         var_dump($ifb);
     {
         echo "The default config is publishable" . BR;
     }
     else
     {
         echo "The default config is not publishable" . BR;
     }
     */
     //u\DebugUtility::dump( $pcs->getPageConfigurations() );
     //$pcs->getPageConfigurationTemplate( "PDF" )->dump();
     //u\DebugUtility::dump( $pcs->getPageRegionNames( "Mobile" ) );
     //u\DebugUtility::dump( $pcs->getPageRegion( "Mobile", "DEFAULT" ) );
     //u\DebugUtility::dump( $pcs->getPageRegion( "Mobile", "DEFAULT" ) );
     //echo $pcs->getSerializationType( "PDF" ), BR;
     echo u\StringUtility::boolToString($pcs->hasPageConfiguration("XML")), BR;
     echo u\StringUtility::boolToString($pcs->hasPageRegion("Mobile", "DEFAULT")), BR;
     if ($mode != 'all') {
         break;
     }
 case 'set':
     /*
           $pcs->setConfigurationPageRegionBlock( 'Mobile', 'DEFAULT',
                   $cascade->getAsset( 
                       a\DataBlock::TYPE, 
                       'c23e62358b7f0856002a5e11909ccae3' )
               )->edit();
               
           $pcs->setConfigurationPageRegionFormat( 'Mobile', 'DEFAULT',
                   $cascade->getAsset( 
                       a\XsltFormat::TYPE, 
                       '404872688b7f0856002a5e11bb8c8642' )
use cascade_ws_property as p;
use cascade_ws_utility as u;
use cascade_ws_exception as e;
try {
    $f = $cascade->getAsset(a\Folder::TYPE, "39d53c648b7ffe834c5fe91ec0cb0f27");
    $wd_id = "9fe9a65e8b7ffe83164c9314b8a987d9";
    $wd = $cascade->getAsset(a\WorkflowDefinition::TYPE, $wd_id);
    $ws = $f->getWorkflowSettings();
    $ws->setInheritWorkflows(true)->setRequireWorkflow(false);
    /*   
        // toggle
        if( $ws->hasWorkflowDefinition( $wd_id ) )
            $ws->removeWorkflowDefinition( $wd );
        else
            $ws->addWorkflowDefinition( $wd );
    */
    $f->editWorkflowSettings(true, true);
    u\DebugUtility::dump($ws->toStdClass());
    u\DebugUtility::dump($ws->getWorkflowDefinitions());
    u\DebugUtility::dump($ws->getInheritedWorkflowDefinitions());
    u\DebugUtility::out(u\StringUtility::boolToString($ws->getInheritWorkflows()));
    u\DebugUtility::out(u\StringUtility::boolToString($ws->getRequireWorkflow()));
    $ws = $f->getWorkflowSettings();
    $ws->unsetInheritWorkflows();
    u\DebugUtility::dump($ws->toStdClass());
    $f->editWorkflowSettings(true, true);
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
 $id = "b893fd058b7f0856002a5e11185ff809";
 $ms = $cascade->getAsset(a\MetadataSet::TYPE, $id);
 switch ($mode) {
     case 'all':
     case 'display':
         $ms->display();
         if ($mode != 'all') {
             break;
         }
     case 'dump':
         $ms->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'get':
         echo "ID: " . $ms->getId() . BR . "Name: " . $ms->getName() . BR . "Path: " . $ms->getPath() . BR . "Property name: " . $ms->getPropertyName() . BR . "Site name: " . $ms->getSiteName() . BR . "Type: " . $ms->getType() . BR . "Author field required: " . u\StringUtility::boolToString($ms->getAuthorFieldRequired()) . BR . "Author field visibility: " . $ms->getAuthorFieldVisibility() . BR . "Description field required: " . u\StringUtility::boolToString($ms->getDescriptionFieldRequired()) . BR . "Description field visibility: " . $ms->getDescriptionFieldVisibility() . BR . "Display name field required: " . u\StringUtility::boolToString($ms->getDisplayNameFieldRequired()) . BR . "Display name field visibility: " . $ms->getDisplayNameFieldVisibility() . BR . "End date field required: " . u\StringUtility::boolToString($ms->getEndDateFieldRequired()) . BR . "End date field visibility: " . $ms->getEndDateFieldVisibility() . BR . "Expiration folder field required: " . u\StringUtility::boolToString($ms->getExpirationFolderFieldRequired()) . BR . "Expiration folder field visibility: " . $ms->getExpirationFolderFieldVisibility() . BR . "Keywords field required: " . u\StringUtility::boolToString($ms->getKeywordsFieldRequired()) . BR . "Keywords field visibility: " . $ms->getKeywordsFieldVisibility() . BR . "Review date field required: " . u\StringUtility::boolToString($ms->getReviewDateFieldRequired()) . BR . "Review date field visibility: " . $ms->getReviewDateFieldVisibility() . BR . "Start date field required: " . u\StringUtility::boolToString($ms->getStartDateFieldRequired()) . BR . "Start date field visibility: " . $ms->getStartDateFieldVisibility() . BR . "Summary field required: " . u\StringUtility::boolToString($ms->getSummaryFieldRequired()) . BR . "Summary field visibility: " . $ms->getSummaryFieldVisibility() . BR . "Teaser field required: " . u\StringUtility::boolToString($ms->getTeaserFieldRequired()) . BR . "Teaser field visibility: " . $ms->getTeaserFieldVisibility() . BR . "Title field required: " . u\StringUtility::boolToString($ms->getTitleFieldRequired()) . BR . "Title field visibility: " . $ms->getTitleFieldVisibility() . BR;
         if ($ms->hasDynamicMetadataFieldDefinitions()) {
             u\DebugUtility::dump($ms->getDynamicMetadataFieldDefinitionNames());
             u\DebugUtility::dump($ms->getDynamicMetadataFieldDefinitionsStdClass());
             u\DebugUtility::dump($ms->getDynamicMetadataFieldPossibleValueStrings("dropdown"));
             u\DebugUtility::dump($ms->getDynamicMetadataFieldPossibleValueStrings("text"));
         }
         u\DebugUtility::dump($ms->getMetadata()->toStdClass());
         $name = "show-intra-icon";
         if ($ms->hasDynamicMetadataFieldDefinition($name)) {
             echo "Definition found" . BR;
             $dmd = $ms->getDynamicMetadataFieldDefinition($name);
             u\DebugUtility::dump($dmd);
             u\DebugUtility::dump($dmd->getPossibleValueStrings());
         }
         if ($ms->isDynamicMetadataFieldRequired("text")) {
 $dmfd->appendValue("Chinese");
 $ms->edit();
 $dmfd->swapValues("Chinese", "Japanese");
 $ms->edit();
 if ($dmfd->hasDefaultValue()) {
     u\DebugUtility::dump($dmfd->getDefaultValue()->toStdClass());
     u\DebugUtility::out($dmfd->getDefaultValueString());
 }
 u\DebugUtility::out($dmfd->getFieldType());
 u\DebugUtility::out($dmfd->getLabel());
 u\DebugUtility::out($dmfd->getName());
 u\DebugUtility::dump($dmfd->getPossibleValues());
 u\DebugUtility::dump($dmfd->getPossibleValueStrings());
 u\DebugUtility::dump(u\StringUtility::boolToString($dmfd->getRequired()));
 u\DebugUtility::dump($dmfd->getVisibility());
 u\DebugUtility::dump(u\StringUtility::boolToString($dmfd->hasPossibleValue("Spanish")));
 $dmfd->removeValue("Chinese");
 $ms->edit()->dump();
 $dmfd->setLabel("Languages");
 $ms->edit()->dump();
 $dmfd->setRequired(true);
 $ms->edit()->dump();
 $dmfd->unsetSelectedByDefault("Japanese");
 $ms->edit()->dump();
 // radio
 $dmfd = $ms->getDynamicMetadataFieldDefinition("gender");
 $dmfd->setSelectedByDefault("Male");
 u\DebugUtility::dump($dmfd->toStdClass());
 $ms->edit()->dump();
 $dmfd->setVisibility(c\T::VISIBLE);
 $ms->edit()->dump();
<?php

require_once 'auth_tutorial7.php';
use cascade_ws_AOHS as aohs;
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 {
    $site_name = "ws-tutorial-wing";
    $base_folder = $cascade->getSite($site_name)->getBaseFolder();
    $blocks_folder = $cascade->getAsset(a\Folder::TYPE, "blocks", $site_name);
    echo "isParentOf: ", u\StringUtility::boolToString($base_folder->isParentOf($blocks_folder)), BR;
    echo "isChildOf: ", u\StringUtility::boolToString($blocks_folder->isChildOf($base_folder)), BR;
    echo "contains: ", u\StringUtility::boolToString($base_folder->contains($blocks_folder)), BR;
    echo "isContainedBy: ", u\StringUtility::boolToString($blocks_folder->isContainedBy($base_folder)), BR;
    u\DebugUtility::dump($blocks_folder->getChildren());
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
 echo u\StringUtility::boolToString($pc->getFormatRecycled()), BR;
 echo $pc->getId(), BR;
 echo $pc->getName(), BR;
 echo u\StringUtility::boolToString($pc->getIncludeXMLDeclaration()), BR;
 echo $pc->getOutputExtension(), BR;
 //u\DebugUtility::dump( $pc->getPageRegion( "DEFAULT" ) );
 //u\DebugUtility::dump( $pc->getPageRegionNames() );
 //u\DebugUtility::dump( $pc->getPageRegions() );
 //u\DebugUtility::dump( $pc->getPageRegionBlock( "DEFAULT" ) );
 //u\DebugUtility::dump( $pc->getPageRegionFormat( "DEFAULT" ) );
 //echo u\StringUtility::boolToString( $pc->getPublishable() ), BR;
 //echo $pc->getSerializationType(), BR;
 //$pc->getTemplate()->dump();
 echo $pc->getTemplateId(), BR;
 echo $pc->getTemplatePath(), BR;
 echo u\StringUtility::boolToString($pc->hasPageRegion("LOGO")), BR;
 //u\DebugUtility::dump( $pc->setDefaultConfiguration( true )->toStdClass() );
 /*
 u\DebugUtility::dump( $pc->setFormat(
     $cascade->getAsset( a\XsltFormat::TYPE, "255a4cec8b7ffe3b00a7e3433e083063" )
 )->toStdClass() );
 */
 //u\DebugUtility::dump( $pc->setIncludeXMLDeclaration( true )->toStdClass() );
 //u\DebugUtility::dump( $pc->setOutputExtension( ".html" )->toStdClass() );
 //u\DebugUtility::dump( $pc->setPageRegionBlock( "SEARCH PRINT" )->toStdClass() );
 //u\DebugUtility::dump( $pc->setPageRegionFormat( "LAST MODIFIED" )->toStdClass() );
 //u\DebugUtility::dump( $pc->setPublishable( false )->toStdClass() );
 //u\DebugUtility::dump( $pc->setRegionNoBlock( "SEARCH PRINT", true )->toStdClass() );
 //u\DebugUtility::dump( $pc->setRegionNoFormat( "SEARCH PRINT", true )->toStdClass() );
 //u\DebugUtility::dump( $pc->setSerializationType( "XML" )->toStdClass() );
 u\DebugUtility::dump($pc->setSerializationType("XML")->toStdClass());
<?php

require_once 'auth_tutorial7.php';
use cascade_ws_AOHS as aohs;
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 {
    $folder1 = $cascade->getAsset(a\Folder::TYPE, "e6a8b39d8b7ffe8364375ac7e4d72180");
    $folder1->deleteAllChildren();
    $folder2 = $cascade->getAsset(a\Folder::TYPE, "e231348c8b7ffe8364375ac74bbbc6fb");
    u\DebugUtility::dump($folder2->getChildren());
    u\DebugUtility::dump($folder2->getContainerChildrenIds());
    $folder2->getMetadata()->setDisplayName("Test")->getHostAsset()->edit();
    //u\DebugUtility::dump( $folder2->getAssetTree() );
    echo u\StringUtility::boolToString($folder2->isAncestorOf($folder1)), BR;
    echo u\StringUtility::boolToString($folder2->isParentOf($folder1)), BR;
    u\DebugUtility::dump($folder2->toChild());
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
}
     echo "Type: " . c\T::CONTENTTYPEINDEX . BR;
 }
 switch ($mode) {
     case 'all':
     case 'display':
         $icb->display();
         if ($mode != 'all') {
             break;
         }
     case 'dump':
         $icb->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'get':
         echo "ID: " . $icb->getId() . BR . "Type: " . $icb->getIndexBlockType() . BR . "Indexed folder recycled: " . u\StringUtility::boolToString($icb->getIndexedFolderRecycled()) . BR . "Index files: " . u\StringUtility::boolToString($icb->getIndexFiles()) . BR . "Page xml: " . $icb->getPageXML() . BR . "";
         $icb->getContentType()->dump();
         if ($mode != 'all') {
             break;
         }
     case 'set':
         $icb->setContentType($cascade->getAsset(a\ContentType::TYPE, '9bdfd8928b7f0856002a5e11732284e6'))->setAppendCallingPageData(true)->setIndexAccessRights(true)->setIndexBlocks(true)->setIndexFiles(true)->setIndexLinks(true)->setIndexPages(true)->setIndexRegularContent(true)->setIndexSystemMetadata(true)->setIndexUserInfo(true)->setIndexUserMetadata(true)->setIndexWorkflowInfo(true)->setPageXML(c\T::RENDERCURRENTPAGEONLY)->setMaxRenderedAssets(50)->setRenderingBehavior(c\T::HIERARCHY)->setSortMethod(c\T::LASTMODIFIEDDATE)->setSortOrder(c\T::DESCENDING)->edit()->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'raw':
         $icb = $service->retrieve($service->createId(c\T::INDEXBLOCK, $id), c\P::INDEXBLOCK);
         echo S_PRE;
         var_dump($icb);
         echo E_PRE;
         if ($mode != 'all') {
     $children = $f->getChildren();
     foreach ($children as $child) {
         u\DebugUtility::dump($child->toStdClass());
     }
     $folder_children_ids = $f->getFolderChildrenIds();
     echo "Number of folder children: " . count($folder_children_ids) . BR;
     foreach ($folder_children_ids as $folder_id) {
         u\DebugUtility::dump($folder_id);
     }
     echo c\L::PARENT_CONTAINER_ID . $f->getParentFolderId() . BR . c\L::PARENT_CONTAINER_PATH . $f->getParentFolderPath() . BR;
     echo HR;
     /* === methods from Folder == */
     echo c\L::CREATED_BY . $f->getCreatedBy() . BR . c\L::CREATED_DATE . $f->getCreatedDate() . BR . c\L::EXPIRATION_FOLDER_ID . u\StringUtility::getCoalescedString($f->getExpirationFolderId()) . BR . c\L::EXPIRATION_FOLDER_PATH . u\StringUtility::getCoalescedString($f->getExpirationFolderPath()) . BR . c\L::EXPIRATION_FOLDER_RECYCLED . u\StringUtility::boolToString($f->getExpirationFolderRecycled()) . BR . c\L::LAST_MODIFIED_BY . u\StringUtility::getCoalescedString($f->getLastModifiedBy()) . BR . c\L::LAST_MODIFIED_DATE . u\StringUtility::getCoalescedString($f->getLastModifiedDate()) . BR . c\L::LAST_PUBLISHED_BY . u\StringUtility::getCoalescedString($f->getLastPublishedBy()) . BR . c\L::LAST_PUBLISHED_DATE . u\StringUtility::getCoalescedString($f->getLastPublishedDate()) . BR . c\L::METADATA_SET_ID . $f->getMetadataSetId() . BR . c\L::METADATA_SET_PATH . $f->getMetadataSetPath() . BR . c\L::SHOULD_BE_INDEXED . u\StringUtility::boolToString($f->getShouldBeIndexed()) . BR . c\L::SHOULD_BE_PUBLISHED . u\StringUtility::boolToString($f->getShouldBePublished()) . BR . HR;
     echo "Parent folder ID: ", u\StringUtility::getCoalescedString($f->getParentFolderId()), BR;
     echo "Parent folder path: ", u\StringUtility::getCoalescedString($f->getParentFolderPath()), BR;
     echo "Is folder publishable: ", u\StringUtility::boolToString($f->isPublishable()), BR;
     u\DebugUtility::dump($f->getFolderChildrenIds());
     u\DebugUtility::dump($f->getMetadata()->toStdClass());
     u\DebugUtility::dump($f->getMetadataStdClass());
     $f->getMetadataSet()->dump();
     $field_name = 'exclude-from-left';
     echo "Dumping dynamic field {$field_name}:";
     if ($f->hasDynamicField($field_name)) {
         u\DebugUtility::dump($f->getDynamicField($field_name));
     }
     echo "Dumping dynamic fields:";
     u\DebugUtility::dump($f->getDynamicFields());
     if ($mode != 'all') {
         break;
     }
 case 'set':
try {
    // create an identifier stdClass object
    $id_std = $service->createId(a\Folder::TYPE, "cc1e51808b7ffe8364375ac78ba27f05");
    u\DebugUtility::dump($id_std);
    // create a Child object
    $id_child = new p\Child($id_std);
    u\DebugUtility::dump($id_child);
    u\DebugUtility::dump($id_child->toStdClass());
    // read the asset
    $folder = $id_child->getAsset($service);
    // list the content of the folder
    $children = $folder->getChildren();
    u\DebugUtility::dump($children);
    // display each child
    foreach ($children as $child) {
        $child->display();
        echo $child->getId(), BR;
        echo $child->getType(), BR;
        echo $child->getPathPath(), BR;
        echo $child->getPathSiteId(), BR;
        echo u\StringUtility::getCoalescedString($child->getPathSiteName()), BR;
        echo u\StringUtility::boolToString($child->getRecycled()), BR;
        u\DebugUtility::dump($child->getPath()->toStdClass());
    }
    u\ReflectionUtility::showMethodSignatures("cascade_ws_property\\Identifier");
    u\ReflectionUtility::showMethodSignatures("cascade_ws_property\\Path");
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
      string(28) "group;group-multiple-first;0"
      [9]=>
      string(18) "group;group-single"
      [10]=>
      string(29) "group;group-multiple-second;0"
    }
    */
    $block = $service->getAsset(a\DataBlock::TYPE, "1f21cf0c8b7ffe834c5fe91e6dde13c2");
    $sd = $block->getStructuredData();
    $sd->appendSibling("multiple-first;0")->createNInstancesForMultipleField(10, "multiple-first;0")->getHostAsset()->edit();
    // renew the object
    $sd = $block->getStructuredData();
    echo $sd->getNumberOfChildren(), BR;
    echo $sd->getNumberOfSiblings("multiple-first;0"), BR;
    echo u\StringUtility::boolToString($sd->isIdentifierOfFirstNode("multiple-second;1")), BR;
    echo u\StringUtility::boolToString($sd->isMultiple("multiple-second;1")), BR;
    $sd->removeLastSibling("multiple-first;0")->getHostAsset()->edit();
    $sd = $block->getStructuredData();
    $sd->swapData("multiple-first;0", "multiple-first;1")->getHostAsset()->edit();
    $sd = $block->getStructuredData();
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
/*
Useful code templates:
    u\ReflectionUtility::showMethodSignatures( 
        "cascade_ws_utility\ReflectionUtility" );
        
    u\ReflectionUtility::showMethodSignature( 
    if (u\StringUtility::stringToBool(1)) {
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    if (u\StringUtility::stringToBool(0)) {
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    if (u\StringUtility::stringToBool("")) {
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    echo u\StringUtility::boolToString(true), BR;
    echo u\StringUtility::startsWith("Hello", "He") ? "yes" : "no", BR;
    echo u\StringUtility::startsWith("Hello", "e") ? "yes" : "no", BR;
    echo u\StringUtility::removeSiteNameFromPath("site://cascade-admin/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getParentPathFromPath("/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getNameFromPath("/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getMethodName("structuredData"), BR;
    u\DebugUtility::dump(u\StringUtility::getExplodedStringArray(";", "this;0;that;3;these"));
    echo u\StringUtility::getFullyQualifiedIdentifierWithoutPositions("this;0;that;3;these"), BR;
    echo u\StringUtility::endsWith("Hello", "lo") ? "yes" : "no", BR;
    echo u\StringUtility::endsWith("Hello", "l") ? "yes" : "no", BR;
    echo u\ReflectionUtility::getClassDocumentation("cascade_ws_utility\\StringUtility", true);
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
 echo $af->setDescription("blah")->edit()->dump();
 //u\DebugUtility::dump( $service->getLastResponse() );
 switch ($mode) {
     case 'all':
     case 'display':
         $af->display();
         if ($mode != 'all') {
             break;
         }
     case 'dump':
         $af->dump(true);
         if ($mode != 'all') {
             break;
         }
     case 'get':
         echo c\L::ID . $af->getId() . BR . c\L::NAME . $af->getName() . BR . c\L::PATH . $af->getPath() . BR . c\L::PROPERTY_NAME . $af->getPropertyName() . BR . c\L::SITE_NAME . $af->getSiteName() . BR . c\L::TYPE . $af->getType() . BR . "Allow subfolder placement: " . u\StringUtility::boolToString($af->getAllowSubfolderPlacement()) . BR . "Applicable groups: " . u\StringUtility::getCoalescedString($af->getApplicableGroups()) . BR . "Asset type: " . $af->getAssetType() . BR . "Base asset ID: " . u\StringUtility::getCoalescedString($af->getBaseAssetId()) . BR . "Base asset path: " . u\StringUtility::getCoalescedString($af->getBaseAssetPath()) . BR . "Base asset recycled: " . u\StringUtility::boolToString($af->getBaseAssetRecycled()) . BR . "Folder placement position: " . $af->getFolderPlacementPosition() . BR . "Overwrite: " . u\StringUtility::boolToString($af->getOverwrite()) . BR . c\L::PARENT_CONTAINER_ID . $af->getParentContainerId() . BR . c\L::PARENT_CONTAINER_PATH . $af->getParentContainerPath() . BR . "Placement folder ID: " . u\StringUtility::getCoalescedString($af->getPlacementFolderId()) . BR . "Placement folder path: " . u\StringUtility::getCoalescedString($af->getPlacementFolderPath()) . BR . "Placement folder recycled: " . u\StringUtility::boolToString($af->getPlacementFolderRecycled()) . BR . c\L::SITE_ID . $af->getSiteId() . BR . c\L::SITE_NAME . $af->getSiteName() . BR . "Workflow definition ID: " . u\StringUtility::getCoalescedString($af->getWorkflowDefinitionId()) . BR . "Workflow definition path: " . u\StringUtility::getCoalescedString($af->getWorkflowDefinitionPath()) . BR . "Workflow mode: " . $af->getWorkflowMode() . BR;
         if ($af->hasPlugin(a\AssetFactory::FILE_LIMIT_PLUGIN)) {
             u\DebugUtility::dump($af->getPlugin(a\AssetFactory::FILE_LIMIT_PLUGIN));
         }
         u\DebugUtility::dump($af->getPluginNames());
         u\DebugUtility::dump($af->getPluginStd());
         if ($mode != 'all') {
             break;
         }
     case 'set':
         $group_name = "cru";
         $group = a\Asset::getAsset($service, a\Group::TYPE, $group_name);
         $af->addGroup($group)->edit();
         if ($af->isApplicableToGroup($group)) {
             echo "Applicable to ", $group->getName(), BR;
         } else {
<?php

require_once 'auth_tutorial7.php';
use cascade_ws_AOHS as aohs;
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 {
    // test static method
    $id = "06e401898b7ffe83765c5582e367462b";
    $block = a\Block::getBlock($service, $id);
    //->dump( true ); // no type info supplied
    echo a\Block::getBlockType($service, $id), BR;
    // get methods
    echo "Created by: ", $block->getCreatedBy(), BR, "Created on: ", $block->getCreatedDate(), BR, "Expiration folder ID: ", $block->getExpirationFolderId(), BR, "Expiration folder path: ", $block->getExpirationFolderPath(), BR, "Expiration folder recycled: ", u\StringUtility::boolToString($block->getExpirationFolderRecycled()), BR, "Last modified by: ", $block->getLastModifiedBy(), BR, "Last modified date: ", $block->getLastModifiedDate(), BR, "Metadata set ID: ", $block->getMetadataSetId(), BR, "Metadata set path: ", $block->getMetadataSetPath(), BR;
    u\DebugUtility::dump($block->getDynamicFields());
    u\DebugUtility::dump($block->getMetadataStdClass());
    echo u\ReflectionUtility::getClassDocumentation("cascade_ws_asset\\Block");
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
require_once 'auth_tutorial7.php';
use cascade_ws_AOHS as aohs;
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 {
    $ms = $cascade->getAsset(a\MetadataSet::TYPE, "06d5db638b7ffe83765c5582062dd782");
    $dmfd = $ms->getDynamicMetadataFieldDefinition("languages");
    u\DebugUtility::dump($dmfd->getPossibleValues());
    // multiselect
    $english = $dmfd->getPossibleValue("English");
    echo u\StringUtility::boolToString($english->getSelectedByDefault()), BR;
    foreach ($dmfd->getPossibleValues() as $pv) {
        echo $pv->getValue(), BR;
    }
    $dmfd->getPossibleValue("Japanese")->setSelectedByDefault(true);
    u\DebugUtility::dump($dmfd->toStdClass());
    echo u\StringUtility::boolToString($dmfd->hasPossibleValue("Spanish")), BR;
    // radio
    $dmfd = $ms->getDynamicMetadataFieldDefinition("gender");
    $dmfd->getPossibleValue("Female")->setSelectedByDefault(false);
    $dmfd->getPossibleValue("Male")->setSelectedByDefault(true);
    u\DebugUtility::dump($dmfd->toStdClass());
    u\DebugUtility::dump($dmfd->getPossibleValue("Female")->toStdClass());
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
<?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 {
    $cascade->getAsset(a\Page::TYPE, "389b03188b7ffe83164c931405d3704f")->dump();
    u\DebugUtility::out(u\StringUtility::boolToString($cascade->getAsset(a\DataBlock::TYPE, "ffa200f88b7ffe8330d802d73f3adfc3")->getMetadata()->isDynamicMetadataFieldRequired("checkbox")));
    $block_id = "388f033b8b7ffe83164c9314c23a3f8f";
    $block = $cascade->getAsset(a\FeedBlock::TYPE, $block_id);
    $m = $block->getMetadata();
    u\DebugUtility::out(u\StringUtility::boolToString($m->isAuthorFieldRequired()));
    u\DebugUtility::out(u\StringUtility::boolToString($m->isDescriptionFieldRequired()));
    // wired fields
    echo "Author: ", $m->getAuthor(), BR, "Display name: ", $m->getDisplayName(), BR, "End date: ", u\StringUtility::getCoalescedString($m->getEndDate()), BR . HR;
    // dynamic fields
    $ms = $block->getMetadataSet();
    // text
    $field_name = "text";
    echo "Testing {$field_name}", BR;
    if ($m->hasDynamicField($field_name)) {
        $text = $m->getDynamicField($field_name);
        u\DebugUtility::dump($text->getFieldValue()->getValues());
        // passing in a single string as value
        $m->setDynamicFieldValue($field_name, "New string used in text");
    }
    // radio
    /*
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 {
    $connector = $cascade->getAsset(a\TwitterConnector::TYPE, "017580c98b7f08ee707c11d62dc35154")->dump();
    $ct1 = $cascade->getAsset(a\ContentType::TYPE, "1378b3e38b7f08ee1890c1e4df869132");
    // RWD
    $ct2 = $cascade->getAsset(a\ContentType::TYPE, "5f4525208b7f08ee76b12c41beb6145a");
    /*
    $connector->addContentTypeLink(
        $cascade->getAsset( a\ContentType::TYPE, "1378b3e38b7f08ee1890c1e4df869132" ),
        "XML"
    )->edit() ->dump();
    */
    echo u\StringUtility::getCoalescedString($connector->getAuth1()), BR;
    echo u\StringUtility::getCoalescedString($connector->getAuth2()), BR;
    echo u\StringUtility::getCoalescedString($connector->getUrl()), BR;
    echo u\StringUtility::boolToString($connector->getVerified()), BR;
    echo u\StringUtility::getCoalescedString($connector->getVerifiedDate()), BR;
    echo u\StringUtility::boolToString($connector->hasContentType("_common_assets:RWD One Region")), BR;
    //$connector->removeContentTypeLink( $ct );
    //u\DebugUtility::dump( $connector->getConnectorContentTypeLinks() );
    //u\DebugUtility::dump( $connector->getConnectorParameters() );
    $destination = $cascade->getAsset(a\Destination::TYPE, "0755e15e8b7f08ee3295aa6d6c19fbe2");
    $connector->setDestination($destination)->edit();
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}