You are here

State.php in Advanced CSS/JS Aggregation 8.2

File

src/State/State.php
View source
<?php

namespace Drupal\advagg\State;

use Drupal\Core\State\State as CoreState;

/**
 * Provides AdvAgg State interfaces with a few extra commands.
 */
abstract class State extends CoreState {

  /**
   * If the array isn't keyed by filepath the column the filepath is stored in.
   */
  protected $pathColumn = NULL;

  /**
   * Gets all stored information from this Key Value Store.
   *
   * @return array
   *   An array of all key value pairs.
   */
  public function getAll() {
    $values = $this->keyValueStore
      ->getAll();
    return $values;
  }

  /**
   * Delete all stored information from this Key Value Store.
   */
  public function deleteAll() {
    $this->keyValueStore
      ->deleteAll();
  }

  /**
   * Get a semi-random (randomness not guaranteed) key.
   */
  public function getRandomKey() {
    $key = array_rand($this
      ->getAll());
    return $key;
  }

  /**
   * Get a semi-random (randomness not guaranteed) value.
   */
  public function getRandom() {
    return $this
      ->get($this
      ->getRandomKey());
  }

  /**
   * Scan the filesystem for missing files and removee from database.
   */
  public function clearMissingFiles() {
    $removed = [];
    $values = $this
      ->getAll();
    if (empty($values)) {
      return $removed;
    }
    if ($this->pathColumn) {
      $values = array_column($values, NULL, $this->pathColumn);
    }
    foreach ($values as $path => $details) {
      if (!file_exists($path)) {
        $removed[$path] = $values[$path];
        $this
          ->delete($path);
      }
    }
    return $removed;
  }

}

Classes

Namesort descending Description
State Provides AdvAgg State interfaces with a few extra commands.