public function run() {
    	$time1 = microtime();
    	Pap3Compatibility_Migration_OutputWriter::logOnce("Deleting migrated data from existing PAP4 tables<br/>");

    	try {
    		$this->deleteTable(Pap_Db_Table_Campaigns::getName());
    		$this->deleteTable(Pap_Db_Table_CommissionGroups::getName());
    		$this->deleteTable(Pap_Db_Table_CommissionTypes::getName());
    		$this->deleteTable(Pap_Db_Table_Commissions::getName());
    		$this->deleteTable(Pap_Db_Table_UserInCommissionGroup::getName());
    		
    		$this->deleteTable(Gpf_Db_Table_FormFields::getName());
    		$this->deleteTable(Gpf_Db_Table_FieldGroups::getName());
    		
    		$this->deleteTable(Pap_Db_Table_Transactions::getName());
    		$this->deleteTable(Pap_Db_Table_Clicks::getName());
    		$this->deleteTable(Pap_Db_Table_RawClicks::getName());
    		$this->deleteTable(Pap_Db_Table_Impressions::getName());

    		$this->deleteTable(Pap_Db_Table_Banners::getName());
    		
    		$this->deleteTable(Gpf_Db_Table_FieldGroups::getName());
    		$this->deleteTable(Pap_Db_Table_PayoutsHistory::getName());
    		$this->deleteTable(Pap_Db_Table_Payouts::getName());
    		
    		$this->deleteTable(Gpf_Db_Table_Currencies::getName());
    		$this->deleteTable(Gpf_Db_Table_MailAccounts::getName());
    		
    	} catch(Exception $e) {
    		Pap3Compatibility_Migration_OutputWriter::log("&nbsp;&nbsp;Errror: ".$e->getMessage()."<br/>");
    	}

    	$time2 = microtime();
		Pap3Compatibility_Migration_OutputWriter::logDone($time1, $time2);
    }
 private function deleteUserInCommissionGroups($commissionGroupId, $userId) {
 	$delete = new Gpf_SqlBuilder_DeleteBuilder();
 	$delete->from->add(Pap_Db_Table_UserInCommissionGroup::getName());
 	$delete->where->add(Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID, '=', $commissionGroupId);
 	$delete->where->add(Pap_Db_Table_UserInCommissionGroup::USER_ID, '=', $userId);
 	$delete->execute();
 }
 protected function buildFrom() {
     $this->_selectBuilder->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), "uicg");
     $onCondition = "uicg.".Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID." = cg.".Pap_Db_Table_CommissionGroups::ID;
     $this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_CommissionGroups::getName(), "cg", $onCondition);
     $onCondition = "cg.".Pap_Db_Table_CommissionGroups::CAMPAIGN_ID. " = c." .Pap_Db_Table_Campaigns::ID;
     $this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_Campaigns::getName(), "c", $onCondition);
 }
	/**
	 * @param Gpf_Data_Record $campaign
	 * @return boolean
	 */
	private function isAffiliateInCampaign(Gpf_Data_Record $campaign) {
		try {
			Pap_Db_Table_UserInCommissionGroup::getStatus($campaign->get($this->campaignIDColumnName), $this->affiliateID);
		} catch (Gpf_DbEngine_NoRowException $e) {
			if ($campaign->get(Pap_Db_Table_Campaigns::TYPE) == Pap_Db_Campaign::CAMPAIGN_TYPE_ON_INVITATION) {
				return false;
			}
		}
		return true;
	}
예제 #5
0
	private function removeCommissionGroups() {
		$delete = new Gpf_SqlBuilder_DeleteBuilder();
		$delete->delete->add('cg');
		$delete->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg');
		$delete->from->addRightJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg',
           'ucg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID.'=cg.'.Pap_Db_Table_CommissionGroups::ID);
		$delete->from->addInnerJoin(Pap_Db_Table_Campaigns::getName(), 'c',
           'cg.'.Pap_Db_Table_CommissionGroups::CAMPAIGN_ID.'=c.'.Pap_Db_Table_Campaigns::ID);
		$delete->where->add('cg.'.Pap_Db_Table_CommissionGroups::IS_DEFAULT, '=', Gpf::NO);
		$delete->delete();
	}
 protected function buildFrom() {
 	$this->_selectBuilder->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg');
 	$this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg',
 	    'cg.'.Pap_Db_Table_CommissionGroups::ID.'=ucg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID);
     $this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_Users::getName(), 
         'u', 'ucg.userid=u.userid');
     $this->_selectBuilder->from->addInnerJoin(Gpf_Db_Table_Users::getName(), 
         'gu', 'u.accountuserid=gu.accountuserid');
     $this->_selectBuilder->from->addInnerJoin(Gpf_Db_Table_AuthUsers::getName(), 
         'au', 'au.authid=gu.authid');
 }
예제 #7
0
 /**
  *
  * @return Pap_Db_UserInCommissionGroup
  */
 protected function getUserCommissionGroup() {
     if($this->userInGroup !== null) {
         return $this->userInGroup;
     }
     try {
         $userInGroup = Pap_Db_Table_UserInCommissionGroup::getInstance()->getUserCommissionGroup(
             $this->getCurrentUserId(), $this->transaction->getCampaignId());
     } catch (Gpf_DbEngine_TooManyRowsException $e) {
         Gpf_Log::error(sprintf('Database not in consistent state. User %s has many commission groups', $userId));
         Pap_Db_Table_UserInCommissionGroup::removeUserFromCampaignGroups($userId, $campaignId);
         $userInGroup = new Pap_Db_UserInCommissionGroup();
         $userInGroup->setStatus(Pap_Features_PerformanceRewards_Condition::STATUS_APPROVED);
         $userInGroup->setUserId($userId);
     }
     return $this->userInGroup = $userInGroup;
 }
    /**
     *
     * @service user_comm_group write
     * @param ids, status
     * @return Gpf_Rpc_Action
     */
    public function changeStatus(Gpf_Rpc_Params $params) {
        $action = new Gpf_Rpc_Action($params);
        $action->setInfoMessage($this->_("Selected commission group(s) are changed"));
        $action->setErrorMessage($this->_("Failed to change status"));

        $update = new Gpf_SqlBuilder_UpdateBuilder();
        $update->set->add(Pap_Db_Table_UserInCommissionGroup::STATUS, $action->getParam("status"));
        $update->from->add(Pap_Db_Table_UserInCommissionGroup::getName());

        foreach ($action->getIds() as $id) {
            $update->where->add(Pap_Db_Table_UserInCommissionGroup::ID, "=", $id, "OR");
        }

        try {
            $update->execute();
            $action->addOk();
        } catch(Gpf_DbEngine_NoRowException $e) {
            $action->addError();
        }

        return $action;
    }
 public function removeUserFromCampaignGroups($campaignId) {
     Pap_Db_Table_UserInCommissionGroup::removeUserFromCampaignGroups($this->getUserId(), $campaignId);
 }
 /**
  *
  * @param $campaignId
  * @param $commissionType
  * @param $affiliateId
  * @return Gpf_Data_RecordSet
  */
 public function getAllUserCommissionTypes($campaignId = null, $commissionType = null, $affiliateId = null) {
     $selectBuilder = $this->getAllCommissionTypesSelect($campaignId, $commissionType);
     $selectBuilder->select->add(Pap_Db_Table_Campaigns::NAME, 'campaignname', 'c'); 
     $selectBuilder->from->addInnerJoin(Pap_Db_Table_Campaigns::getName(), 'c', 'ct.'.self::CAMPAIGNID.'=c.'.Pap_Db_Table_Campaigns::ID);
     if (Gpf_Session::getAuthUser()->getAccountId() != Gpf_Db_Account::DEFAULT_ACCOUNT_ID) {
         $selectBuilder->where->add(Pap_Db_Table_Campaigns::ACCOUNTID, '=', Gpf_Session::getAuthUser()->getAccountId());
     }
     if ($affiliateId !== null && $affiliateId !== '') {
         $selectBuilder->from->addLeftJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg',
             'ct.'.self::CAMPAIGNID.'=cg.'.Pap_Db_Table_CommissionGroups::CAMPAIGN_ID);
         $selectBuilder->from->addLeftJoin(Pap_Db_Table_UserInCommissionGroup::getName(), 'uicg',
             'cg.'.Pap_Db_Table_CommissionGroups::ID.'=uicg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID);
         $condition = new Gpf_SqlBuilder_CompoundWhereCondition();
             $subCondition = new Gpf_SqlBuilder_CompoundWhereCondition();
             $subCondition->add('uicg.'.Pap_Db_Table_UserInCommissionGroup::USER_ID, '=', $affiliateId);
             $subCondition->add('uicg.'.Pap_Db_Table_UserInCommissionGroup::STATUS, '=', 'A');
         $condition->addCondition($subCondition,  'OR');
         $condition->add('c.'.Pap_Db_Table_Campaigns::TYPE, '=', 'P', 'OR');
         $selectBuilder->where->addCondition($condition);
         $selectBuilder->groupBy->add('ct.'.self::ID);
     }
     return $selectBuilder->getAllRows();
 }
예제 #11
0
    private function getAffiliateCount() {
        $banner = new Pap_Db_Banner();
        $banner->setId($this->form->getFieldValue(Pap_Features_Coupon_CreateCoupons::BANNER_ID));
        try {
            $banner->load();
            $campaignId = $banner->getCampaignId();
        } catch (Gpf_DbEngine_NoRowException $e) {
            $campaignId = null;
        }

        $campaign = new Pap_Db_Campaign();
        $campaign->setId($campaignId);
        try {
            $campaign->load();
            $campaignType = $campaign->getCampaignType();
        } catch (Gpf_DbEngine_NoRowException $e) {
            $campaignType = null;
        }

        if ($campaignType != Pap_Db_Campaign::CAMPAIGN_TYPE_PUBLIC) {
            return Pap_Db_Table_UserInCommissionGroup::getUsersInCommissionGroupCount($campaignId);
        }
        return Pap_Db_Table_Users::getInstance()->getAffiliateCount();
    }
	protected function buildFrom(){
		$this->_selectBuilder->from->add(Pap_Db_Table_Campaigns::getName(), 'ca');
		$this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg', 'cg.' . Pap_Db_Table_CommissionGroups::CAMPAIGN_ID . '=ca.' . Pap_Db_Table_Campaigns::ID);
		$this->_selectBuilder->from->addInnerJoin(Pap_Db_Table_UserInCommissionGroup::getName(), 'uic', 'uic.' . Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID . '=cg.' . Pap_Db_Table_CommissionGroups::ID);
	}
예제 #13
0
 private function addCampaignFilterToSelect(Gpf_Common_SelectBuilderCompoundRecord $selectRecord, $campaignId){
     $select = $selectRecord->getSelectBuilder();
     $select->where->add('cg.campaignid','=',$campaignId);
     $select->from->addLeftJoin(Pap_Db_Table_UserInCommissionGroup::getName(),'uic','uic.userid=u.userid');
     $select->from->addLeftJoin(Pap_Db_Table_CommissionGroups::getName(),'cg','cg.commissiongroupid=uic.commissiongroupid');
     $select->groupBy->add('u.userid');
 }
 /**
  *
  * @return Gpf_SqlBuilder_SelectBuilder
  */
 protected function getAffiliatesCountSelect() {
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->add('COUNT(ucg.'.Pap_Db_Table_UserInCommissionGroup::ID.')');
     $select->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg');
     $select->where->add('ucg.' . Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID, '=', 'cg.'.Pap_Db_Table_CommissionGroups::ID, 'AND', false);
     $select->from->addInnerJoin(Pap_Db_Table_Users::getName(), 'u', 'ucg.userid=u.userid');
     $select->where->add('u.rtype', '=', Pap_Application::ROLETYPE_AFFILIATE);
     return $select;
 }
    public function getUserInCommissionGroup($campaignId, $userId) {
        $selectBuilder = new Gpf_SqlBuilder_SelectBuilder();
        $selectBuilder->select->add('ucg.'.Pap_Db_Table_UserInCommissionGroup::ID, 'usercommgroupid');
        
        $selectBuilder->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg');
        $selectBuilder->from->addInnerJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg',
            'ucg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID.'=cg.'.Pap_Db_Table_CommissionGroups::ID);
        
        $selectBuilder->where->add('cg.'.Pap_Db_Table_CommissionGroups::CAMPAIGN_ID, '=', $campaignId);
        $selectBuilder->where->add('ucg.'.Pap_Db_Table_UserInCommissionGroup::USER_ID, '=', $userId);

        try {
            $userInCommisionGroupId = $selectBuilder->getOneRow();
        } catch (Gpf_DbEngine_NoRowException $e) {
            return null;
        }

        return $userInCommisionGroupId->get('usercommgroupid');
    }
예제 #16
0
    /**
     * @param Pap_Db_Transaction $transaction
     * @return Pap_Db_Commission
     */
    protected function getCommissionForTransaction(Pap_Db_Transaction $transaction) {
        $commission = new Pap_Db_Commission();
        $commission->setCommissionTypeId($transaction->getCommissionTypeId());
        $commission->setGroupId($transaction->getCommissionGroupId());
        $commission->setTier($transaction->getTier());
        try {
            $commission->loadFromData(array(Pap_Db_Table_Commissions::TYPE_ID, Pap_Db_Table_Commissions::GROUP_ID));
        } catch (Gpf_Exception $e) {
            $userInGroup = Pap_Db_Table_UserInCommissionGroup::getInstance()->getUserCommissionGroup($transaction->getUserId(), $transaction->getCampaignId());
            $commission->setGroupId($userInGroup->getCommissionGroupId());
            try {
                $commission->loadFromData(array(Pap_Db_Table_Commissions::TYPE_ID, Pap_Db_Table_Commissions::GROUP_ID, Pap_Db_Table_Commissions::TIER));
            } catch (Gpf_Exception $e) {
                throw new Gpf_Exception($this->_('Unable to find commision for transaction id=' . $transaction->getId()));
            }
        }

        return $commission;
    }
 public static function getStatus($campaignId, $userId) {
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->add(Pap_Db_Table_UserInCommissionGroup::STATUS);
     $select->from->add(Pap_Db_Table_CommissionGroups::getName(), 'cg');
     $select->from->addInnerJoin(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg',
         'cg.'.Pap_Db_Table_CommissionGroups::ID.'=ucg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID);
     $select->where->add('cg.'.Pap_Db_Table_CommissionGroups::CAMPAIGN_ID, '=', $campaignId);
     $select->where->add('ucg.'.Pap_Db_Table_UserInCommissionGroup::USER_ID, '=', $userId);
     $row = $select->getOneRow();
     
     return $row->get(Pap_Db_Table_UserInCommissionGroup::STATUS);
 }
 protected function initAffiliateCount() {
     if ($this->campaignType != Pap_Db_Campaign::CAMPAIGN_TYPE_PUBLIC) {
         return Pap_Db_Table_UserInCommissionGroup::getUsersInCommissionGroupCount($this->campaignId);
     }
     return Pap_Db_Table_Users::getAffiliateCount();
 }