/** * Create a signal collection from array. * * @param array $array * @return GraphCommons\Graph\SignalCollection * @throws \InvalidArgumentException */ public static final function fromArray(array $array) { if (empty($array)) { throw new \InvalidArgumentException('Empty signals array given!'); } $signals = new SignalCollection(); foreach ($array as $array) { if (!isset($array['action'], $array['parameters'])) { throw new \InvalidArgumentException("Signal 'action' and 'parameters' fields are required!"); } $signal = (new Signal())->setAction($array['action'])->setParameters($array['parameters']); $signals->add($signal); } return $signals; }
function gc_add_commit_node2($repoId, array $userData, $weight) { global $gc; $return = true; try { $userId = sprintf('@%s', $userData['_id']); $array = []; $i = 0; // user if (isset($userData['name'])) { $array[$i]['action'] = Signal::NODE_CREATE; $array[$i]['parameters'] = ['name' => $userId, 'type' => 'Githubber', 'description' => sprintf('%s (%s)', $userData['name'], $userId), 'image' => $userData['avatar'], 'reference' => $userData['link']]; } $i++; // user edge $array[$i]['action'] = Signal::EDGE_CREATE; $array[$i]['parameters'] = ['from_name' => $userId, 'from_type' => 'Githubber', 'to_name' => $repoId, 'to_type' => 'Repository', 'name' => 'COMMIT', 'weight' => $weight]; // pre($array,1); $gc->api->addGraphSignal(GRAPH_ID, SignalCollection::fromArray($array)); } catch (Exception $e) { $return = false; } return $return; }
/** * Fill a lib's graph object. * * @param GraphCommons\Graph\Graph $graph * @param array|object $g * @return GraphCommons\Graph\Graph */ private final function fillGraph(Graph $graph, $g) { // force input being an object $g = Util::toObject($g); if (isset($g->id)) { $graph->setId($g->id)->setName($g->name)->setDescription($g->description)->setSubtitle($g->subtitle)->setStatus($g->status)->setCreatedAt($g->created_at); // add signals if exists if (isset($g->signals)) { $array = array(); foreach ($g->signals as $i => $signal) { $action = $signal->action; unset($signal->action); $array[$i]['action'] = Signal::detectAction($action); $array[$i]['parameters'] = Util::toArray($signal); } $graph->setSignals(SignalCollection::fromArray($array)); } } return $graph; }