Simple unzip and make db script (to use with wp)

Status
Not open for further replies.

bsmaat

New member
Jun 19, 2007
58
1
0
Something very simple i decided to quickly scrape together because I'm bored. None of the code is really mine, just copied and pasted together so as I can use it to automatically extract wordpress on my host and my the db, so I don't have to faff about with cPanel much.

Code:
<?php
/**
 * Unzip the source_file in the destination dir
 *
 * @param   string      The path to the ZIP-file.
 * @param   string      The path where the zipfile should be unpacked, if false the directory of the zip-file is used
 * @param   boolean     Indicates if the files will be unpacked in a directory with the name of the zip-file (true) or not (false) (only if the destination directory is set to false!)
 * @param   boolean     Overwrite existing files (true) or not (false)
 *
 * @return  boolean     Succesful or not
 */
function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true)
{
  if(function_exists("zip_open"))
  {  
      if(!is_resource(zip_open($src_file)))
      {
          $src_file=dirname($_SERVER['SCRIPT_FILENAME'])."/".$src_file;
      }
     
      if (is_resource($zip = zip_open($src_file)))
      {         
          $splitter = ($create_zip_name_dir === true) ? "." : "/";
          if ($dest_dir === false) $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/";
        
          // Create the directories to the destination dir if they don't already exist
          create_dirs($dest_dir);

          // For every file in the zip-packet
          while ($zip_entry = zip_read($zip))
          {
            // Now we're going to create the directories in the destination directories
          
            // If the file is not in the root dir
            $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
            if ($pos_last_slash !== false)
            {
              // Create the directory where the zip-entry should be saved (with a "/" at the end)
              create_dirs($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1));
            }

            // Open the entry
            if (zip_entry_open($zip,$zip_entry,"r"))
            {
            
              // The name of the file to save on the disk
              $file_name = $dest_dir.zip_entry_name($zip_entry);
            
              // Check if the files should be overwritten or not
              if ($overwrite === true || $overwrite === false && !is_file($file_name))
              {
                // Get the content of the zip entry
                $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));          
               
                if(!is_dir($file_name))           
                file_put_contents($file_name, $fstream );
                // Set the rights
                if(file_exists($file_name))
                {
                    chmod($file_name, 0777);
                    echo "<span style=\"color:#1da319;\">file saved: </span>".$file_name."<br />";
                }
                else
                {
                    echo "<span style=\"color:red;\">file not found: </span>".$file_name."<br />";
                }
              }
            
              // Close the entry
              zip_entry_close($zip_entry);
            }     
          }
          // Close the zip-file
          zip_close($zip);
      }
      else
      {
        echo "No Zip Archive Found.";
        return false;
      }
    
      return true;
  }
  else
  {
      if(version_compare(phpversion(), "5.2.0", "<"))
      $infoVersion="(use PHP 5.2.0 or later)";
     
      echo "You need to install/enable the php_zip.dll extension $infoVersion";
  }
}

function create_dirs($path)
{
  if (!is_dir($path))
  {
    $directory_path = "";
    $directories = explode("/",$path);
    array_pop($directories);
  
    foreach($directories as $directory)
    {
      $directory_path .= $directory."/";
      if (!is_dir($directory_path))
      {
        mkdir($directory_path);
        chmod($directory_path, 0777);
      }
    }
  }
}

$wpzip = "wordpress.zip";

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';

$dbname = 'wp';


unzip($wpzip, false, false);

echo "Now creating the sql databases: ";

$con = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connect to mysql');

if (mysql_query("CREATE DATABASE " . $dbname, $con))
{
  echo "Database created successfully";
}
else
{
  echo "Error creating database: " . mysql_error();
}

mysql_close($con);




?>
 


Interesting ... could I use this to set up a WP install that had plugins ready but not configured? Say I have a particular way of going about setting up WP that I want to duplicate on lots of unrelated sites ... could I just set up a single install either on my machine or on one of my servers and use this to make "photocopies" of it?


Frank
/WP newb, so forgive me if what I am describing above is trivial and commonly done.
 
Interesting ... could I use this to set up a WP install that had plugins ready but not configured? Say I have a particular way of going about setting up WP that I want to duplicate on lots of unrelated sites ... could I just set up a single install either on my machine or on one of my servers and use this to make "photocopies" of it?


Frank
/WP newb, so forgive me if what I am describing above is trivial and commonly done.


I believe you can do that using an FTP client. Just upload all of the wordpress files including any previous plugins, themes etc to your new directory.
 
I'm am so fucking stupid. Will try that idea soon. Revolutionary secret new software "FileZilla" to the rescue. Thanks.


Frank
 
Also check out Wordpress mU ... if subdomains aren't an issue. I tried wp-cloner and while it wasn't suited to my particular situation it did seem to have a lot of promise.
 
Status
Not open for further replies.