arckinteractive/events_api

事件的数据模型和API

安装: 143

依赖: 3

建议者: 0

安全性: 0

星标: 5

关注者: 12

分支: 2

公开问题: 3

类型:elgg-plugin

2.0.1 2017-11-20 18:27 UTC

This package is not auto-updated.

Last update: 2024-09-09 12:21:40 UTC


README

此插件提供了一个用于构建事件应用程序的数据结构和便捷函数。由于每个项目的需求往往不同,因此它尽可能地通用和可扩展,以作为基础后端。UI和集成应由特定项目的辅助插件执行。

所有函数都接受格式化的日期('Y-m-d')和时间('g:ia')作为参数,以将时区计算降到最低。时区功能可以添加并在客户端计算。

日历

日历是一个具有子类型 'calendar' 的 ElggObject。它由另一个实体包含,通常是用户或组。编辑权限从容器写入访问继承。日历包含事件。事件通过关系链接到日历,这样事件就可以在多个日历上显示。

每个用户和组都有一个“公开”日历。此日历会自动创建,并且非管理员用户无法删除或编辑。所有未明确指定日历的新事件都将添加到“公开”日历。

用户可以创建其他具有自定义可见性/访问设置的日历。此外,公开日历可以包含非公开事件,这些事件仅对具有查看权限的查看者可见。

事件

事件是一个具有子类型 'event' 的 ElggObject。它由另一个实体包含,并通过关系附加到日历。

操作

action('events/edit')

此操作添加/编辑一个事件。

必需输入包括

  • start_date STR '2015-01-07' // Y-m-d
  • end_date STR '2015-01-08' // Y-m-d
  • start_time STR '12:00am' // g:ia
  • end_time STR '1:00am' // g:ia

可选输入包括

  • guid INT
  • title STR (默认为 elgg_echo('events:edit:title:placeholder'))
  • description STR
  • has_reminders BOOL 事件是否启用了提醒?
  • reminders ARR 描述提醒的关联数组,以递增和值为条件

例如。

$reminders = array(
    'value' => array(
        15,
        1,
        ''
    ),
    'increment' => array(
        'minute',
        'hour',
        ''
    )
)

描述了会议前15分钟和1小时的提醒。每个数组中的最后一个项被视为模板值。

action('events/move')

此操作移动一个事件

必需输入包括

  • guid INT 事件的GUID
  • day_delta INT 向前/向后移动事件多少天
  • minute_delta INT 向前/向后移动事件多少分钟

在验证后,事件被触发:在更改之前 'events_api', 'event:move'。返回 false 将停止移动。返回 false 的处理程序应提供自己的错误消息。

请注意,这是一个便捷操作,请参阅 \Events\API\Event::move() 以获取等效方法。

action('events/resize')

此操作调整事件的大小(仅更改结束日期/时间)

必需输入包括

  • guid INT 事件的GUID
  • day_delta INT 向前/向后移动结束点多少天
  • minute_delta INT 向前/向后移动结束点多少分钟

在验证后,事件被触发:在更改之前 'events_api', 'event:resize'。返回 false 将停止调整大小。返回 false 的处理程序应提供自己的错误消息。

请注意,这是一个便捷操作,请参阅 \Events\API\Event::resize() 以获取等效方法。

提醒

提醒以元数据形式存储在事件中,作为事件发生前多少秒通知用户的秒数差。在每日的cron任务和插件激活时,一个脚本会确定即将到来的提醒并将它们存储为事件上的注释。提醒的发送留给了用户界面,预期的做法是注册分钟cron任务,寻找下一分钟内即将到来的注释——并为任何出现的事件发送提醒。在每次遍历时删除提醒注释。

安装/测试

如果从GitHub下载

# install dependencies (without dev)
composer install --no-dev
# install dependencies (including dev)
composer install

# run tests
vendor/bin/phpunit