如何授权和使用用户配置文件
创建配置文件
1.创建必要的内容类型过滤器
这些数据类型在配置文件中可能会用到。
每个内容类型过滤器的格式是标准陈列:在内容类型执行的函数引用。格式是array(array(callback_funct, array(callback_funct_parameters))
注意的是callback_funct表示对象已被验证,所以它没有静态的classname。
例如:获取文档子类别的Simple内容类型,陈列应为
array(array('isSimpleContent'), array('isContentType',array(array('File'))) );
注意的是第二个callback:isContentType,用了单参数。当$criteria_array指定callback参数为列表,将“File”传到“isContentType”应该写成array(array('File'))。
你也许至少需要以下过滤器:
Avatars
array (
array (
'isContentType', array (
array (
'Avatar',
),
),
),
)
Hyperlink only
array (
array (
'isExactContentType', array (
array (
'HyperLink',
),
),
),
)
SimpleLangstring only
array (
array (
'isExactContentType', array (
array (
'TrivialLangstring',
),
),
),
)
SimplePictures
array (
array (
'isContentType', array (
array (
'SimplePicture',
),
),
),
)
SimpleString only
array (
array (
'isExactContentType', array (
array (
'SimpleString',
),
),
),
)
2 创建配置文件模版
包括配置文件的字段列表,当用户进行编辑,其它用户浏览时可见的选项标签。
3 将配置文件模版与网络进行关联
4 编辑你自己的配置文件进行测试
数据模型
Network_has_profile_templates
l Network_id:每个profile_field只有一个网络
l Profile_template_id:配置文件模版id
l Is_invisible boolean:用户是否希望用匿名模式
Profile_templates
l Profile_template_id guuid:配置文件id
l Creation_date timestamp
Profile_template_fields
基本上是用户可以进行填充的数据字段列表。被管理员用来指定用户配置文件中可得的字段。
l Display_label content_id:配置文件显示界面的字段标签。Content id必须可本地化,最好是个图片。
l Admin_label content_id:用户编辑界面的字段标签。
l Content_filter filter_id:用来列出指定内容类型的过滤器。这些内容类型允许被此配置文件字段的用户当作函数来进行记录。UI代码应该保存在ContentTypeFilter类别当中。
l Order:配置文件中字段显示的顺序
l Semantic_id text:用户不可见。这字段有两个作用:
- 最终用于允许输出配置文件的微格式和XML算法。
- 一些semantic_id函数对于wifidog是有特殊意义的。例如配置文件中存在foaf:img的元素,它将用来在在线用户列表中显示用户的自定义头像。用来指定网络配置文件字段的管理界面必须列出所有对wifidog有特殊意义的semantic_id函数。
User_has_profiles
用配置文件连接用户表格
l User_id:用户id
l Profile_id:配置文件id
l Is_invisible Boolean:用户是否希望用匿名模式
Profiles
从技术上讲,我们应该直接在user_profile_fields连接用户表格,但这不可取。配置文件和user_has_profiles tables被替换的原因是:
- 允许在用户创建自己的配置文件前添加用户协议。
- 允许更便捷的保存非数据元素,例如可视模式,是否其它用户可以发送用户短信息等等。
- 如果用户需要,允许每个网络都有一个配置文件。
l Profile_id guuid:配置文件id
l Creation_date timestamp
Profile_fields
由终端用户输入的配置文件函数。
l Content_id:当前连接的数据
l Last_modified timestamp:起初不会被应用,因为它要求每个内容类型要有调节器和processAdminUI并反馈数据是否被正确修改。这实际上并不困难并且如果我们想衡量用户如何使用和更新他们的配置文件的话,这点都是最基本的。
ContentTypeFilter
ContentTypeFilter已存在并且应用在内容管理器的一些部分。基本上它会在每个备用ContentType以静态的方式用自己的参数启用函数引用。一些Content类的函数也是因为这个被指定的。当它非常灵活的运转时,从代码指定过滤器是唯一的方法。我们需要UI和数据表示法,这会很困难但并非不可能。困难点有:
l 列举可得的滤函数
l 解决已存在的过滤器由于代码中的滤函数丢失导致失效,从过滤器永久删除字段。
l 在callback函数参数输入的界面,它以能够让PHP在不使用eval()的情况下进行解析
本文章由 http://www.wifidog.pro/2015/01/15/wifidog-auth-server5.html 整理编辑,转载请注明出处