You are here

function apachesolr_stats_report_gadget in Apache Solr Statistics 6

Callback function that outputs an XML description for a Google Gadget and terminates PHP execution.

See also

apachesolr_stats_menu()

1 string reference to 'apachesolr_stats_report_gadget'
apachesolr_stats_menu in ./apachesolr_stats.module
Implementation of hook_menu().

File

./apachesolr_stats.module, line 230
Keeps and reports statistics about Apache Solr usage and performance.

Code

function apachesolr_stats_report_gadget() {
  $settings_key = variable_get("apachesolr_stats_gadget_key", "");
  if ($settings_key === 0) {
    echo t("Invalid request");
    exit;
  }
  $granularities = apachesolr_stats_get_granularities();
  $report_elements = apachesolr_stats_generate_report_elements($granularities["hour"]);

  // Generate options
  $element_options = "";
  foreach ($report_elements as $id => $element) {
    $element_options .= "    <EnumValue value=\"{$id}\" display_value=\"{$element[name]}\" />\n";
  }
  $granularity_options = "";
  foreach ($granularities as $id => $granularity) {
    $granularity_options .= "    <EnumValue value=\"{$id}\" display_value=\"{$granularity[last_msg]}\"/>\n";
  }
  $title = t('Search statistics for @sitename', array(
    '@sitename' => variable_get('site_name', ''),
  ));
  $access_key = t('Access key');
  $var_to_show = t('Variable to show');
  $timespan_to_report = t('Time span to report');
  $loading = t('Loading...');

  // Send correct header for XML
  header("Content-Type: text/xml");

  // Output the gadget XML description
  $site_base_url = url('<front>', array(
    'absolute' => true,
  ));
  echo <<<HEREDOC
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs
    title="{<span class="php-variable">$title</span>}"
    author="Alejandro Garza"
    author_email="alejandro.garza@itesm.mx"
    description="Google widget for Drupal Apache Solr Statistics module. More info: http://drupal.org/project/apachesolr_stats"
    screenshot="http://chart.apis.google.com/chart?cht=lc&amp;chs=300x200&amp;chdlp=b&amp;chma=30,100,20,20&amp;chd=s:NlVabjGXUaM&amp;chxp=1,22"
    thumbnail="http://chart.apis.google.com/chart?cht=lc&amp;chs=200x100&amp;chdlp=b&amp;chma=30,100,20,20&amp;chd=s:NlVabjGXUaM&amp;chxp=1,22"
    height="180" >
    <Require feature="dynamic-height"/>
  </ModulePrefs>

  <UserPref name="key" display_name="{<span class="php-variable">$access_key</span>}" required="true" default_value="{<span class="php-variable">$settings_key</span>}" datatype="string" />
  <UserPref name="element" display_name="{<span class="php-variable">$var_to_show</span>}" default_value="total_queries_per" datatype="enum" >
  {<span class="php-variable">$element_options</span>}
  </UserPref>
  <UserPref name="granularity" display_name="{<span class="php-variable">$timespan_to_report</span>}" default_value="day" datatype="enum" >
  {<span class="php-variable">$granularity_options</span>}
  </UserPref>

  <Content type="html"><![CDATA[
    <div id="content_div">{<span class="php-variable">$loading</span>}</div>
    <script type="text/javascript">
      function getHtml() {
        var params = {};
        var prefs = new gadgets.Prefs();
        var element = prefs.getString("element");
        var granularity = prefs.getString("granularity");
        var key = prefs.getString("key");
        var rand = Math.floor(Math.random()*9999)

        params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
        var url = "{<span class="php-variable">$site_base_url</span>}/apachesolr_stats/element/" + granularity + "/" + element + "/" + key + "?" + rand;
        gadgets.io.makeRequest(url, response, params);
      };
      function response(obj) {
        //obj.text contains the text of the page that was requested
        document.getElementById('content_div').innerHTML = obj.text;
        setTimeout("gadgets.window.adjustHeight()", 1000);
      };

      gadgets.util.registerOnLoadHandler(getHtml);
    </script>
  ]]>
  </Content>
</Module>
HEREDOC;
  exit;
}