Skip to content

Comments

feat(search-history): add sharing functionality for saved searches, database schema#208

Open
sreeshanth-soma wants to merge 1 commit intoopenbroadcaster:5.5-developfrom
sreeshanth-soma:search-shared-saved
Open

feat(search-history): add sharing functionality for saved searches, database schema#208
sreeshanth-soma wants to merge 1 commit intoopenbroadcaster:5.5-developfrom
sreeshanth-soma:search-shared-saved

Conversation

@sreeshanth-soma
Copy link
Member

Closes: #103

Summary

Implements Shared Saved Searches so users can share saved advanced searches with specific users or permission groups.

Recipients see shared searches under a new Shared With Me section and can execute them directly from Search History.

Problem

Issue #103 requested a way to share saved searches from the Search History/My Searches UI so other users (or group members) can reuse them.
Previously, searches were private to each user (saved / history) with no sharing mechanism.

Changes

Backend — core/models/media_model.php

Added sharing model support:

  • search_share():
    • Validates ownership + saved type
    • Replaces existing share rows for a search
    • Inserts user/group recipient rows
  • search_unshare()
  • search_get_shared():
    • Returns searches shared with current user directly or via group membership
    • Includes shared_by_name attribution
    • Safely returns [] when no shared rows exist
  • search_get_shared_recipients() helper

Backend — core/controllers/media.php

Added/updated API endpoints:

  • media_my_searches() now returns:
    • saved
    • history
    • shared
  • New media_my_searches_share() endpoint (POST /v2/media/searches/share)
  • New media_my_searches_unshare() endpoint (DELETE /v2/media/searches/share/:id)

Database — core/updates/20260219.php

Added migration to create media_searches_shared table with:

  • search_id
  • shared_by
  • shared_with_user_id
  • shared_with_group_id
  • indexes and cascading foreign keys

Note:

  • shared_with_group_id uses unsigned int to match users_groups.id type.

Frontend — public/html/sidebar/my_searches.html

  • Added new Shared With Me section.
  • Added Share item in saved-search context menu.
  • Added shared-search context menu (Search action).

Frontend — public/html/sidebar/share_search.html

New modal UI:

  • Multi-select users
  • Multi-select groups
  • Share / Cancel actions

Frontend — public/js/sidebar.js

Added/updated sidebar behavior:

  • Render shared searches returned by API
  • Support unique IDs for shared items (avoid collisions with saved IDs)
  • Fix context-menu targeting for shared items
  • Ensure shared item click/search resolves the correct filters
  • Added mySearchesShareWindow() and mySearchesShareSubmit()
  • Added shared attribution display (Shared by: <name>) with improved visual separation

Verification Steps

  • Log in as User A.
  • Create and save an advanced search.
  • Open Search History, right-click saved search, click Share.
image
  • Select User B and/or a group, then submit.
image
  • Log in as User B.
  • Open Search History and verify search appears under Shared With Me.
  • Click shared search and verify correct filters execute.
  • Right-click shared search and run via context menu; verify same result.
image

The Result:

image
  • Verify no API warning/error when there are no shared searches.
  • Verify existing Saved/Search History/default-search flows still work as before.

@sreeshanth-soma sreeshanth-soma changed the title feat: add sharing functionality for saved searches, database schema feat(search-history): add sharing functionality for saved searches, database schema Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant