47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\config;
 | 
						|
 | 
						|
use nur\A;
 | 
						|
use nur\session;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class SessionConfig: configuration stockée dans la session
 | 
						|
 *
 | 
						|
 * si la session n'est pas démarrée, cette classe est fonctionnellement comme
 | 
						|
 * {@link ArrayConfig} (i.e la session n'est pas démarrée automatiquement)
 | 
						|
 */
 | 
						|
class SessionConfig extends DynConfig {
 | 
						|
  /** @var array */
 | 
						|
  protected $config;
 | 
						|
 | 
						|
  function has(string $pkey, string $profile): bool {
 | 
						|
    $this->updateSession();
 | 
						|
    if (session::started()) return session::phas("config:$profile:$pkey");
 | 
						|
    else return A::phas_s($this->config, "$profile.$pkey");
 | 
						|
  }
 | 
						|
 | 
						|
  function get(string $pkey, string $profile) {
 | 
						|
    $this->updateSession();
 | 
						|
    if (session::started()) return session::pget("config:$profile:$pkey");
 | 
						|
    else return A::pget_s($this->config, "$profile.$pkey");
 | 
						|
  }
 | 
						|
 | 
						|
  function set(string $pkey, $value, string $profile): void {
 | 
						|
    $this->updateSession();
 | 
						|
    if (session::started()) session::pset("config:$profile:$pkey", $value);
 | 
						|
    else A::pset_s($this->config, "$profile.$pkey", $value);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * si la session est démarrée et que des valeurs avaient déjà été inscrites
 | 
						|
   * dans cet objet, alors mettre à jour la session en conséquence.
 | 
						|
   */
 | 
						|
  function updateSession() {
 | 
						|
    if (!session::started()) return;
 | 
						|
    $config = $this->config;
 | 
						|
    if ($config === null) return;
 | 
						|
    #XXX mettre à jour la session à partir de $config
 | 
						|
    $this->config = null;
 | 
						|
  }
 | 
						|
}
 |