/**
  * Generate the tokens
  *
  * @param array $arrData
  * @param array $arrForm
  * @param array $arrFiles
  * @param array $arrLabels
  *
  * @return array
  */
 public function generateTokens(array $arrData, array $arrForm, array $arrFiles, array $arrLabels)
 {
     $arrTokens = array();
     $arrTokens['raw_data'] = '';
     foreach ($arrData as $k => $v) {
         $this->flatten($v, 'form_' . $k, $arrTokens);
         $arrTokens['raw_data'] .= (isset($arrLabels[$k]) ? $arrLabels[$k] : ucfirst($k)) . ': ' . (is_array($v) ? implode(', ', $v) : $v) . "\n";
     }
     foreach ($arrForm as $k => $v) {
         $this->flatten($v, 'formconfig_' . $k, $arrTokens);
     }
     // Administrator e-mail
     $arrTokens['admin_email'] = $GLOBALS['TL_ADMIN_EMAIL'];
     // Upload fields
     foreach ($arrFiles as $fieldName => $file) {
         $arrTokens['form_' . $fieldName] = Form::getFileUploadPathForToken($file);
     }
     return $arrTokens;
 }