/** * Entry point of the patch execution. */ public function execute() { // Update forms. $this->executeSQLQuery("create table m_form_doc_baseform select * from m_form_doc_form"); $this->executeSQLQuery("create table m_form_doc_baseform_i18n select * from m_form_doc_form_i18n"); $this->executeSQLQuery("RENAME TABLE `m_form_doc_form` TO `m_form_doc_form_todelete`;"); $this->executeSQLQuery("RENAME TABLE `m_form_doc_form_i18n` TO `m_form_doc_form_i18n_todelete`;"); $newPath = f_util_FileUtils::buildWebeditPath('modules/form/persistentdocument/mail.xml'); $newModel = generator_PersistentModel::loadModelFromString(f_util_FileUtils::read($newPath), 'form', 'mail'); $newProp = $newModel->getPropertyByName('acknowledgmentReceiver'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'mail', $newProp); $newPath = f_util_FileUtils::buildWebeditPath('modules/form/persistentdocument/form.xml'); $newModel = generator_PersistentModel::loadModelFromString(f_util_FileUtils::read($newPath), 'form', 'form'); $newProp = $newModel->getPropertyByName('saveResponse'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'baseform', $newProp); $newPath = f_util_FileUtils::buildWebeditPath('modules/form/persistentdocument/baseform.xml'); $newModel = generator_PersistentModel::loadModelFromString(f_util_FileUtils::read($newPath), 'form', 'baseform'); $newProp = $newModel->getPropertyByName('acknowledgment'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'baseform', $newProp); $newProp = $newModel->getPropertyByName('acknowledgmentNotification'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'baseform', $newProp); $this->execChangeCommand('compile-documents'); foreach (form_FormService::getInstance()->createQuery()->find() as $form) { $form->setSaveResponse(true); $form->save(); } // Update mail fields. $newPath = f_util_FileUtils::buildWebeditPath('modules/form/persistentdocument/mail.xml'); $newModel = generator_PersistentModel::loadModelFromString(f_util_FileUtils::read($newPath), 'form', 'mail'); $newProp = $newModel->getPropertyByName('initializeWithCurrentUserEmail'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'mail', $newProp); // Update text fields. $newPath = f_util_FileUtils::buildWebeditPath('modules/form/persistentdocument/text.xml'); $newModel = generator_PersistentModel::loadModelFromString(f_util_FileUtils::read($newPath), 'form', 'text'); $newProp = $newModel->getPropertyByName('disableAutocorrect'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'text', $newProp); $newProp = $newModel->getPropertyByName('disableAutocapitalize'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'text', $newProp); $newProp = $newModel->getPropertyByName('disableAutocomplete'); f_persistentdocument_PersistentProvider::getInstance()->addProperty('form', 'text', $newProp); foreach (form_MailService::getInstance()->createQuery()->find() as $field) { $field->setDisableAutocorrect(true); $field->setDisableAutocapitalize(true); $field->save(); } // Republish all forms. $bfs = form_BaseformService::getInstance(); foreach ($bfs->createQuery()->find() as $form) { $bfs->publishIfPossible($form->getId()); } // Create recipientGroupFolder and move all groups in it. $folder = form_RecipientGroupFolderService::getInstance()->getFolder(); $folderId = $folder->getId(); $rgs = form_RecipientGroupService::getInstance(); foreach ($rgs->createQuery()->find() as $group) { $rgs->moveTo($group, $folderId); } $this->executeLocalXmlScript('newlist.xml'); $this->log('If all went OK, you can delete m_form_doc_form_todelete and m_form_doc_form_i18n_todelete tables!'); }
public function _execute($context, $request) { $form = $request->getAttribute('form'); $this->setAttribute('form', $form); $domDoc = new DOMDocument(); $fieldNames = array('creationdate' => f_Locale::translate('&modules.form.bo.actions.SendDate;')); $query = f_persistentdocument_PersistentProvider::getInstance()->createQuery('modules_form/response')->add(Restrictions::eq('parentForm.id', $form->getId()))->addOrder(Order::desc('document_creationdate')); if ($request->getAttribute('all') != 'all') { $query->add(Restrictions::published()); } $responses = $query->find(); $responsesAttribute = array(); foreach ($responses as $response) { $domDoc->loadXML($response->getContents()); $xpath = new DOMXPath($domDoc); $fieldList = $xpath->query('/response/field'); $fields = array('creationdate' => $response->getUICreationdate()); for ($i = 0; $i < $fieldList->length; $i++) { $fieldNode = $fieldList->item($i); $fieldName = $fieldNode->getAttribute('name'); $fieldLabel = $fieldNode->getAttribute('label'); $fieldType = $fieldNode->getAttribute('type'); $fieldValue = $fieldNode->nodeValue; if ($fieldType == 'file') { $fieldValue = intval($fieldNode->nodeValue); if ($fieldValue > 0) { $fieldValue = MediaHelper::getUrl($fieldValue); } else { $fieldValue = ''; } } else { if ($fieldType == 'list' && $fieldNode->hasAttribute('mailValue')) { $fieldValue = $fieldNode->getAttribute('mailValue'); } } if (!isset($fieldNames[$fieldName])) { $fieldNames[$fieldName] = $fieldLabel; } $fields[$fieldName] = $fieldValue; } $responsesAttribute[] = $fields; } $fileName = "export_formulaire_" . f_util_FileUtils::cleanFilename($form->getLabel()) . '_' . date('Ymd_His') . '.csv'; $options = new f_util_CSVUtils_export_options(); $options->separator = ";"; $csv = f_util_CSVUtils::export($fieldNames, $responsesAttribute, $options); header("Content-type: text/comma-separated-values"); header('Content-length: ' . strlen($csv)); header('Content-disposition: attachment; filename="' . $fileName . '"'); echo $csv; exit; }
/** * @param form_persistentdocument_file $field * @param block_BlockRequest $request * @param validation_Errors $errors * @return void */ public function validate($field, $request, &$errors) { $fileInfo = $request->getUploadedFileInformation($field->getFieldName()); $errCount = $errors->count(); if ($field->getRequired() || !empty($fileInfo['name'])) { if ($field->getRequired()) { validation_ValidatorHelper::validate(new validation_Property($field->getLabel(), $fileInfo['name']), 'blank:false', $errors); } if ($errors->count() == $errCount) { $ext = strtolower(f_util_FileUtils::getFileExtension($fileInfo['name'])); if ($field->getAllowedExtensions()) { $allowedExt = explode(",", $field->getAllowedExtensions()); if (!empty($allowedExt) && !in_array($ext, $allowedExt)) { $errors->append(f_Locale::translate('&modules.form.frontoffice.File-must-have-one-of-these-extensions;', array('file' => $field->getLabel(), 'extensions' => join(", ", $allowedExt)))); } } } } }
/** * @param String $code * @return gotcha_GotchaPng */ protected function generate($code) { $img = new gotcha_GotchaPng($this->width, $this->height); if ($img->create()) { //fill the background color. $img->apply(new gotcha_GradientEffect()); //Apply the Grid. $img->apply(new gotcha_GridEffect(2)); $img->apply(new gotcha_LineEffect()); //Add the text. $t = new gotcha_TextEffect($code, $this->fontSize, $this->fontDepth); $t->addFont(f_util_FileUtils::buildAbsolutePath(FRAMEWORK_HOME, 'libs', 'gotcha', 'SFTransRoboticsExtended.ttf')); $t->addFont(f_util_FileUtils::buildAbsolutePath(FRAMEWORK_HOME, 'libs', 'gotcha', 'arialbd.ttf')); $t->addFont(f_util_FileUtils::buildAbsolutePath(FRAMEWORK_HOME, 'libs', 'gotcha', 'comic.ttf')); $t->addFont(f_util_FileUtils::buildAbsolutePath(FRAMEWORK_HOME, 'libs', 'gotcha', 'britanic.ttf')); // repeat the process for as much fonts as you want. Actually, the more the better. // A font type will be randomly selected for each character in the text code. $img->apply($t); //Add more dots $img->apply(new gotcha_DotEffect()); return $img; } throw new Exception("Could not generate CAPTCHA image."); }