private function deleteTable($tableName) {
 	Pap3Compatibility_Migration_OutputWriter::logOnce("  Deleting data from table ".$tableName.".....");
 	$sql = new Gpf_SqlBuilder_DeleteBuilder();
 	$sql->from->add($tableName);
 	$sql->execute();
 	Pap3Compatibility_Migration_OutputWriter::log("DONE<br/>");
 }
    public function execute() {
		Pap3Compatibility_Migration_OutputWriter::logOnce("Migrating transactions<br/>");

   		$time1 = microtime();

    	$this->migrateCommissions();
    	$this->migrateClicks();
    	$this->migrateImpressions();

    	$time2 = microtime();
		Pap3Compatibility_Migration_OutputWriter::logDone($time1, $time2);
    }
    public function run() {
    	Pap3Compatibility_Migration_OutputWriter::logOnce("Migrating campaigns<br/>");
    	$time1 = microtime();

    	try {
    		$this->loadCampaignSettings();
    		$this->migrateCampaigns();
    		$this->insertReferralCommissionType();
    		$this->migrateGroupsTypesCommissions();
    		$this->createDefaultCommissionTypes();
    		$this->migrateUsersInCampaigns();
    	} catch(Exception $e) {
    		Pap3Compatibility_Migration_OutputWriter::log("&nbsp;&nbsp;Errror: ".$e->getMessage()."<br/>");
    	}

    	$time2 = microtime();
		Pap3Compatibility_Migration_OutputWriter::logDone($time1, $time2);
    }
    protected function execute() {
		if($this->isPending('initOutput')) {
			Pap3Compatibility_Migration_OutputWriter::reset();
    	   	Pap3Compatibility_Migration_OutputWriter::logOnce("Starting migration<br/>");
			$this->setDone();
		} else {
			Pap3Compatibility_Migration_OutputWriter::initialize();
		}

		if($this->isPending('deleteFromTables')) {
    		$this->deleteFromTables();
			$this->setDone();
		}

		if($this->isPending('migrateCampaigns')) {
    		$this->migrateCampaigns();
    		$this->setDone();
		}

		if($this->isPending('migrateBanners')) {
			$this->migrateBanners();
			$this->setDone();
		}

        if($this->isPending('migratePayouts')) {
            $this->migratePayouts();
            $this->setDone();
        }

		if($this->isPending('migrateAffiliates')) {
			$this->migrateAffiliates();
			$this->setDone();
		}
		
		if($this->isPending('migrateSettings')) {
			$this->migrateSettings();
			$this->setDone();
		}

		if($this->isPending('migrateTransactions')) {
			$this->migrateTransactions();
			$this->setDone();
		}
   	}
	private function deleteAffiliates() {
		Pap3Compatibility_Migration_OutputWriter::logOnce("&nbsp;&nbsp;Deleting affiliates .....");
		// pap users
		$sql = new Gpf_SqlBuilder_DeleteBuilder();
    	$sql->from->add(Pap_Db_Table_Users::getName());
    	$sql->where->add('rtype', '=', 'A');
    	$sql->execute();

    	// g_users
    	$inSelect = new Gpf_SqlBuilder_SelectBuilder();
    	$inSelect->select->add(Pap_Db_Table_Users::ACCOUNTUSERID);
    	$inSelect->from->add(Pap_Db_Table_Users::getName());
		$sql = new Gpf_SqlBuilder_DeleteBuilder();
    	$sql->from->add(Gpf_Db_Table_Users::getName());
    	$sql->where->add('accountuserid', 'NOT IN', $inSelect, 'AND', false);
    	$sql->execute();

    	// g_authusers
    	$inSelect = new Gpf_SqlBuilder_SelectBuilder();
        $inSelect->select->add(Gpf_Db_Table_Users::AUTHID);
        $inSelect->from->add(Gpf_Db_Table_Users::getName());
		$sql = new Gpf_SqlBuilder_DeleteBuilder();
    	$sql->from->add(Gpf_Db_Table_AuthUsers::getName());
    	$sql->where->add('authid', 'NOT IN', $inSelect, 'AND', false);
    	$sql->execute();

    	// g_userattributes
    	$inSelect = new Gpf_SqlBuilder_SelectBuilder();
        $inSelect->select->add(Gpf_Db_Table_Users::ID);
        $inSelect->from->add(Gpf_Db_Table_Users::getName());
		$sql = new Gpf_SqlBuilder_DeleteBuilder();
    	$sql->from->add(Gpf_Db_Table_UserAttributes::getName());
    	$sql->where->add('accountuserid', 'NOT IN', $inSelect, 'AND', false);
    	$sql->execute();

    	// g_gadgets
    	$inSelect = new Gpf_SqlBuilder_SelectBuilder();
        $inSelect->select->add(Gpf_Db_Table_Users::ID);
        $inSelect->from->add(Gpf_Db_Table_Users::getName());
		$sql = new Gpf_SqlBuilder_DeleteBuilder();
    	$sql->from->add(Gpf_Db_Table_Gadgets::getName());
    	$sql->where->add('accountuserid', 'NOT IN', $inSelect, 'AND', false);
    	$sql->execute();

    	Pap3Compatibility_Migration_OutputWriter::log("DONE<br/>");
	}
	public function logOnce($message){
	    Pap3Compatibility_Migration_OutputWriter::logOnce($message);
	}