xmlsitemap_file_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
contributions/modules/xmlsitemap/xmlsitemap_file/xmlsitemap_file.module, line 106
Implementation of hook_nodeapi().
| Name | Description |
|---|---|
| XML Sitemap | Notify search engines of site updates. |
function xmlsitemap_file_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if (is_array($node->files)) {
switch ($op) {
case 'update':
foreach ($node->files as $file) {
if ($file->remove) {
db_query("DELETE FROM {xmlsitemap_file} WHERE fid = %d", $file->fid);
}
}
case 'insert':
db_query("
INSERT INTO {xmlsitemap_file} (fid, nid)
SELECT f.fid, f.nid FROM {files} f
LEFT JOIN {xmlsitemap_file} xf ON f.fid = xf.fid
WHERE xf.fid IS NULL
");
$result = db_query("
SELECT * FROM {files} f
INNER JOIN {xmlsitemap_file} xf ON f.fid = xf.fid
WHERE f.nid = %d
", $node->nid);
while ($file = db_fetch_object($result)) {
$changed = filemtime($file->filepath);
if ($changed > $file->changed) {
db_query("
UPDATE {xmlsitemap_file}
SET previously_changed = changed, changed = %d
WHERE fid = %d
", $changed, $file->fid);
}
$file = (object) $node->files[$file->fid];
if ($file->list || $node->xmlsitemap_file_list[$file->fid]) {
xmlsitemap_update_sitemap();
}
}
break;
case 'delete':
db_query("DELETE FROM {xmlsitemap_file} WHERE nid = %d", $node->nid);
foreach ($node->files as $file) {
if ($file->list) {
xmlsitemap_update_sitemap();
break;
}
}
break;
}
}
}