Beispiel #1
0
 /**
  * Fill form with default values. These default values are what you define in
  * this function and are different from Drupal's default values for the
  * fields.
  *
  * @param array $options
  *   An associative options array. It can have the following keys:
  *   (a) skip: An array of field names which are not to be filled.
  *   (b) required_fields_only: TRUE if only required fields are to be filled
  *   and FALSE if all fields are to be filled.
  *
  * @return Response
  *   Response object.
  */
 public function fillRandomValues($options = array())
 {
     $options += array('skip' => array(), 'required_fields_only' => TRUE);
     $response = parent::fillRandomValues($options);
     if (!$response->getSuccess()) {
         return $response;
     }
     $fields = $response->getVar();
     // @todo Check about field access.
     if ((!$options['required_fields_only'] || $this->isTitleRequired()) && !in_array('title', $options['skip'])) {
         // Check if the field is required. We use '#required' key in form array
         // since it can be set or unset using custom code.
         // Field is not required. There is no need to fill this field.
         // @todo Provide the ability to pass max_length in $options array.
         $response = $this->fillTitleRandomValues();
         if (!$response->getSuccess()) {
             $response->setVar($fields);
             return $response;
         }
         $fields['title'] = $response->getVar();
     }
     // @todo Check in $skip array.
     if ($this->hasFieldAccess(array('options', 'status')) && isset($options['status'])) {
         $status = NULL;
         switch ($options['status']) {
             case 'random':
                 $status = Utils::getRandomBool();
                 break;
             case 'published':
                 $status = 1;
                 break;
             case 'unpublished':
                 $status = 0;
                 break;
         }
         if (!is_null($status)) {
             $response = $this->fillStatusValues($status);
             if (!$response->getSuccess()) {
                 $response->setVar($fields);
                 return $response;
             }
             $fields['status'] = $status;
         }
     }
     // @todo Check in $skip array.
     if ($this->hasFieldAccess(array('revision_information', 'revision')) && isset($options['revision'])) {
         $revision = NULL;
         $revision_log = NULL;
         switch ($options['revision']) {
             case 'random':
                 $revision = Utils::getRandomBool();
                 break;
             case TRUE:
                 $revision = 1;
                 break;
             case FALSE:
                 $revision = 0;
                 break;
         }
         if (!is_null($revision)) {
             $response = $this->fillRevisionValues($revision);
             if (!$response->getSuccess()) {
                 $response->setVar($fields);
                 return $response;
             }
             $fields['revision'] = $revision;
             if ($revision && $this->hasFieldAccess(array('revision_information', 'log')) && isset($options['revision_log'])) {
                 switch ($options['revision_log']) {
                     case 'random':
                         $revision_log = Utils::getRandomBool() ? Utils::getRandomText(25) : NULL;
                         break;
                     case TRUE:
                         $revision_log = Utils::getRandomText(25);
                         break;
                     case FALSE:
                         $revision_log = '';
                         break;
                 }
                 if (!is_null($revision_log)) {
                     $response = $this->fillLogValues($revision_log);
                     if (!$response->getSuccess()) {
                         $response->setVar($fields);
                         return $response;
                     }
                     $fields['log'] = $revision_log;
                 }
             }
         }
     }
     // @todo Check $skip array.
     if ($this->hasFieldAccess(array('author', 'name')) && isset($options['change_author']) && $options['change_author']) {
         // We'll need to create new author first.
         // Masquerade as user 1.
         list($superAdmin, $originalUser, $originalState) = User::masquerade(1);
         $response = User::createRandom();
         // Return to original user.
         User::unmasquerade($originalUser, $originalState);
         if (!$response->getSuccess()) {
             $response->setVar($fields);
             return $response;
         }
         $userObject = $response->getVar();
         $name = $userObject->getNameValues();
         $this->fillNameValues($name);
         $fields['name'] = $name;
     }
     // @todo Check $skip array.
     if ($this->hasFieldAccess(array('author', 'date')) && isset($options['change_published_date']) && $options['change_published_date']) {
         $now = time();
         $start = isset($options['start_published_date']) ? Utils::formatDate($options['start_published_date'], 'integer') : $now - 3 * 365 * 24 * 60 * 60;
         $end = isset($options['end_published_date']) ? Utils::formatDate($options['end_published_date'], 'integer') : $now + 3 * 365 * 24 * 60 * 60;
         $date = Utils::getRandomDate('Y-m-d H:i:s', $start, $end);
         $response = $this->fillDateValues($date);
         if (!$response->getSuccess()) {
             $response->setVar($fields);
             return $response;
         }
         $fields['date'] = $date;
     }
     return new Response(TRUE, $fields, "");
 }
 /**
  * Create taxonomy terms before a new entity form is invoked.
  *
  * @param Form $formObject
  *   Form object.
  * @param string $field_name
  *   Field name.
  * @param array $options
  *   Options array. "references" key is used here.
  *
  * @return array
  *   An array with two values:
  *   (1) $success: Whether the function executed successfully.
  *   (2) $msg: A message if $success is FALSE.
  */
 public static function processBeforeCreateRandom(Form $formObject, $field_name, &$options)
 {
     $field_info = self::getFieldInfo($field_name);
     $vocabulary = $field_info['settings']['allowed_values'][0]['vocabulary'];
     $cardinality = $field_info['cardinality'];
     $num = 1;
     if ($cardinality == -1) {
         // -1 denotes that cardinality is unlimited.
         $num = 5;
     } else {
         $num = intval($cardinality);
     }
     // Check if $references has these terms already.
     $options += array('references' => array());
     $references =& $options['references'];
     if (isset($references['taxonomy_terms'][$vocabulary])) {
         if (sizeof($references['taxonomy_terms'][$vocabulary]) < $num) {
             $num -= sizeof($references['taxonomy_terms'][$vocabulary]);
         } else {
             $num = 0;
         }
     } else {
         $references['taxonomy_terms'][$vocabulary] = array();
     }
     if ($num) {
         $base_path = "RedTest\\entities\\TaxonomyTerm\\";
         $class = $base_path . Utils::makeTitleCase($vocabulary);
         // Masquerade as user 1 so that there is no access problem.
         list($superUserObject, $userObject, $old_state) = User::masquerade(1);
         $response = $class::createRandom($num);
         if (!$response->getSuccess()) {
             return new Response(FALSE, NULL, "Could not create terms of vocabulary {$vocabulary} attached to {$field_name}: " . $response->getMsg());
         }
         User::unmasquerade($userObject, $old_state);
         $termObjects = $response->getVar();
         if (is_object($termObjects)) {
             $termObjects = array($termObjects);
         }
         $references['taxonomy_terms'][$vocabulary] = array_merge($references['taxonomy_terms'][$vocabulary], $termObjects);
     }
     return new Response(TRUE, NULL, "");
 }