<commit_before><?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of DRMProduitsChoiceForm
 *
 * @author mathurin
 */
class DRMProduitsChoiceForm extends acCouchdbObjectForm {

    private $_drm = null;
    private $_produits = null;
    private $all_checked = true;

    public function __construct(acCouchdbJson $object, $options = array(), $CSRFSecret = null) {
        $this->_drm = $object;
        $this->_produits = $this->_drm->declaration->getProduitsDetails(true, DRM::DETAILS_KEY_SUSPENDU);
        parent::__construct($this->_drm, $options, $CSRFSecret);
    }

    public function configure() {
        foreach ($this->_produits as $produit) {
            $this->setWidget('produit' . $produit->getHashForKey(), new sfWidgetFormInputCheckbox(array('value_attribute_value' => '1', 'default' => true)));
            $this->setWidget('acquitte' . $produit->getHashForKey(), new sfWidgetFormInputCheckbox(array('value_attribute_value' => '1', 'default' => false)));

            $this->widgetSchema->setLabel('produit' . $produit->getHashForKey(), '');
            $this->widgetSchema->setLabel('acquitte' . $produit->getHashForKey(), '');

            $this->setValidator('produit' . $produit->getHashForKey(), new sfValidatorString(array('required' => false)));
            $this->setValidator('acquitte' . $produit->getHashForKey(), new sfValidatorString(array('required' => false)));
        }

        $this->widgetSchema->setNameFormat('produitsChoice[%s]');
    }

    protected function doUpdateObject($values) {
        foreach ($values as $key => $value) {
            $matches = array();
            if (preg_match('/^produit(.*)/', $key, $matches)) {
                $key = str_replace('-', '/', $matches[1]);
                $this->_drm->get($key)->getCepage()->add('no_movements', ! $value);
                $this->_drm->etape = DRMClient::ETAPE_SAISIE;
                
            }
            if (preg_match('/^acquitte(.*)/', $key, $matches)) {
                if ($value) {
                	$key = str_replace('-', '/', $matches[1]);
                	$this->_drm->addProduit($this->_drm->get($key)->getCepage()->getHash(), DRM::DETAILS_KEY_ACQUITTE, array());
                }
                
            }
        }
        $this->_drm->save();
    }

    public function updateDefaultsFromObject() {
        $this->all_checked = true;
        parent::updateDefaultsFromObject();
        foreach ($this->_produits as $produit) {
            if ($produit->getCepage()->exist('no_movements') && $produit->getCepage()->no_movements) {
                $this->setDefault('produit' . $produit->getHashForKey(), false);
                $this->all_checked = false;
            }
            if ($produit->getCepage()->exist(DRM::DETAILS_KEY_ACQUITTE)) {
            	exit;
                $this->setDefault('acquitte' . $produit->getHashForKey(), true);
            }
        }
    }
    
    public function isAllChecked() {
        return $this->all_checked;
    }

}<commit_msg>Fignolage choix produits en integrant la notion acquitte<commit_after><?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of DRMProduitsChoiceForm
 *
 * @author mathurin
 */
class DRMProduitsChoiceForm extends acCouchdbObjectForm {

    private $_drm = null;
    private $_produits = null;
    private $all_checked = true;

    public function __construct(acCouchdbJson $object, $options = array(), $CSRFSecret = null) {
        $this->_drm = $object;
        $this->_produits = $this->_drm->declaration->getProduitsDetails(true, DRM::DETAILS_KEY_SUSPENDU);
        parent::__construct($this->_drm, $options, $CSRFSecret);
    }

    public function configure() {
        foreach ($this->_produits as $produit) {
            $this->setWidget('produit' . $produit->getHashForKey(), new sfWidgetFormInputCheckbox(array('value_attribute_value' => '1', 'default' => true)));
            $this->setWidget('acquitte' . $produit->getHashForKey(), new sfWidgetFormInputCheckbox(array('value_attribute_value' => '1', 'default' => false)));

            $this->widgetSchema->setLabel('produit' . $produit->getHashForKey(), '');
            $this->widgetSchema->setLabel('acquitte' . $produit->getHashForKey(), '');

            $this->setValidator('produit' . $produit->getHashForKey(), new sfValidatorString(array('required' => false)));
            $this->setValidator('acquitte' . $produit->getHashForKey(), new sfValidatorString(array('required' => false)));
        }

        $this->widgetSchema->setNameFormat('produitsChoice[%s]');
    }

    protected function doUpdateObject($values) {
        foreach ($values as $key => $value) {
            $matches = array();
            if (preg_match('/^produit(.*)/', $key, $matches)) {
                $key = str_replace('-', '/', $matches[1]);
                $this->_drm->get($key)->getCepage()->add('no_movements', ! $value);
                $this->_drm->etape = DRMClient::ETAPE_SAISIE;
                
            }
            if (preg_match('/^acquitte(.*)/', $key, $matches)) {
                $key = str_replace('-', '/', $matches[1]);
                if ($value) {
                	$this->_drm->addProduit($this->_drm->get($key)->getCepage()->getHash(), DRM::DETAILS_KEY_ACQUITTE, array());
                } else {
                	if ($this->_drm->get($key)->getCepage()->exist(DRM::DETAILS_KEY_ACQUITTE)) {
                		$this->_drm->get($key)->getCepage()->remove(DRM::DETAILS_KEY_ACQUITTE);
                	}
                }
                
            }
        }
        $this->_drm->save();
    }

    public function updateDefaultsFromObject() {
        $this->all_checked = true;
        parent::updateDefaultsFromObject();
        foreach ($this->_produits as $produit) {
            if ($produit->getCepage()->exist('no_movements') && $produit->getCepage()->no_movements) {
                $this->setDefault('produit' . $produit->getHashForKey(), false);
                $this->all_checked = false;
            }
            if ($produit->getCepage()->exist(DRM::DETAILS_KEY_ACQUITTE)) {
                $this->setDefault('acquitte' . $produit->getHashForKey(), true);
            }
        }
    }
    
    public function isAllChecked() {
        return $this->all_checked;
    }

}
{'fraction_non_alphanumeric': 0.16497037824699984, 'fraction_numerical': 0.0012152514051344372, 'mean_word_length': 2.5685636856368563, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 127, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2636566', 'n_tokens_mistral': 2009, 'n_tokens_neox': 1945, 'n_words': 330}