Exemplo n.º 1
0
 /**
  * @param rex_be_page $page
  * @param array       $properties
  * @param rex_package $package
  */
 private static function pageAddProperties(rex_be_page $page, array $properties, rex_package $package)
 {
     foreach ($properties as $key => $value) {
         switch (strtolower($key)) {
             case 'subpages':
                 if (is_array($value)) {
                     foreach ($value as $pageKey => $subProperties) {
                         if (isset($subProperties['title'])) {
                             $subpage = new rex_be_page($pageKey, $subProperties['title']);
                             $page->addSubpage($subpage);
                             self::pageAddProperties($subpage, $subProperties, $package);
                         }
                     }
                 }
                 break;
             case 'perm':
                 $page->setRequiredPermissions($value);
                 break;
             case 'path':
             case 'subpath':
                 if (file_exists($path = $package->getPath($value))) {
                     $value = $path;
                 }
                 // fall through, don't break
             // fall through, don't break
             default:
                 $setter = [$page, 'add' . ucfirst($key)];
                 if (is_callable($setter)) {
                     foreach ((array) $value as $v) {
                         call_user_func($setter, $v);
                     }
                     break;
                 }
                 $setter = [$page, 'set' . ucfirst($key)];
                 if (is_callable($setter)) {
                     call_user_func($setter, $value);
                 }
         }
     }
 }