openbuildings / services-manager
该模块的目的是简化管理应用程序可能依赖的各种外部服务
Requires
- php: >=5.3.0
- composer/installers: *
Requires (Dev)
- kohana/auth: ^3.3
- lusitanian/oauth: 0.2.*
- openbuildings/jam-auth: ^0.4.3
- openbuildings/kohana-test-bootstrap: ^0.2.0
- phpunit/phpunit: ^4.0, <4.5
README
该模块的目的是简化管理应用程序可能依赖的各种外部服务。每个服务都由一个易于访问的单个类管理,该类负责所有必要的PHP或JavaScript加载
设置
目前有2种类型的服务
- JavaScript服务 - 它们需要加载JavaScript文件。要使用这些服务,您必须将这些辅助工具放置在适当的位置
<html>
<head>
<title>Site</title>
...
<!-- This needs to be inside your head tag -->
<?php echo Service::all_heads(); ?>
</head>
<body>
...
<!-- This needs to be at the very end of the body, just before the closing body tag -->
<?php echo Service::all_bodies(); ?>
</body>
</html>
- PHP服务 - 它们处理自己的事务。
每个服务都有自己的配置,您可以在services-manager.php
文件中查看默认配置
使用方法
一些服务有辅助方法可以在您的代码中全局使用。一般原则是,如果由于某些原因服务被禁用,这些方法将静默失败。
例如,这将渲染一个包含当前URL分享选项的addthis工具箱,但如果服务被禁用,它将返回一个空字符串,因此您的站点不应受服务禁用的影响并继续运行
<?php echo Service::factory('addthis')->toolbox() ?>
为了确保在服务被禁用的情况下您的特定代码不会执行,您可以使用初始化方法
<?php if (Service::factory('addthis')->initialized()): ?> <!-- Your custom addthis code goes here --> <?php endif; ?>
您还可以根据jam_auth中的角色禁用每个服务。只需使用'disabled-for-role' => '{somerole}'配置参数,或使用'enabled-for-role' => '{somerole}'仅允许某些角色。
有一些内置服务可用
Addthis
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- api-key : (string)您的addthis API密钥
- load-user-email : (bool)如果将此设置为TRUE,则加载当前用户电子邮件,您可以使用:user-email在addthis-config中访问它
- addthis-config : (array)这将用于设置addthis使用的javascript变量addthis_config
辅助工具:
- toolbox($url = NULL, $attributes = NULL) : 生成一个div addthis工具箱,url默认为初始请求的url
Exceptionalio
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- api-key : (string)您的exceptionalio API密钥
- use-auth : (bool) 获取当前用户ID和电子邮件,并将其设置为异常的定制参数
辅助工具:
- log(Exception $exception) : 将异常发送到exceptionalio
Googleanalytics
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- api-key : (string)您的google analytics API密钥
- header : (bool) 将其设置为FALSE将GA代码放置在页面底部
Kissinsights
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- notifications-for-role : (string)这用于将kissmetrics事件替换为HTML5通知,这样您就可以清楚地看到哪些事件被触发以及何时触发,而无需访问kissmetrics服务
- api-file : (字符串) kissinsights 的文件 - 他们还没有 API 密钥,但文件名是唯一的
Kissmetrics
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- api-key : (字符串) Kissmetrics 的您的 API 密钥
- use-auth : (布尔值) 使用当前登录用户,在 PHP API 中通过电子邮件识别用户
- php-api : (布尔值) 启用 php-api。如果设置为 FALSE,则所有 php 方法将静默失败,KM 类将根本不会加载。
- more : (字符串) 在 kissmetrics 包含之后放置的自定义 JavaScript,放置在脚本标签之后
辅助工具:
- record($event) : 使用 PHP API 记录事件
- identify($identification) : 使用 PHP API 识别用户
- set($properties) : 使用 PHP API 设置当前用户的属性
- queue($event, $event2 ...) : 将事件添加到 JavaScript API 队列。如果是正常页面渲染,它将在 kissmetrics JavaScript 包含代码之后放置它们,如果是 AJAX 请求,将直接渲染包含指定事件的脚本标签
- is_async() : 查找是否为异步请求(AJAX)
使用队列辅助方法的示例。这将将它们添加到队列中并在标题中渲染,或者直接在这里使用脚本标签渲染它们
<?php echo Service::factory('kissmetrics')->queue( array('trackClick', '.add-to-favourites', 'clicked on add to favourites in company profile'), array('trackClick', '.remove-from-favourites', 'clicked on remove from favourites in company profile') ) ?>
Mailchimp
配置:
- enabled : (bool)
- disabled-for-role : (string)
- enabled-for-role : (string)
- api-key : (字符串) Mailchimp 的您的 API 密钥
- lists : (数组) 键值对列表别名 => 列表 ID。如果设置了这些,您将能够使用列表别名而不是实际列表 ID,例如 listSubscribe('newsletter') 将导致 listSubscribe('')
辅助工具:
此服务使用 Mailchimp API 版本 1.3,所有方法都代理到 API 本身。因此,您可以直接使用服务对象调用任何 API 方法。以 list 开头的方法将尝试使用配置中指定的 ID。示例
<?php Service::factory('mailchimp')->lists->subscribe('newsletter', 'me@example.com'); ?>
许可证
版权所有 (c) 2012-2013,OpenBuildings Ltd. 由 Ivan Kerin、Yasen Yanev 和 Haralan Dobrev 开发,作为 clippings.com 的一部分
根据 BSD-3-Clause 许可证,请参阅 LICENSE 文件。