Improved entropy for report file urls.
[fa-stable.git] / reporting / includes / pdf_report.inc
index 0a412ce87aadcc5d5d718a2433f60710108c144d..781a9e9f2828370edcbfd3cd80c7a4cd015acd18 100644 (file)
@@ -520,15 +520,14 @@ class FrontReport extends Cpdf
                $this->fontSize = HEADER1_FONT_SIZE;
 
                // Print company logo if present and requested, or else just print company name
-               if ($this->companyLogoEnable && ($this->company['coy_logo'] != ''))
+               // Build a string specifying the location of the company logo file
+               $logo = company_path() . "/images/" . $this->company['coy_logo'];
+               if ($this->companyLogoEnable && ($this->company['coy_logo'] != '') && file_exists($logo))
                {
-                       // Build a string specifying the location of the company logo file
-                       $logo = company_path() . "/images/" . $this->company['coy_logo'];
-
                        // Width being zero means that the image will be scaled to the specified height
                        // keeping its aspect ratio intact.
                        if ($this->scaleLogoWidth)
-                               $this->AddImage($logo, $companyCol, $this->row, COMPANY_WIDTH, 0);
+                               $this->AddImage($logo, $companyCol, $this->row + 15, COMPANY_WIDTH, 0);
                        else    
                                $this->AddImage($logo, $companyCol, $this->row - (LOGO_HEIGHT * LOGO_Y_POS_ADJ_FACTOR), 0, LOGO_HEIGHT);
                }
@@ -970,21 +969,27 @@ class FrontReport extends Cpdf
                        // are world readable
                        if ($email == 1)
                                $fname = $dir.'/'.$this->filename;
-                       else    
-                               $fname = $dir.'/'.uniqid('').'.pdf';
+                       else
+                               $fname = $dir.'/'.random_id().'.pdf';
                        $this->Output($fname, 'F');
 
                        if ($email == 1)
                        {
-                               if(!count($this->contactData)) {
+                               $contactData = array();
+                               if ($this->contactData)
+                                       foreach($this->contactData as $contact)
+                                               if (!empty($contact['email']))
+                                                       $contactData[] = $contact;
+
+                               if(!count($contactData)) {
                                        $this->SetLang(user_language());
-                                       display_error(_("You have no email contact defined for this type of document"));
+                                       display_warning(sprintf(_("You have no email contact defined for this type of document for '%s'."), $this->formData['recipient_name']));
                                } else {
                                        $sent = $try = 0;
                                        $emails = "";
                                        if(!$subject)
                                                $subject = $this->formData['document_name'] . ' '. $this->formData['document_number'];
-                                       foreach($this->contactData as $contact) {
+                                       foreach($contactData as $contact) {
                                                if (!isset($contact['email'])) 
                                                        continue;
                                                $emailtype = true;
@@ -1026,9 +1031,9 @@ class FrontReport extends Cpdf
                                        unlink($fname);
                                        $this->SetLang(user_language());
                                        if (!$try) {
-                                               display_error(_("There is no contact email set for this document type."));
+                                               display_warning(sprintf(_("You have no email contact defined for this type of document for '%s'."), $this->formData['recipient_name']));
                                        } elseif (!$sent)
-                                               display_error($this->title . " " . $this->formData['document_number'] . ". "
+                                               display_warning($this->title . " " . $this->formData['document_number'] . ". "
                                                        . _("Sending document by email failed") . ". " . _("Email:") . $emails);
                                        else
                                                display_notification($this->title . " " . $this->formData['document_number'] . " "