2015-03-19 1 views
1

Je travaille sur un plugin pour Elgg qui garde une trace des identifiants de périphériques qui sont envoyés à l'application lors de la connexion à partir de votre téléphone mobile. Pour cela, je voudrais stocker ces identifiants de périphériques dans la base de données et j'aimerais utiliser ElggObjects pour cela.Enregistrement du dictionnaire de valeur clé dans Elgg

C'est ce que je fais maintenant:

function initialize() { 
    $androidTokens = elgg_get_entities(array(
      'type' => 'object', 
      'subtype' => 'androidTokens', 
      'limit' => 0 
    )); 
    $iosTokens = elgg_get_entities(array(
      'type' => 'object', 
      'subtype' => 'iosTokens', 
      'limit' => 0 
    )); 

    if ($androidTokens == 0) { 
      $tokenObject = new ElggObject(); 
      $tokenObject->subtype = 'androidTokens'; 
      $tokenObject->tags = array(); 
      $tokenObject->save(); 
    } 

    if ($iosTokens == 0) { 
      $tokenObject = new ElggObject(); 
      $tokenObject->subtype = 'iosTokens'; 
      $tokenObject->tags = array(); 
      $tokenObject->save(); 
    } 
} 

Donc cela génère deux ElggObjects qui détiennent ids pour Android et pour les appareils iOS, stockées dans les étiquettes de champ de métadonnées. Ce tableau de tags ne peut cependant plus être récupéré. Quand je le fais:

$tokenObject = elgg_get_entities(array(
         'type' => 'object', 
         'subtype' => $os.'Tokens', 
         'limit' => 0 
        )); 
       $tokens = $tokenObject->tags 

les jetons restent vides. Est-ce que quelqu'un sait ce que je fais mal? Est-ce que j'utilise les objets Elgg mal?

Répondre

0

Je pense que la raison pour laquelle vous rencontrez des problèmes est que elgg_get_entities renvoie un tableau d'entités. Ai-je raison de supposer que vous ne disposerez que d'un sous-type d'objet de jeton? (Un pour iOS et un pour Android?)

Si oui, je modifierais votre code comme suit:

function initialize() { 
$androidTokens = elgg_get_entities(array(
     'type' => 'object', 
     'subtype' => 'androidTokens', 
     'limit' => 1 // only expecting one entity 
)); 
$iosTokens = elgg_get_entities(array(
     'type' => 'object', 
     'subtype' => 'iosTokens', 
     'limit' => 1 // only expecting one entity 
)); 

if (count($androidTokens) == 0) { 
     $tokenObject = new ElggObject(); 
     $tokenObject->subtype = 'androidTokens'; 
     $tokenObject->tags = array(); 
     $tokenObject->save(); 
} 

if (count($iosTokens) == 0) { 
     $tokenObject = new ElggObject(); 
     $tokenObject->subtype = 'iosTokens'; 
     $tokenObject->tags = array(); 
     $tokenObject->save(); 
} 
} 

Plus tard, lors de l'acquisition de l'entité:

$tokenObject = elgg_get_entities(array(
        'type' => 'object', 
        'subtype' => $os.'Tokens', 
        'limit' => 1 // only grab one 
       )); 
$tokens = $tokenObject[0]->tags; // get tag data for first (and only) entity