<?php
/**
 * Ce script définit la classe 'autorisation_archive'.
 *
 * @package opencimetiere
 * @version SVN : $Id$
 */

require_once "../gen/obj/autorisation_archive.class.php";

/**
 * Définition de la classe 'autorisation_archive' (om_dbform).
 */
class autorisation_archive extends autorisation_archive_gen {

    /**
     * Définition des actions disponibles sur la classe.
     *
     * @return void
     */
    function init_class_actions() {
        parent::init_class_actions();
        // ACTION - 001 - modifier
        // -> modification impossible
        unset($this->class_actions[1]);
        // ACTION - 002 - supprimer
        // -> suppression impossible
        unset($this->class_actions[2]);
        // ACTION - 003 - consulter
        // Ajout de la vérification de collectivité
        $this->class_actions[3]['condition'][] = "is_user_from_allowed_collectivite";
    }

    /**
     * Retourne la collectivité de l'autorisation archivée.
     * 
     * Surcharge de la méthode parent pour récupérer la collectivité
     * via une jointure SQL avec l'emplacement archivé.
     *
     * @return int|null L'identifiant de la collectivité ou null
     */
    function get_collectivite() {
        // Si l'autorisation archivée n'existe pas, on retourne null
        if ($this->exists() !== true) {
            return null;
        }
        
        // Récupération de la collectivité via jointure avec emplacement_archive
        $sql = sprintf(
            "SELECT emplacement_archive.om_collectivite
            FROM %sautorisation_archive
            INNER JOIN %semplacement_archive ON autorisation_archive.emplacement = emplacement_archive.emplacement
            WHERE autorisation_archive.autorisation = %s",
            DB_PREFIXE,
            DB_PREFIXE,
            intval($this->getVal($this->clePrimaire))
        );
        
        $res = $this->f->db->getOne($sql);
        $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
        
        if ($this->f->isDatabaseError($res, true)) {
            return null;
        }
        
        return $res;
    }
}
