'Google Translate Links', 'description' => 'Set the location of the flag images.', 'page callback' => 'drupal_get_form', 'page arguments' => array('gtranslate_links_admin'), 'access arguments' => array('administer gtranslate links'), ); return $items; } /** * Administration settings for Google Translate Links */ function gtranslate_links_admin() { $form = array(); $form['flags'] = array( '#type' => 'textfield', '#title' => t('Flags location'), '#default_value' => variable_get('flags', 'translation_flags'), '#description' => t('Subfolder of the files directory where the flag images are located.'), ); return system_settings_form($form); } /** * Validate administration settings form */ function gtranslate_links_admin_validate($form, &$form_state) { $flags_path = file_directory_path() .'/'. $form_state['values']['flags']; file_check_directory($flags_path, FILE_CREATE_DIRECTORY, 'flags'); } /** * Implementation of hook_block(). */ function gtranslate_links_block($op = 'list', $delta = 0, $edit = array()) { switch ($op) { case 'list': $block = array(); $block[0] = array( 'info' => t('Google Translate Links'), 'cache' => BLOCK_CACHE_GLOBAL, ); return $block; case 'view': $flags_path = file_directory_path() .'/'. variable_get('flags', 'translation_flags'); // Only display on certain pages $url = url($_GET['q'], array('absolute' => TRUE)); if (!_check_url($url)) { return; } // Get enabled languages $files = file_scan_directory($flags_path, '^.*_.*_.*\..*$'); // Get language code and description from filename $languages = array(); foreach ($files as $file) { $parts = array_reverse(explode('_', $file->name)); $languages[$file->name] = array( 'code' => $parts[0], 'description' => $parts[1], 'filename' => $file->filename, ); } // Make sure languages appear in user-defined order ksort($languages); // Create HTML image links $block_content = ''; foreach ($languages as $language) { $image = 'Flag icon for \''. $language['code'] .'\' language'; $link = 'http://translate.google.com/translate?sl=auto&tl='. $language['code'] .'&u='. $url; $options = array( 'attributes' => array('title' => $language['description']), 'html' => TRUE, ); $block_content .= l($image, $link, $options); } // Create the block $block = array(); $block['subject'] = ''; $block['content'] = $block_content; return $block; } } /** * Check URL to see if language links should be displayed or not */ function _check_url($url) { // Check if referring URL is from Google if (strpos(referer_uri(), 'translate.google.com') !== FALSE) { return FALSE; } // Check role of current user global $user; if ($user->uid > 0) { // Check for non-successful HTTP status code $header = drupal_http_request($url, array(), 'HEAD'); if (strpos($header->code, '2') !== 0) { return FALSE; } } return TRUE; }