annotate sites/all/modules/sparql/sparql_endpoint/sparql_endpoint.module @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * Implements hook_menu().
danielebarchiesi@4 5 */
danielebarchiesi@4 6 function sparql_endpoint_menu() {
danielebarchiesi@4 7 // @todo use access RDF data permission instead of access content.
danielebarchiesi@4 8 $items['sparql'] = array(
danielebarchiesi@4 9 'title' => 'SPARQL endpoint',
danielebarchiesi@4 10 'page callback' => 'sparql_endpoint_sparql_endpoint',
danielebarchiesi@4 11 'access arguments' => array('access content'),
danielebarchiesi@4 12 );
danielebarchiesi@4 13 $items['sparql_endpoint_index'] = array(
danielebarchiesi@4 14 'title' => 'Build RDF index',
danielebarchiesi@4 15 'page callback' => 'sparql_endpoint_index_rdf',
danielebarchiesi@4 16 'access arguments' => array('administer rdf'),
danielebarchiesi@4 17 );
danielebarchiesi@4 18 return $items;
danielebarchiesi@4 19 }
danielebarchiesi@4 20
danielebarchiesi@4 21 function sparql_endpoint_index_rdf() {
danielebarchiesi@4 22 // Instantiate the ARC2 local store.
danielebarchiesi@4 23 $store = sparql_get_store('site_endpoint');
danielebarchiesi@4 24
danielebarchiesi@4 25 // Emtpy the local store.
danielebarchiesi@4 26 // FIXME optimize by doing this only when creating/saving a node.
danielebarchiesi@4 27 $store->reset();
danielebarchiesi@4 28
danielebarchiesi@4 29 // Index all the nodes which are published.
danielebarchiesi@4 30 $query = db_select('node', 'n')->extend('PagerDefault')->extend('TableSort');
danielebarchiesi@4 31 $query->condition('n.status', 1);
danielebarchiesi@4 32 $ids = $query
danielebarchiesi@4 33 ->fields('n',array('nid'))
danielebarchiesi@4 34 ->limit(500)
danielebarchiesi@4 35 ->execute()
danielebarchiesi@4 36 ->fetchCol();
danielebarchiesi@4 37
danielebarchiesi@4 38 foreach ($ids as $id) {
danielebarchiesi@4 39 $rdf = rdfx_get_rdf_model('node', $id);
danielebarchiesi@4 40 $store->insert($rdf->index, $rdf->uri);
danielebarchiesi@4 41 }
danielebarchiesi@4 42
danielebarchiesi@4 43 // Index all the users.
danielebarchiesi@4 44 $query = db_select('users', 'u')->extend('PagerDefault')->extend('TableSort');
danielebarchiesi@4 45 $query->condition('u.uid', 0, '<>');
danielebarchiesi@4 46 $ids = $query
danielebarchiesi@4 47 ->fields('u', array('uid'))
danielebarchiesi@4 48 ->limit(500)
danielebarchiesi@4 49 ->execute()
danielebarchiesi@4 50 ->fetchCol();
danielebarchiesi@4 51
danielebarchiesi@4 52 foreach ($ids as $id) {
danielebarchiesi@4 53 $rdf = rdfx_get_rdf_model('user', $id);
danielebarchiesi@4 54 $store->insert($rdf->index, $rdf->uri);
danielebarchiesi@4 55 }
danielebarchiesi@4 56
danielebarchiesi@4 57 // Index all the terms.
danielebarchiesi@4 58 $query = db_select('taxonomy_term_data', 't')->extend('PagerDefault')->extend('TableSort');
danielebarchiesi@4 59 $ids = $query
danielebarchiesi@4 60 ->fields('t', array('tid'))
danielebarchiesi@4 61 ->limit(500)
danielebarchiesi@4 62 ->execute()
danielebarchiesi@4 63 ->fetchCol();
danielebarchiesi@4 64
danielebarchiesi@4 65 foreach ($ids as $id) {
danielebarchiesi@4 66 $rdf = rdfx_get_rdf_model('taxonomy_term', $id);
danielebarchiesi@4 67 $store->insert($rdf->index, $rdf->uri);
danielebarchiesi@4 68 }
danielebarchiesi@4 69
danielebarchiesi@4 70 return t('The RDF index of the site has been rebuilt. Browse to the <a href="@endpoint">SPARQL endpoint</a> to query it.', array('@endpoint' => url('sparql')));
danielebarchiesi@4 71 }
danielebarchiesi@4 72
danielebarchiesi@4 73 function sparql_endpoint_sparql_endpoint() {
danielebarchiesi@4 74 // Instantiate the ARC2 SPARQL endpoint.
danielebarchiesi@4 75 $ep = sparql_get_store('site_endpoint', SPARQL_ENDPOINT);
danielebarchiesi@4 76 $ep->go();
danielebarchiesi@4 77 }
danielebarchiesi@4 78
danielebarchiesi@4 79 /**
danielebarchiesi@4 80 * Implements hook_node_insert().
danielebarchiesi@4 81 */
danielebarchiesi@4 82 function sparql_endpoint_node_insert($node) {
danielebarchiesi@4 83 // Instantiate the ARC2 local store.
danielebarchiesi@4 84 $store = sparql_get_store('site_endpoint');
danielebarchiesi@4 85
danielebarchiesi@4 86 // Attach RDF mappings and build RDF model for the node.
danielebarchiesi@4 87 $node = node_load($node->nid);
danielebarchiesi@4 88 $rdf = rdfx_get_rdf_model('node', $node);
danielebarchiesi@4 89
danielebarchiesi@4 90 // Add node to the store.
danielebarchiesi@4 91 $store->insert($rdf->index, $rdf->uri);
danielebarchiesi@4 92 }
danielebarchiesi@4 93
danielebarchiesi@4 94 /**
danielebarchiesi@4 95 * Implements hook_node_update().
danielebarchiesi@4 96 */
danielebarchiesi@4 97 function sparql_endpoint_node_update($node) {
danielebarchiesi@4 98 // Instantiate the ARC2 local store.
danielebarchiesi@4 99 $store = sparql_get_store('site_endpoint');
danielebarchiesi@4 100
danielebarchiesi@4 101 // Build RDF model for the node.
danielebarchiesi@4 102 $rdf = rdfx_get_rdf_model('node', $node);
danielebarchiesi@4 103
danielebarchiesi@4 104 // Cleans out the graph and reindex the node.
danielebarchiesi@4 105 $store->query('DELETE FROM <' . $rdf->uri . '>');
danielebarchiesi@4 106 $store->insert($rdf->index, $rdf->uri);
danielebarchiesi@4 107 }