Index: provision.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/provision.module,v
retrieving revision 1.47.2.8
diff -u -r1.47.2.8 provision.module
--- provision.module	6 Nov 2008 19:44:48 -0000	1.47.2.8
+++ provision.module	27 Nov 2008 20:43:20 -0000
@@ -123,6 +123,8 @@
   # These settings are based on settings in the provision.settings.php file
   define('PROVISION_VHOST_PATH', PROVISION_CONFIG_PATH .'/vhost.d');
   define('PROVISION_DRUSHRC_PATH', PROVISION_CONFIG_PATH .'/drushrc.d');
+  define('PROVISION_INCOMING_PATH', 
+          variable_get('provision_incoming_path', PROVISION_PARENT_PATH . '/incoming')) ;
   define('PROVISION_WEB_DISABLE_URL', PROVISION_MASTER_URL .'/provision/disabled');
 
   define('PROVISION_WEB_MAINTENENCE_URL', PROVISION_MASTER_URL .'/provision/maintenance');
@@ -350,6 +352,12 @@
     'description' => 'Delete a site.'
   );
 
+  $items['provision incoming'] = array(
+    'callback' => '_provision_incoming',
+    'description' => 'Check incoming directory.',
+    'arguments' => array('domain.com' => t('The domain of the site to be processed'))
+  );
+
   $items['provision cron'] = array(
     'callback' => '_provision_cron',
     'description' => 'Run cron process for site.',
@@ -621,6 +629,7 @@
 function _provision_verify($url = '') {
   _provision_create_dir(PROVISION_CONFIG_PATH, t('Provision configuration'), 0700);
   _provision_create_dir(PROVISION_BACKUP_PATH, t('Web server configuration'), 0700);
+  _provision_create_dir(PROVISION_INCOMING_PATH, t('Manual import configuration'), 1777);
   
   $data = array();
   $rolled_back = provision_invoke("verify", $url, $data);
@@ -744,6 +753,42 @@
   provision_output($url, $data);
 }
 
+function _provision_incoming($url) {
+  $new_files = file_scan_directory(PROVISION_INCOMING_PATH, $url.'.*\.tar\.gz$');
+
+  //move backups files
+  if (sizeof($new_files) >= 1) {
+    foreach ($new_files as $file) {
+      //change the name
+      $suggested = PROVISION_BACKUP_PATH . "/".$url."-" . date("Y-m-d",mktime()) . ".tar.gz";
+
+      // Use format of mysite.com-2008-01-02, if already existing, add number.
+      while (is_file($suggested)) {
+        $count++;
+        $suggested = PROVISION_BACKUP_PATH ."/". $url ."-". date("Y-m-d", mktime()) ."_$count.tar.gz";
+      }
+
+      $source = PROVISION_INCOMING_PATH ."/". $file->basename;
+      $dest = $suggested;
+
+      if (!copy($source, $dest)) {
+         provision_log("Error","The backup cannot be found.");
+	 return;
+      }
+      unlink($source);
+
+      $data = provision_get_site_data($url);
+      $node = node_load($data["site_id"]);
+      $platform = node_load($node->platform);
+
+      hosting_site_add_backup($data["site_id"], $platform->web_server, $suggested, t('New backup from incoming: '). $file->basename);
+      provision_output($url);
+    }
+  } else {
+    provision_log("Error","No new backup found.");
+  }
+}
+
 function _provision_delete($url) {
   $data = provision_get_site_data($url);
   $args = func_get_args();
