/** * Adds trust between the two local nodes i.e. FROM trusts TO * * @param P2POwnNode $from * @param P2POwnNode $to */ protected function runLocal(P2POwnNode $from, P2POwnNode $to) { // Look up the trust type, using default if necessary $typeName = $this->opts->{'trust-type'}; $typeName = $typeName ? $typeName : MeshingTrustLocalPeer::TYPE_DEFAULT; $trustType = MeshingTrustTypeQuery::create()->findOneByName(strtolower($typeName)); if (!$trustType) { throw new Meshing_Console_RunException('The specified trust type is not found'); } // If a trust already exists, require force else an exception is thrown $trust = MeshingTrustLocalPeer::retrieveByPK($from->getId(), $to->getId()); if ($trust) { if ($this->opts->force) { $trust->delete(); } else { throw new Meshing_Console_RunException('A trust relationship already exists between this node pair (use --force to overwrite)'); } } $trust = new MeshingTrustLocal(); $trust->setFromOwnNode($from); $trust->setToOwnNode($to); $trust->setMeshingTrustType($trustType); $trust->save(); if (!$this->opts->quiet) { echo "trust:add -> set up trust '{$typeName}' by node '{$from->getName()}' to '{$to->getName()}'.\n"; } }