public function checkUpload(sfValidatorCallback $validator, $values, $parameters = null) { $filename = $values['filename']; $validator->addMessage('unique', 'A file with that name already exists in the destinated directory.'); $validator->addMessage('invalid', 'You are not allowed to move a directory into itself or one of its children.'); if ($values['directory'] === null) { return $values; } $parent = Doctrine::getTable('sfFilebaseDirectory')->find($values['directory']); if ($parent->getNode()->hasChildren()) { foreach ($parent->getNode()->getChildren() as $file) { if ($file !== $this->getObject() && $file->getFilename() == $filename) { throw new sfValidatorError($validator, 'unique'); } } } while (true) { if ($parent === $this->getObject()) { throw new sfValidatorError($validator, 'invalid'); } $parent = $parent->getNode()->getParent(); if (!$parent) { break; } } return $values; }
public function setup() { parent::setup(); unset($this['id']); unset($this['community_id']); unset($this['member_id']); unset($this['created_at']); unset($this['updated_at']); unset($this['event_updated_at']); $dateParam = array('culture' => sfContext::getInstance()->getUser()->getCulture(), 'month_format' => 'number'); $this->setWidget('name', new sfWidgetFormInput()); $this->setWidget('open_date', new opWidgetFormDate($dateParam)); $this->setWidget('application_deadline', new opWidgetFormDate(array_merge($dateParam, array('can_be_empty' => true)))); $this->setWidget('open_date_comment', new sfWidgetFormInput()); $this->setWidget('area', new sfWidgetFormInput()); $this->setValidator('name', new opValidatorString(array('rtrim' => true))); $this->setValidator('body', new opValidatorString(array('rtrim' => true))); $this->setValidator('area', new opValidatorString(array('rtrim' => true))); $this->setValidator('open_date_comment', new sfValidatorString(array('required' => false))); $this->setValidator('application_deadline', new sfValidatorDate(array('required' => false, 'min' => strtotime(date('Y-m-d'))), array('min' => sfContext::getInstance()->getI18N()->__('The date must be after now.')))); $validatorOpenDate = new sfValidatorCallback(array('callback' => array($this, 'validateOpenDate'))); $this->mergePostValidator($validatorOpenDate); $validatorApplicationDeadline = new sfValidatorCallback(array('callback' => array($this, 'validateApplicationDeadline'))); $validatorApplicationDeadline->addMessage('invalid_application_deadline', sfContext::getInstance()->getI18N()->__('The application deadline must be before the open date.')); $this->mergePostValidator($validatorApplicationDeadline); $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('community_event_form'); }
public function checkUpload(sfValidatorCallback $validator, $values, $parameters = null) { // disabled temporarily, perhaps this feature will be implemented in a better way return $values; $filename = ''; $validator->addMessage('unique', 'A file with that name already exists in the destinated directory.'); if ($this->isNew()) { if ($values['hash'] instanceof sfValidatedFile) { $filename = $values['hash']->getOriginalName(); } } else { $filename = $values['filename']; } if ($values['directory'] === null) { return $values; } $parent = Doctrine::getTable('sfFilebaseDirectory')->find($values['directory']); if ($parent->getNode()->hasChildren()) { foreach ($parent->getNode()->getChildren() as $file) { if ($file != $this->getObject() && $file->getFilename() == $filename) { throw new sfValidatorError($validator, 'unique'); } } } return $values; }
public function configure() { $this->setWidgets(array('id' => new sfWidgetFormInput())); $validatorCallback = new sfValidatorCallback(array('callback' => array($this, 'checkCommunityId'))); $validatorCallback->addMessage('already_default', 'This community is already the default.'); $validator = new sfValidatorAnd(array(new sfValidatorInteger(), $validatorCallback)); $this->setValidators(array('id' => $validator)); $this->widgetSchema->setNameFormat('community[%s]'); }
/** * DOCUMENT ME */ public function configure() { for ($i = 0; $i < aMediaTools::getOption('batch_max'); $i++) { $uploadImageForm = new aMediaUploadForm(); $this->embedForm("item-{$i}", $uploadImageForm); } $this->widgetSchema->setNameFormat('a_media_items[%s]'); $atLeastOne = new sfValidatorCallback(array('callback' => array($this, 'atLeastOne'))); $atLeastOne->addMessage('at_least_one', 'You must upload at least one item.'); $this->validatorSchema->setPostValidator($atLeastOne); $this->widgetSchema->setFormFormatterName('aAdmin'); $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('apostrophe'); }
public function setup() { parent::setup(); unset($this['id']); unset($this['community_id']); unset($this['member_id']); unset($this['created_at']); unset($this['updated_at']); unset($this['event_updated_at']); $dateParam = array('culture' => sfContext::getInstance()->getUser()->getCulture(), 'month_format' => 'number', 'can_be_empty' => true); $this->setWidget('name', new sfWidgetFormInput()); $this->setWidget('open_date', new opWidgetFormDate($dateParam)); $this->setWidget('application_deadline', new opWidgetFormDate($dateParam)); $this->setWidget('open_date_comment', new sfWidgetFormInput()); $this->setWidget('area', new sfWidgetFormInput()); $this->setValidator('name', new opValidatorString(array('rtrim' => true))); $this->setValidator('body', new opValidatorString(array('rtrim' => true))); $this->setValidator('area', new opValidatorString(array('rtrim' => true))); $this->setValidator('open_date_comment', new sfValidatorString(array('required' => false))); $this->setValidator('application_deadline', new sfValidatorDate(array('required' => false, 'min' => strtotime(date('Y-m-d'))), array('min' => 'The date must be after now.'))); $this->setValidator('capacity', new sfValidatorInteger(array('required' => false, 'max' => 2147483647, 'min' => 0), array('invalid' => 'Invalid.', 'max' => 'Invalid.', 'min' => 'Invalid.'))); $validatorOpenDate = new sfValidatorCallback(array('callback' => array($this, 'validateOpenDate'))); $this->mergePostValidator($validatorOpenDate); $validatorApplicationDeadline = new sfValidatorCallback(array('callback' => array($this, 'validateApplicationDeadline'))); $validatorApplicationDeadline->addMessage('invalid_application_deadline', 'The application deadline must be before the open date.'); $this->mergePostValidator($validatorApplicationDeadline); if (opMobileUserAgent::getInstance()->getMobile()->isNonMobile()) { $images = array(); if (!$this->isNew()) { $images = $this->getObject()->getImages(); } $max = (int) sfConfig::get('app_community_topic_max_image_file_num', 3); for ($i = 0; $i < $max; $i++) { $key = 'photo_' . ($i + 1); if (isset($images[$i])) { $image = $images[$i]; } else { $image = new CommunityEventImage(); $image->setCommunityEvent($this->getObject()); $image->setNumber($i + 1); } $imageForm = new opCommunityTopicPluginImageForm($image); $imageForm->getWidgetSchema()->setFormFormatterName('list'); $this->embedForm($key, $imageForm, '<ul id="community_event_' . $key . '">%content%</ul>'); } } $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('community_event_form'); }