openactive/dataset-site 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

openactive/dataset-site

Composer 安装命令:

composer create-project openactive/dataset-site

包简介

Library for rendering the OpenActive dataset site

README 文档

README

PHP Classes and resources supporting dataset site creation, to create something like this example (or any of the other examples listed here).

This package intends to simplify creation of OpenActive Dataset Sites using templates.

For comparison, see the .NET and Ruby implementations.

Please find full documentation that covers creation of the accompanying GitHub issues board at https://developer.openactive.io/publishing-data/dataset-sites.

Table Of Contents

Requirements

This project requires PHP >=5.6. While most of the functionality should work down to PHP 5.4, some functionality (especially around parsing of offset for DateTimeZone) will not work with that version of PHP (see the DateTimeZone PHP docs for more info).

Composer is also required for dependency management.

This project also makes use of Mustache for rendering the template (installed via Composer).

Usage

Please Note: This instruction are temporary and based on the current development status.

If you are developing this package, go to the Contribution section.

To install from terminal, run:

composer require openactive/dataset-site

Wherever you want to render your Dataset page, include the following instructions:

use OpenActive\DatasetSiteTemplate\TemplateRenderer;

// Render compiled template with data
echo (new TemplateRenderer())->renderSimpleDatasetSite($settings, $supportedFeedTypes);

Or to render a CSP-compatible template, first ensure that you are serving the CSP compatible static assets from this version of the PHP package at a URL, and then include the following:

use OpenActive\DatasetSiteTemplate\TemplateRenderer;

// Render compiled template with data
echo (new TemplateRenderer())->renderSimpleDatasetSite($settings, $supportedFeedTypes, $staticAssetsPathUrl);

Where $settings could be defined like the following (as an example):

$settings = array(
    "openDataFeedBaseUrl" => "https://customer.example.com/feed/",
    "datasetSiteUrl" => "https://halo-odi.legendonlineservices.co.uk/openactive/",
    "datasetDiscussionUrl" => "https://github.com/gll-better/opendata",
    "datasetDocumentationUrl" => "https://docs.acmebooker.example.com/",
    "datasetLanguages" => array("en-GB"),
    "organisationName" => "Better",
    "organisationUrl" => "https://www.better.org.uk/",
    "organisationLegalEntity" => "GLL",
    "organisationPlainTextDescription" => "Established in 1993, GLL is the largest UK-based charitable social enterprise delivering leisure, health and community services. Under the consumer facing brand Better, we operate 258 public Sports and Leisure facilities, 88 libraries, 10 children’s centres and 5 adventure playgrounds in partnership with 50 local councils, public agencies and sporting organisations. Better leisure facilities enjoy 46 million visitors a year and have more than 650,000 members.",
    "organisationLogoUrl" => "http://data.better.org.uk/images/logo.png",
    "organisationEmail" => "info@better.org.uk",
    "platformName" => "AcmeBooker",
    "platformUrl" => "https://acmebooker.example.com/",
    "platformSoftwareVersion" => "2.0",
    "backgroundImageUrl" => "https://data.better.org.uk/images/bg.jpg",
    "dateFirstPublished" => "2019-10-28",
    "openBookingAPIBaseUrl" => "https://reference-implementation.openactive.io/api/openbooking",
    "openBookingAPIAuthenticationAuthorityUrl" => "https://auth.reference-implementation.openactive.io",
    "openBookingAPIDocumentationUrl" => "https://permalink.openactive.io/dataset-site/open-booking-api-documentation",
    "openBookingAPITermsOfServiceUrl" => "https://example.com/api-terms-page",
    "openBookingAPIRegistrationUrl" => "https://example.com/api-landing-page",
    "testSuiteCertificateUrl" => "https://certificates.reference-implementation.openactive.io/examples/all-features/controlled/",
);

And $supportedFeedTypes could be defined as:

use OpenActive\DatasetSiteTemplate\FeedType;

$supportedFeedTypes = array(
    FeedType::FACILITY_USE,
    FeedType::SCHEDULED_SESSION,
    FeedType::SESSION_SERIES,
    FeedType::SLOT,
);

And $staticAssetsPathUrl (if required) should be set to the URL path of the directory containing the CSP static asset files (contents of the CSP compatible static assets archive, using the assets archive in this version of the PHP package).

API

renderSimpleDatasetSite($settings, $supportedFeedTypes, $staticAssetsPathUrl = null)

Returns a string corresponding to the compiled HTML, based on the datasetsite.mustache, the provided $settings, and $supportedFeedTypes.

If $staticAssetsPathUrl is provided, the CSP-compatible template is rendered. In this case you must ensure that you are serving the contents of the CSP compatible static assets archive at this location, using the assets archive in this version of the PHP package.

$settings must contain the following keys:

Settings
Key Type Description
openDataFeedBaseUrl string The the base URL for the open data feeds
datasetSiteUrl string The URL where this dataset site is displayed (the page's own URL)
datasetDiscussionUrl string The GitHub issues page for the dataset
datasetDocumentationUrl string Any documentation specific to the dataset. Defaults to https://permalink.openactive.io/dataset-site/open-data-documentation if not provided, which should be used if no system-specific documentation is available.
datasetLanguages string[] The languages available in the dataset, following the IETF BCP 47 standard. Defaults to array("en-GB").
organisationName string The publishing organisation's name
organisationUrl string The publishing organisation's URL
organisationLegalEntity string The legal name of the publishing organisation of this dataset
organisationPlainTextDescription string A plain text description of this organisation
organisationLogoUrl string An image URL of the publishing organisation's logo, ideally in PNG format
organisationEmail string The contact email of the publishing organisation of this dataset
platformName string The software platform's name. Only set this if different from the publishing organisation, otherwise leave as null to exclude platform metadata.
platformUrl string The software platform's website
platformSoftwareVersion string The software platform's software version
backgroundImageUrl string The background image to show on the Dataset Site page
dateFirstPublished string The date the dataset was first published
openBookingAPIBaseUrl string The Base URI of this implementation of the Open Booking API
openBookingAPIAuthenticationAuthorityUrl string The location of the OpenID Provider that must be used to access the API
openBookingAPIDocumentationUrl string The URL of documentation related to how to use the Open Booking API. Defaults to https://permalink.openactive.io/dataset-site/open-booking-api-documentation if not provided, which should be used if no system-specific documentation is available.
openBookingAPITermsOfServiceUrl string The URL of terms of service related to the use of this API
openBookingAPIRegistrationUrl string The URL of a web page that the Broker may use to obtain access to the API, e.g. via a web form
testSuiteCertificateUrl string The URL of the OpenActive Test Suite certificate for this booking system

And $supportedFeedTypes must be an array of FeedType constants, which auto-generates the metadata associated which each feed using best-practice values. See available types

renderSimpleDatasetSiteFromDataDownloads($settings, $dataDownloads, $dataFeedDescriptions, $staticAssetsPathUrl = null)

Returns a string corresponding to the compiled HTML, based on the datasetsite.mustache, the provided $settings, $dataDownloads and $dataFeedDescriptions.

If $staticAssetsPathUrl is provided, the CSP-compatible template is rendered. In this case you must ensure that you are serving the contents of the CSP compatible static assets archive at this location, using the assets archive in this version of the PHP package.

The $dataDownloads argument must be an array of \OpenActive\Models\OA\DataDownload objects, which each describe an available open data feed.

The $dataFeedDescriptions must be an array of strings that describe the dataset, e.g:

$dataFeedDescriptions = array(
    "Sessions",
    "Facilities"
);

renderDatasetSite($dataset, $staticAssetsPathUrl = null)

Returns a string corresponding to the compiled HTML, based on the datasetsite.mustache, and the provided $dataset.

If $staticAssetsPathUrl is provided, the CSP-compatible template is rendered. In this case you must ensure that you are serving the contents of the CSP compatible static assets archive at this location, using the assets archive in this version of the PHP package.

The $dataset argument must be an object of type \OpenActive\Models\OA\Dataset, and must contain the properties required to render the dataset site.

FeedType

A class containing the supported distribution types:

Constant Value
COURSE Course
COURSE_INSTANCE CourseInstance
EVENT Event
EVENT_SERIES EventSeries
FACILITY_USE FacilityUse
HEADLINE_EVENT HeadlineEvent
INDIVIDUAL_FACILITY_USE IndividualFacilityUse
SCHEDULED_SESSION ScheduledSession
SESSION_SERIES SessionSeries
SLOT Slot

You can use any of the above like this:

use OpenActive\DatasetSiteTemplate\FeedType;

echo FeedType::COURSE_INSTANCE;

Which will output:

CourseInstance

Contribution

Installation

git clone https://github.com/openactive/dataset-site-template-php.git
cd dataset-site-template-php
composer install

Example

To run the examples using PHP's built in server:

composer start

or

composer start-csp

Once running navigate to localhost:8080 in your browser to view the templates populated with JSON-LD data.

The default mustache templates (datasetsite.mustache and datasetsite-csp.mustache) are included under the src folder.

In index.php you can find an example of the associative array that's going to get parsed by TemplateRenderer.

Running Tests

PHPUnit is used to run tests.

To run the whole suite:

composer test

If you want to run the whole suite in verbose mode:

composer test -- --verbose

You can also run a section of the suite by specifying the class's relative path on which you want to perform tests:

composer test -- --verbose tests/Unit/TemplateRendererTest.php

For additional information on the commands available for PHPUnit, consult their documentation

Release

Major version numbers of this library should match those of the dataset-site-template on which this library depends. Any updates to the dataset site template files or assets should always be a major version update in both libraries.

openactive/dataset-site 适用场景与选型建议

openactive/dataset-site 是一款 基于 Mustache 开发的 Composer 扩展包,目前已累计 261.45k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 10 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 openactive/dataset-site 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 openactive/dataset-site 我们能提供哪些服务?
定制开发 / 二次开发

基于 openactive/dataset-site 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 261.45k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 16
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 8
  • Forks: 3
  • 开发语言: Mustache

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-10-30