Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1e5f1dc
Add control panel link
s-nakajima Jul 21, 2015
f4ce77b
Fix control panel link
s-nakajima Jul 21, 2015
151cdb5
Add control panel
s-nakajima Jul 22, 2015
f093579
Fix migration for add records
s-nakajima Jul 22, 2015
e8750fd
Fix by add control panel
s-nakajima Jul 22, 2015
4ec2490
Fix as not execute when install
s-nakajima Jul 23, 2015
bd13be4
Fix as not execute when install
s-nakajima Jul 23, 2015
bfe2375
Fix by change specification of plugin manager
s-nakajima Jul 23, 2015
17a5d9c
Fix tag error
s-nakajima Jul 24, 2015
e4cc1f3
Fix by develop specification of user attributes
s-nakajima Jul 27, 2015
454f35a
Remove var_dumpFix by develop specification of user roles
s-nakajima Jul 28, 2015
1fb95bb
Fix by develop specification of user roles
s-nakajima Jul 29, 2015
8978706
Interim fixes for CakePHP2.7
s-nakajima Jul 31, 2015
9c4ecd9
Fix style sheet
s-nakajima Aug 1, 2015
ec89896
Fix https://github.com/NetCommons3/NetCommons/issues/26
s-nakajima Aug 6, 2015
bc7358d
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
93bd350
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
b16cea1
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
d2b03b1
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
5067d91
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
e670402
Fix by develop specification of rooms
s-nakajima Aug 6, 2015
6da962c
Fix to string the $userId
s-nakajima Aug 7, 2015
cb50631
Roomプラグイン開発による修正
s-nakajima Aug 9, 2015
5d35dcb
Merge origin/master
s-nakajima Aug 10, 2015
a6619f4
Merge origin/master
s-nakajima Aug 10, 2015
c4ec0c8
Fixtureの共通可
s-nakajima Aug 11, 2015
58a342a
Fix phpcs error
s-nakajima Aug 12, 2015
b4472d4
パーミッションの変更
s-nakajima Aug 12, 2015
f17837c
Fixture共通化による修正
s-nakajima Aug 12, 2015
cab5ff6
Fixture共通化による修正
s-nakajima Aug 12, 2015
c46f717
Fixture共通化による修正
s-nakajima Aug 12, 2015
b3073fe
Fixture共通化による修正
s-nakajima Aug 12, 2015
9ec2513
RoomRole取得処理の共通化による修正
s-nakajima Aug 12, 2015
018d164
Merge origin/master
Aug 12, 2015
db3aa34
改行コード修正
s-nakajima Aug 12, 2015
18f4aea
不要コードの削除
s-nakajima Aug 12, 2015
d41eeb6
タブからスペースに修正
s-nakajima Aug 12, 2015
8702642
不要コードの削除
s-nakajima Aug 12, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions Config/Migration/NetCommonsMigration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php
/**
* NetCommonsMigration
*
* @author Noriko Arai <arai@nii.ac.jp>
* @author Shohei Nakajima <nakajimashouhei@gmail.com>
* @link http://www.netcommons.org NetCommons Project
* @license http://www.netcommons.org/license.txt NetCommons License
* @copyright Copyright 2014, NetCommons Project
*/

App::uses('CakeMigration', 'Migrations.Lib');
App::uses('I18n', 'I18n');

/**
* NetCommonsMigration
*
* @author Shohei Nakajima <nakajimashouhei@gmail.com>
* @package NetCommons\NetCommons\Config\Migration
*/
class NetCommonsMigration extends CakeMigration {

/**
* Update model records
*
* @param string $model model name to update
* @param string $records records to be stored
* @param string $scope ?
* @return bool Should process continue
*/
public function updateRecords($model, $records, $scope = null) {
$Model = $this->generateModel($model);
foreach ($records as $record) {
$Model->create();
if (!$Model->save($record, false)) {
return false;
}
}

return true;
}

/**
* Load models
*
* @param array $models models to load
* @param string $source data source
* @return void
*/
public function loadModels(array $models = [], $source = 'master') {
foreach ($models as $model => $class) {
$this->$model = ClassRegistry::init($class, true);
if ($this->$model->useDbConfig !== 'test') {
$this->$model->setDataSource($source);
}
}
}

}
64 changes: 10 additions & 54 deletions Controller/Component/NetCommonsBlockComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ class NetCommonsBlockComponent extends Component {
* @var array
*/
public $components = array(
'NetCommons.NetCommonsFrame'
'NetCommons.NetCommonsFrame',
'NetCommons.NetCommonsRoomRole'
);

/**
Expand Down Expand Up @@ -112,60 +113,15 @@ public function getBlockRolePermissions($blockKey, $permissions) {
$this->$model = ClassRegistry::init($class, true);
}

//RoomRole取得
$roomRoles = $this->RoomRole->find('all', array(
'recursive' => -1,
));
$roomRoles = Hash::combine($roomRoles, '{n}.RoomRole.role_key', '{n}.RoomRole');

//Role取得
$roles = $this->Role->find('all', array(
'recursive' => -1,
'conditions' => array(
'Role.type' => Role::ROLE_TYPE_ROOM,
'Role.language_id' => $this->controller->viewVars['languageId'],
),
));
$roles = Hash::combine($roles, '{n}.Role.key', '{n}.Role');

//DefaultRolePermission取得
$defaultPermissions = $this->DefaultRolePermission->find('all', array(
'recursive' => -1,
'conditions' => array(
'DefaultRolePermission.permission' => $permissions,
),
));
$defaultPermissions = Hash::combine(
$defaultPermissions,
'{n}.DefaultRolePermission.role_key',
'{n}.DefaultRolePermission',
'{n}.DefaultRolePermission.permission'
);
$defaultPermissions = Hash::remove($defaultPermissions, '{s}.{s}.id');
//RoomRolePermissions取得
$roomId = $this->controller->viewVars['roomId'];

//RolesRoomのIDリストを取得
$rolesRooms = $this->RolesRoom->find('list', array(
'recursive' => -1,
'conditions' => array(
'RolesRoom.room_id' => $this->controller->viewVars['roomId'],
),
));

//RoomRolePermission取得
$roomRolePermissions = $this->RoomRolePermission->find('all', array(
'recursive' => 0,
'conditions' => array(
'RoomRolePermission.roles_room_id' => $rolesRooms,
'RoomRolePermission.permission' => $permissions,
),
));
$roomRolePermissions = Hash::combine(
$roomRolePermissions,
'{n}.RolesRoom.role_key',
'{n}.RoomRolePermission',
'{n}.RoomRolePermission.permission'
);
$roomRolePermissions = Hash::remove($roomRolePermissions, '{s}.{s}.id');
$results = $this->NetCommonsRoomRole->getRoomRolePermissions($roomId, $permissions, DefaultRolePermission::TYPE_ROOM_ROLE);
$defaultPermissions = Hash::remove($results['DefaultRolePermission'], '{s}.{s}.id');
$roles = $results['Role'];
$rolesRooms = $results['RolesRoom'];
$roomRolePermissions = Hash::remove($results['RoomRolePermission'], '{s}.{s}.id');
$roomRoles = $results['RoomRole'];

//BlockRolePermission取得
$blockPermissions = $this->BlockRolePermission->find('all', array(
Expand Down
21 changes: 14 additions & 7 deletions Controller/Component/NetCommonsFrameComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function initialize(Controller $controller) {
$models = array(
'Box' => 'Boxes.Box',
'Frame' => 'Frames.Frame',
'Language' => 'M17n.Language',
//'Language' => 'M17n.Language',
);
foreach ($models as $model => $class) {
$this->$model = ClassRegistry::init($class);
Expand All @@ -73,17 +73,24 @@ public function initialize(Controller $controller) {
* @return void
*/
public function setView() {
//set language_id
if (isset($this->controller->viewVars['languageId']) && $this->controller->viewVars['languageId'] === 0) {
$language = $this->Language->findByCode(Configure::read('Config.language'));
$this->controller->set('languageId', $language['Language']['id']);
}

//set frame by id
$frame = $this->Frame->findById($this->frameId);
$this->data = $frame;

$this->__setViewFrame($frame);

// Find page data from frame
$this->controller->current = $this->data;

$box = $this->Box->find('first', [
'conditions' => [
'Box.id' => $this->data['Box']['id'],
],
]);
if (isset($box['Page'][0])) {
$this->controller->current['page'] = $box['Page'][0];
$this->controller->set('cancelUrl', $this->controller->current['page']['permalink']);
}
}

/**
Expand Down
99 changes: 99 additions & 0 deletions Controller/Component/NetCommonsRoomRoleComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,105 @@ public function startup(Controller $controller) {
}
}

/**
* Function to get the data of RoomRolePermmissions.
* e.g.) RoomRolePermmissions controller
*
* @param int $roomId rooms.id
* @param array $permissions permissions
* @param string $type default_role_permissions.type
* @return array Role and Permissions and Rooms data
* - The `DefaultPermissions` data.
* - The `Roles` data.
* - The `RolesRooms` data.
* - The `RoomRolePermissions` data.
* - The `RoomRoles` data.
*/
public function getRoomRolePermissions($roomId, $permissions, $type) {
//戻り値の設定
$results = array(
'DefaultRolePermission' => null,
'Role' => null,
'RolesRoom' => null,
'RoomRolePermission' => null,
'RoomRole' => null,
);

//modelのロード
$models = array(
'DefaultRolePermission' => 'Roles.DefaultRolePermission',
'Role' => 'Roles.Role',
'RolesRoom' => 'Rooms.RolesRoom',
'RoomRole' => 'Rooms.RoomRole',
'RoomRolePermission' => 'Rooms.RoomRolePermission',
);
foreach ($models as $model => $class) {
$this->$model = ClassRegistry::init($class, true);
}

//RoomRole取得
$roomRoles = $this->RoomRole->find('all', array(
'recursive' => -1,
));
$results['RoomRole'] = Hash::combine($roomRoles, '{n}.RoomRole.role_key', '{n}.RoomRole');

//Role取得
$roles = $this->Role->find('all', array(
'recursive' => -1,
'conditions' => array(
'Role.type' => Role::ROLE_TYPE_ROOM,
'Role.language_id' => Configure::read('Config.languageId'),
),
));
$results['Role'] = Hash::combine($roles, '{n}.Role.key', '{n}.Role');

//DefaultRolePermission取得
$defaultPermissions = $this->DefaultRolePermission->find('all', array(
'recursive' => -1,
'conditions' => array(
'DefaultRolePermission.type' => $type,
'DefaultRolePermission.permission' => $permissions,
),
));
$results['DefaultRolePermission'] = Hash::combine(
$defaultPermissions,
'{n}.DefaultRolePermission.role_key',
'{n}.DefaultRolePermission',
'{n}.DefaultRolePermission.permission'
);

if (! isset($roomId)) {
return $results;
}

//RolesRoomのIDリストを取得
$results['RolesRoom'] = $this->RolesRoom->find('list', array(
'recursive' => -1,
'conditions' => array(
'RolesRoom.room_id' => $roomId,
),
));

//RoomRolePermission取得
$roomRolePermissions = $this->RoomRolePermission->find('all', array(
'recursive' => 0,
'conditions' => array(
'RoomRolePermission.roles_room_id' => $results['RolesRoom'],
'RoomRolePermission.permission' => $permissions,
),
));
$results['RoomRolePermission'] = Hash::combine(
$roomRolePermissions,
'{n}.RolesRoom.role_key',
'{n}.RoomRolePermission',
'{n}.RoomRolePermission.permission'
);
//$results['RoomRolePermission'] = Hash::remove($roomRolePermissions, '{s}.{s}.id');

//戻り値の設定
return $results;
}

/**
* Checks whether current action is accessible without authentication.
*
Expand Down
47 changes: 19 additions & 28 deletions Controller/NetCommonsAppController.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,8 @@ class NetCommonsAppController extends Controller {
* @var array
*/
public $uses = [
'Boxes.Box',
'NetCommons.SiteSetting',
'Pages.Page',
'Frames.Frame',
'M17n.Language',
];

/**
Expand Down Expand Up @@ -124,45 +122,38 @@ public function __construct($request = null, $response = null) {
* @return void
*/
public function beforeFilter() {
if (Configure::read('NetCommons.installed')) {
//現在のテーマを取得
$theme = $this->Asset->getSiteTheme($this);
if ($theme) {
$this->theme = $theme;
}
Security::setHash('sha512');

if (! Configure::read('NetCommons.installed')) {
return;
}

//現在のテーマを取得
$theme = $this->Asset->getSiteTheme($this);
if ($theme) {
$this->theme = $theme;
}
if (isset($this->request->query['language'])) {
Configure::write('Config.language', $this->request->query['language']);
$this->Session->write('Config.language', $this->request->query['language']);
} elseif ($this->Session->check('Config.language')) {
Configure::write('Config.language', $this->Session->read('Config.language'));
}
//set language_id
$language = $this->Language->findByCode(Configure::read('Config.language'));
Configure::write('Config.languageId', $language['Language']['id']);
$this->set('languageId', $language['Language']['id']);

$this->Auth->allow('index', 'view');
Security::setHash('sha512');

if ($this->RequestHandler->accepts('json')) {
$this->renderJson();
}

$this->set('userId', (int)$this->Auth->user('id'));

// Find page data from frame
if ($this->NetCommonsFrame && $this->NetCommonsFrame->data) {
$this->current = $this->NetCommonsFrame->data;
$this->set('userId', $this->Auth->user('id'));

$box = $this->Box->find('first', [
'conditions' => [
'Box.id' => $this->NetCommonsFrame->data['Box']['id'],
],
]);
if (isset($box['Page'][0])) {
$this->current['page'] = $box['Page'][0];
$this->set('cancelUrl', $this->current['page']['permalink']);
}

$results = $this->camelizeKeyRecursive(['current' => $this->current]);
$this->set($results);
}
$results = $this->camelizeKeyRecursive(['current' => $this->current]);
$this->set($results);
}

/**
Expand Down
Binary file modified Locale/jpn/LC_MESSAGES/net_commons.mo
Binary file not shown.
Loading