This is the fastest way (IMHO) way to iterate through all products and associate them with newly created websites. The workbench script is ready to go.
<?php
/**
* Working with Magento outside of the normal routing dispatch
* flow of Mage::run()? Mage::app(); is the way to go. This
* workbench script can be a quick way to check on various
* parts of the app, including configuration, which can be
* handy when verifying custom modules.
*/
//set some PHP params for ease of debugging
ini_set('display_errors',true);
error_reporting(E_ALL | E_STRICT);
//process bootstrap & application hub class
require 'app/Mage.php';
//set developer mode
Mage::setIsDeveloperMode(true);
//the standard filemask for server-written files
umask(0);
/**
* Initialize the app and config with the default store scope
* (based on configuration data). Note that not all parts of
* the configuration are loaded, meaning that frontend- and
* adminhtml-configured event observers are not added to the
* observer lists. This can be remedied by calling
* Mage::app()->loadArea() / ->loadAreaPart() with the
* appropriate params. Note also that sessions must be
* invoked manually as well.
*/
Mage::app();
/**
* Now it's possible to play around / test things. For example:
*
* $product = Mage::getModel('catalog/product');
*
* will load an instance of Mage_Catalog_Model_Product, just as
* would take place in a normally-dispatched application flow.
*
* Have fun!
* Ben Marks, Blue Acorn
* http://benmarks.github.com/
* @benmarks
*/
// STEP 1: BUILD AN ARRAY WITH THE NEW WEBSITE IDS
$websiteIds = array(5,6,7);
// STEP 2: GET ALL PRODUCT IDS
$productIds= Mage::getResourceModel('catalog/product_collection')->getAllIds();
// STEP 3: ASSIGN ALL PRODUCTS TO THE NEW WEBSITES
Mage::getModel('catalog/product_website')->addProducts($websiteIds, $productIds);
// AND THAT'S IT!!!