123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- <?php
- /**
- * @file
- * Hooks provided by the XML sitemap module.
- *
- * @ingroup xmlsitemap
- */
- /**
- * @addtogroup hooks
- * @{
- */
- /**
- * Provide information on the type of links this module provides.
- *
- * @see hook_entity_info()
- * @see hook_entity_info_alter()
- */
- function hook_xmlsitemap_link_info() {
- return array(
- 'mymodule' => array(
- 'label' => 'My module',
- 'base table' => 'mymodule',
- 'entity keys' => array(
- // Primary ID key on {base table}
- 'id' => 'myid',
- // Subtype key on {base table}
- 'bundle' => 'mysubtype',
- ),
- 'path callback' => 'mymodule_path',
- 'bundle label' => t('Subtype name'),
- 'bundles' => array(
- 'mysubtype1' => array(
- 'label' => t('My subtype 1'),
- 'admin' => array(
- 'real path' => 'admin/settings/mymodule/mysubtype1/edit',
- 'access arguments' => array('administer mymodule'),
- ),
- 'xmlsitemap' => array(
- 'status' => XMLSITEMAP_STATUS_DEFAULT,
- 'priority' => XMLSITEMAP_PRIORITY_DEFAULT,
- ),
- ),
- ),
- 'xmlsitemap' => array(
- // Callback function to take an array of IDs and save them as sitemap
- // links.
- 'process callback' => '',
- // Callback function used in batch API for rebuilding all links.
- 'rebuild callback' => '',
- // Callback function called from the XML sitemap settings page.
- 'settings callback' => '',
- )
- ),
- );
- }
- /**
- * Alter the data of a sitemap link before the link is saved.
- *
- * @param $link
- * An array with the data of the sitemap link.
- */
- function hook_xmlsitemap_link_alter(&$link) {
- if ($link['type'] == 'mymodule') {
- $link['priority'] += 0.5;
- }
- }
- /**
- * Inform modules that an XML sitemap link has been created.
- *
- * @param $link
- * Associative array defining an XML sitemap link as passed into
- * xmlsitemap_link_save().
- *
- * @see hook_xmlsitemap_link_update()
- */
- function hook_xmlsitemap_link_insert(array $link) {
- db_insert('mytable')
- ->fields(array(
- 'link_type' => $link['type'],
- 'link_id' => $link['id'],
- 'link_status' => $link['status'],
- ))
- ->execute();
- }
- /**
- * Inform modules that an XML sitemap link has been updated.
- *
- * @param $link
- * Associative array defining an XML sitemap link as passed into
- * xmlsitemap_link_save().
- *
- * @see hook_xmlsitemap_link_insert()
- */
- function hook_xmlsitemap_link_update(array $link) {
- db_update('mytable')
- ->fields(array(
- 'link_type' => $link['type'],
- 'link_id' => $link['id'],
- 'link_status' => $link['status'],
- ))
- ->execute();
- }
- /**
- * Index links for the XML sitemaps.
- */
- function hook_xmlsitemap_index_links($limit) {
- }
- /**
- * Provide information about contexts available to XML sitemap.
- *
- * @see hook_xmlsitemap_context_info_alter().
- */
- function hook_xmlsitemap_context_info() {
- $info['vocabulary'] = array(
- 'label' => t('Vocabulary'),
- 'summary callback' => 'mymodule_xmlsitemap_vocabulary_context_summary',
- 'default' => 0,
- );
- return $info;
- }
- /**
- * Alter XML sitemap context info.
- *
- * @see hook_xmlsitemap_context_info().
- */
- function hook_xmlsitemap_context_info_alter(&$info) {
- $info['vocabulary']['label'] = t('Site vocabularies');
- }
- /**
- * Provide information about the current context on the site.
- *
- * @see hook_xmlsitemap_context_alter()
- */
- function hook_xmlsitemap_context() {
- $context = array();
- if ($vid = mymodule_get_current_vocabulary()) {
- $context['vocabulary'] = $vid;
- }
- return $context;
- }
- /**
- * Alter the current context information.
- *
- * @see hook_xmlsitemap_context()
- */
- function hook_xmlsitemap_context_alter(&$context) {
- if (user_access('administer taxonomy')) {
- unset($context['vocabulary']);
- }
- }
- /**
- * Provide options for the url() function based on an XML sitemap context.
- */
- function hook_xmlsitemap_context_url_options(array $context) {
- }
- /**
- * Alter the url() options based on an XML sitemap context.
- */
- function hook_xmlsitemap_context_url_options_alter(array &$options, array $context) {
- }
- /**
- * Alter the query selecting data from {xmlsitemap} during sitemap generation.
- *
- * @param $query
- * A Query object describing the composite parts of a SQL query.
- *
- * @see hook_query_TAG_alter()
- */
- function hook_query_xmlsitemap_generate_alter(QueryAlterableInterface $query) {
- $sitemap = $query->getMetaData('sitemap');
- if (!empty($sitemap->context['vocabulary'])) {
- $node_condition = db_and();
- $node_condition->condition('type', 'taxonomy_term');
- $node_condition->condition('subtype', $sitemap->context['vocabulary']);
- $normal_condition = db_and();
- $normal_condition->condition('type', 'taxonomy_term', '<>');
- $condition = db_or();
- $condition->condition($node_condition);
- $condition->condition($normal_condition);
- $query->condition($condition);
- }
- }
- /**
- * Provide information about XML sitemap bulk operations.
- */
- function hook_xmlsitemap_sitemap_operations() {
- }
- /**
- * Respond to XML sitemap deletion.
- *
- * This hook is invoked from xmlsitemap_sitemap_delete_multiple() after the XML
- * sitemap has been removed from the table in the database.
- *
- * @param $sitemap
- * The XML sitemap object that was deleted.
- */
- function hook_xmlsitemap_sitemap_delete(stdClass $sitemap) {
- db_query("DELETE FROM {mytable} WHERE smid = '%s'", $sitemap->smid);
- }
- /**
- * @} End of "addtogroup hooks".
- */
|