Namespace

Drupal\advagg\State

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

Title Deprecated Summary
State Provides AdvAgg State interfaces with a few extra commands.