function addLink($nodeName1, $nodeName2, $linkName = "", $template = "DEFAULT") { if (!$this->isLoaded()) { throw new WMException("Map must be loaded before editing API called."); } $success = false; $log = ""; $newLinkName = ""; // XXX - do we care if node1==node2? if ($nodeName1 != $nodeName2 && $this->map->nodeExists($nodeName1) && $this->map->nodeExists($nodeName2)) { $newLinkName = $linkName != "" ? $linkName : "{$nodeName1}-{$nodeName2}"; // make sure the link name is unique. We can have multiple links between // the same nodes, these days while (array_key_exists($newLinkName, $this->map->links)) { $newLinkName .= "a"; } $newLink = new WeatherMapLink($newLinkName, $template, $this->map); $newLink->defined_in = $this->map->configfile; $newLink->setEndNodes($this->map->getNode($nodeName1), $this->map->getNode($nodeName2)); $this->map->addLink($newLink); $success = true; $log = "created link {$newLinkName} between {$nodeName1} and {$nodeName2}"; } return array($newLinkName, $success, $log); }