Overview
Comment:Corrige installation des champs
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | stable
Files: files | file ages | folders
SHA1: 14f1be0c3967dd997dc2c64c9ca949a6968c8822
User & Date: bohwaz on 2018-02-21 07:48:07
Other Links: manifest | tags
Context
2018-03-12
05:16
Ajout de la config vhost en commentaire, cf. [571c5487217aaf65e27c4083f96a6f5b927b9392] check-in: 6539b98f9e user: bohwaz tags: trunk
2018-02-21
07:48
Corrige installation des champs check-in: 14f1be0c39 user: bohwaz tags: trunk, stable
04:56
Ne pas inclure les reports dans le rapprochement, signalé par @Alain check-in: c86a781f5e user: bohwaz tags: trunk, stable
Changes

Modified src/include/lib/Garradin/Membres/Champs.php from [c81852e57e] to [a1cbfdd70c].

    61     61           return Utils::write_ini_string($this->champs);
    62     62       }
    63     63   
    64     64   	static public function importInstall()
    65     65   	{
    66     66   		$champs = parse_ini_file(\Garradin\ROOT . '/include/data/champs_membres.ini', true);
    67     67           $champs = array_filter($champs, function ($row) { return !empty($row['install']); });
    68         -        return new \Garradin\Membres\Champs($champs);
           68  +        return new \Garradin\Membres\Champs($champs, true);
    69     69   	}
    70     70   
    71     71       static public function importPresets()
    72     72       {
    73     73           if (is_null(self::$presets))
    74     74           {
    75     75               self::$presets = parse_ini_file(\Garradin\ROOT . '/include/data/champs_membres.ini', true);
................................................................................
    79     79       }
    80     80   
    81     81       static public function listUnusedPresets(Champs $champs)
    82     82       {
    83     83           return array_diff_key(self::importPresets(), (array) $champs->getAll());
    84     84       }
    85     85   
    86         -	public function __construct($champs)
           86  +	public function __construct($champs, $initial_setup = false)
    87     87   	{
    88     88   		if ($champs instanceOf Champs)
    89     89   		{
    90     90   			$this->champs = $champs->getAll();
    91     91   		}
    92     92           elseif (is_array($champs))
    93     93           {
    94         -            $this->setAll($champs);
           94  +            $this->setAll($champs, $initial_setup);
    95     95           }
    96     96   		else
    97     97   		{
    98     98   			$champs = parse_ini_string((string)$champs, true);
    99     99   
   100    100               foreach ($champs as $key=>&$config)
   101    101               {
................................................................................
   416    416   	}
   417    417   
   418    418       /**
   419    419        * Modifie les champs en interne en vérifiant que tout va bien
   420    420        * @param array $champs Liste des champs
   421    421        * @return boolean true
   422    422        */
   423         -    public function setAll(array $champs)
          423  +    public function setAll($champs, $initial_setup = false)
   424    424       {
   425    425           $presets = self::importPresets();
   426         -        $this->champs = new \stdClass;
          426  +        $champs = (object) $champs;
   427    427   
   428         -        if (!isset($champs['passe']))
          428  +        if (!isset($champs->passe))
   429    429           {
   430         -            $champs['passe'] = ['type' => 'password'];
          430  +            $champs->passe = (object) ['type' => 'password'];
   431    431           }
   432    432   
   433    433           foreach ($champs as $key=>&$config)
   434    434           {
   435    435               if (is_array($config))
   436    436               {
   437    437                   $config = (object) $config;
................................................................................
   439    439   
   440    440               if (isset($presets[$key]))
   441    441               {
   442    442                   $config->type = $presets[$key]['type'];
   443    443               }
   444    444   
   445    445               $this->_checkField($key, $config);
   446         -
   447         -            $this->champs->$key = $config;
   448    446           }
   449    447   
   450    448           unset($config);
          449  +
          450  +        if ($initial_setup)
          451  +        {
          452  +            $this->champs = $champs;
          453  +            return true;
          454  +        }
   451    455   
   452    456           if (!array_key_exists('email', $champs))
   453    457           {
   454    458               throw new UserException('Le champ E-Mail ne peut être supprimé des fiches membres.');
   455    459           }
   456    460   
   457    461           if (!array_key_exists('passe', $champs))
................................................................................
   478    482   
   479    483           if ($identifiant != 'id' && !array_key_exists($identifiant, $champs))
   480    484           {
   481    485               throw new UserException('Le champ '.$config->get('champ_identifiant')
   482    486                   .' est défini comme identifiant à la connexion et ne peut donc être supprimé des fiches membres.');
   483    487           }
   484    488   
   485         -        foreach ($champs as $name=>&$config)
   486         -        {
   487         -            $config = (object) $config;
   488         -            $this->_checkField($name, $config);
   489         -        }
   490         -
   491    489           $this->champs = $champs;
   492    490   
   493    491           return true;
   494    492       }
   495    493   
   496    494       /**
   497    495        * Enregistre les changements de champs en base de données