Index: provision.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/provision.module,v
retrieving revision 1.47.2.16
diff -u -r1.47.2.16 provision.module
--- provision.module	28 Nov 2008 04:36:31 -0000	1.47.2.16
+++ provision.module	28 Nov 2008 19:45:23 -0000
@@ -114,6 +114,8 @@
   define('PROVISION_PARENT_PATH', rtrim(implode("/" , $parts), '/'));
   define('PROVISION_BACKUP_PATH', 
     provision_get_option('backup_path', PROVISION_PARENT_PATH . '/backups'));
+  define('PROVISION_INCOMING_PATH',
+    provision_get_option('provision_incoming_path', PROVISION_PARENT_PATH . '/incoming')) ;
   define('PROVISION_CONFIG_PATH', 
     provision_get_option('config_path', PROVISION_PARENT_PATH .'/config'));
   define('PROVISION_VHOST_PATH', PROVISION_CONFIG_PATH .'/vhost.d');
@@ -318,6 +320,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.',
@@ -582,6 +590,7 @@
     $data = array();
     _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);
   }
   else {
     // we are verifying a site
@@ -734,6 +743,43 @@
   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.");
+  }
+}
+
+
 /**
  * Initial setup of platform
  * 
