summaryrefslogtreecommitdiff
path: root/inc/indexer.php
diff options
context:
space:
mode:
authorMichael Hamann <michael@content-space.de>2011-01-23 02:00:32 +0100
committerMichael Hamann <michael@content-space.de>2011-01-23 02:06:45 +0100
commit320f489ae6a653f52f9d489b84b9bdd26f4241ac (patch)
tree6ba549bcec2c40d3c8971b484217bb00f750d403 /inc/indexer.php
parente1e1a7e012189660a2cfd7631e82234b5ae92f69 (diff)
downloadrpg-320f489ae6a653f52f9d489b84b9bdd26f4241ac.tar.gz
rpg-320f489ae6a653f52f9d489b84b9bdd26f4241ac.tar.bz2
Indexer v3 Rewrite: Use the metadata index for backlinks; add INDEXER_METADATA_INDEX event
This new event allows plugins to add or modify the metadata that will be indexed. Collecting this metadata in an event allows plugins to see if other plugins have already added the metadata they need and leads to just one single indexer call thus fewer files are read and written. Plugins could also replace/prevent the metadata indexer call using this event.
Diffstat (limited to 'inc/indexer.php')
-rw-r--r--inc/indexer.php19
1 files changed, 19 insertions, 0 deletions
diff --git a/inc/indexer.php b/inc/indexer.php
index d3d05ecd8..8859ada33 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -935,6 +935,25 @@ function idx_addPage($page, $verbose=false) {
if ($verbose) print("Indexer: locked".DOKU_LF);
return false;
}
+
+ if ($result) {
+ $data = array('page' => $page, 'metadata' => array());
+
+ if (($references = p_get_metadata($page, 'relation references')) !== null)
+ $data['metadata']['relation_references'] = array_keys($references);
+
+ $evt = new Doku_Event('INDEXER_METADATA_INDEX', $data);
+ if ($evt->advise_before()) {
+ $result = $Indexer->addMetaKeys($page, $data['metadata']);
+ if ($result === "locked") {
+ if ($verbose) print("Indexer: locked".DOKU_LF);
+ return false;
+ }
+ }
+ $evt->advise_after();
+ unset($evt);
+ }
+
if ($result)
io_saveFile(metaFN($page,'.indexed'), idx_get_version());
if ($verbose) {