concrete5.6 のパーミッション(権限)を設定する方法です。バージョン5.5系とは大きく異なっているようです。
5.6で設定する方法は、公式フォーラムのHow to set permissions in 5.6 from code, or launch the dialog window for permissions from a modal?が参考になりました。assignPermissions
メソッドを使うと、設定できます。(5.5ではassignPermissionSet
でした。)
さらに、concrete5 本体のバージョンで条件分岐できないか探してみると、SITE_APP_VERSION
という定数が用意されていました。なので、PHPの version_compare
関数を用いると、version_compare(Config::get('SITE_APP_VERSION'),'5.6.0', '>=')
でバージョン5.6.0以降かどうかを判定できます。
// license AGPL if (version_compare(Config::get('SITE_APP_VERSION'),'5.6.0', '>=')) { // for concrete 5.6 $pt = CollectionType::getByHandle("userprofile_detail"); $newPage = $parentPage->add($pt,$data); $pkHandles = array('view_page'); $newPage->assignPermissions(Group::getByID(GUEST_GROUP_ID), $pkHandles); $pkHandles = array('view_page'); $pkHandles[] = 'view_page_versions'; $pkHandles[] = 'edit_page_properties'; $pkHandles[] = 'edit_page_contents'; $pkHandles[] = 'approve_page_versions'; $newPage->assignPermissions($userInfo, $pkHandles); } else { // for concrete 5.5 $pxml->user[$uID]['uID'] = $uID; $pxml->user[$uID]['canRead'] = 1; $pxml->user[$uID]['canWrite'] = 1; $pxml->user[$uID]['canApproveVersions'] = 1; $pxml->user[$uID]['canReadVersions'] = 1; $newPage->assignPermissionSet($pxml); }
ソース全体は https://github.com/ounziw/userprofile/blob/1.0dev/controller.php をごらんください。
上記以外にもパーミッションはあります。管理画面のキャプチャを見ると、
View
View Versions
Preview Page As User
Edit Properties
Edit Contents
Edit Speed Settings
Change Theme
Change Page Type
Edit Permissions
Delete
Delete Versions
Approve Changes
Add Sub-Page
Move or Copy Page
Schedule Guest Access
があるようです。