/** * Creates a link from one scheme to another * * @param One_Scheme $scheme * @param One_Relation_Role $role * @param One_Relation_Role $otherRole */ public function createLink(One_Scheme $scheme, One_Relation_Role $targetRole, One_Relation_Role $schemeRole) { $params = array(); $params['id'] = $this->name; $params['name'] = $targetRole->name; $params['target'] = $targetRole->schemeName; $params['style'] = $schemeRole->cardinality . 'To' . ucfirst($targetRole->cardinality); // insert fk information if ($schemeRole->cardinality == "many") { $params['fk:local'] = $schemeRole->meta['fk']; } if ($targetRole->cardinality == "many") { $params['fk:remote'] = $targetRole->meta['fk']; } //PD 22OCT08: remember that this is a hybrid target if ($schemeRole->schemeName == "*") { $params['hybrid'] = $schemeRole->name; } $meta = array_merge($this->meta, $params); $lnk = new One_Relation_Adapter($meta); $scheme->addLink($lnk); }