/** * 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; }