public function __construct($name, $configuration = null) { if (empty($name)) { throw new InvalidArgumentException('`$name`cannot be empty'); } $this->name = $name; $this->home_automation_controller = BaseHomeAutomationController::create($this->name, $configuration); parent::__construct(); }
public function executeUpdate(sfWebRequest $request) { $this->forward404Unless($request->isMethod('post')); $post_parameters = $request->getParameter('configuration'); $this->nb_controller = intval($post_parameters['number_of_physical_access']); $this->nb_home_automation = intval($post_parameters['number_of_home_automation']); $this->physical_access_controllers = BasePhysicalAccessController::getControllers(); $this->home_automation_controllers = BaseHomeAutomationController::getControllers(); $this->form = new ConfigurationForm(null, array('nb_pac' => $this->nb_controller, 'nb_hac' => $this->nb_home_automation)); if ($this->nb_controller > $this->form->getMaxControllers()) { $this->nb_controller = $this->form->getMaxControllers(); } if ($this->nb_home_automation > $this->form->getMaxHomeAutomation()) { $this->nb_home_automation = $this->form->getMaxHomeAutomation(); } // Gestion des contrôleurs d'accès supplémentaires et de leurs valeurs par défaut (si l'on augmente le nombre de contrôleurs d'accès) for ($i = 1; $i <= $this->nb_controller; $i++) { if (!isset($post_parameters['physical_access_controller' . $i])) { foreach ($this->physical_access_controllers as $pac => $name) { $controller = BasePhysicalAccessController::create($pac); $post_parameters[$pac . $i] = $controller->getDefaultValues(); // On modifie le nom identifiant par défaut et on y ajoute i $post_parameters[$pac . $i]['controller_name'] = $controller->getName() . $i; } } } // Gestion des contrôleurs domotiques supplémentaires et de leurs valeurs par défaut (si l'on augmente le nombre de contrôleurs domotiques) for ($i = 1; $i <= $this->nb_home_automation; $i++) { if (!isset($post_parameters['home_automation_controller' . $i])) { foreach ($this->home_automation_controllers as $hac => $name) { $controller = BaseHomeAutomationController::create($hac); $post_parameters[$hac . $i] = $controller->getDefaultValues(); // On modifie le nom identifiant par défaut et on y ajoute i $post_parameters[$hac . $i]['controller_name'] = $controller->getName() . $i; } } } // Gestion des contrôleurs d'accès en trop (si l'on réduit le nombre de contrôleurs d'accès) for ($i = $this->nb_controller + 1; $i <= $this->form->getMaxControllers(); $i++) { if (isset($post_parameters['physical_access_controller' . $i])) { unset($post_parameters['physical_access_controller' . $i]); foreach ($this->physical_access_controllers as $pac => $name) { unset($post_parameters[$pac . $i]); } } } // Gestion des contrôleurs domotiques en trop (si l'on réduit le nombre de contrôleurs domotiques) for ($i = $this->nb_home_automation + 1; $i <= $this->form->getMaxHomeAutomation(); $i++) { if (isset($post_parameters['home_automation_controller' . $i])) { unset($post_parameters['home_automation_controller' . $i]); foreach ($this->home_automation_controllers as $hac => $name) { unset($post_parameters[$hac . $i]); } } } $this->form->bind($post_parameters, $request->getFiles($this->form->getName())); if ($this->form->isValid()) { $isout = false; // Modifie les noms de chaque profil d'accès si un nom identifiant change et vérifie que chaque nom est unique if (!empty($this->physical_access_controllers)) { for ($i = 1; $i <= $this->nb_controller; $i++) { foreach ($this->physical_access_controllers as $key => $value) { $roomprofiles = array(); $controller_name = $key . $i; // print '<br/>------------------------------<br/>'.$controller_name.'<br />'; $params = $post_parameters[$controller_name]; $exname = ConfigurationHelper::getParameter($controller_name, 'controller_name'); $newname = $params['controller_name']; // print 'ex-new : '.$exname.' - '.$newname.'<br />'; if ($exname != $newname) { $roomprofiles = RoomprofilePeer::setAllNewIdentifierName($exname, $newname); } $this->checkError = ConfigurationHelper::checkControllersIdentifierName($controller_name, $newname, $this->nb_controller); if (!$this->checkError['valid']) { $isout = true; break; } if (isset($roomprofiles)) { if (!empty($roomprofiles)) { foreach ($roomprofiles as $roomprofile) { $roomprofile->save(); } } } } if ($isout) { break; } } } // Modifie les noms de chaque contrôleur domotique si un nom identifiant change et vérifie que chaque nom est unique if (!empty($this->home_automation_controllers) && !$isout) { for ($i = 1; $i <= $this->nb_home_automation; $i++) { foreach ($this->home_automation_controllers as $key => $value) { $energyactions = array(); $controller_name = $key . $i; // print '<br/>------------------------------<br/>'.$controller_name.'<br />'; $params = $post_parameters[$controller_name]; $exname = ConfigurationHelper::getParameter($controller_name, 'controller_name'); $newname = $params['controller_name']; // print 'ex-new : '.$exname.' - '.$newname.'<br />'; if ($exname != $newname) { $energyactions = EnergyactionPeer::setAllNewIdentifierName($exname, $newname); } $this->checkError = ConfigurationHelper::checkAutomationsIdentifierName($controller_name, $newname, $this->nb_home_automation); if (!$this->checkError['valid']) { $isout = true; break; } if (isset($energyactions)) { if (!empty($energyactions)) { foreach ($energyactions as $energyaction) { $energyaction->save(); } } } } if ($isout) { break; } } } if (!$isout) { $this->form->save(); $this->saved = true; } else { $this->saved = false; } } else { $this->saved = false; } $this->setTemplate('home'); }
public function configure() { $physical_access_controllers = BasePhysicalAccessController::getControllers(); $home_automation_controllers = BaseHomeAutomationController::getControllers(); $this->widgetSchema['number_of_physical_access'] = new sfWidgetFormInput(); $this->validatorSchema['number_of_physical_access'] = new sfValidatorInteger(array('min' => 0, 'max' => $this->max_controllers, 'required' => true)); $this->widgetSchema->setLabel('number_of_physical_access', 'Number of physical access controllers'); if (!is_null($this->getOption('nb_pac'))) { $nb_pac = $this->getOption('nb_pac'); } else { $nb_pac = ConfigurationHelper::getParameter(null, 'number_of_physical_access'); } if ($nb_pac > $this->max_controllers) { $nb_pac = $this->max_controllers; } if (count($physical_access_controllers) > 0) { for ($i = 1; $i <= $nb_pac; $i++) { $this->widgetSchema['physical_access_controller' . $i] = new sfWidgetFormChoice(array('choices' => $physical_access_controllers)); $this->validatorSchema['physical_access_controller' . $i] = new sfValidatorChoice(array('choices' => array_keys($physical_access_controllers), 'required' => false)); $this->widgetSchema->setLabel('physical_access_controller' . $i, 'Physical Access Controller'); foreach ($physical_access_controllers as $physical_access_controller => $name) { $form = PhysicalAccessControllerConfigurationForm::create($physical_access_controller, null); $labelName = $form->getPhysicalAccessController()->getName() . $i; $this->embedForm($labelName, $form); $this->widgetSchema->setLabel($labelName, $name); } } } $this->widgetSchema['number_of_home_automation'] = new sfWidgetFormInput(); $this->validatorSchema['number_of_home_automation'] = new sfValidatorInteger(array('min' => 0, 'max' => $this->max_home_automation, 'required' => true)); $this->widgetSchema->setLabel('number_of_home_automation', 'Number of home automation controllers'); if (!is_null($this->getOption('nb_hac'))) { $nb_hac = $this->getOption('nb_hac'); } else { $nb_hac = ConfigurationHelper::getParameter(null, 'number_of_home_automation'); } if ($nb_hac > $this->max_home_automation) { $nb_hac = $this->max_home_automation; } if (count($home_automation_controllers) > 0) { for ($i = 1; $i <= $nb_hac; $i++) { $this->widgetSchema['home_automation_controller' . $i] = new sfWidgetFormChoice(array('choices' => $home_automation_controllers)); $this->validatorSchema['home_automation_controller' . $i] = new sfValidatorChoice(array('choices' => array_keys($home_automation_controllers), 'required' => false)); $this->widgetSchema->setLabel('home_automation_controller' . $i, 'Home automation controller'); foreach ($home_automation_controllers as $home_automation_controller => $name) { $form = HomeAutomationControllerConfigurationForm::create($home_automation_controller, null); $labelName = $form->getHomeAutomationController()->getName() . $i; $this->embedForm($labelName, $form); $this->widgetSchema->setLabel($labelName, $name); } } } $this->addSubConfigurationForm('Network', 'Network'); $this->addSubConfigurationForm('Email', 'Email'); $this->addSubConfigurationForm('General', 'General'); $this->addSubConfigurationForm('Rename', 'Rename'); $this->addSubConfigurationForm('Backup', 'Backup'); $this->addSubConfigurationForm('Print', 'Print'); $this->setDefault('number_of_physical_access', 1); $this->setDefault('number_of_home_automation', 1); $this->setDefaults(ConfigurationHelper::get()); $this->widgetSchema->setNameFormat('configuration[%s]'); $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); }
private static function findHac($action) { $action_controllername = $action->getConfiguredControllerName(); $hac_infos = BaseHomeAutomationController::findHacFromNameIdentifier($action_controllername); // var_dump($action_controllername); if (is_null($hac_infos)) { return null; } $hac_name = $hac_infos['name']; // print 'hac_name: '; // var_dump($hac_name); $hac_id = $hac_infos['id']; // print 'hac_id: '; // var_dump($hac_id); $hac_selec = ConfigurationHelper::getParameter(null, $hac_name); // print 'hac_selec: '; // var_dump($hac_selec); $hac_conf = ConfigurationHelper::getNamespace($hac_selec . $hac_id); // print 'hac_conf: '; // var_dump($hac_conf); // var_dump($hac_infos); $hac = BaseHomeAutomationController::create($hac_selec, $hac_conf); // var_dump($hac); return $hac; }
public static function checkAutomationsIdentifierName($controller, $name, $nb_controller) { $controllers = BaseHomeAutomationController::getControllers(); $results = array(); if (!empty($controllers)) { for ($i = 1; $i <= $nb_controller; $i++) { foreach ($controllers as $key => $value) { $c_name = $key . $i; // print '<br /> ====> '.$c_name.' : '; $i_name = self::getParameter($c_name, 'controller_name'); // print $i_name.'<br />'; // print '<br /> SI '.$name.' == '.$i_name.' ET SI '.$c_name.' != '.$controller.'<br /><br />'; if ($name == $i_name && $c_name != $controller) { // print '<br /> ERREUR : NOM RETROUVE <br/>'; $results['valid'] = false; $results['cname1'] = $c_name; $results['cname2'] = $controller; return $results; } } } } // print '<br/> OK : NOM DISPO <br/>'; $results['valid'] = true; return $results; }