function assetTreeConvertToOneRegionTemplate(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (!isset($params['site-storage']) || !isset($params['global-link-script']) || !isset($params['page-title']) || !isset($params['search-form']) || !isset($params['content-type'])) { throw new \Exception("Some of the parameters are missing."); } $type = $child->getType(); if ($type != a\Page::TYPE) { return; } // skip entire folder if (strpos($child->getPathPath(), "_extra/") !== false) { return; } if (strpos($child->getPathPath(), "_cascade/") !== false) { return; } $site_storage_block = $params['site-storage']; $global_link_script_block = $params['global-link-script']; $page_title_block = $params['page-title']; $search_form_block = $params['search-form']; $one_region_ct = $params['content-type']; $page = $service->getAsset($child->getType(), $child->getId()); try { $page->setContentType($one_region_ct); $cur_sd = $page->getStructuredData(); $new_sd = $cur_sd->mapData(); $page->setStructuredData($new_sd); $page->setBlock("site-config-group;site-storage", $site_storage_block)->setBlock("site-config-group;global-link-script", $global_link_script_block)->setBlock("site-config-group;page-title", $page_title_block)->setBlock("site-config-group;search-form", $search_form_block)->edit(); } catch (\Exception $e) { echo $page->getId(), BR; throw $e; } }
function assetTreeFixPhantomNodes(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { // skip entire folder if (strpos($child->getPathPath(), "_extra/") !== false) { return; } if (strpos($child->getPathPath(), "_cascade/") !== false) { return; } $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\DataBlock::TYPE) { return; } try { $asset = $child->getAsset($service); if ($asset->hasPhantomNodes()) { $asset->mapData(); } } catch (e\NoSuchFieldException $e) { if ($type == a\Page::TYPE) { $asset = new a\PagePhantom($service, $child->toStdClass()); } else { $asset = new a\DataDefinitionBlockPhantom($service, $child->toStdClass()); } $dd = $asset->getDataDefinition(); $healthy_sd = new p\StructuredData($dd->getStructuredData(), $service, $dd->getId()); $phantom_sd = $asset->getStructuredDataPhantom(); $healthy_sd = $healthy_sd->removePhantomNodes($phantom_sd); $asset->setStructuredData($healthy_sd); } }
function assetTreeSimpleFunction(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); echo $type, BR; $asset = $child->getAsset($service); $asset->dump(true); }
function assetTreeChangeFull(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { // skip entire folder if (strpos($child->getPathPath(), "_extra/") !== false) { return; } if (strpos($child->getPathPath(), "_cascade/") !== false) { return; } $type = $child->getType(); if ($type != a\Page::TYPE) { return; } $page = $child->getAsset($service); try { if ($page->hasStructuredData()) { $node_ids = array("size", "content-group;0;content-group-size", "content-group;1;content-group-size", "content-group;2;content-group-size", "content-group;3;content-group-size"); foreach ($node_ids as $node_id) { if ($page->hasNode($node_id) && ($page->getText($node_id) == "Full" || $page->getText($node_id) == "" || $page->getText($node_id) == NULL)) { $page->setText($node_id, "full")->edit(); } } } } catch (\Exception $e) { echo $page->getId(), BR; throw $e; } }
function assetTreeSimpleFunction(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\Folder::TYPE) { return; } echo "Process ", $type, BR; }
function assetTreeReportPagePath(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE) { return; } echo $child->getPathPath(), BR; }
function assetTreeTouchAsset(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\File::TYPE) { return; } $asset = $child->getAsset($service); $asset->edit(); }
function assetTreeRemoveUnwantedPage(aohs\AssetOperationHandlerService $service, p\Child $child, array $params = NULL, array &$results = NULL) { if ($child->getType() != a\Page::TYPE) { return; } $page_path = $child->getPathPath(); // junk page names if (u\StringUtility::endsWith($page_path, "/pdf") || u\StringUtility::endsWith($page_path, "/word") || u\StringUtility::endsWith($page_path, "/externallink") || u\StringUtility::endsWith($page_path, "/keytiny") || u\StringUtility::endsWith($page_path, "/index-2")) { $service->delete($child->toStdClass()); } }
function assetTreeSearchForNeedleInHaystack(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); $needle = $params[$type]['needle']; // the method name should be defined for the asset // and returns a string $method = $params[$type]['method']; $haystack = $child->getAsset($service)->{$method}(); if (strpos($haystack, $needle) !== false) { $results[$type][] = $child->getPathPath(); } }
function assetTreeCountAsset(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); $site_name = $params[0]; if ($type != a\Page::TYPE) { return; } if (!isset($results[$site_name])) { $results[$site_name] = 0; } if (!isset($results["total"])) { $results["total"] = 0; } $results["total"] = $results["total"] + 1; $results[$site_name] = $results[$site_name] + 1; }
function assetTreeReportUnpublishableAsset(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Folder::TYPE && $type != a\Page::TYPE && $type != a\File::TYPE) { return; } if (!isset($results)) { throw new \Exception("No result array is passed in"); } if (!isset($results[$type])) { $results[$type] = array(); } $asset = $child->getAsset($service); if (!$asset->isPublishable()) { $results[$type][] = $asset->getPath(); } }
function assetTreeAssociateFoldersBlocksWithMetadataSets(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Folder::TYPE && $type != a\IndexBlock::TYPE && $type != a\TextBlock::TYPE && $type != a\DataBlock::TYPE && $type != a\FeedBlock::TYPE && $type != a\XmlBlock::TYPE) { return; } if (!is_array($params) || !isset($params["folder-ms"]) || !isset($params["block-ms"])) { throw new \Exception("The metadata sets are not supplied"); } $folder_ms = $params["folder-ms"]; $block_ms = $params["block-ms"]; if ($type == a\Folder::TYPE) { $child->getAsset($service)->setMetadataSet($folder_ms); } else { $child->getAsset($service)->setMetadataSet($block_ms); } }
function assetTreeReportPhantomNodes(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (!isset($results) || !is_array($results)) { throw new \Exception("The results array is required"); } $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\DataBlock::TYPE) { return; } if (!isset($results[$type])) { $results[$type] = array(); } $asset = $child->getAsset($service); if ($asset->hasPhantomNodes()) { $results[$type][] = $child->getPathPath(); } }
function assetTreeFindDDBlockPageWithIntialId(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (!isset($params['partial-id'])) { throw new \Exception("The id is not included"); } $partial_id = $params['partial-id']; $type = $child->getType(); if ($type != a\DataBlock::TYPE && $type != a\Page::TYPE) { return; } $id = $child->getId(); if (!u\StringUtility::startsWith($id, $partial_id)) { return; } else { echo $id; } }
function assetTreeSimpleFunction(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); switch ($type) { case a\Page::TYPE: echo "Process page", BR; break; case a\Folder::TYPE: echo "Process folder", BR; break; case a\File::TYPE: echo "Process file", BR; break; default: echo "Do Nothing", BR; break; } }
function assetTreeSearchTextByPattern(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\DataBlock::TYPE) { return; } $pattern = $params["pattern"]; if (!isset($pattern) || trim($pattern) == "") { throw new \Exception("No pattern is supplied"); } if (!isset($results) || !is_array($results)) { throw new \Exception("No results array is supplied"); } $asset = $child->getAsset($service); $identifiers = $asset->searchTextByPattern($pattern); if (count($identifiers) > 0) { $results[$child->getPathPath()] = $identifiers; } }
function assetTreeReplaceTextByPattern(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE && $type != a\DataBlock::TYPE) { return; } $pattern = $params["pattern"]; $replacement = $params["replacement"]; if (!isset($pattern) || trim($pattern) == "") { throw new \Exception("No pattern is supplied"); } if (!isset($replacement) || trim($replacement) == "") { throw new \Exception("No replacement is supplied"); } $asset = $child->getAsset($service); if (count($asset->searchTextByPattern($pattern)) > 0) { echo $child->getPathPath(), BR; $asset->replaceByPattern($pattern, $replacement)->edit(); } }
function assetTreeSetPageDisplayName(aohs\AssetOperationHandlerService $service, p\Child $child, array $params = NULL, array &$results = NULL) { $type = $child->getType(); if ($type != a\Page::TYPE) { return; } $default_title = "THIS PAGE NEEDS A TITLE"; $page = $child->getAsset($service); $page_md = $page->getMetadata(); $page_title = $page_md->getTitle(); $page_h1 = $page->getText("main-content-title"); if ($page_title == "" || $page_h1 == "") { if ($page_title == "") { $page_md->setTitle($default_title); } if ($page_h1 == "") { $page->setText("main-content-title", $default_title); } $page->edit(); } }
function assetTreeAssignGroupToAssetFactory(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { // get the child type $type = $child->getType(); // get out if not asset factory if ($type != a\AssetFactory::TYPE) { return; } // the group must be supplied if (!is_array($params) || !isset($params['group'])) { throw new e\NullAssetException(S_SPAN . "The group must be supplied" . E_SPAN); } // retrieve the group; this can in fact be an array // if so, loop through each group $group = $params['group']; // associate group with asset factory //$child->getAsset( $service )->addGroup( $group )->edit(); // for the moment, just output some info echo $child->getAsset($service)->getName(), BR; echo $group->getName(), BR; }
function assetTreeSetLinkURLForSymlink(aohs\AssetOperationHandlerService $service, p\Child $child, array $params = NULL, array &$results = NULL) { /* // if a map is not supplied, quit if( !isset( $param[ 'symlink_map' ] ) ) throw new \Exception( "A symlink map is required" ); // get the map $symlink_map = $param[ 'symlink_map' ]; */ // get the child type $type = $child->getType(); // get out if not symlink if ($type != a\Symlink::TYPE) { return; } // get the symlink asset $symlink = $child->getAsset($service); // get the url // $url = $symlink_map[ $symlink->getName() ]; // do whatever you need to do with symlink $symlink->setLinkURL("http://www.google.com/")->edit(); // $symlink->setLinkURL( $url )->edit(); }
function assetTreeSearchByName(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (is_array($results)) { $path = $child->getPathPath(); $type = $child->getType(); // no name supplied if (!isset($params[c\F::SEARCH_BY_NAME][$type]['name'])) { return; } else { $name = $params[c\F::SEARCH_BY_NAME][$type]['name']; } if (!isset($results[c\F::SEARCH_BY_NAME])) { $results[c\F::SEARCH_BY_NAME] = array(); // if (!isset($results[c\F::SEARCH_BY_NAME][$type])) { $results[c\F::SEARCH_BY_NAME][$type] = array(); } } // if name is found in asset name if (strpos($path, $name) !== false) { $results[c\F::SEARCH_BY_NAME][$type][] = $path; } } }
function assetTreeSwitchPageContentType(aohs\AssetOperationHandlerService $service, p\Child $child, array $params = NULL, array &$results = NULL) { if ($child->getType() != a\Page::TYPE) { return; } // make sure that there is a content type passed in if (!isset($params['ct'])) { throw new \Exception("No content type is supplied"); } // make sure that there is a base page passed in if (!isset($params['bp'])) { throw new \Exception("No base page is supplied"); } // make sure that there are global blocks passed in if (!isset($params['google-tag']) || !isset($params['site-storage']) || !isset($params['link-script']) || !isset($params['page-title']) || !isset($params['search-form'])) { throw new \Exception("No global blocks are supplied"); } // pages to skip if (isset($params['skip'])) { $skip = $params['skip']; } // skip whatever that is supposed to be skipped if (isset($skip) && is_array($skip) && in_array($child->getPathPath(), $skip)) { return; } // retrieve all required assets $ct = $params['ct']; $bp = $params['bp']; $google_tag = $params['google-tag']; $site_storage = $params['site-storage']; $link_script = $params['link-script']; $page_title = $params['page-title']; $search_form = $params['search-form']; // can run into phantom nodes try { // retrieve page to be processed $p = $child->getAsset($service); // get number of content-group $identifier = "content-group;0"; $num_of_groups = 1; // get the number of instances of the multiple node if ($p->hasIdentifier($identifier)) { $num_of_groups = $p->getNumberOfSiblings($identifier); } // get the current structured data with data $sd_old = $p->getStructuredData(); if (!isset($sd_old)) { return; } // create enough instances of the multiple field if ($num_of_groups > 1) { $bp->createNInstancesForMultipleField($num_of_groups, $identifier); } // get the blank structured data with needed nodes $sd_new = clone $bp->getStructuredData(); // roll back the base page if ($num_of_groups > 1) { $bp->createNInstancesForMultipleField(1, $identifier); } // switch the content type $p->setContentType($ct, false); // fix the data if (u\StringUtility::endsWith($p->getPath(), 'index')) { $sd_new->setText("right-column", "yes"); } else { $sd_new->setText("right-column", "no"); } $sd_new->setText("left-column", "yes"); $sd_new->setText("left-column-group;left-setup", "default"); // the H1 echo "Title: ", $p->getMetadata()->getTitle(), BR; $title = $p->getMetadata()->getTitle() != "" ? $p->getMetadata()->getTitle() : "Title to be set"; $sd_new->setText("main-content-title", $p->getMetadata()->getTitle()); // main WYSIWYG $sd_new->setText("main-content-content", $sd_old->getText("main-content-content")); // multiple groups with choosers for ($i = 0; $i < $num_of_groups; $i++) { $identifier = "content-group;" . $i . ";content-group-chooser"; // null the id for the upcoming round $block_id = NULL; // read the block if ($sd_old->hasIdentifier($identifier)) { $block_id = $sd_old->getBlockId($identifier); } // if there is a block attached if (isset($block_id) && $block_id != "") { $b = a\Block::getBlock($service, $block_id); $sd_new->setBlock($identifier, $b); $identifier = "content-group;" . $i . ";content-group-size"; $size_str = strtolower($sd_old->getText($identifier)); // fix the possible value for the new data definition if ($size_str != 'full') { $size_str = 'half'; } $sd_new->setText($identifier, $size_str); $identifier = "content-group;" . $i . ";content-group-block-floating"; $sd_new->setText($identifier, strtolower($sd_old->getText($identifier))); } // WYSIWYGs in group $identifier = "content-group;" . $i . ";content-group-content"; $sd_new->setText($identifier, $sd_old->getText($identifier)); } // set the data $p->setStructuredData($sd_new); } catch (e\NoSuchFieldException $e) { $page_id = $child->getId(); $phantom_page = new a\PagePhantom($service, $service->createId(a\PagePhantom::TYPE, $page_id)); $dd = $phantom_page->getDataDefinition(); $healthy_sd = new p\StructuredData($dd->getStructuredData(), $service, $dd->getId()); $phantom_sd = $phantom_page->getStructuredDataPhantom(); $healthy_sd = $healthy_sd->removePhantomNodes($phantom_sd); $phantom_page->setStructuredData($healthy_sd); } // attach the five global blocks $p->setBlock("site-config-group;google-tag-manager", $google_tag)->setBlock("site-config-group;site-storage", $site_storage)->setBlock("site-config-group;global-link-script", $link_script)->setBlock("site-config-group;page-title", $page_title)->setBlock("site-config-group;search-form", $search_form)->setBlock("site-config-group;global-script")->edit(); }
private function applyFunctionsToChild(aohs\AssetOperationHandlerService $service, p\Child $child, $function_array, $params = NULL, &$results = NULL) { $type = $child->getType(); // match the type first if (isset($function_array[$type])) { $functions = $function_array[$type]; $func_count = count($functions); for ($i = 0; $i < $func_count; $i++) { if ($functions[$i] == NULL) { continue; } // class static method if (strpos($functions[$i], "::") !== false) { $method_array = u\StringUtility::getExplodedStringArray(":", $functions[$i]); $class_name = $method_array[0]; $class_name = Asset::NAME_SPACE . "\\" . $class_name; $method_name = $method_array[1]; if (!method_exists($class_name, $method_name)) { throw new e\NoSuchFunctionException("The function " . $functions[$i] . " does not exist."); } } else { if (!function_exists($functions[$i])) { throw new e\NoSuchFunctionException("The function " . $functions[$i] . " does not exist."); } } } // apply function with parameters and results array for ($i = 0; $i < $func_count; $i++) { if ($functions[$i] == NULL) { continue; } if (strpos($functions[$i], "::") !== false) { $method_array = u\StringUtility::getExplodedStringArray(":", $functions[$i]); $class_name = $method_array[0]; $class_name = Asset::NAME_SPACE . "\\" . $class_name; $method_name = $method_array[1]; $class_name::$method_name($service, $child, $params, $results); } else { $func_name = $functions[$i]; $func_name($service, $child, $params, $results); } } } }
public static function assetTreeUpdateFormat(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (isset($params['target-cascade'])) { $target_cascade = $params['target-cascade']; } else { echo c\M::TARGET_CASCADE_NOT_SET . BR; return; } if (isset($params['target-site'])) { $target_site = $params['target-site']; } else { echo c\M::TARGET_SITE_NOT_SET . BR; return; } $type = $child->getType(); $source_format = $child->getAsset($service); if ($type == ScriptFormat::TYPE) { $source_content = $source_format->getScript(); } else { $source_content = $source_format->getXml(); } $source_format_path = u\StringUtility::removeSiteNameFromPath($source_format->getPath()); $source_format_path_array = u\StringUtility::getExplodedStringArray("/", $source_format_path); $source_format_path = $source_format_path_array[count($source_format_path_array) - 1]; $source_format_parent_path = $source_format->getParentContainerPath(); // create format $target_site_name = $target_site->getName(); // parent must be there $target_parent = $target_cascade->getAsset(Folder::TYPE, $source_format_parent_path, $target_site_name); $target_format = $target_cascade->createFormat($target_parent, $source_format_path, $type, $source_content, $source_content); // update format if ($type == ScriptFormat::TYPE) { $target_format->setScript($source_content)->edit(); } else { if (!u\XMLUtility::isXmlIdentical(new \SimpleXMLElement($source_content), new \SimpleXMLElement($target_format->getXml()))) { $target_format->setXml($source_content)->edit(); } } }
function assetTreeSwitchDataDefinitionForBlock(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { global $common_assets_site_name; $type = $child->getType(); if ($type != a\DataBlock::TYPE) { return; } if (!isset($params["cascade"])) { throw new \Exception("The Cascade object is not supplied"); } else { $cascade = $params["cascade"]; } $block = $child->getAsset($service); $b_name = $block->getName(); if ($b_name == "_footer-contact") { $dd_name = "Footer Contact"; } elseif ($b_name == "_left-column") { $dd_name = "Left Column"; } elseif ($b_name == "_right-column") { $dd_name = "Right Column"; } elseif ($b_name == "_site-info") { $dd_name = "Site Info"; } else { return; } $dd = $cascade->getAsset(a\DataDefinition::TYPE, $dd_name, $common_assets_site_name); $st = new p\StructuredData($dd->getStructuredData(), $service, $dd->getId()); $identifiers = $block->getIdentifiers(); foreach ($identifiers as $identifier) { // create the correct number of instances for multiple field if (u\StringUtility::endsWith($identifier, ";0") && $st->hasIdentifier($identifier)) { $st->createNInstancesForMultipleField($block->getNumberOfSiblings($identifier), $identifier); } // map the data if ($st->hasNode($identifier) && $block->isTextNode($identifier)) { $st->setText($identifier, $block->getText($identifier)); } elseif ($st->hasNode($identifier) && $block->isAssetNode($identifier)) { $asset_node_type = $block->getAssetNodeType($identifier); if ($asset_node_type == "page" && $block->getPageId($identifier) != null) { $st->setPage($identifier, $cascade->getPage($block->getPageId($identifier))); } elseif ($asset_node_type == "file" && $block->getFileId($identifier) != null) { $st->setFile($identifier, $cascade->getFile($block->getFileId($identifier))); } elseif ($asset_node_type == "block" && $block->getBlockId($identifier) != null) { $st->setBlock($identifier, a\Block::getBlock($service, $block->getBlockId($identifier))); } elseif ($asset_node_type == "page,file,symlink" && $block->getLinkableId($identifier) != null) { $st->setLinkable($identifier, a\Linkable::getLinkable($service, $block->getLinkableId($identifier))); } } } $block->setStructuredData($st); }
public static function assetTreeReportScheduledPublishPublishSet(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if (!isset($params['cache'])) { throw new e\ReportException(S_SPAN . c\M::NULL_CACHE . E_SPAN); } $cache = $params['cache']; $path = $child->getPathPath(); $type = $child->getType(); if ($type != PublishSet::TYPE) { return; } $ps = $cache->retrieveAsset($child); if ($ps->getUsesScheduledPublishing()) { $time_expression = self::getTimeInfo($ps); $site = $ps->getSiteName(); $results[$type][] = $site . ":" . $path . ", " . $time_expression; } }
function assetTreeSwitchPageContentType(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL) { if ($child->getType() != a\Page::TYPE) { return; } // make sure that there is a content type passed in if (!isset($params['ct'])) { throw new \Exception("No content type is supplied"); } // make sure that there is a base page passed in if (!isset($params['bp'])) { throw new \Exception("No base page is supplied"); } // pages to skip if (isset($params['skip'])) { $skip = $params['skip']; } if (in_array($child->getPathPath(), $skip)) { return; } $ct = $params['ct']; $bp = $params['bp']; // retrieve page to be processed $p = $child->getAsset($service); // get number of content-group $identifier = "content-group;0"; $num_of_groups = 1; // get the number of instances of the multiple node if ($p->hasIdentifier($identifier)) { $num_of_groups = $p->getNumberOfSiblings($identifier); } // get the current structured data with data $sd_old = $p->getStructuredData(); if (!isset($sd_old)) { return; } // create enough instances of the multiple field if ($num_of_groups > 1) { $bp->createNInstancesForMultipleField($num_of_groups, $identifier); } // get the blank structured data with needed nodes $sd_new = clone $bp->getStructuredData(); // roll back the base page if ($num_of_groups > 1) { $bp->createNInstancesForMultipleField(1, $identifier); } // switch the content type $p->setContentType($ct, false); // fix the data if (u\StringUtility::endsWith($child->getPathPath(), 'index')) { $sd_new->setText("right-column", "yes"); } else { $sd_new->setText("right-column", "no"); } $sd_new->setText("left-column", "yes"); $sd_new->setText("left-column-group;left-setup", "default"); // the H1 $sd_new->setText("main-content-title", $sd_old->getText("main-content-title")); // main WYSIWYG $sd_new->setText("main-content-content", $sd_old->getText("main-content-content")); // multiple groups with choosers for ($i = 0; $i < $num_of_groups; $i++) { $identifier = "content-group;" . $i . ";content-group-chooser"; // null the id for the upcoming round $block_id = NULL; // read the block if ($sd_old->hasIdentifier($identifier)) { $block_id = $sd_old->getBlockId($identifier); } // if there is a block attached if (isset($block_id) && $block_id != "") { $b = a\Block::getBlock($service, $block_id); $sd_new->setBlock($identifier, $b); $identifier = "content-group;" . $i . ";content-group-size"; $size_str = strtolower($sd_old->getText($identifier)); // fix the possible value for the new data definition if ($size_str != 'full') { $size_str = 'half'; } $sd_new->setText($identifier, $size_str); $identifier = "content-group;" . $i . ";content-group-block-floating"; $sd_new->setText($identifier, strtolower($sd_old->getText($identifier))); } // WYSIWYGs in group $identifier = "content-group;" . $i . ";content-group-content"; $sd_new->setText($identifier, $sd_old->getText($identifier)); } // set the data $p->setStructuredData($sd_new); }