KataoPeriodForm.class.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * KataoPeriod form.
  4. *
  5. * @package katao
  6. * @subpackage form
  7. * @author Your name here
  8. * @version SVN: $Id: sfPropelFormTemplate.php 10377 2008-07-21 07:10:32Z dwhittle $
  9. */
  10. class KataoPeriodForm extends BaseKataoPeriodForm {
  11. public function configure() {
  12. unset($this->validatorSchema['status'], $this->validatorSchema['created_at'], $this->validatorSchema['updated_at']);
  13. unset($this->widgetSchema['status'], $this->widgetSchema['created_at'], $this->widgetSchema['updated_at']);
  14. $this->widgetSchema['begin_at'] = new wpWidgetFormRichDate();
  15. $this->validatorSchema['begin_at'] = new sfValidatorDateTime(array('date_format' => '@(?P<day>\d{2}).(?P<month>\d{2}).(?P<year>\d{4})@'));
  16. $this->widgetSchema['finish_at'] = new wpWidgetFormRichDate();
  17. $this->validatorSchema['finish_at'] = new sfValidatorDateTime(array('date_format' => '@(?P<day>\d{2}).(?P<month>\d{2}).(?P<year>\d{4})@'));
  18. $this->widgetSchema['order_ended_at'] = new wpWidgetFormRichDate();
  19. $this->validatorSchema['order_ended_at'] = new sfValidatorDateTime(array('date_format' => '@(?P<day>\d{2}).(?P<month>\d{2}).(?P<year>\d{4})@'));
  20. $this->widgetSchema->setLabels(array(
  21. 'name' => 'Nom',
  22. 'begin_at' => 'Date de début',
  23. 'finish_at' => 'Date de fin',
  24. 'order_ended_at' => 'Date de limite demandes',
  25. ));
  26. $this->validatorSchema->setPostValidator(new sfValidatorCallback(array('callback' => array($this, 'checkConflictedPeriodDates')), array('invalid' => 'Une période a des dates similaires.')));
  27. }
  28. public function checkConflictedPeriodDates($validator, $value) {
  29. $sf_request = sfContext::getInstance()->getRequest();
  30. $sf_user = sfContext::getInstance()->getUser();
  31. $sf_i18n = sfContext::getInstance()->getI18N();
  32. $id = $sf_request->getParameter('katao_period[id]');
  33. $finish_at = $sf_request->getParameter('katao_period[finish_at]');
  34. list($d, $m, $y) = $sf_i18n->getDateForCulture($sf_request->getParameter('katao_period[begin_at]'), $sf_user->getCulture());
  35. $begin_at = mktime(0, 0, 0, $m, $d, $y);
  36. list($d, $m, $y) = $sf_i18n->getDateForCulture($sf_request->getParameter('katao_period[finish_at]'), $sf_user->getCulture());
  37. $finish_at = mktime(0, 0, 0, $m, $d, $y);
  38. if (KataoPeriodPeer::hasConflictedPeriodDates($begin_at, $finish_at, $id)) {
  39. throw new sfValidatorError($validator, 'invalid');
  40. }
  41. return $value;
  42. }
  43. protected function doSave($con = null) {
  44. $return = parent::doSave($con);
  45. $this->getObject()->updateAvailableProducts(!empty($_POST['suppliers_with_all_products'])?$_POST['suppliers_with_all_products']:'', !empty($_POST['products'])?$_POST['products']:array(), $con = null);
  46. return $return;
  47. }
  48. }