<pre>
------ Primary Import ------
<?PHP
ini_set 
('max_execution_time'60);

// Include the config
require_once('../include/config.inc.php');

require_once(
'classes/ebuild.php');
require_once(
'classes/package.php');
require_once(
'classes/category.php');
require_once(
'classes/keywords.php');

$site_vars = new site_vars();
$site_vars->set('last_import''Now Updating');
// get all subdir info
$portage = array();
$portageDir $GLOBAL['portage_dir'].'/metadata/cache';

// Get all the programs and versions and revisions
if ( $handle opendir$portageDir ) ) {
    while ( 
false !== ( $category readdir$handle ) ) ) {
        if ( 
is_dir$portageDir '/' $category ) AND $category <> '.' AND $category <> '..' ){
            
$portage$category ]['fullPath'] = $portageDir '/' $category;
            if ( 
$handle2 opendir$portage$category ]['fullPath'] ) ) {
                while ( 
false !== ( $package readdir$handle2 ) ) ) {
                    if ( !
is_dir$portage$category ]['fullPath'] . '/' $package )){
                        
$version separate_version($package);
                        
$portage$category ]['packages'][$package]['category'] = $category;
                        
$portage$category ]['packages'][$package]['version'] = $version['version'];
                        
$portage$category ]['packages'][$package]['revision'] = $version['revision'];
                        
$portage$category ]['packages'][$package]['title'] = $version['program'];
                        
$portage$category ]['packages'][$package]['fullPath'] = $portage$category ]['fullPath'] . '/' $package;
                    }
                }
            }
        }
    }
}
//print_r($portage);

// Mark all for removal
$sql "UPDATE `category` SET `_marker` = 1 WHERE `_removed` IS NULL";
mysql_query($sql) or die(mysql_error());
$sql "UPDATE `package` SET `_marker` = 1 WHERE `_removed` IS NULL";
mysql_query($sql) or die(mysql_error());
$sql "UPDATE `ebuild` SET `_marker` = 1 WHERE `_removed` IS NULL";
mysql_query($sql) or die(mysql_error());

// import ebuilds for each package
$x 0;
foreach(
$portage as $category => $category_details){
    
$cat = new category($category);
    foreach(
$category_details['packages'] as $package => $package_details){
        
// import the ebuild
        
$ebuild = new ebuild();
        
$ebuild->import($package$package_details$cat->get_package_id($package_details['title']), $cat->id);
        
$x++;
        if(
round($x/100) == $x/100)
            echo 
"$x Updated \n";
    }
    
$sql "UPDATE `category` SET `_marker` = 0  WHERE category_p = {$cat->id}";
    
mysql_query($sql) or die(mysql_error());
}

// set removed where marker
$sql "UPDATE `category` SET `_removed` = NOW(), `_marker` = 0 WHERE `_marker` = 1";
mysql_query($sql) or die(mysql_error());
$sql "UPDATE `ebuild` SET `_removed` = NOW(), `_marker` = 0 WHERE `_marker` = 1";
mysql_query($sql) or die(mysql_error());

$package_ids = array();
$sql "SELECT package_p FROM package, ebuild WHERE package_p = package_f AND `ebuild`.`_removed` IS NULL and `package`.`_removed` IS NULL";
$results mysql_query($sql) or die(mysql_error());
while(
$row mysql_fetch_assoc($results)){
    
$package_ids[] = $row['package_p'];
}

$sql "UPDATE `package` SET `_marker` = 0  WHERE package_p IN (".implode(','$package_ids).")";
mysql_query($sql) or die(mysql_error());

$sql "UPDATE `package` SET `_removed` = NOW(), `_marker` = 0 WHERE `_marker` = 1";
mysql_query($sql) or die(mysql_error());


// hard masking   
require_once('../scripts/hardmasking.php');

// USE Flags  
require_once('../scripts/USEflags.php');

// update the package descriptions
require_once('../scripts/package_descriptions.php');

// update the changelogs
require_once('../scripts/changelogs.php');

// update the site_vars
include_once('../scripts/update_site_vars.php');


$site_vars->set('last_import'parse_date());
$site_vars->set('last_import_stamp'time());
?>
</pre>