Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function _getUserCampaigns($user, $search = []) {
- $db = DatabasePDO::inst();
- $bindSearchVars = function ($db) use ($user, $search) {
- if (in_array($user->type, [User::Affiliate, User::Normal, User::SubnetworkManager])) {
- $db->bind(":whitelabelID", $user->whitelabelID);
- } elseif (!empty($search['whitelabelID'])) {
- $db->bind(":whitelabelID", $search['whitelabelID']);
- }
- if (!in_array($user->type, [User::Admin])) {
- $db->bind(":projectActive", Project::Active);
- $db->bind(":projectPending", Project::Pending);
- }
- };
- $searchWhere = NULL;
- $innerQueryJoins = "";
- $searchWhereItems = [];
- $searchWhereItems[] = "((wpg.inverseProjectPermissions=0 AND ppwg.value IS NULL) OR ppwg.value = 1 OR ppu.value=1)";
- if (in_array($user->type, [User::Affiliate, User::Normal, User::SubnetworkManager]) || !empty($search['whitelabelID'])) {
- $searchWhereItems[] = "p.whitelabelID = :whitelabelID";
- }
- if (!in_array($user->type, [User::Admin])) {
- $searchWhereItems[] = "p.is_dev = 0";
- $searchWhereItems[] = "p.status IN (:projectActive, :projectPending)";
- }
- if (in_array($user->type, [User::Normal, User::SubnetworkManager])) {
- $searchWhereItems[] = "((u.inverseProjectPermissions=0 AND p.affiliate_catalog_visibility=1 AND ppu.value IS NULL) OR ppu.value=1 OR ppwg.value = 1)";
- } else {
- $searchWhereItems[] = "((u.inverseProjectPermissions=0 AND ppu.value IS NULL) OR ppu.value=1)";
- }
- if (in_array($user->type, [User::WhitelabelManager])) {
- $innerQueryJoins .= "LEFT JOIN " . DB_TABLE_USER_WHITELABELS . " AS uw ON uw.userId=u.ID AND uw.whitelabelId=p.whitelabelID ";
- $searchWhereItems[] = "(uw.id IS NOT NULL)";
- }
- if (!empty($searchWhereItems)) {
- $searchWhere = "WHERE " . implode(" AND ", $searchWhereItems);
- }
- $db->query("SELECT p.ID AS id, p.title AS name, p.exclude_from_smartlink as excludeFromSmartlink, p.hash, p.banner, p.website, p.is_dev AS isDev, p.affiliate_catalog_visibility AS affiliateCatalogVisibility, "
- . "p.whitelabelID, p.status, w.name AS whitelabelName , psr.value AS projectSmartlinkRestrictionValue "
- . "FROM " . DB_TABLE_PROJECTS . " AS p "
- . "INNER JOIN " . DB_TABLE_USERS . " AS u ON u.ID=:userId "
- . "INNER JOIN " . DB_TABLE_WHITELABELS . " AS w ON w.id=p.whitelabelID "
- . "LEFT JOIN " . DB_TABLE_WHITELABELS_PERMISSIONS_GROUPS_USERS . " AS wpgu ON wpgu.userId=u.ID "
- . "LEFT JOIN " . DB_TABLE_WHITELABELS_PERMISSIONS_GROUPS . " AS wpg ON wpg.id=wpgu.groupId "
- . "LEFT JOIN " . DB_TABLE_PROJECTS_PERMISSIONS_WHITELABELS_GROUPS . " AS ppwg ON ppwg.projectId=p.ID AND ppwg.groupId=wpg.id "
- . "LEFT JOIN " . DB_TABLE_PROJECTS_PERMISSIONS_USERS . " AS ppu ON ppu.projectId=p.ID AND ppu.userId=u.ID "
- . "LEFT JOIN " . DB_TABLE_PROJECT_SMARTLINK_RESTRICTIONS . " AS psr ON psr.`projectID` = p.`ID` "
- . "$innerQueryJoins "
- . "$searchWhere "
- . "GROUP BY p.ID "
- . "ORDER BY p.title ASC");
- $db->bind(":userId", $user->ID);
- $bindSearchVars($db);
- $rows = $db->resultset();
- return $rows;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement