示例#1
0
 /**
  * The belongsToAccount() method behaves in a different way when looking
  * at entries in the "audit" table. To check if an account has access
  * to view specific audit data, we only need to check if the account's
  * ID is set in the appropriate column in the record.
  *
  * @param string $accountId The account ID to test if this DB_DataObject is
  *                          owned by.
  * @return boolean|null     Returns true if the entity belongs to the specified
  *                          account, false if doesn't, or null if it was not
  *                          possible to find the required object references.
  */
 function belongsToAccount($accountId = null)
 {
     // Set the account ID, if not passed in
     if (empty($accountId)) {
         $accountId = OA_Permission::getAccountId();
     }
     // Prepare $this with the required info of the "entity" to be tested
     if (!$this->N) {
         $key = $this->getFirstPrimaryKey();
         if (empty($this->{$key})) {
             MAX::raiseError('Key on object is not set, table: ' . $this->getTableWithoutPrefix());
             return null;
         }
         if (!$this->find($autoFetch = true)) {
             return null;
         }
     }
     // Test the account ID type, and then test for access
     $accountType = OA_Permission::getAccountTypeByAccountId($accountId);
     // Test the access to the audit trail entry
     if ($accountType == OA_ACCOUNT_ADMIN) {
         // Admin always has access
         return true;
     } else {
         if ($accountType == OA_ACCOUNT_MANAGER) {
             // Test if the account ID is equal to the account_id field
             if (is_null($this->account_id)) {
                 return null;
             }
             if ($this->account_id == $accountId) {
                 return true;
             }
         } else {
             if ($accountType == OA_ACCOUNT_ADVERTISER) {
                 // Test if the account ID is equal to the advertiser_account_id field
                 if (is_null($this->advertiser_account_id)) {
                     return null;
                 }
                 if ($this->advertiser_account_id == $accountId) {
                     return true;
                 }
             } else {
                 if ($accountType == OA_ACCOUNT_TRAFFICKER) {
                     // Test if the account ID is equal to the website_account_id field
                     if (is_null($this->website_account_id)) {
                         return null;
                     }
                     if ($this->website_account_id == $accountId) {
                         return true;
                     }
                 }
             }
         }
     }
     return false;
 }
 /**
  * A private method to return the owning account IDs in a format suitable
  * for use by the DB_DataObjectCommon::getOwningAccountIds() method as a
  * return parameter, given the account ID of the account that is the owner
  * of the entity being audited.
  *
  * @access private
  * @param integer $accountId The account ID that "owns" the entity being
  *                           audited.
  * @return array An array with the same format as the return array of the
  *               DB_DataObjectCommon::getOwningAccountIds() method.
  */
 protected function _getOwningAccountIdsByAccountId($accountId)
 {
     // Get the type of the "owning" account
     $accountType = OA_Permission::getAccountTypeByAccountId($accountId);
     if ($accountType == OA_ACCOUNT_ADMIN) {
         // Simply return the admin account ID
         $aAccountIds = array(OA_ACCOUNT_ADMIN => $accountId);
     } else {
         if ($accountType == OA_ACCOUNT_MANAGER) {
             // Simply return the manager account ID
             $aAccountIds = array(OA_ACCOUNT_MANAGER => $accountId);
         } else {
             if ($accountType == OA_ACCOUNT_ADVERTISER) {
                 // Set the owning manager account ID to the admin
                 // account ID, in case something goes wrong
                 $managerAccountId = OA_Dal_ApplicationVariables::get('admin_account_id');
                 // This is an advertiser account, so find the
                 // "owning" manager account ID
                 $doClients = OA_Dal::factoryDO('clients');
                 $doClients->account_id = $accountId;
                 $doClients->find();
                 if ($doClients->getRowCount() == 1) {
                     $doClients->fetch();
                     $managerAccountId = $doClients->getOwningManagerId();
                 }
                 // Return the manager and advertiser account IDs
                 $aAccountIds = array(OA_ACCOUNT_MANAGER => $managerAccountId, OA_ACCOUNT_ADVERTISER => $accountId);
             } else {
                 if ($accountType == OA_ACCOUNT_TRAFFICKER) {
                     // Set the owning manager account ID to the admin
                     // account ID, in case something goes wrong
                     $managerAccountId = OA_Dal_ApplicationVariables::get('admin_account_id');
                     // This is a trafficker account, so find the
                     // "owning" manager account ID
                     $doAffiliates = OA_Dal::factoryDO('affiliates');
                     $doAffiliates->account_id = $accountId;
                     $doAffiliates->find();
                     if ($doAffiliates->getRowCount() == 1) {
                         $doAffiliates->fetch();
                         $managerAccountId = $doAffiliates->getOwningManagerId();
                     }
                     // Return the manager and trafficker account IDs
                     $aAccountIds = array(OA_ACCOUNT_MANAGER => $managerAccountId, OA_ACCOUNT_TRAFFICKER => $accountId);
                 }
             }
         }
     }
     return $aAccountIds;
 }
示例#3
0
 /**
  * Returns all of the account IDs for those accounts "owned"
  * by the given account ID.
  *
  * @param int $accountId The desired "parent" account account to test
  *                       for all "owned" account IDs.
  * @return array An array of account IDs, including the account itself.
  */
 function getOwnedAccounts($accountId)
 {
     $aAccountIds = array();
     $accoutType = OA_Permission::getAccountTypeByAccountId($accountId);
     switch ($accoutType) {
         case OA_ACCOUNT_MANAGER:
             $aAccountIds[] = $accountId;
             // Retrive the agency ID that corresponds with the manager account
             $doAgency = OA_Dal::factoryDO('agency');
             $doAgency->selectAdd();
             $doAgency->selectAdd('agencyid');
             $doAgency->account_id = $accountId;
             $doAgency->find();
             if ($doAgency->getRowCount() == 1) {
                 $doAgency->fetch();
                 $agencyId = $doAgency->agencyid;
                 // Retrieve all advertiser account IDs that the manager
                 // account "owns" (from the affiliates table)
                 $doAffiliates = OA_Dal::factoryDO('affiliates');
                 $doAffiliates->selectAdd();
                 $doAffiliates->selectAdd('account_id');
                 $doAffiliates->agencyid = $agencyId;
                 $doAffiliates->find();
                 if ($doAffiliates->getRowCount() > 0) {
                     $doAffiliates->fetch();
                     $aAccountIds[] = $doAffiliates->account_id;
                 }
                 // Retrieve all website account IDs that the manager
                 // account "owns" (from the clients table)
                 $doClients = OA_Dal::factoryDO('clients');
                 $doClients->selectAdd();
                 $doClients->selectAdd('account_id');
                 $doClients->agencyid = $agencyId;
                 $doClients->find();
                 if ($doClients->getRowCount() > 0) {
                     while ($doClients->fetch()) {
                         $aAccountIds[] = $doClients->account_id;
                     }
                 }
             }
             break;
         case OA_ACCOUNT_ADMIN:
             // Select all account IDs
             $doAccounts = OA_Dal::factoryDO('accounts');
             $doAccounts->selectAdd();
             $doAccounts->selectAdd('account_id');
             $doAccounts->find();
             if ($doAccounts->getRowCount() > 0) {
                 while ($doAccounts->fetch()) {
                     $aAccountIds[] = $doAccounts->account_id;
                 }
             }
             break;
         default:
             $aAccountIds[] = $accountId;
     }
     return $aAccountIds;
 }