Ejemplo n.º 1
0
 /**
  * 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.");
 }