Loading modules/simple_sitemap_engines/config/schema/simple_sitemap_engines.schema.yml +0 −3 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ simple_sitemap_engines.simple_sitemap_engine.*: sequence: type: string label: 'Sitemap variant' last_submitted: type: integer label: 'Last submitted' simple_sitemap_engines.settings: type: config_object Loading modules/simple_sitemap_engines/simple_sitemap_engines.install +28 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,32 @@ * Implements hook_uninstall(). */ function simple_sitemap_engines_uninstall() { \Drupal::service('state')->delete('simple_sitemap_engines_last_submitted'); $state = \Drupal::service('state'); $state->delete('simple_sitemap_engines_last_submitted'); $engines = \Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple(); foreach ($engines as $engine_id => $engine) { $state->delete("simple_sitemap_engines.simple_sitemap_engine.{$engine_id}.last_submitted"); } } /** * Moving last_submitted data from configuration to state. */ function simple_sitemap_engines_update_8301() { $engines = \Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple(); foreach ($engines as $engine_id => $engine) { $config = \Drupal::configFactory() ->getEditable("simple_sitemap_engines.simple_sitemap_engine.$engine_id"); $last_submitted = $config->get('last_submitted'); $config->clear('last_submitted')->save(); if ($last_submitted !== NULL) { \Drupal::state()->set("simple_sitemap_engines.simple_sitemap_engine.{$engine_id}.last_submitted", $last_submitted); } } } modules/simple_sitemap_engines/simple_sitemap_engines.module +6 −12 Original line number Diff line number Diff line Loading @@ -14,28 +14,22 @@ * @see Drupal\simple_sitemap_engines\Plugin\QueueWorker\SitemapSubmitter */ function simple_sitemap_engines_cron() { /** @var \Drupal\Core\Config\Config $config */ $config = \Drupal::config('simple_sitemap_engines.settings'); if ($config->get('enabled')) { $interval = (int) $config->get('submission_interval') * 60 * 60; $request_time = \Drupal::service('datetime.time')->getRequestTime(); $state = \Drupal::state(); if ($interval === 0 || $state->get('simple_sitemap_engines_last_submitted', 0) + $interval <= $request_time) { /** @var \Drupal\Core\Queue\QueueInterface $queue */ $queue = \Drupal::queue('simple_sitemap_engine_submit'); $state->set('simple_sitemap_engines_last_submitted', $request_time); foreach (\Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple() as $id => $engine) { if (!empty($engine->sitemap_variants)) { $queue->createItem($id); $last_submitted = \Drupal::state()->get("simple_sitemap_engines.simple_sitemap_engine.{$id}.last_submitted", -1); if ($last_submitted !== -1 && $last_submitted + $interval > $request_time) { continue; } if (!empty($engine->sitemap_variants)) { \Drupal::queue('simple_sitemap_engine_submit')->createItem($id); } } } Loading modules/simple_sitemap_engines/src/Controller/SearchEngineListBuilder.php +25 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\State\StateInterface; use Drupal\simple_sitemap\Form\FormHelper; use Symfony\Component\DependencyInjection\ContainerInterface; Loading @@ -22,6 +23,11 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { */ protected $dateFormatter; /** * @var \Drupal\Core\State\StateInterface */ protected $state; /** * SearchEngineListBuilder constructor. * Loading @@ -31,10 +37,16 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { * The entity storage class. * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter * The date formatter service. * @param \Drupal\Core\State\StateInterface $state * The state service. */ public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter) { public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter, StateInterface $state) { parent::__construct($entity_type, $storage); $this->dateFormatter = $date_formatter; $this->state = $state; } /** Loading @@ -44,7 +56,8 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { return new static( $entity_type, $container->get('entity_type.manager')->getStorage($entity_type->id()), $container->get('date.formatter') $container->get('date.formatter'), $container->get('state') ); } Loading @@ -64,27 +77,33 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { $last_submitted = $this->state->get("simple_sitemap_engines.simple_sitemap_engine.{$entity->id()}.last_submitted", -1); /** @var \Drupal\simple_sitemap_engines\Entity\SearchEngine $entity */ $row['label'] = $entity->label(); $row['url'] = $entity->url; $row['variants'] = implode(', ', $entity->sitemap_variants); $row['last_submitted'] = $entity->last_submitted ? $this->dateFormatter->format($entity->last_submitted, 'short') $row['last_submitted'] = $last_submitted !== -1 ? $this->dateFormatter->format($last_submitted, 'short') : $this->t('Never'); return $row; } /** * Build the render array. */ public function render() { return ['simple_sitemap_engines' => [ return [ 'simple_sitemap_engines' => [ '#type' => 'details', '#open' => TRUE, '#prefix' => FormHelper::getDonationText(), '#title' => $this->t('Submission status'), 'table' => parent::render(), '#description' => $this->t('Submission settings can be configured <a href="@url">here</a>.', ['@url' => $GLOBALS['base_url'] . '/admin/config/search/simplesitemap/engines/settings']), ]]; ], ]; } } modules/simple_sitemap_engines/src/Entity/SearchEngine.php +0 −7 Original line number Diff line number Diff line Loading @@ -63,13 +63,6 @@ class SearchEngine extends ConfigEntityBase { */ public $sitemap_variants; /** * Timestamp when the sitemap was last submitted to this search engine. * * @var int */ public $last_submitted; /** * Implements magic __toString() to simplify checkbox list building. * Loading Loading
modules/simple_sitemap_engines/config/schema/simple_sitemap_engines.schema.yml +0 −3 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ simple_sitemap_engines.simple_sitemap_engine.*: sequence: type: string label: 'Sitemap variant' last_submitted: type: integer label: 'Last submitted' simple_sitemap_engines.settings: type: config_object Loading
modules/simple_sitemap_engines/simple_sitemap_engines.install +28 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,32 @@ * Implements hook_uninstall(). */ function simple_sitemap_engines_uninstall() { \Drupal::service('state')->delete('simple_sitemap_engines_last_submitted'); $state = \Drupal::service('state'); $state->delete('simple_sitemap_engines_last_submitted'); $engines = \Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple(); foreach ($engines as $engine_id => $engine) { $state->delete("simple_sitemap_engines.simple_sitemap_engine.{$engine_id}.last_submitted"); } } /** * Moving last_submitted data from configuration to state. */ function simple_sitemap_engines_update_8301() { $engines = \Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple(); foreach ($engines as $engine_id => $engine) { $config = \Drupal::configFactory() ->getEditable("simple_sitemap_engines.simple_sitemap_engine.$engine_id"); $last_submitted = $config->get('last_submitted'); $config->clear('last_submitted')->save(); if ($last_submitted !== NULL) { \Drupal::state()->set("simple_sitemap_engines.simple_sitemap_engine.{$engine_id}.last_submitted", $last_submitted); } } }
modules/simple_sitemap_engines/simple_sitemap_engines.module +6 −12 Original line number Diff line number Diff line Loading @@ -14,28 +14,22 @@ * @see Drupal\simple_sitemap_engines\Plugin\QueueWorker\SitemapSubmitter */ function simple_sitemap_engines_cron() { /** @var \Drupal\Core\Config\Config $config */ $config = \Drupal::config('simple_sitemap_engines.settings'); if ($config->get('enabled')) { $interval = (int) $config->get('submission_interval') * 60 * 60; $request_time = \Drupal::service('datetime.time')->getRequestTime(); $state = \Drupal::state(); if ($interval === 0 || $state->get('simple_sitemap_engines_last_submitted', 0) + $interval <= $request_time) { /** @var \Drupal\Core\Queue\QueueInterface $queue */ $queue = \Drupal::queue('simple_sitemap_engine_submit'); $state->set('simple_sitemap_engines_last_submitted', $request_time); foreach (\Drupal::entityTypeManager() ->getStorage('simple_sitemap_engine') ->loadMultiple() as $id => $engine) { if (!empty($engine->sitemap_variants)) { $queue->createItem($id); $last_submitted = \Drupal::state()->get("simple_sitemap_engines.simple_sitemap_engine.{$id}.last_submitted", -1); if ($last_submitted !== -1 && $last_submitted + $interval > $request_time) { continue; } if (!empty($engine->sitemap_variants)) { \Drupal::queue('simple_sitemap_engine_submit')->createItem($id); } } } Loading
modules/simple_sitemap_engines/src/Controller/SearchEngineListBuilder.php +25 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\State\StateInterface; use Drupal\simple_sitemap\Form\FormHelper; use Symfony\Component\DependencyInjection\ContainerInterface; Loading @@ -22,6 +23,11 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { */ protected $dateFormatter; /** * @var \Drupal\Core\State\StateInterface */ protected $state; /** * SearchEngineListBuilder constructor. * Loading @@ -31,10 +37,16 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { * The entity storage class. * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter * The date formatter service. * @param \Drupal\Core\State\StateInterface $state * The state service. */ public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter) { public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter, StateInterface $state) { parent::__construct($entity_type, $storage); $this->dateFormatter = $date_formatter; $this->state = $state; } /** Loading @@ -44,7 +56,8 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { return new static( $entity_type, $container->get('entity_type.manager')->getStorage($entity_type->id()), $container->get('date.formatter') $container->get('date.formatter'), $container->get('state') ); } Loading @@ -64,27 +77,33 @@ class SearchEngineListBuilder extends ConfigEntityListBuilder { * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { $last_submitted = $this->state->get("simple_sitemap_engines.simple_sitemap_engine.{$entity->id()}.last_submitted", -1); /** @var \Drupal\simple_sitemap_engines\Entity\SearchEngine $entity */ $row['label'] = $entity->label(); $row['url'] = $entity->url; $row['variants'] = implode(', ', $entity->sitemap_variants); $row['last_submitted'] = $entity->last_submitted ? $this->dateFormatter->format($entity->last_submitted, 'short') $row['last_submitted'] = $last_submitted !== -1 ? $this->dateFormatter->format($last_submitted, 'short') : $this->t('Never'); return $row; } /** * Build the render array. */ public function render() { return ['simple_sitemap_engines' => [ return [ 'simple_sitemap_engines' => [ '#type' => 'details', '#open' => TRUE, '#prefix' => FormHelper::getDonationText(), '#title' => $this->t('Submission status'), 'table' => parent::render(), '#description' => $this->t('Submission settings can be configured <a href="@url">here</a>.', ['@url' => $GLOBALS['base_url'] . '/admin/config/search/simplesitemap/engines/settings']), ]]; ], ]; } }
modules/simple_sitemap_engines/src/Entity/SearchEngine.php +0 −7 Original line number Diff line number Diff line Loading @@ -63,13 +63,6 @@ class SearchEngine extends ConfigEntityBase { */ public $sitemap_variants; /** * Timestamp when the sitemap was last submitted to this search engine. * * @var int */ public $last_submitted; /** * Implements magic __toString() to simplify checkbox list building. * Loading