Пример #1
0
 /**
  * Handle all necessary operations when a user is updated
  *
  * @see DB_DataObject::update()
  */
 function update($dataObject = false)
 {
     if (isset($this->username)) {
         $this->username = strtolower($this->username);
     }
     return parent::update($dataObject);
 }
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Campaign trackers don't have an account_id, get it from
     // the parent tracker (stored in the "trackers" table) using
     // the "trackerid" key -- note, this could equally be done
     // via the parent campaign, but the end result is the same
     return parent::getOwningAccountIds('trackers', 'trackerid');
 }
Пример #3
0
 /**
  * Delete all referenced records
  *
  * Although it's a public access to this method it shouldn't be called outside
  * this class. The only reason it's not private is because it needs to be executed
  * on new objects.
  *
  * @return boolean  True on success else false
  * @access public
  **/
 function deleteCascade($linkedRefs, $primaryKey, $parentid)
 {
     $result = parent::deleteCascade($linkedRefs, $primaryKey, $parentid);
     // Delete users or link them to other accounts
     if ($result) {
         return $this->_relinkOrDeleteUsers();
     }
     return $result;
 }
 function delete($useWhere = false, $cascadeDelete = true, $parentid = null)
 {
     // delete also all permissions linked to this account/user
     $doAccount_user_permission_assoc = OA_Dal::factoryDO('account_user_permission_assoc');
     $doAccount_user_permission_assoc->user_id = $this->user_id;
     $doAccount_user_permission_assoc->account_id = $this->account_id;
     if ($useWhere) {
         $doAccount_user_permission_assoc->_query['condition'] = $this->_query['condition'];
     }
     $doAccount_user_permission_assoc->delete($useWhere, false, $parentid);
     return parent::delete($useWhere, $cascadeDelete, $parentid);
 }
 /**
  * A private method to return the account ID of the
  * account that should "own" audit trail entries for
  * this entity type; NOT related to the account ID
  * of the currently active account performing an
  * action.
  *
  * @return integer The account ID to insert into the
  *                 "account_id" column of the audit trail
  *                 database table.
  */
 public function getOwningAccountIds($resetCache = false)
 {
     $accountType = OA_Permission::getAccountType(false);
     switch ($accountType) {
         case OA_ACCOUNT_ADMIN:
             return parent::_getOwningAccountIdsByAccountId($accountId = OA_Permission::getAccountId());
         case OA_ACCOUNT_ADVERTISER:
             $parentTable = 'clients';
             $parentKeyName = 'clientid';
             break;
         case OA_ACCOUNT_TRAFFICKER:
             $parentTable = 'affiliates';
             $parentKeyName = 'affiliateid';
             break;
         case OA_ACCOUNT_MANAGER:
             $parentTable = 'agency';
             $parentKeyName = 'agencyid';
             break;
     }
     return $this->_getOwningAccountIds($parentTable, $parentKeyName);
 }
Пример #6
0
 /**
  * Handle all necessary operations when a trafficker is deleted
  *
  * @see DB_DataObject::delete()
  */
 function delete($useWhere = false, $cascade = true, $parentid = null)
 {
     $result = parent::delete($useWhere, $cascade, $parentid);
     if ($result) {
         $this->deleteAccount();
     }
     return $result;
 }
Пример #7
0
 function _formatValue($field, $type = '')
 {
     $fieldVal = $this->{$field};
     if (is_a($fieldVal, 'DB_DataObject_Cast') && $fieldVal->type == 'blob') {
         return 'binary data';
     } else {
         parent::_formatValue($field, $type);
     }
 }
Пример #8
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Variables don't have an account_id, get it from the
     // parent tracker (stored in the "trackers" table) using
     // the "trackerid" key
     return parent::getOwningAccountIds('trackers', 'trackerid');
 }
Пример #9
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // A channel can be "owned" by a manager account, or
     // by an advertiser account
     if (!empty($this->affiliateid)) {
         // The channel is owned by an advertiser account, but
         // channels don't have an account_id, so get it from the
         // parent advertiser account (stored in the "affiliates"
         // table) using the "affiliateid" key
         return parent::getOwningAccountIds('affiliates', 'affiliateid');
     }
     // The channel is owned by a manager account, but
     // channels don't have an account_id, so get it from the
     // parent manager account (stored in the "agency" table) using
     // the "agencyid" key
     return parent::getOwningAccountIds('agency', 'agencyid');
 }
 function testBoolToStr()
 {
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('t'), 'true');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('1'), 'true');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr(1), 'true');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr(true), 'true');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('true'), 'true');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('f'), 'false');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('0'), 'false');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr(0), 'false');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr(false), 'false');
     $this->assertEqual(DB_DataObjectCommon::_boolToStr('false'), 'false');
 }
Пример #11
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Banners don't have an account_id, get it from the parent
     // campaign (stored in the "campaigns" table) using the
     // "campaignid" key
     return parent::getOwningAccountIds('campaigns', 'campaignid');
 }
Пример #12
0
 function delete($useWhere = false, $cascade = true, $parentid = null)
 {
     // Find acls which use this channels
     $dalAcls = OA_Dal::factoryDAL('acls');
     $rsChannel = $dalAcls->getAclsByDataValueType($this->channelid, 'Site:Channel');
     $rsChannel->reset();
     while ($rsChannel->next()) {
         // Get the IDs of the banner that's using this channel
         $bannerId = $rsChannel->get('bannerid');
         // Get the remaining channels the banner will use, if any
         $aChannelIds = explode(',', $rsChannel->get('data'));
         $aChannelIds = array_diff($aChannelIds, array($this->channelid));
         // Prepare to update the banner's limitations in the "acls" table
         $doAcls = DB_DataObject::factory('acls');
         $doAcls->init();
         $doAcls->bannerid = $bannerId;
         $doAcls->executionorder = $rsChannel->get('executionorder');
         if (!empty($aChannelIds)) {
             $doAcls->data = implode(',', $aChannelIds);
             $doAcls->update();
         } else {
             $doAcls->delete();
         }
         // Re-compile the banner's limitations
         $aAcls = array();
         $doAcls = DB_DataObject::factory('acls');
         $doAcls->init();
         $doAcls->bannerid = $bannerId;
         $doAcls->orderBy('executionorder');
         $doAcls->find();
         while ($doAcls->fetch()) {
             $aData = $doAcls->toArray();
             $deliveryLimitationPlugin = OX_Component::factoryByComponentIdentifier('deliveryLimitations:' . $aData['type']);
             if ($deliveryLimitationPlugin) {
                 $deliveryLimitationPlugin->init($aData);
                 if ($deliveryLimitationPlugin->isAllowed($page)) {
                     $aAcls[$aData['executionorder']] = $aData;
                 }
             }
         }
         $doBanners = OA_Dal::factoryDO('banners');
         $doBanners->bannerid = $bannerId;
         $doBanners->find();
         $doBanners->fetch();
         $doBanners->acl_plugins = MAX_AclGetPlugins($aAcls);
         $doBanners->acls_updated = OA::getNow();
         $doBanners->compiledlimitation = MAX_AclGetCompiled($aAcls, $page);
         $doBanners->update();
     }
     return parent::delete($useWhere, $cascade, $parentid);
 }
Пример #13
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Campaigns don't have an account_id, get it from the parent
     // advertiser account (stored in the "clients" table) using
     // the "clientid" key
     return parent::getOwningAccountIds('clients', 'clientid');
 }
Пример #14
0
 /**
  * Automatically refreshes HTML cache in addition to normal
  * update() call.
  *
  * @see DB_DataObject::update()
  * @param object $dataObject
  * @return boolean
  * @access public
  */
 function update($dataObject = false)
 {
     $this->_rebuildCache();
     return parent::update($dataObject);
 }
Пример #15
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Delivery limitations don't have an account_id, get it from
     // the parent banner (stored in the "banners" table) using
     // the "bannerid" key
     return parent::getOwningAccountIds('banners', 'bannerid');
 }
Пример #16
0
 function insert()
 {
     $aConf = $GLOBALS['_MAX']['CONF'];
     //        $this->setEcpmEnabled();
     if ($this->priority == self::PRIORITY_ECPM || $this->ecpm_enabled) {
         $this->ecpm = $this->calculateEcpm();
     }
     // Set the correct campaign status
     $this->recalculateStatus();
     // Set deafult connection windows if not supplied
     if (!isset($this->viewwindow) && !empty($aConf['logging']['defaultImpressionConnectionWindow'])) {
         $this->viewwindow = $aConf['logging']['defaultImpressionConnectionWindow'];
     }
     if (!isset($this->clickwindow) && !empty($aConf['logging']['defaultClickConnectionWindow'])) {
         $this->clickwindow = $aConf['logging']['defaultClickConnectionWindow'];
     }
     $id = parent::insert();
     if (!$id) {
         return $id;
     }
     // Initalise any tracker based plugins
     $plugins = array();
     require_once LIB_PATH . '/Plugin/Component.php';
     $invocationPlugins =& OX_Component::getComponents('invocationTags');
     foreach ($invocationPlugins as $pluginKey => $plugin) {
         if (!empty($plugin->trackerEvent)) {
             $plugins[] = $plugin;
         }
     }
     // Link automatically any trackers which are marked as "link with any new campaigns"
     $doTrackers = $this->factory('trackers');
     $doTrackers->clientid = $this->clientid;
     $doTrackers->linkcampaigns = 't';
     $doTrackers->find();
     while ($doTrackers->fetch()) {
         $doCampaigns_trackers = $this->factory('campaigns_trackers');
         $doCampaigns_trackers->init();
         $doCampaigns_trackers->trackerid = $doTrackers->trackerid;
         $doCampaigns_trackers->campaignid = $this->campaignid;
         $doCampaigns_trackers->clickwindow = $doTrackers->clickwindow;
         $doCampaigns_trackers->viewwindow = $doTrackers->viewwindow;
         $doCampaigns_trackers->status = $doTrackers->status;
         foreach ($plugins as $oPlugin) {
             $fieldName = strtolower($oPlugin->trackerEvent);
             $doCampaigns_trackers->{$fieldName} = $doTrackers->{$fieldName};
         }
         $doCampaigns_trackers->insert();
     }
     return $id;
 }
Пример #17
0
 /**
  * ON DELETE CASCADE is handled by parent class but we have
  * to also make sure here that we are handling here:
  * - zone chaining
  * - zone appending
  *
  * @param boolean $useWhere
  * @param boolean $cascadeDelete
  * @return boolean
  * @see DB_DataObjectCommon::delete()
  */
 function delete($useWhere = false, $cascadeDelete = true, $parentid = null)
 {
     // Handle all "appended" zones
     $doZones = $this->factory('zones');
     $doZones->init();
     $doZones->appendtype = phpAds_ZoneAppendZone;
     $doZones->whereAdd("append LIKE '%zone:" . $this->zoneid . "%'");
     $doZones->find();
     while ($doZones->fetch()) {
         $doZoneUpdate = clone $doZones;
         $doZoneUpdate->appendtype = phpAds_ZoneAppendRaw;
         $doZoneUpdate->append = '';
         $doZoneUpdate->update();
     }
     // Handle all "chained" zones
     $doZones = $this->factory('zones');
     $doZones->init();
     $doZones->chain = 'zone:' . $this->zoneid;
     $doZones->find();
     while ($doZones->fetch()) {
         $doZoneUpdate = clone $doZones;
         $doZoneUpdate->chain = '';
         $doZoneUpdate->update();
     }
     return parent::delete($useWhere, $cascadeDelete, $parentid);
 }
Пример #18
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Zones don't have an account_id, get it from the parent
     // website account (stored in the "affiliates" table) using
     // the "affiliateid" key
     return parent::getOwningAccountIds('affiliates', 'affiliateid');
 }
Пример #19
0
 function belongsToAccount($accountId = null)
 {
     // Set the account ID, if not passed in
     if (empty($accountId)) {
         $accountId = OA_Permission::getAccountId();
     }
     $result = parent::belongsToAccount($accountId);
     if (!$result) {
         $doAccounts = OA_Dal::staticGetDO('accounts', $accountId);
         $result = $doAccounts->account_type == OA_ACCOUNT_ADMIN;
     }
     return $result;
 }
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Placement/zone associations are a special case, as both the
     // advertiser and the website accounts should be able to see
     // the audit entries, so the results of two calls need to be
     // merged
     $aAdvertiserAccountIds = array();
     if (!empty($this->placement_id)) {
         // Placement/zone assocs don't have an account_id, get it from
         // the parent campaign (stored in the "campaigns" table) using
         // the "placement_id" key
         $aAdvertiserAccountIds = parent::getOwningAccountIds('campaigns', 'placement_id');
     }
     $aWebsiteAccountIds = array();
     if (!empty($this->zone_id)) {
         // Placement/zone assocs don't have an account_id, get it from
         // the parent zone (stored in the "zones" table) using
         // the "zone_id" key
         $aWebsiteAccountIds = parent::getOwningAccountIds('zones', 'zone_id');
     }
     // Check that the manager account IDs match from the two results
     if (isset($aAdvertiserAccountIds[OA_ACCOUNT_MANAGER]) && isset($aWebsiteAccountIds[OA_ACCOUNT_MANAGER])) {
         if ($aAdvertiserAccountIds[OA_ACCOUNT_MANAGER] != $aWebsiteAccountIds[OA_ACCOUNT_MANAGER]) {
             $message = "Cannot locate owning account IDs for ad/zone association, as manager account IDs, " . "do not match, where ad ID was {$this->ad_id} and zone ID was {$this->zone_id}.";
             MAX::raiseError($message, PEAR_LOG_ERR);
         }
     }
     // Merge the arrays and return
     $aResult = array_merge($aAdvertiserAccountIds, $aWebsiteAccountIds);
     return $aResult;
 }
Пример #21
0
 /**
  * A method to return an array of account IDs of the account(s) that
  * should "own" any audit trail entries for this entity type; these
  * are NOT related to the account ID of the currently active account
  * (which is performing some kind of action on the entity), but is
  * instead related to the type of entity, and where in the account
  * heirrachy the entity is located.
  *
  * @return array An array containing up to three indexes:
  *                  - "OA_ACCOUNT_ADMIN" or "OA_ACCOUNT_MANAGER":
  *                      Contains the account ID of the manager account
  *                      that needs to be able to see the audit trail
  *                      entry, or, the admin account, if the entity
  *                      is a special case where only the admin account
  *                      should see the entry.
  *                  - "OA_ACCOUNT_ADVERTISER":
  *                      Contains the account ID of the advertiser account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  *                  - "OA_ACCOUNT_TRAFFICKER":
  *                      Contains the account ID of the trafficker account
  *                      that needs to be able to see the audit trail
  *                      entry, if such an account exists.
  */
 function getOwningAccountIds()
 {
     // Extra "affiliate" info doesn't have an account_id, get it
     // from the parent advertiser account (stored in the "affiliates"
     // table) using the "affiliateid" key
     return parent::getOwningAccountIds('affiliates', 'affiliateid');
 }