canaltp/media-manager

媒体管理组件

此包的官方仓库似乎已消失,因此该包已被冻结。

0.0.8 2015-02-12 14:51 UTC

This package is not auto-updated.

Last update: 2023-05-13 11:44:12 UTC


README

什么是 MediaManager ?

MediaManager 是一个用于管理项目中所有媒体资源的 PHP 组件。(例如:MediaManagerBundle

要求

安装

您需要 composer 来安装 MediaManager。

  1. 打开项目中的 composer.json 文件

  2. 添加 require "canaltp/media-manager": "dev-master"

  3. 添加仓库的 URL,'http://packagist.canaltp.fr'

  4. 请务必在您的 php.ini 中设置 "post_max_size"、"upload_max_filesize" 和 "max_file_uploads" 选项

    // composer.json { ... "require": { ... "canaltp/media-manager": "dev-master" }, "repositories": [ { "type": "composer", "url": "http://packagist.canaltp.fr" }, ... ], ... }

如何使用 MediaManager ?

MediaManager 需要有一个带有 "策略" 的 "公司"。策略用于定义您想要对媒体进行的所有操作的信息。

例如,如果您想使用本地存储来放置媒体,您需要提供以下信息。

// Strategy
$params = array(
    'company' => array(
    'storage' => array(
        'type' => 'filesystem',
        'path' => '/tmp/my_storage/',
    ),
    'strategy' => 'default'
    )
);

运行示例

您可以在示例文件夹(example/simple_upload.php)中使用 simple_upload.php,然后运行 simple_listing.php(example/simple_listing.php)来列出所有媒体。

上传示例

$> cd example
$> ./simple_upload.php
// example/simple_upload.php
use CanalTP\MediaManager\Company\Company;
use CanalTP\MediaManager\Company\Configuration\Builder\ConfigurationBuilder;
use CanalTP\MediaManager\Media\Builder\MediaBuilder;
use CanalTP\MediaManager\Category\CategoryType;
use CanalTP\MediaManager\Category\Factory\CategoryFactory;

$params = array(
    'name' => 'my_company',
    'storage' => array(
        'type' => 'filesystem',
        'path' => '/tmp/MediaManager/',
    ),
    'strategy' => 'default'
);
$company = new Company();
$configurationBuilder = new ConfigurationBuilder();
$mediaBuilder = new MediaBuilder();
$categoryFactory = new CategoryFactory();

$company->setConfiguration($configurationBuilder->buildConfiguration($params));
$company->setName($params['name']);

$category = $categoryFactory->create(CategoryType::LINE);
$category->setName('My_LineCategory');

$media = $mediaBuilder->buildMedia(
    '../tests/data/CanalTP/sound/jingle_SNCF.mp3',
    $company,
    $category
);

$company->addMedia($media);

echo "\n######### " . $media->getFileName() . " ############\n\n";
echo "Path: " . $media->getPath() . "\n";
echo "BaseName: " . $media->getBaseName() . "\n";
echo "FileName: " . $media->getFileName() . "\n";
echo "Size: " . $media->getSize() . "\n";
echo "Type: " . $media->getType() . "\n";
echo "Extension: " . $media->getExtension() . "\n";
echo "MediaType: " . $media->getMediaType() . "\n";
echo "Company: " . $media->getCompany()->getName() . "\n";
echo "Category: " . $media->getCategory()->getName() . "\n";
echo "\n############################################\n\n";

exit (0);

列出示例

$> cd example
$> ./simple_listing.php
// example/simple_listing.php
use CanalTP\MediaManager\Company\Company;
use CanalTP\MediaManager\Company\Configuration\Builder\ConfigurationBuilder;
use CanalTP\MediaManager\Category\CategoryType;
use CanalTP\MediaManager\Category\CategoryInterface;
use CanalTP\MediaManager\Category\Factory\CategoryFactory;
$path = '/tmp/MediaManager/my_company/My_LineCategory/jingle_SNCF.mp3';

if (!file_exists($path)) {
    echo "Please run \"./simple_upload.php\" before.\n";
    exit (0);
}

$params = array(
    'name' => 'my_company',
    'storage' => array(
        'type' => 'filesystem',
        'path' => '/tmp/MediaManager/',
    ),
    'strategy' => 'default'
);
$company = new Company();
$configurationBuilder = new ConfigurationBuilder();
$categoryFactory = new CategoryFactory();

$company->setConfiguration($configurationBuilder->buildConfiguration($params));
$company->setName($params['name']);

$category = $categoryFactory->create(CategoryType::LINE);
$category->setName('My_LineCategory');

$medias = $company->getMediasByCategory($category);

foreach ($medias as $media) {
    echo "\n######### " . $media->getFileName() . " ############\n\n";
    echo "Path: " . $media->getPath() . "\n";
    echo "BaseName: " . $media->getBaseName() . "\n";
    echo "FileName: " . $media->getFileName() . "\n";
    echo "Size: " . $media->getSize() . "\n";
    echo "Type: " . $media->getType() . "\n";
    echo "Extension: " . $media->getExtension() . "\n";
    echo "MediaType: " . $media->getMediaType() . "\n";
    echo "Company: " . $media->getCompany()->getName() . "\n";
    echo "Category: " . $media->getCategory()->getName() . "\n";
    echo "\n############################################\n\n";
}

exit (0);

运行 MediaManager 测试

要运行测试,您需要安装 phpunit。

$> phpunit

贡献

  1. Rémy Abi-Khalil - remy.abikhalil@canaltp.fr