Skip to content

meemalabs/laravel-meema

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Meema for Laravel

The most simple way to integrate Meema and your Laravel project

Scrutinizer Total Downloads Latest Version License

Documentation β€’ PHP Client β€’ Report a bug β€’ FAQ β€’ Discord

πŸ™ Features

  • Most simple way to implement a fully-functional media management system & more
  • Thin, minimal & fast package to interact with Meema's API
  • Supports PHP ^7.*

πŸ’‘ Usage

First, install Meema Laravel Client via the composer package manager:

composer require meema/laravel-meema

Next, you may want to publish the config file with:

php artisan vendor:publish --provider="Meema\LaravelMeema\Providers\MeemaServiceProvider" --tag="config"

Now, you can easily interact with your "media items" using the Media facade:

use Meema\LaravelMeema\Facades\Media;

Media::create('New media name');
Media::get();

// specific uuids
Media::get('11a283ed-a64e-424a-aefc-6aa98971d529', '1556fcb8-693e-4431-8b16-3b2b7bb8fcc7');
Media::search('media-name');

// this will return a Response instance
$media = Media::find('11a283ed-a64e-424a-aefc-6aa98971d529');

// you may chain other methods that require an id
$media->update('updated-media-name')
$media->delete();
$media->archive();
$media->unarchive();
$media->makePrivate();
$media->makePublic();
$media->duplicate();

// Relationships with other models.
// Continuing with the chaining methods we used earlier.
$media->folders()->get();
$media->folders()->create('New folder name');
$media->folders()->delete('11a283ed-a64e-424a-aefc-6aa98971d529');
$media->tags()->get();
$media->tags()->associate(['name' => 'Tag Name']);
$media->tags()->disassociate(['name' => 'Tag Name']);

Using the Folder facade:

use Meema\LaravelMeema\Facades\Folder;

Folder::create('New folder name');
Folder::get();

// specific uuids
Folder::get('11a283ed-a64e-424a-aefc-6aa98971d529', '1556fcb8-693e-4431-8b16-3b2b7bb8fcc7');
Folder::search('folder-name');

// this will return a Response instance
$folder = Folder::find('11a283ed-a64e-424a-aefc-6aa98971d529');

// you may chain other methods that require an id
$folder->update('updated-folder-name')
$folder->delete();
$folder->archive();
$folder->unarchive();
$folder->duplicate();

// Relationships with other models.
// Continuing with the chaining methods we used earlier.
$folder->media()->get();
$folder->tags()->get();
$folder->tags()->associate(['tag_id' => 7]);
$folder->tags()->disassociate(['tag_id' => 7]);

Using the Tag facade:

Tag::get();

// specific uuids
Tag::get(1, 2, 3);

// this will return a Response instance
$tag = Tag::find(1);

// you may chain other methods that require an id
$tag->update('red-500'); // You will have to use tailwind CSS color palettes.
$tag->delete();
$tag->media()->get();

Using the Favorite facade:

Favorite::create(['name' => 'New Favorite Name', 'icon' => 'favorite-icon']);
Favorite::get();

// specific uuids
Favorite::get('11a283ed-a64e-424a-aefc-6aa98971d529', '1556fcb8-693e-4431-8b16-3b2b7bb8fcc7');

// this will return a Response instance
$favorite = $client->favorites()->find(1);

// you may chain other methods that require an id
$favorite->update(['name' => 'Updated Favorite Name', 'icon' => 'updated-favorite-icon']);
$favorite->delete();

πŸ§ͺ Testing

./vendor/bin/pest

πŸ“ˆ Changelog

Please see our releases page for more information on what has changed recently.

πŸ’ͺ🏼 Contributing

Please see CONTRIBUTING for details.

🏝 Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Laravel Meema on GitHub

For casual chit-chat with others using this package:

Join the Meema Discord Server

🚨 Security

Please review our security policy on how to report security vulnerabilities.

πŸ™πŸΌ Credits

πŸ“„ License

The MIT License (MIT). Please see LICENSE for more information.