# seljeDrive Document Library for Google Drive

A WordPress plugin that displays a Google Drive folder in the frontend as an explorer-style document library via shortcode.

Donate link: https://buy.stripe.com/28EbJ1aRyfwp3tncUWbQY0h

## Plugin info

- Contributors: selje
- Tags: google drive, documents, file browser, shortcode, library
- Requires at least: 6.0
- Tested up to: 6.9
- Requires PHP: 7.4
- Stable tag: 1.2.1
- License: GPLv2 or later
- License URI: https://www.gnu.org/licenses/gpl-2.0.html

## Description

seljeDrive Document Library for Google Drive lets you publish a Google Drive folder on your WordPress site as a simple file explorer.

Google Drive is a trademark of Google LLC. This plugin is not affiliated with or endorsed by Google.

WordPress is a trademark of the WordPress Foundation. This plugin is not affiliated with or sponsored by,  the WordPress Foundation.

Key features:

- Browse a Google Drive folder (via a shared folder link)
- Search inside the library
- Open files in a new tab or download files
- Create multiple libraries and embed each with a shortcode
- Control access per library:
  - Public
  - Logged-in users
  - Specific roles

## Requirements

- WordPress: 6.0+
- PHP: 7.4+

## Installation

### Free version (WordPress.org)

1. In WordPress admin, go to `Plugins -> Add New`.
2. Search for `seljeDrive Document Library for Google Drive`.
3. Click `Install Now` and then `Activate`.

### Install from a ZIP

1. In WordPress admin, go to `Plugins -> Add New`.
2. Click `Upload Plugin`.
3. Choose the plugin ZIP file and click `Install Now`.
4. Click `Activate`.

After activating, go to `Settings -> seljeDrive Document Library for Google Drive` to configure Google OAuth and libraries.

## Configuration

### Google OAuth

1. In Google Cloud Console:
   - Enable **Google Drive API**
   - Create an **OAuth 2.0 Client ID** (type: Web application)
2. In WordPress admin:
   - Go to `Settings -> seljeDrive Document Library for Google Drive`
   - Add your **Client ID** and **Client Secret**
   - Copy the **Redirect URI** shown on the plugin admin page
3. Back in Google Cloud Console:
   - Add the Redirect URI as an authorized redirect URI
4. Back in WordPress:
   - Click **Connect Google**

### Create a library

1. Go to `Settings -> seljeDrive Document Library for Google Drive`
2. Under **Libraries**, add a library:
   - Name
   - Public Folder Share URL
   - Access mode
3. Save.

## Usage

Embed the library using the shortcode shown in the Libraries list, for example:

```text
[sg_doc_library id="YOUR_LIBRARY_ID"]
```

## Privacy

This plugin relies on third party services to function.

## Third Party Services

### Google (Google OAuth + Google Drive API)

What it is used for:

- Connecting your WordPress site to Google (OAuth)
- Listing/searching files and folders from Google Drive
- Opening/downloading files via Google-hosted URLs

When data is sent:

- When an administrator clicks **Connect Google** and completes authorization
- When anyone views a page that contains the `[sg_doc_library]` shortcode (your WordPress site fetches file/folder metadata from Google to render the library)
- When a visitor uses Search / Open / Download inside the library
- When the plugin refreshes an expired access token (if you have connected with offline access)

What data is sent:

- During OAuth authorization (admin action): client ID, redirect URI, state, requested scope, and an authorization code
- During API calls to Google Drive: an OAuth access token (in an Authorization header), Google Drive file/folder IDs, and search terms entered by the user (if search is used)
- During Open/Download (visitor action): your WordPress site returns a redirect URL and the visitor's browser is sent to a Google-hosted URL containing the file ID (for example `docs.google.com` export links or `drive.google.com` download links)

Data flow / conditions:

- Google Drive API requests are made server-to-server (from your WordPress site to Google) using the OAuth token stored in your WordPress database.
- The visitor's browser is only sent directly to Google when the visitor clicks **Open** or **Download**.

Endpoints contacted:

- https://accounts.google.com/o/oauth2/v2/auth
- https://oauth2.googleapis.com/token
- https://www.googleapis.com/drive/v3

Visitor browser destinations (when using Open/Download):

- https://docs.google.com/
- https://drive.google.com/

OAuth scope:

- https://www.googleapis.com/auth/drive.readonly

Google Privacy Policy:

- https://policies.google.com/privacy

Google Terms of Service:

- https://policies.google.com/terms

Google APIs Terms of Service:

- https://developers.google.com/terms

### Stripe (Donate link)

What it is used for:

- Optional donations via a Stripe-hosted checkout page

When data is sent:

- Only when an administrator clicks the **Donate** button in the plugin admin page

What data is sent:

- The plugin itself does not send payment details. Clicking **Donate** opens a Stripe-hosted page in your browser. Stripe then receives the data needed to load and process the checkout (such as your IP address, browser/user agent, and any information you enter on the checkout page).

Stripe Privacy Policy:

https://stripe.com/privacy

Stripe Terms / Legal:

- https://stripe.com/legal

## Frequently Asked Questions

### How do I embed a library on a page?

Use the shortcode shown in the Libraries list, for example:

`[sg_doc_library id="YOUR_LIBRARY_ID"]`

### What PHP version is required?

Minimum required PHP is **7.4**.

### Does it support Norwegian language?

Yes. The plugin is translation-ready and includes a Norwegian Bokmål (`nb_NO`) translation source file.

WordPress typically uses compiled `.mo` files at runtime.

## Screenshots

1. Frontend file explorer.
2. Plugin admin page.

## Changelog

### 1.2.1

- Fixed missing template file and admin CSS that caused a broken admin page after the 1.2.0 update

### 1.2.0

- Moved settings page from Tools to Settings menu
- Admin notices now display feedback after save, connect, disconnect, and delete actions
- Client Secret is now encrypted at rest (AES-256-CBC)
- Folder listings now paginate beyond 200 files (up to 2 000)
- Added rate limiting on REST endpoints (60 requests/minute per IP)
- Stale folder cache cleared automatically when a library is deleted
- Admin page HTML extracted to a separate template file for maintainability
- Added placeholder text to the Allowed file extensions field

### 1.1.0

- Added per-library option to choose frontend language (installed WordPress languages)

### 1.0.3

- Added option to show Google Drive file preview thumbnails as icons
- Improved copied confirmation when clicking the shortcode

### 1.0.2

- Added option to remove header from frontend
- Added option to customize the root folder label

### 1.0.1

- Renamed main plugin file
- Version bump

### 0.70

- Backend moved to Tools menu
- Added hover tooltips in the backend
- Improved translation loading (incl. locale switch support)
- Updated donate button styling

### 0.64

- Removed Freemius dependency
- All features available in the single WordPress.org version (multi-library, access control, full-text search)
- Updated external service disclosures (Google APIs, Stripe)

### 0.63

- WordPress.org compliance fixes (text domain alignment, translation loading, security/escaping)

### 0.62

- Minor language update

### 0.61

- Added a non-intrusive Donate button in the plugin admin page

### 0.60

- Fixed Google Drive search error for full-text queries
- Security hardening for REST references

### 0.5

- Multi-library support (multiple shortcodes on one page)
- Added icons in the file list

### 0.1.2

- Added translations support (including Norwegian Bokmål source translation)
- Improved admin UI translations

## Upgrade Notice

### 1.2.1

Fixes a broken admin page introduced in 1.2.0. Please update immediately.

### 1.2.0

Settings page moved to the Settings menu. Client Secret is now encrypted at rest — re-save your OAuth credentials after upgrading to encrypt the stored value.

### 1.1.0

- New frontend language customization option.

### 1.0.3

- New customization option.

### 1.0.2

- New customization options.

### 1.0.1

- Version bump.

### 0.70

- UI tweaks and translation improvements.

### 0.64

- Removed Freemius dependency and enabled all features in the single version.

### 0.63

- WordPress.org compliance fixes.

### 0.62

- Minor language update.

### 0.61

- Added a donate button.

### 0.60

- Search fix release.

### 0.5

- Multi-library support and icons.

### 0.1.2

- New translation support.

## License

GPLv2 or later. See `LICENSE.txt`.
