get_config(); $userModel = new UserModel(); $user = $userModel->get($_SESSION['user']); $oauth = new \Lib\Google\GoogleOAuth2( $config['google_client_id'], $config['google_client_secret'], $config['google_redirect_uri'] ); $oauth->setRefreshToken($user->drive_refresh_token); $oauth->refreshAccessToken(); $drive = new \Lib\Google\GoogleDrive($oauth); // Download and parse the file $content = $drive->downloadFile($campaign->file_id, 'text/csv'); $data = $this->csvToObject($content); // Apply filters $validRows = range(0, count($data['date']) - 1); if ($filters['campaign_name']) { $validRows = array_filter($validRows, function($i) use ($data, $filters) { return $data['campaign_name'][$i] === $filters['campaign_name']; }); } if ($filters['ad_set_name']) { $validRows = array_filter($validRows, function($i) use ($data, $filters) { return $data['ad_set_name'][$i] === $filters['ad_set_name']; }); } if ($filters['ad_name']) { $validRows = array_filter($validRows, function($i) use ($data, $filters) { return $data['ad_name'][$i] === $filters['ad_name']; }); } // Filter the data $filteredData = []; foreach ($data as $column => $values) { $filteredData[$column] = array_intersect_key($values, array_flip($validRows)); } return $filteredData; } }