Sfoglia il codice sorgente

This script will allow jobs to be launched from a Drupal installation with more than one Tripal site. It takes the site name as well as an admin name for that site.

mestato 14 anni fa
parent
commit
617b9c6f5a
1 ha cambiato i file con 106 aggiunte e 0 eliminazioni
  1. 106 0
      tripal_core/tripal_launch_jobs_multi.php

+ 106 - 0
tripal_core/tripal_launch_jobs_multi.php

@@ -0,0 +1,106 @@
+<?php
+
+/* IMPORTANT! DISABLE apc before launching this script.*/
+/* This script can be used to launch jobs on a multi-site Drupal installation*/
+
+ini_set('apc.enable_cli','0');
+
+
+include_once './includes/bootstrap.inc';
+
+fwrite(STDOUT,"Running Tripal Job Launcher\n");
+
+/***********
+* SETTINGS
+**********/
+
+//the location of the 'sites' directory relative to this script.
+$sitesDir = 'sites';
+$debug=0;
+/***********
+* END SETTINGS
+**********/
+
+
+//error_reporting(E_ALL);
+
+include ("Console/Getopt.php");
+
+// initialize object
+$cg = new Console_Getopt();
+
+/* define list of allowed options - p = h:sitename, u:username  */
+$allowedShortOptions = "h:u:";
+
+// read the command line
+$args = $cg->readPHPArgv();
+
+// get the options
+$ret = $cg->getopt($args, $allowedShortOptions);
+
+// check for errors and die with an error message if there was a problem
+if (PEAR::isError($ret)) {
+    die ("Error in command line: " . $ret->getMessage() . "\n");
+}
+
+ini_set('include_path',ini_get('include_path'). PATH_SEPARATOR . './scripts');
+
+/* This doesn't work in every case: getopt function is not always available
+$options = getopt("h:r:");
+var_dump($options);
+*/
+
+$hostname = "";
+$username = "";
+
+// parse the options array
+$opts = $ret[0];
+if (sizeof($opts) > 0) {
+    // if at least one option is present
+    foreach ($opts as $opt) {
+        switch ($opt[0]) {
+            case 'h':
+                $hostname = $opt[1];
+                break;
+            case 'u':
+                $username = $opt[1];
+                break;
+            default:
+                fwrite(STDOUT,'Usage: \n');
+                fwrite(STDOUT,'- h hostname\n');
+                fwrite(STDOUT." -u username\n");
+                break;
+
+        }
+    }
+}else{
+  fwrite(STDOUT,"Usage: \n");
+  fwrite(STDOUT," -h hostname\n");
+  fwrite(STDOUT," -u username\n"); 
+  
+}
+
+runjob($hostname, $username);
+
+
+function runjob($sitename, $username) {
+
+    $_SERVER['SCRIPT_NAME'] = '/sites/all/modules/tripal_jobs/tripal_jobs_launcher.php';
+    $_SERVER['SCRIPT_FILENAME'] = '/sites/all/modules/tripal_jobs/tripal_jobs_launcher.php';
+    $_SERVER['HTTP_HOST'] = $sitename;
+    $_SERVER['REMOTE_ADDR'] = 'localhost';
+    $_SERVER['REQUEST_METHOD'] = 'GET';
+
+    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
+        
+    if(!db_fetch_object(db_query("SELECT * FROM {users} WHERE name = '$username'"))){
+     fwrite(STDOUT, "'$username' is not a valid Drupal username. exiting...\n");
+     exit;
+    }
+    global $user;
+    $user = $username;
+    $user = user_load(array('name' => $username));
+
+    tripal_jobs_launch();
+}
+?>