function classifyFile($classification_data, $email, $parsedEmail, $validWS, $mantainWs = true, $csv = '')
 {
     if (!is_array($classification_data)) {
         $classification_data = array();
     }
     if (!isset($parsedEmail["Attachments"])) {
         throw new Exception(lang('no attachments found for email'));
     }
     for ($c = 0; $c < count($classification_data); $c++) {
         if (isset($classification_data["att_" . $c]) && $classification_data["att_" . $c]) {
             $att = $parsedEmail["Attachments"][$c];
             $fName = str_starts_with($att["FileName"], "=?") ? iconv_mime_decode($att["FileName"], 0, "UTF-8") : utf8_safe($att["FileName"]);
             if (trim($fName) == "" && strlen($att["FileName"]) > 0) {
                 $fName = utf8_encode($att["FileName"]);
             }
             try {
                 $file = ProjectFiles::findOne(array('conditions' => "`filename` = " . DB::escape($fName) . " AND `mail_id` = " . $email->getId()));
                 DB::beginWork();
                 if ($file == null) {
                     $fileIsNew = true;
                     $file = new ProjectFile();
                     $file->setFilename($fName);
                     $file->setIsVisible(true);
                     $file->setIsPrivate(false);
                     $file->setIsImportant(false);
                     $file->setCommentsEnabled(true);
                     $file->setAnonymousCommentsEnabled(false);
                     $file->setMailId($email->getId());
                     $file->save();
                 } else {
                     $fileIsNew = false;
                 }
                 if (!$mantainWs && !$fileIsNew) {
                     $file->removeFromWorkspaces(logged_user()->getWorkspacesQuery());
                 }
                 foreach ($validWS as $w) {
                     if (!$file->hasWorkspace($w)) {
                         $file->addToWorkspace($w);
                     }
                 }
                 $file->setTagsFromCSV($csv);
                 $enc = array_var($parsedMail, 'Encoding', 'UTF-8');
                 $ext = utf8_substr($fName, strrpos($fName, '.') + 1, utf8_strlen($fName, $enc), $enc);
                 $mime_type = '';
                 if (Mime_Types::instance()->has_type($att["content-type"])) {
                     $mime_type = $att["content-type"];
                     //mime type is listed & valid
                 } else {
                     $mime_type = Mime_Types::instance()->get_type($ext);
                     //Attempt to infer mime type
                 }
                 if ($fileIsNew) {
                     $tempFileName = ROOT . "/tmp/" . logged_user()->getId() . "x" . gen_id();
                     $fh = fopen($tempFileName, 'w') or die("Can't open file");
                     fwrite($fh, $att["Data"]);
                     fclose($fh);
                     $fileToSave = array("name" => $fName, "type" => $mime_type, "tmp_name" => $tempFileName, "error" => 0, "size" => filesize($tempFileName));
                     $revision = $file->handleUploadedFile($fileToSave, true, lang('attachment from email', $email->getSubject()));
                     // handle uploaded file
                     $email->linkObject($file);
                     ApplicationLogs::createLog($file, $email->getWorkspaces(), ApplicationLogs::ACTION_ADD);
                 }
                 DB::commit();
                 // Error...
             } catch (Exception $e) {
                 DB::rollback();
                 flash_error($e->getMessage());
                 ajx_current("empty");
             }
             if (isset($tempFileName) && is_file($tempFileName)) {
                 unlink($tempFileName);
             }
         }
     }
 }