View source
<?php
function vsf_management_module_implements_alter(&$implementations, $hook) {
if ($hook == 'entity_info_alter') {
$override = array();
foreach ($implementations as $module => $group) {
if ($module != 'vsf_management') {
$override[$module] = $group;
}
if ($module == 'entity') {
$override['vsf_management'] = FALSE;
}
}
$implementations = $override;
}
}
function vsf_management_menu_local_tasks_alter(&$data, $router_item, $root_path) {
if (module_exists('vsf_upload')) {
if ($root_path == 'admin/content/files') {
$item = menu_get_item('file/add');
if ($item['access']) {
$data['actions']['output'][] = [
'#theme' => 'menu_local_action',
'#link' => $item,
];
}
}
}
}
function vsf_management_entity_info_alter(&$info) {
if (isset($info['file']['access callback']) && $info['file']['access callback'] === 'entity_metadata_file_access') {
$info['file']['access callback'] = 'vsf_management_file_access';
}
}
function vsf_management_file_access($op, $file = NULL, $account = NULL, $entity_type) {
switch ($op) {
case 'view':
return entity_metadata_file_access($op, $file, $account, $entity_type);
case 'create':
if (module_exists('vsf_upload')) {
return user_access('upload vsf files', $account);
}
return TRUE;
case 'delete':
case 'update':
if (user_access('administer all files', $account)) {
return TRUE;
}
$scheme = file_uri_scheme($file->uri);
$permission = 'administer ' . $scheme . ' files';
if (user_access($permission, $account)) {
return TRUE;
}
$permission = $op . ' ' . $scheme . ' files';
if (user_access($permission, $account)) {
return TRUE;
}
return FALSE;
}
return FALSE;
}
function vsf_management_permission() {
$permissions = array();
$permissions['administer all files'] = array(
'title' => t('Administer all files'),
'restrict access' => TRUE,
);
$permissions['administer public files'] = array(
'title' => t('Administer Public files'),
);
$permissions['update public files'] = array(
'title' => t('Update Public files'),
);
$permissions['delete public files'] = array(
'title' => t('Delete Public files'),
);
$permissions['administer private files'] = array(
'title' => t('Administer Private files'),
);
$permissions['update private files'] = array(
'title' => t('Update Private files'),
);
$permissions['delete private files'] = array(
'title' => t('Delete Private files'),
);
return $permissions;
}
function vsf_management_admin_paths() {
return array(
'node/*/files' => TRUE,
);
}
function vsf_management_image_default_styles() {
return array(
'vsf_management_thumbnail' => array(
'label' => 'VSF Management Thumbnail',
'effects' => array(
array(
'name' => 'image_scale_and_crop',
'data' => array(
'width' => 50,
'height' => 50,
),
'weight' => 0,
),
),
),
);
}
function vsf_management_views_api() {
return array(
'api' => 3,
);
}