[support] loops?

MichelleX michelle at steelveils.com
Sun Dec 3 13:35:05 UTC 2006


Well thank you. I've made note of that one too.
But actually.. and I feel like an idiot now... after playing around with 
CCK a bit more, I've decided to scrap the
whole email idea. This method will make registration authorization a lot 
easier.
I sincerely appreciate your input, thank you.

Michelle



Larry Garfield wrote:
> Also have a look at the Send module, I think it's called.  It's a more robust 
> emailing system that a lot of other stuff is built off of.  I've not used it, 
> but it could be useful.
>
> On Saturday 02 December 2006 07:40, MichelleX wrote:
>   
>> Hi Larry - Thanks for the input. I think I got ya.
>> I'll certainly look into Webform - anything other than this method is
>> more than welcome, as long as it can do file attachments to the email.
>>
>> Thanks again!
>> Michelle
>>
>> Larry Garfield wrote:
>>     
>>> First of all, the data structure for the select is not a simple array. 
>>> It's an associative array.  The key is the value that gets submitted by
>>> the form while the value for each key is the label to display.  The
>>> actual renderer for the form does something like this:
>>>
>>> foreach ($options as $key => $value) {
>>>   print "<option value='$key'>$value</option>\m";
>>> }
>>>
>>> (That's NOT the actual Drupal code, but that's the sort of logic it
>>> does.)
>>>
>>> So if you want to have a string value submitted, you'd need an option
>>> array like this:
>>>
>>>  $experience = array(
>>> t('Amateur/ Hobbyist') => t('Amateur/ Hobbyist'),
>>> t('Experienced Hobbyist') => t('Experienced Hobbyist'),
>>> t('Semi Professional') => t('Semi Professional'),
>>> t('Professional') => t('Professional'),
>>> );
>>>
>>> Note that the "select one" option is not necessary; Drupal will add it
>>> for you if appropriate.
>>>
>>> Secondly, it looks like you're doing things the very hard way. :-)  Check
>>> out the webforms module, or similar; it can probably build you a form
>>> that will do what you need without you writing any actual code, and
>>> certainly not messing around with mail headers.  Alternatively, you can
>>> have people submit a CCK-created node with image fields and use the
>>> actions module to send you a notice email to go view the node on the
>>> site.  That way you even get a nice permanent record out of it.
>>>
>>> When in doubt, make Drupal do it for you. :-)
>>>
>>> Cheers.
>>>
>>> On Friday 01 December 2006 18:59, MichelleX wrote:
>>>       
>>>> I apologize if this isn't the right place to post this.. but I was
>>>> hoping someone could help me out with a foreach loop.
>>>>
>>>> I'm using the code from here http://drupal.org/node/68265 for a custom
>>>> form in a page.
>>>> I've modified it to display select menus - and they work just great
>>>> except I can't get it to send anything other than a number. I've been
>>>> all through the api stuff and have tried various methods for writing a
>>>> foreach loop for the select menus, but everything seems to conflict with
>>>> common.inc.
>>>> Here's my modified code (hopefully this will display correctly):
>>>>
>>>> <?php
>>>>
>>>> $form['name'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Username'),
>>>>     '#default_value' => $object['name'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> );
>>>>
>>>> $form['eMail'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('E-mail Address'),
>>>>     '#default_value' => $object['eMail'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> );
>>>>
>>>> //account option
>>>>  $account = array(
>>>> '--'.t('Select').'--',
>>>> t('Model'),
>>>> t('Photographer'),
>>>> t('Crew'),
>>>> );
>>>>
>>>> $form['assign'][$i] = array(
>>>>     '#type' => 'select',
>>>>     '#title' => t('Account purpose'),
>>>>     '#default_value' => $object['assign'][$i],
>>>>     '#options' => $account,
>>>>     '#required' => TRUE,
>>>>     '#description' => t('Choose which account your\'re applying for.'),
>>>> );
>>>>
>>>>
>>>> $form['location'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Location'),
>>>>     '#default_value' => $object['location'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> '#description' => t('Enter your city, state and country'),
>>>> );
>>>>
>>>> $form['age'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Age'),
>>>>     '#default_value' => $object['age'],
>>>>     '#size' => 15,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> '#description' => t('Enter your age'),
>>>> );
>>>>
>>>> //experience options
>>>>  $experience = array(
>>>> '--'.t('Select').'--',
>>>> t('Amateur/ Hobbyist'),
>>>> t('Experienced Hobbyist'),
>>>> t('Semi Professional'),
>>>> t('Professional'),
>>>> );
>>>>
>>>> $form['exlevel'] = array(
>>>>     '#type' => 'select',
>>>>     '#title' => t('Experience Level'),
>>>>     '#default_value' => $object['exlevel'],
>>>>     '#options' => $experience,
>>>> '#required' => TRUE,
>>>> '#description' => t('Enter your experience level.'),
>>>> );
>>>>
>>>> //travel options
>>>>  $travel = array(
>>>> '--'.t('Select').'--',
>>>> t('Yes'),
>>>> t('w/ expenses paid'),
>>>> t('w/o expenses paid'),
>>>> t('Only in my state'),
>>>> t('Only in my city'),
>>>> t('Depends on assignment'),
>>>> t('No'),
>>>> );
>>>>
>>>> $form['willtravel'] = array(
>>>>     '#type' => 'select',
>>>>     '#title' => t('Will travel'),
>>>>     '#default_value' => $object['willtravel'],
>>>>     '#options' => $travel,
>>>> '#required' => TRUE,
>>>> '#description' => t('Are you willing to travel?'),
>>>> );
>>>>
>>>> $form['nudity'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Nudity Level'),
>>>>     '#default_value' => $object['nudity'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> '#description' => t('Enter your level of experience or willingness for
>>>> nude assignments.'),
>>>> );
>>>> $form['compensation'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Compensation'),
>>>>     '#default_value' => $object['compensation'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => TRUE,
>>>> '#description' => t('Example: DOA (Depends on Assignment), TFP, TFCD,
>>>> Paid only, etc.'),
>>>> );
>>>> $form['website'] = array(
>>>>     '#type' => 'textfield',
>>>>     '#title' => t('Web Site'),
>>>>     '#default_value' => $object['website'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#required' => FALSE,
>>>> '#description' => t('If you have a personal web site, enter it here.'),
>>>> );
>>>> $form['message'] = array(
>>>>     '#type' => 'textarea',
>>>>     '#title' => t('additional information'),
>>>>     '#default_value' => $object['message'],
>>>>     '#size' => 30,
>>>>     '#maxlength' => 128,
>>>>     '#rows'    => 7,
>>>>     '#required' => FALSE,
>>>> );
>>>>
>>>> $form['file1'] = array(
>>>>     '#type' => 'file',
>>>>       '#title' => t('Four images are required for review.'),
>>>> );
>>>> $form['file2'] = array(
>>>>     '#type' => 'file',
>>>> );
>>>> $form['file3'] = array(
>>>>     '#type' => 'file',
>>>> );
>>>> $form['file4'] = array(
>>>>     '#type' => 'file',
>>>> );
>>>>
>>>> $form['submit'] = array(
>>>>     '#type' => 'submit',
>>>>     '#value' => t('send email'),
>>>> );
>>>>
>>>> $form['#attributes']['enctype'] = 'multipart/form-data';
>>>>
>>>> $output = drupal_get_form('contactform', $form);
>>>> return $output;
>>>>
>>>> // validation function for the contact form
>>>> function contactform_validate($form_id, $form_values) {
>>>>     // first we validate if there is a email injection
>>>>     $finds = array("/bcc:/i",
>>>>             "/Content-Type:/i",
>>>>             "/Mime-Type:/i",
>>>>             "/MIME-Version:/i",
>>>>             "/multipart\/mixed/i",
>>>>             "/boundary=/i",
>>>>             "/subject:/i",
>>>>             "/cc:/i",
>>>>             "/to:/i");
>>>>     foreach($form_values as $value)
>>>>           foreach($finds as $find)
>>>>                 if(preg_match($find,$value))
>>>>                     form_set_error('', '<h2 class="red center">Stop
>>>> spamming</h2>');
>>>>
>>>>     // then we validate the email-adress
>>>>     if (!valid_email_address($form_values['eMail']) &&
>>>> !empty($form_values['eMail']))
>>>>         form_set_error('', t('Please check the spelling of your
>>>> email-adress.'));
>>>> }
>>>>
>>>>
>>>> // submit function for the contact form
>>>> function contactform_submit($form_id, $form_values) {
>>>>
>>>>     $from         = $form_values['name'].' <'.$form_values['eMail'].'>';
>>>>     $recipient    = 'MX <michelle at steelveils.com>';
>>>>     $subject    = 'Application';
>>>>     $account      = $form_values['assign'];
>>>>     $location      = $form_values['location'];
>>>>     $age      = $form_values['age'];
>>>>     $experience      = $form_values['exlevel'];
>>>>     $travel      = $form_values['willtravel'];
>>>>     $nudity      = $form_values['nudity'];
>>>>     $compensation      = $form_values['compensation'];
>>>>     $website      = $form_values['website'];
>>>>     $body         = wordwrap($form_values['message']);
>>>>     $reply        = 'Thank you for your application. Your application
>>>> for an account is currently pending approval. Once it has been granted,
>>>> you will receive further instructions in eMail.';
>>>>     $goto        = 'app-rec';
>>>>
>>>>     if (!flood_is_allowed('contact',
>>>> variable_get('contact_hourly_threshold', 8))) {
>>>>         $output = t("You cannot send more than %number messages per
>>>> hour. Please try again later.", array('%number' =>
>>>> variable_get('contact_hourly_threshold', 3)));
>>>>         drupal_set_message('<h3 class="red center">'.$output.'</h3>');
>>>>         drupal_goto($goto);
>>>>     }else{
>>>>         $attachment     = FALSE;
>>>>         $trenner     = md5(uniqid(time()));
>>>>         $headers    .= "MIME-Version: 1.0\n";
>>>>         $headers     .= "From: $from\nReply-to: $from\nReturn-path:
>>>> $from\nErrors-to: $from\nX-Mailer: Drupal\n";
>>>>         $headers     .= "Content-Type:
>>>> multipart/mixed;\n\tboundary=$trenner\n";
>>>>         $message     .= "\n--$trenner\n";
>>>>         $message     .= "Content-Type: text/plain;
>>>> charset=UTF-8;"."\n\n"; // sets the mime type
>>>>         $message     .= "Account type: " .$account. "\n";
>>>>         $message     .= "Location: " .$location."\n";
>>>>         $message     .= "Age: " .$age."\n";
>>>>         $message     .= "Experience Level: " .$experience."\n";
>>>>         $message     .= "Will Travel: " .$travel."\n";
>>>>         $message     .= "Nudity Level: " .$nudity."\n";
>>>>         $message     .= "Compensation: " .$compensation."\n";
>>>>         $message     .= "Web Site: " .$website."\n";
>>>>         $message     .= $body. "\n";
>>>>         $message     .= "\n\n";
>>>>
>>>>
>>>>              for($i=1;$i<=4;$i++){
>>>>             $file = file_check_upload('file'.$i);
>>>>             if($file->filename){
>>>>                 $file->filepath =
>>>> str_replace("\\","\\\\",$file->filepath); $message    .=
>>>> "--$trenner"."\n";
>>>>                 $message    .=
>>>> "Content-Type:$file->filemime;\n\tname=$file->filename\n";
>>>>                 $message    .= "Content-Transfer-Encoding: base64\n";
>>>>                 $message    .= "Content-Disposition:
>>>> attachment;\n\tfilename=$file->filename\n\n";
>>>>                 $filedata    = fread(fopen($file->filepath, "rb"),
>>>> $file->filesize);
>>>>                 $message    .= chunk_split(base64_encode($filedata));
>>>>                 $message    .= "\n\n";
>>>>                 $attachment    = TRUE;
>>>>             }
>>>>         }
>>>>         $message .= "--$trenner--";
>>>>
>>>>         // send Mail
>>>>         if($attachment) // use the php mail function if we have
>>>> attachments mail($recipient, $subject, $message, $headers);
>>>>         else
>>>>             user_mail($recipient, $subject, $account, $location, $age,
>>>> $experience, $travel, $nudity, $compensation, $website, $body, "From:
>>>> $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to:
>>>> $from");
>>>>
>>>>         // Reply
>>>>         user_mail($from, $subject, wordwrap($reply), "From:
>>>> $recipient\nReply-to: $recipient\nX-Mailer: Drupal\nReturn-path:
>>>> $recipient\nErrors-to: $recipient");
>>>>
>>>>         // Log the operation:
>>>>         flood_register_event('contact');
>>>>         watchdog('mail', t('%name-from use contact form',
>>>> array('%name-from' => theme('placeholder', $form_values['name'] ."
>>>> <$from>"),)));
>>>>
>>>>         drupal_set_message('Your message has been sent to us');
>>>>         drupal_goto($goto);
>>>>         }
>>>> }
>>>>
>>>> ?>
>>>>
>>>> Thanks!
>>>> Michelle
>>>>
>>>>
>>>>
>>>> --
>>>> Steel Veils
>>>> Photography. Digital Design. Custom Art.
>>>> ________________________________________________________
>>>>
>>>> www.SteelVeils.com | michelle at SteelVeils.com | 314.283.1081
>>>>         
>> --
>> Steel Veils
>> Photography. Digital Design. Custom Art.
>> ________________________________________________________
>>
>> www.SteelVeils.com | michelle at SteelVeils.com | 314.283.1081
>>     
>
>   

-- 
Steel Veils
Photography. Digital Design. Custom Art.
________________________________________________________

www.SteelVeils.com | michelle at SteelVeils.com | 314.283.1081


More information about the support mailing list