Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.96 KB | None | 0 0
  1. function _getUserCampaigns($user, $search = []) {
  2.     $db = DatabasePDO::inst();
  3.  
  4.     $bindSearchVars = function ($db) use ($user, $search) {
  5.         if (in_array($user->type, [User::Affiliate, User::Normal, User::SubnetworkManager])) {
  6.             $db->bind(":whitelabelID", $user->whitelabelID);
  7.         } elseif (!empty($search['whitelabelID'])) {
  8.             $db->bind(":whitelabelID", $search['whitelabelID']);
  9.         }
  10.         if (!in_array($user->type, [User::Admin])) {
  11.             $db->bind(":projectActive", Project::Active);
  12.             $db->bind(":projectPending", Project::Pending);
  13.         }
  14.     };
  15.  
  16.     $searchWhere = NULL;
  17.     $innerQueryJoins = "";
  18.     $searchWhereItems = [];
  19.     $searchWhereItems[] = "((wpg.inverseProjectPermissions=0 AND ppwg.value IS NULL) OR ppwg.value = 1 OR ppu.value=1)";
  20.     if (in_array($user->type, [User::Affiliate, User::Normal, User::SubnetworkManager]) || !empty($search['whitelabelID'])) {
  21.         $searchWhereItems[] = "p.whitelabelID = :whitelabelID";
  22.     }
  23.     if (!in_array($user->type, [User::Admin])) {
  24.         $searchWhereItems[] = "p.is_dev = 0";
  25.         $searchWhereItems[] = "p.status IN (:projectActive, :projectPending)";
  26.     }
  27.  
  28.     if (in_array($user->type, [User::Normal, User::SubnetworkManager])) {
  29.         $searchWhereItems[] = "((u.inverseProjectPermissions=0 AND p.affiliate_catalog_visibility=1 AND ppu.value IS NULL) OR ppu.value=1 OR ppwg.value = 1)";
  30.     } else {
  31.         $searchWhereItems[] = "((u.inverseProjectPermissions=0 AND ppu.value IS NULL) OR ppu.value=1)";
  32.     }
  33.     if (in_array($user->type, [User::WhitelabelManager])) {
  34.         $innerQueryJoins .= "LEFT JOIN " . DB_TABLE_USER_WHITELABELS . " AS uw ON uw.userId=u.ID AND uw.whitelabelId=p.whitelabelID ";
  35.         $searchWhereItems[] = "(uw.id IS NOT NULL)";
  36.     }
  37.     if (!empty($searchWhereItems)) {
  38.         $searchWhere = "WHERE " . implode(" AND ", $searchWhereItems);
  39.     }
  40.  
  41.     $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, "
  42.         . "p.whitelabelID, p.status, w.name AS whitelabelName , psr.value AS projectSmartlinkRestrictionValue "
  43.         . "FROM " . DB_TABLE_PROJECTS . " AS p "
  44.         . "INNER JOIN " . DB_TABLE_USERS . " AS u ON u.ID=:userId "
  45.         . "INNER JOIN " . DB_TABLE_WHITELABELS . " AS w ON w.id=p.whitelabelID "
  46.         . "LEFT JOIN " . DB_TABLE_WHITELABELS_PERMISSIONS_GROUPS_USERS . " AS wpgu ON wpgu.userId=u.ID "
  47.         . "LEFT JOIN " . DB_TABLE_WHITELABELS_PERMISSIONS_GROUPS . " AS wpg ON wpg.id=wpgu.groupId "
  48.         . "LEFT JOIN " . DB_TABLE_PROJECTS_PERMISSIONS_WHITELABELS_GROUPS . " AS ppwg ON ppwg.projectId=p.ID AND ppwg.groupId=wpg.id "
  49.         . "LEFT JOIN " . DB_TABLE_PROJECTS_PERMISSIONS_USERS . " AS ppu ON ppu.projectId=p.ID AND ppu.userId=u.ID "
  50.         . "LEFT JOIN " . DB_TABLE_PROJECT_SMARTLINK_RESTRICTIONS . " AS psr ON psr.`projectID` = p.`ID` "
  51.         . "$innerQueryJoins "
  52.         . "$searchWhere "
  53.         . "GROUP BY p.ID "
  54.         . "ORDER BY p.title ASC");
  55.     $db->bind(":userId", $user->ID);
  56.     $bindSearchVars($db);
  57.     $rows = $db->resultset();
  58.  
  59.     return $rows;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement