Open Player

Open Player это аудиоплеер с открытым исходным кодом, который каждый может установить на свой хостинг. Создавался как альтернатива ныне платному простоплееру.

Полный скрин

Рабочая версия: http://music.bonart.org.ua

GitHub проекта: https://github.com/uavn/openplayer, самая свежая версия всегда там.

Новости и обновления в твиттере http://twitter.com/openwebplayer

Фичреквесты, баги, предложения и пожелания принимаются в комментариях к анонсу на хабре, в группе проекта на гугл+, на github в разделе issues, по имейлу, вконтактике и фейсбуке.

Инструкция по установке находится в REEDME файле проекта, который можно увидеть на github.

Если вы хотите помочь проекту:

  • Присоединяйтесь к нам на github, вносите изменения, fork-айте, присылайте pull request-ы.
  • Финансово:
    WebMoney:
    WMZ:Z197445365429
    WMR:R789858449478
    WMU:U363359317719

    Яндекс деньги:
    41001985742406

Доступные публичные зеркала

http://music.bonart.org.ua, http://f2dclub.ru/music/, http://paused.me, http://yomus.org.ua, http://neprostopleer.com, http://myzz.kz, http://ipleer.kz, http://club-music.kz, http://musiclover.com.ua, http://music.dmin.msk.ru, http://abunai.ru, http://search.nomber1.com, http://music.vsadmin.ru, http://music.for-us.nl, http://music.studiaom.ru, http://187guild.net/music/, http://102media.ru, http://music.nvkznet.ru, http://freak.od.ua/music, http://hardbeats.me/jukebox, http://music.be5.ru, http://music.rinaldus.ru, http://musik.kz, http://openplayer.club-music.kz, http://music.mir05.ru, http://music.mizhgan.ru, http://music.promail.kz, http://player.bestsoundbox.ru, http://mp3ll.net, http://radio.tsigan.org.ua.

Архитектура приложения:

Приложение состоит из фалов:

app/ - Папка с аппликейшинами
  AppName.php - Один из аппликейшинов
  ...
assets/ - Временно не исопльзуется, папка для временных файлов
configs/ - Конфиг. В репозитории хранится только app.ini.sample, который нужно скопировать в app.ini и настроить под себя
  app.ini.sample
  app.ini
i18n/ - Папка для переводов
  ua.php
  ru.php
  ...
lib/ - Папка для скриптов общего назначения (парсеры, базовые классы, etc)
  Base/
    App.php - Базовый аппликейшн, от которого наследуются аппликейшены
    DB.php - Базовый класс для работы с базой
    Manager.php - Базовый менеджер
  Lib.php
  ...
managers/ - Менеджеры
  ManagerName.php
  ...
views/ - Вьюшки
  layouts/ - лэйауты
    default.phtml
  partials/ - Общие частицы страниц
    partialname.phtml
  templates/ - вьюшки
    appname.php
web/ - Доступная клиенту директория
  assets/ - Папка временных файлов, доступных клиенту (музыка)
  css/ - Стили
    style.css
  img/ - Картинки
    img.jpg
  js/ - JavaScript-ы
    js.js
  lib/ - Доступные клиенту скрипты общего назначния
    lib.js
.htaccess - Апачевый htaccess (ограничение доступа, реврайты)
README
dump.sql - дамп базы данных
index.php - входящий скрипт

аппликейшн:
Класс приложение (плейлист, поиск, пользователь). Каждый аппликейшн состоит из php класса (apps/AppName.php), вида:

namespace App;

class AppName extends \Lib\Base\App {  
    public function init() {  
        $manager = new \Manager\SomeManager;  
        $this->someText = $manager->getSomeData();  
    }  
}

и вьюшки (views/templates/appname.phml) вида:

 echo $this->someText 

Так же аппликейшн использует менеджер.
Менеджер:
Класс для работы с базой данных, вида (managers/SomeManager.php):

namespace Manager;  

class SomeManager extends \Lib\Base\Manager {  
  public function getSomeData() {  
    $q = "SELECT NOW()";  
    $res = $this->pdo->query( $q );  
  
    return $res->fetchAll( \PDO::FETCH_OBJ );  
  }  
}

Специальный менеджер Manager\User для управления пользователем, напр. получить текущего пользователя

$user = \Manager\User::getUser();

Для отображения аппликейшена где-нибудь достаточно вызвать функцию:

echo $this->render('appname')

из любой вьюшки.

Конфиг:
Для получения значения из конфига нужно воспользоваться классом \Lib\Config:

$test = \Lib\Config::getInstance()->getOption('sectionname', 'parametername', 'defaultvalue');

Лэйаут:
Лэйаут это базовая вьюшка, с шапкой сайта, футером, и др. общими частями.

Переводы:
Для перевода фразы есть функция

__('Translate this');

И если такой перевод описан в нужном файле перевода, он будет применен, если нет - останется Translate this

_GET и _POST:
Для получения данных запроса есть специальный класс \Lib\Request:

$test = \Lib\Request::get('param');

Так же есть методы: getGet, getPost, getRequest, isPost, isGet, getAllGet, getAllPost