public function FeedsFileFetcher::sourceFormValidate in Feeds 8.2
Overrides parent::sourceFormValidate().
Overrides FeedsPlugin::sourceFormValidate
File
- lib/
Drupal/ feeds/ Plugin/ feeds/ fetcher/ FeedsFileFetcher.php, line 118 - Home of the FeedsFileFetcher and related classes.
Class
- FeedsFileFetcher
- Defines a file fetcher.
Namespace
Drupal\feeds\Plugin\feeds\fetcherCode
public function sourceFormValidate(&$values) {
$values['source'] = trim($values['source']);
if (empty($this->config['direct'])) {
$feed_dir = $this->config['directory'];
$validators = array(
'file_validate_extensions' => array(
$this->config['allowed_extensions'],
),
);
if (!file_prepare_directory($feed_dir, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS)) {
if (user_access('administer feeds')) {
$plugin_key = feeds_importer($this->id)->config[$this
->pluginType()]['plugin_key'];
$link = url('admin/structure/feeds/' . $this->id . '/settings/' . $plugin_key);
form_set_error('feeds][FeedsFileFetcher][source', t('Upload failed. Please check the upload <a href="@link">settings.</a>', array(
'@link' => $link,
)));
}
else {
form_set_error('feeds][FeedsFileFetcher][source', t('Upload failed. Please contact your site administrator.'));
}
watchdog('feeds', 'The upload directory %directory required by a feed could not be created or is not accessible. A newly uploaded file could not be saved in this directory as a consequence, and the upload was canceled.', array(
'%directory' => $feed_dir,
));
}
elseif ($file = file_save_upload('feeds', $validators, $feed_dir, 0)) {
$values['source'] = $file->uri;
$values['file'] = $file;
}
elseif (empty($values['source'])) {
form_set_error('feeds][FeedsFileFetcher][source', t('Please upload a file.'));
}
else {
// File present from previous upload. Nothing to validate.
}
}
else {
// Check if chosen url scheme is allowed.
$scheme = file_uri_scheme($values['source']);
if (!$scheme || !in_array($scheme, $this->config['allowed_schemes'])) {
form_set_error('feeds][FeedsFileFetcher][source', t("The file needs to reside within the site's files directory, its path needs to start with scheme://. Available schemes: @schemes.", array(
'@schemes' => implode(', ', $this->config['allowed_schemes']),
)));
}
elseif (!file_exists($values['source'])) {
form_set_error('feeds][FeedsFileFetcher][source', t('The specified file or directory does not exist.'));
}
}
}