17, /* (2) Liste des alters */ 'alter' => array( // Pour chaque alter, on a ID_ALTER, NOM_ALTER, AFFINITE_ALTER array(15, 'Jean', 90), // 90% proche array(3, 'George', 20), array(18, 'Jacques', 30), array(11, 'Jacquie', 40), array(1, 'Martin', 50), array(12, 'Martine', 60) ), /* (1) Liste des relations */ 'inter' => array( array(12, 3), array(15, 3), array(3, 18), array(18, 1) ) ); /* [5] Gestion du retour =========================================================*/ return array( 'ModuleError' => ManagerError::Success, 'data' => $data ); } /* RETOURNE UN SVG CORRESPONDANT AU GRAPHIQUE #FIELD * * @data Jeu de donnees * * @return render Contenu du svg representation graphique des donnees * */ public static function render($data){ $render = ""; $nb_circles = 4; // Couleur Facebook $facebook = 0x3b5998; /* [1] On genere le debut du svg =========================================================*/ $render .= ''; $render .= ''; /* [2] On cree le contexte (cercles dont ego) =========================================================*/ $circles = array(); // Difference de rayon (40 = taille ego + espace) $raddiff = (500-50) / ($nb_circles); // Pour chaque cercle dont ego for( $i = 0 ; $i < $nb_circles ; $i++ ){ $circles[$i] = ""; } $circles[ $nb_circles ] = ""; /* [3] On cree les elements dynamiques =========================================================*/ /* (1) On calcule l'angle de diff entre chaque ALTER */ $ang = 2*pi() / count($data['alter']); /* (2) On ajoute tous les alters */ $alters = array(); $origins = array(); foreach($data['alter'] as $i=>$alter){ // On calcule l'origine (centre du cercle) $origins[$alter[0]] = array( 'x' => 500 + (100-$alter[2])*(400/100) * cos($ang*$i), 'y' => 500 + (100-$alter[2])*(400/100) * sin($ang*$i) ); // On ajoute le cercle associe a l'alter courant $alters[$i] = ""; } /* [4] On relie toutes les relations =========================================================*/ $inter = array(); foreach($data['inter'] as $rel){ $lefthand = isset($origins[$rel[0]]) && is_array($origins[$rel[0]]); $righthand = isset($origins[$rel[1]]) && is_array($origins[$rel[1]]); // Si les deux existent, on les relie if( $lefthand && $righthand ) array_push($inter, "" ); } /* [5] On ajoute les elements et on ferme le svg =========================================================*/ foreach($circles as $circle) $render .= $circle; // les cercles (dont ego) foreach($inter as $rel) $render .= $rel; // les relations foreach($alters as $alter) $render .= $alter; // les alters $render .= ""; /* [6] Gestion du retour =========================================================*/ return array( 'ModuleError' => ManagerError::Success, 'render' => $render ); } } ?>