deprecation_status-8.x-3.x-dev/src/Form/UpdateForm.php
src/Form/UpdateForm.php
<?php
namespace Drupal\deprecation_status\Form;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\deprecation_status\DataSource;
use GuzzleHttp\Exception\RequestException;
class UpdateForm extends FormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'deprecation_status_update_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
// Always add a reset possibility just in case.
list($shipped_data_id, $shipped_data_date) = DataSource::getShippedMetaData();
list($data_id, $data_date) = DataSource::getMetaData();
$form['shipped_data'] = [
'#type' => 'item',
'#title' => $this->t('Shipped dataset'),
'#markup' => $this->t('#@data_id at @data_date', ['@data_id' => $shipped_data_id, '@data_date' => $shipped_data_date]),
];
$form['reset'] = [
'#type' => 'submit',
'#name' => 'reset',
'#value' => $this->t('Reset dataset to shipped state'),
];
$form['live_data'] = [
'#type' => 'item',
'#title' => $this->t('Current live dataset'),
'#markup' => $this->t('#@data_id at @data_date', ['@data_id' => $data_id, '@data_date' => $data_date]),
];
$client = \Drupal::httpClient();
try {
// Get Drupal 10 metadata values.
$response = $client->get('https://git.drupalcode.org/project/deprecation_status/raw/8.x-5.x/data/metadata.csv?' . time());
$data = (string) $response->getBody();
if (!empty($data)) {
list($new_data_id, $new_data_date) = explode(';', trim($data));
}
else {
$form['error'] = [
'#type' => 'markup',
'#markup' => '<p>Drupal 10 metadata format error while fetching current dataset metadata.</p>',
];
return $form;
}
}
catch (RequestException $e) {
$form['error'] = [
'#type' => 'markup',
'#markup' => '<p>HTTP error while fetching current dataset metadata.</p>',
];
return $form;
}
$form['online_data'] = [
'#type' => 'item',
'#title' => $this->t('Online dataset'),
'#markup' => $this->t('#@data_id at @data_date', ['@data_id' => $new_data_id, '@data_date' => $new_data_date]),
];
$form['update'] = [
'#type' => 'submit',
'#name' => 'update',
'#value' => $this->t('Download and adopt online dataset'),
'#button_type' => 'primary',
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$triggering_element = $form_state->getTriggeringElement();
$button_name = $triggering_element['#name'];
if ($button_name == 'reset') {
$result = DataSource::resetDataFiles();
$this->messenger()->addMessage('Deleted ' . (int) $result . ' dataset files.');
Cache::invalidateTags(['deprecation_status']);
}
elseif ($button_name == 'update') {
$result = DataSource::updateDataFiles();
if ($result === TRUE) {
$this->messenger()->addMessage('Updated dataset successfully.');
Cache::invalidateTags(['deprecation_status']);
}
else {
$this->messenger()->addError($result);
}
}
}
}
