/**
  * 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;
 }
Пример #2
0
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;
 }