'Verifications', 'description' => 'Add, change or remove verifications for your site.', 'page callback' => 'site_verify_list', 'access arguments' => array('administer site configuration'), 'file' => 'site_verify.admin.inc', ); $items['admin/config/search/verifications/add'] = array( 'title' => 'Add verification', 'page callback' => 'drupal_get_form', 'page arguments' => array('site_verify_edit_form'), 'access arguments' => array('administer site configuration'), 'file' => 'site_verify.admin.inc', 'type' => MENU_LOCAL_ACTION, ); $items['admin/config/search/verifications/add/%site_verify_engine'] = array( 'title' => 'Add', 'page callback' => 'drupal_get_form', 'page arguments' => array('site_verify_edit_form', array(), 5), 'access arguments' => array('administer site configuration'), 'file' => 'site_verify.admin.inc', ); $items['admin/config/search/verifications/%site_verify/edit'] = array( 'page callback' => 'drupal_get_form', 'page arguments' => array('site_verify_edit_form', 4), 'access arguments' => array('administer site configuration'), 'file' => 'site_verify.admin.inc', ); $items['admin/config/search/verifications/%site_verify/delete'] = array( 'page callback' => 'drupal_get_form', 'page arguments' => array('site_verify_delete_form', 4), 'access arguments' => array('administer site configuration'), 'file' => 'site_verify.admin.inc', ); // Add the verification paths. $verifications = db_query("SELECT svid, file FROM {site_verify} WHERE file <> ''")->fetchAll(); foreach ($verifications as $verification) { $items[$verification->file] = array( 'page callback' => 'site_verify_output', 'page arguments' => array((string) $verification->svid), 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); } return $items; } /** * Implements hook_init(). * * @todo Move this to hook_html_head_alter()? */ function site_verify_init() { // Add the verification meta tags to the front page. if (drupal_is_front_page()) { $meta_tags = db_query("SELECT svid, meta FROM {site_verify} WHERE meta <> ''")->fetchAllKeyed(); foreach ($meta_tags as $svid => $meta_tag) { $data = array( '#type' => 'markup', '#markup' => $meta_tag . "\n", ); drupal_add_html_head($data, 'site_verify:' . $svid); } } } /** * Menu load callback; loads a site verification record. * * This also loads the engine details if the record was found. * * @param $svid * A site verification ID. * @return * An array of the site verification record, or FALSE if not found. */ function site_verify_load($svid) { $record = db_query("SELECT svid, engine, file, file_contents, meta FROM {site_verify} WHERE svid = :svid", array(':svid' => $svid))->fetchAssoc(); if ($record) { $record['engine'] = site_verify_engine_load($record['engine']); } return $record; } /** * Menu load callback; loads engine details. * * @param $engine * A string with the engine shortname. * @return * An arary of the engine details, or FALSE if not found. */ function site_verify_engine_load($engine) { $engines = site_verify_get_engines(); return isset($engines[$engine]) ? $engines[$engine] : FALSE; } /** * Implements hook_site_verify_engine_info(). */ function site_verify_site_verify_engine_info() { $engines['google'] = array( 'name' => t('Google'), 'file' => TRUE, 'file_contents' => TRUE, 'file_example' => 'google1234567890abcdef.html', 'meta' => TRUE, 'meta_example' => '', ); $engines['yahoo'] = array( 'name' => t('Yahoo!'), 'file' => TRUE, 'file_contents' => TRUE, 'meta' => TRUE, ); $engines['bing'] = array( 'name' => t('Bing'), 'file' => TRUE, 'file_contents' => TRUE, 'meta' => TRUE, ); $engines['yandex'] = array( 'name' => t('Yandex'), 'file' => TRUE, 'file_example' => 'yandex_b5741169901f6c20.txt', 'meta' => TRUE, 'meta_example' => '', ); $engines['custom'] = array( 'name' => t('Custom verification'), 'file' => TRUE, 'file_contents' => TRUE, 'meta' => TRUE, ); return $engines; } /** * Fetch an array of supported search engines. */ function site_verify_get_engines() { static $engines; if (!isset($engines)) { // Fetch the list of engines and allow other modules to alter it. $engines = module_invoke_all('site_verify_engine_info'); drupal_alter('site_verify_engine', $engines); // Merge the default values for each engine entry. foreach ($engines as $key => $engine) { $engines[$key] += array( 'key' => $key, //'name' => drupal_ucfirst($engine), 'file' => FALSE, 'file_example' => FALSE, 'file_validate' => array(), 'file_contents' => FALSE, 'file_contents_example' => FALSE, 'file_contents_validate' => array(), 'meta' => FALSE, 'meta_example' => FALSE, 'meta_validate' => array(), ); } } return $engines; } function site_verify_output($svid) { $verification = site_verify_load($svid); if ($verification['file_contents'] && $verification['engine']['file_contents']) { echo $verification['file_contents']; } else { drupal_set_title(t('Verification page')); return t('This is a verification page for the @title search engine.', array('!title' => $verification['engine']['name'])); } }