J'ai écrit cette fonction pour le faire, mais il se comporte étrangement, je me demande si j'ai la bonne approche
function getNodes($type,$userID){
$where = array();
$nodes = array();
$where[':type'] = $type;
$where[':uid'] = $userID;
$result = db_query('SELECT nid FROM {node} WHERE uid = :uid AND type = :type', $where);
if($result){
foreach($result as $o){
$nodes = node_load($o->nid);
}
}
return $nodes;
}
N'y a-t-il pas un drupal API chargé du nœud de la DB en le transmettant un UID et Node = type?
Dans d6, vous pourriez passer des critères à node_load () , afin que vous puissiez faire
$criteria = array(
'uid' => $userID,
'type' => $type,
);
$nodes = node_load($criteria);
ferait le travail.
Dans D7, vous n'avez pas cette option avec node_load car il ne s'agit que d'un wrapper pour entité_load . Cela a un argument dédépudé qui vous permet de charger des nœuds de la même manière
$criteria = array(
'uid' => $userID,
'type' => $type,
);
$nodes = entity_load('node',FALSE,$criteria);
Remarque non testée
Cela peut fonctionner, mais n'est pas garanti.
Le moyen approuvé de le faire dans D7 est d'utiliser EntityfieldQuery
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', $type)
->propertyCondition('uid', $userID)
->execute();
$nodes = node_load_multiple(array_keys($entities['node']));
Remarque non testée