<?php
function hook_file_load($files) {
$result = db_query('SELECT * FROM {upload} u WHERE u.fid IN (:fids)', array(
':fids' => array_keys($files),
))
->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $record) {
foreach ($record as $key => $value) {
$files[$record['fid']]->{$key} = $value;
}
}
}
function hook_file_validate(Drupal\file\File $file) {
$errors = array();
if (empty($file->filename)) {
$errors[] = t("The file's name is empty. Please give a name to the file.");
}
if (strlen($file->filename) > 255) {
$errors[] = t("The file's name exceeds the 255 characters limit. Please rename the file and try again.");
}
return $errors;
}
function hook_file_presave(Drupal\file\File $file) {
$file->timestamp -= 3600;
}
function hook_file_insert(Drupal\file\File $file) {
$validate = file_validate_extensions($file, 'jpg');
if (empty($validate)) {
watchdog('file', 'A jpg has been added.');
}
}
function hook_file_update(Drupal\file\File $file) {
$file_user = user_load($file->uid);
if (strpos($file->filename, $file_user->name) !== 0) {
$old_filename = $file->filename;
$file->filename = $file_user->name . '_' . $file->filename;
$file
->save();
watchdog('file', t('%source has been renamed to %destination', array(
'%source' => $old_filename,
'%destination' => $file->filename,
)));
}
}
function hook_file_copy(Drupal\file\File $file, Drupal\file\File $source) {
$file_user = user_load($file->uid);
if (strpos($file->filename, $file_user->name) !== 0) {
$file->filename = $file_user->name . '_' . $file->filename;
$file
->save();
watchdog('file', t('Copied file %source has been renamed to %destination', array(
'%source' => $source->filename,
'%destination' => $file->filename,
)));
}
}
function hook_file_move(Drupal\file\File $file, Drupal\file\File $source) {
$file_user = user_load($file->uid);
if (strpos($file->filename, $file_user->name) !== 0) {
$file->filename = $file_user->name . '_' . $file->filename;
$file
->save();
watchdog('file', t('Moved file %source has been renamed to %destination', array(
'%source' => $source->filename,
'%destination' => $file->filename,
)));
}
}
function hook_file_predelete(Drupal\file\File $file) {
db_delete('upload')
->condition('fid', $file->fid)
->execute();
}
function hook_file_delete(Drupal\file\File $file) {
db_delete('upload')
->condition('fid', $file->fid)
->execute();
}
function hook_file_download_access($field, Drupal\Core\Entity\EntityInterface $entity, Drupal\file\File $file) {
if ($entity
->entityType() == 'node') {
return node_access('view', $entity);
}
}
function hook_file_download_access_alter(&$grants, $context) {
if (isset($grants['node'])) {
$grants = array(
'node' => $grants['node'],
);
}
}