Как узнать nid после создания ноды

Главные вкладки

Аватар пользователя cosmos cosmos 17 июля 2009 в 16:15

кто знает как отловить nid после вставки ноды
почему то в функции
function mcat_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
при $op==insert
он пустой?

ХОТЯ в этой функции этот хук стоит уже после добавления в базу
привожу кусок функции

  // Insert the node into the database:
  db_query($node_query, $node_table_values);
  db_query($revisions_query, $revisions_table_values);

  // Call the node specific callback (if any):
  if ($node->is_new) {
    node_invoke($node, 'insert');
    node_invoke_nodeapi($node, 'insert');
  }
  else {
    node_invoke($node, 'update');
    node_invoke_nodeapi($node, 'update');
  }

  // Update the node access table for this node.
  node_access_acquire_grants($node);

  // Clear the cache so an anonymous poster can see the node being added or updated.
  cache_clear_all();
}

есть ли какой нить хук типа after_insert?
спасибо за умные ответы )

Комментарии

Аватар пользователя Demimurych Demimurych 17 июля 2009 в 17:43

ищите где то у себя ошибку

в хук ноде апи передается вновь созданный обьект ноде с новым nid

хотябы вот таким тупым способом
if ($op === 'insert') {
var_dump($node);
die();
}

Аватар пользователя Demimurych Demimurych 18 июля 2009 в 15:33

на ум приходит только что
один из модулей, который вызывается раньше вашего в цепочке ноде апи, некорректно модифицирует обьект node

Аватар пользователя cosmos cosmos 20 июля 2009 в 19:04

спасибо большое за ответы,
проверял тупо как писал Demimurych и по другому все таки пустой NODE->NID

решил проблему таким способом

case 'insert':
node_save($node);
//а вот тут уже есть node->nid