Exemplo n.º 1
0
 /**
  * Get a NodeSettings object for a node
  * @param int|Node $node
  * @return NodeSettings
  */
 public function getNodeSettings($node)
 {
     if (is_numeric($node)) {
         $nodeId = $node;
         $node = null;
     } else {
         $nodeId = $node->id;
     }
     $cache = Module::getCache();
     $nodeSettings = $cache->get(Module::CACHE_TYPE_NODE_SETTINGS, $nodeId);
     if ($nodeSettings !== null) {
         return $nodeSettings;
     }
     if (!$node) {
         $nodeModel = $this->getModel(NodeModel::NAME);
         $node = $nodeModel->getNode($nodeId, 0);
     }
     $inheritedSettings = null;
     if ($node->parent) {
         $inheritedSettings = $this->getNodeSettings($node->getParentNodeId());
     }
     $nodeSettings = new NodeSettings($node, $inheritedSettings);
     $settings = $this->findByNodeId($nodeId);
     foreach ($settings as $setting) {
         $nodeSettings->setNodeSetting($setting);
     }
     $cache->set(Module::CACHE_TYPE_NODE_SETTINGS, $nodeId, $nodeSettings);
     return $nodeSettings;
 }