/** * Tests that an e-mail advising a placement has been activated is able to * be generated correctly. * */ function testPrepareActivateDeactivatePlacementEmail() { $adminContact = 'Andrew Hill'; $adminName = 'OpenX Limited'; $adminMail = '*****@*****.**'; $adminCompany = 'Admin company name'; $adminAccountId = 100; $agencyName = 'Agency Ltd.'; $agencyContact = 'Mr. Foo Bar Agency'; $agencyMail = '*****@*****.**'; $advertiserName = 'Foo Client'; $advertiserMail = '*****@*****.**'; $advertiserUsername = '******'; $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['webpath']['admin'] = 'example.com'; $aConf['email']['fromAddress'] = $adminMail; $aConf['email']['fromName'] = $adminName; $aConf['email']['fromCompany'] = $adminCompany; $aConf['email']['useManagerDetails'] = true; $aConf['email']['logOutgoing'] = true; Mock::generatePartial('OA_Email', 'PartialMockOA_Email', array('sendMail')); $oEmail = new PartialMockOA_Email(); $oEmail->setReturnValue('sendMail', true); unset($GLOBALS['_MAX']['PREF']); // Prepare an admin user // Create the admin account $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_name = 'System Administrator'; $doAccounts->account_type = OA_ACCOUNT_ADMIN; $adminAccountId = DataGenerator::generateOne($doAccounts); // Setup the admin account id $doAppVar = OA_Dal::factoryDO('application_variable'); $doAppVar->name = 'admin_account_id'; $doAppVar->value = $adminAccountId; // Create a user $doAdminUser = OA_Dal::factoryDO('users'); $doAdminUser->contact_name = $adminContact; $doAdminUser->email_address = $adminMail; $doAdminUser->username = $adminName; $doAdminUser->password = md5('password'); $doAdminUser->language = 'en'; $doAdminUser->default_account_id = $adminAccountId; $adminUserId = DataGenerator::generateOne($doAdminUser); $doAdminUser = OA_Dal::staticGetDO('users', $adminUserId); $aAdminUser = $doAdminUser->toArray(); // Create admin account-user association $doAUA = OA_Dal::factoryDO('account_user_assoc'); $doAUA->account_id = $adminAccountId; $doAUA->user_id = $adminUserId; $doAUA->insert(); $doAgency = OA_Dal::factoryDO('agency'); $doAgency->name = $agencyName; $doAgency->contact = $agencyContact; $doAgency->email = $agencyMail; $agencyId = DataGenerator::generateOne($doAgency); $doAgency = OA_Dal::staticGetDO('agency', $agencyId); //get('agencyid', $agencyId); $agencyAccountId = $doAgency->account_id; // Prepare an agency user $doUser = OA_Dal::factoryDO('users'); $doUser->contact_name = $agencyContact; $doUser->email_address = $agencyMail; $doUser->username = $agencyName; $doUser->language = 'en'; $agencyUserId = DataGenerator::generateOne($doUser); $doAgencyUser = OA_Dal::staticGetDO('users', $agencyUserId); $aAgencyUser = $doAgencyUser->toArray(); $oUserAccess = new OA_Admin_UI_UserAccess(); // Agency user $oUserAccess->linkUserToAccount($agencyUserId, $doAgency->account_id, array(), array()); // Generate an advertiser owned by the agency $doClients = OA_Dal::factoryDO('clients'); $doClients->agencyid = $agencyId; $doClients->clientname = $advertiserName; $doClients->email = '*****@*****.**'; $advertiserId1 = DataGenerator::generateOne($doClients); $doClients = OA_Dal::staticGetDO('clients', 'clientid', $advertiserId1); $advertiserAccountId = $doClients->account_id; // Create an advertiser user $doUser = OA_Dal::factoryDO('users'); $doUser->contact_name = $advertiserName; $doUser->email_address = $advertiserMail; $doUser->username = $advertiserUsername; $doUser->language = 'en'; $userId = DataGenerator::generateOne($doUser); $doAdvertiserUser = OA_Dal::staticGetDO('users', $userId); $aAdvertiserUser = $doAdvertiserUser->toArray(); // Link the advertiser user $oUserAccess->linkUserToAccount($userId, $doClients->account_id, array(), array()); // Create a campaign $doPlacements = OA_Dal::factoryDO('campaigns'); $doPlacements->clientid = $advertiserId1; $doPlacements->campaignname = 'Default Campaign'; $placementId = DataGenerator::generateOne($doPlacements); // Prepare banners $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $placementId; $doBanners->description = 'Test Banner'; $doBanners->url = ''; $bannerId1 = DataGenerator::generateOne($doBanners); $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $placementId; $doBanners->description = 'Test Banner'; $doBanners->url = 'http://www.fornax.net/'; $bannerId2 = DataGenerator::generateOne($doBanners); // Two copy should be sent (different emails addresses) // One copy to the user and another one to the Advertiser $result = $oEmail->sendCampaignActivatedDeactivatedEmail($placementId); $this->assertEqual($result, 2); $doUserLog = OA_Dal::factoryDO('userlog'); $aUserLog = $doUserLog->getAll(); $this->assertEqual(count($aUserLog), 2); $this->assertEqual($aUserLog[0]['action'], phpAds_actionActivationMailed); // Turn off email logging and send mail again $aConf['email']['logOutgoing'] = false; $result = $oEmail->sendCampaignActivatedDeactivatedEmail($placementId); $this->assertEqual($result, 2); // No new entries in user log $doUserLog = OA_Dal::factoryDO('userlog'); $aUserLog = $doUserLog->getAll(); $this->assertEqual(count($aUserLog), 2); // Set email logging back to true $aConf['email']['logOutgoing'] = true; $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId); // Check the contents of the generated email are correct $expectedSubject = 'Campaign activated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been activated because' . "\n"; $expectedContents .= 'the campaign activation date has been reached.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); // Check for a campaign that should be deactivated $expectedSubject = 'Campaign deactivated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been deactivated because:' . "\n"; $expectedContents .= ' - there are no Impressions remaining.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId, OX_CAMPAIGN_DISABLED_IMPRESSIONS); $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId, OX_CAMPAIGN_DISABLED_CLICKS); $expectedSubject = 'Campaign deactivated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been deactivated because:' . "\n"; $expectedContents .= ' - there are no Clicks remaining.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId, OX_CAMPAIGN_DISABLED_CONVERSIONS); $expectedSubject = 'Campaign deactivated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been deactivated because:' . "\n"; $expectedContents .= ' - there are no Sales remaining.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId, OX_CAMPAIGN_DISABLED_DATE); $expectedSubject = 'Campaign deactivated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been deactivated because:' . "\n"; $expectedContents .= ' - the expiration date has been reached.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); $reason = 0 | OX_CAMPAIGN_DISABLED_IMPRESSIONS | OX_CAMPAIGN_DISABLED_CLICKS | OX_CAMPAIGN_DISABLED_DATE; $aResult = $oEmail->prepareCampaignActivatedDeactivatedEmail($aAdvertiserUser, $placementId, $reason); $expectedSubject = 'Campaign deactivated: Foo Client'; $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n"; $expectedContents .= 'Your campaign shown below has been deactivated because:' . "\n"; $expectedContents .= ' - there are no Impressions remaining' . "\n"; $expectedContents .= ' - there are no Clicks remaining' . "\n"; $expectedContents .= ' - the expiration date has been reached.' . "\n"; $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n"; $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n"; $expectedContents .= "=======================================================\n\n"; $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n"; $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n"; $expectedContents .= " linked to: http://www.fornax.net/\n\n"; $expectedContents .= "\n"; $expectedContents .= "Regards,\n {$agencyContact}, {$agencyName}"; $this->assertTrue(is_array($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult['subject'], $expectedSubject); $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents)); TestEnv::restoreEnv(); }
// Required files require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/OA/Admin/UI/UserAccess.php'; require_once MAX_PATH . '/lib/max/other/html.php'; // Security check OA_Permission::enforceAccount(OA_ACCOUNT_ADMIN, OA_ACCOUNT_MANAGER); OA_Permission::enforceAccountPermission(OA_ACCOUNT_MANAGER, OA_PERM_SUPER_ACCOUNT); OA_Permission::enforceAccessToObject('agency', $agencyid); /*-------------------------------------------------------*/ /* HTML framework */ /*-------------------------------------------------------*/ phpAds_PageHeader('agency-access'); if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN)) { $doAgency = OA_Dal::staticGetDO('agency', $agencyid); MAX_displayInventoryBreadcrumbs(array(array("name" => $doAgency->name)), "agency"); } /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ require_once MAX_PATH . '/lib/OA/Admin/Template.php'; $oTpl = new OA_Admin_Template('agency-user-start.html'); OA_Admin_UI_UserAccess::assignUserStartTemplateVariables($oTpl); $oTpl->assign('action', 'agency-user.php'); $oTpl->assign('entityIdName', 'agencyid'); $oTpl->assign('entityIdValue', $agencyid); $oTpl->display(); /*-------------------------------------------------------*/ /* HTML framework */ /*-------------------------------------------------------*/ phpAds_PageFooter();
| | | Copyright: See the COPYRIGHT.txt file. | | License: GPLv2 or later, see the LICENSE.txt file. | +---------------------------------------------------------------------------+ */ // Require the initialisation file require_once '../../init.php'; // Required files require_once MAX_PATH . '/lib/OA/Dal.php'; require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/lib/OA/Session.php'; require_once MAX_PATH . '/lib/OA/Admin/UI/UserAccess.php'; // Register input variables phpAds_registerGlobal('userid', 'returnurl'); // Security check OA_Permission::enforceAccount(OA_ACCOUNT_MANAGER, OA_ACCOUNT_ADVERTISER); OA_Permission::enforceAccountPermission(OA_ACCOUNT_ADVERTISER, OA_PERM_SUPER_ACCOUNT); OA_Permission::enforceAccessToObject('clients', $clientid); $accountId = OA_Permission::getAccountIdForEntity('clients', $clientid); // CVE-2013-5954 - see OA_Permission::checkSessionToken() method for details OA_Permission::checkSessionToken(); /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ if (!empty($accountId) && !empty($userid)) { OA_Admin_UI_UserAccess::unlinkUserFromAccount($accountId, $userid); } if (empty($returnurl)) { $returnurl = 'advertiser-access.php?clientid=' . $clientid; } Header("Location: " . $returnurl);
// Required files require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/OA/Session.php'; require_once MAX_PATH . '/lib/OA/Admin/UI/UserAccess.php'; require_once MAX_PATH . '/lib/max/other/html.php'; // Security check OA_Permission::enforceAccount(OA_ACCOUNT_MANAGER, OA_ACCOUNT_TRAFFICKER); OA_Permission::enforceAccountPermission(OA_ACCOUNT_TRAFFICKER, OA_PERM_SUPER_ACCOUNT); OA_Permission::enforceAccessToObject('affiliates', $affiliateid); /*-------------------------------------------------------*/ /* Store preferences */ /*-------------------------------------------------------*/ $session['prefs']['inventory_entities'][OA_Permission::getEntityId()]['affiliateid'] = $affiliateid; phpAds_SessionDataStore(); $userAccess = new OA_Admin_UI_UserAccess(); $userAccess->init(); function OA_headerNavigation() { global $affiliateid; phpAds_PageHeader("affiliate-access"); MAX_displayWebsiteBreadcrumbs($affiliateid); } $userAccess->setNavigationHeaderCallback('OA_headerNavigation'); function OA_footerNavigation() { echo "\n <script language='JavaScript'>\n <!--\n "; if (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) { echo "function MMM_cascadePermissionsChange()\n {\n var e = findObj('permissions_" . OA_PERM_ZONE_EDIT . "');\n var a = findObj('permissions_" . OA_PERM_ZONE_ADD . "');\n var d = findObj('permissions_" . OA_PERM_ZONE_DELETE . "');\n\n a.disabled = d.disabled = !e.checked;\n if (!e.checked) {\n a.checked = d.checked = false;\n }\n }\n MMM_cascadePermissionsChange();\n //-->"; } echo "</script>";
/** * Unlinks user from account and if necessary deletes user account. * Sets apropriate message * * @param integer $accountId Account ID * @param integer $userId User ID */ function unlinkUserFromAccount($accountId, $userId) { if (OA_Permission::isUserLinkedToAccount($accountId, $userId)) { $doAccount_user_assoc = OA_Dal::factoryDO('account_user_assoc'); $doAccount_user_assoc->account_id = $accountId; $doAccount_user_assoc->user_id = $userId; $doAccount_user_assoc->delete(); OA_Session::setMessage($GLOBALS['strUserUnlinkedFromAccount']); $doUsers = OA_Dal::staticGetDO('users', $userId); // delete user account if he is not linked anymore to any account if ($doUsers->countLinkedAccounts() == 0) { $doUsers->delete(); OA_Session::setMessage($GLOBALS['strUserWasDeleted']); } else { OA_Admin_UI_UserAccess::resetUserDefaultAccount($userId, $accountId); } } else { OA_Session::setMessage($GLOBALS['strUserNotLinkedWithAccount']); } }
| | | This program is distributed in the hope that it will be useful, | | but WITHOUT ANY WARRANTY; without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU General Public License for more details. | | | | You should have received a copy of the GNU General Public License | | along with this program; if not, write to the Free Software | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | +---------------------------------------------------------------------------+ $Id: admin-user.php 37157 2009-05-28 12:31:10Z andrew.hill $ */ require_once '../../init.php'; require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/OA/Session.php'; require_once MAX_PATH . '/lib/OA/Admin/UI/UserAccess.php'; OA_Permission::enforceAccount(OA_ACCOUNT_ADMIN); $userAccess = new OA_Admin_UI_UserAccess(); $userAccess->init(); function OA_headerUserNavigation() { phpAds_PageHeader("4.4.2"); phpAds_ShowSections(array("4.1", "4.3", "4.4", "4.4.2")); } $userAccess->setNavigationHeaderCallback('OA_headerUserNavigation'); $doAccounts = OA_Dal::factoryDO('accounts'); $userAccess->setAccountId($doAccounts->getAdminAccountId()); $userAccess->setPagePrefix('admin'); $userAccess->setBackUrl('admin-user-start.php'); $userAccess->process();
require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/OA/Session.php'; require_once MAX_PATH . '/lib/OA/Admin/UI/UserAccess.php'; require_once MAX_PATH . '/lib/max/other/html.php'; // Register input variables phpAds_registerGlobalUnslashed('login', 'passwd', 'link', 'contact_name', 'email_address', 'permissions', 'submit'); // Security check OA_Permission::enforceAccount(OA_ACCOUNT_MANAGER, OA_ACCOUNT_ADVERTISER); OA_Permission::enforceAccountPermission(OA_ACCOUNT_ADVERTISER, OA_PERM_SUPER_ACCOUNT); OA_Permission::enforceAccessToObject('clients', $clientid); /*-------------------------------------------------------*/ /* Store preferences */ /*-------------------------------------------------------*/ $session['prefs']['inventory_entities'][OA_Permission::getEntityId()]['clientid'] = $clientid; phpAds_SessionDataStore(); $userAccess = new OA_Admin_UI_UserAccess(); $userAccess->init(); function OA_headerNavigation() { $oHeaderModel = buildAdvertiserHeaderModel($GLOBALS['clientid']); if (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) { phpAds_PageHeader("advertiser-access", $oHeaderModel); phpAds_ShowSections(array("4.1.2", "4.1.3", "4.1.5", "4.1.5.2")); } else { $sections = array(); if (OA_Permission::hasPermission(OA_PERM_BANNER_ACTIVATE) || OA_Permission::hasPermission(OA_PERM_BANNER_EDIT)) { $sections[] = '2.2'; } $sections[] = '2.3'; $sections[] = '2.3.2'; phpAds_PageHeader('advertiser-access', $oHeaderModel);