예제 #1
0
 private function inputValidation($tag)
 {
     $okay = true;
     /*
      * Order of validation. Order done to reduce database calls. Check formatting is correct. Then check if activated next. 
      * This cuts out 2 other DB checks as it must be in the group table if activated. 
      * Same reason to check group table next, then if logged.
      */
     /*
      * Make sure tag is in the correct format
      */
     $okay = parent::checkTagFormat($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) is correctly formatted.");
     /*
      * Make sure tag not already activated
      */
     $okay = $this->checkTagAlreadyActivated($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) not already activated.");
     /*
      *
      * Do we want to do this check? Better that the user gets a standard registration msg and continues as if it's the first time it's been registered. 
      * If logged by another user we should inform the current user that this tag is already in use
      *
      * Make sure tag not already registered to another user
      */
     $okay = $this->checkTagAlreadyLogged($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) not already registered.");
     /*
      * Make sure tag exists in database
      */
     $okay = $this->checkTagValidityDatabase($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) exists in database.");
     return true;
 }
예제 #2
0
 private function inputValidation($tag)
 {
     $okay = true;
     /*
      * Make sure tag is not empty
      */
     $okay = parent::checkHasContents($tag);
     if ($okay == false) {
         return false;
     }
     debug::output("Validated: Tag ({$tag}) is not empty.");
     /*
      * Make sure tag is in the correct format
      */
     $okay = parent::checkTagFormat($tag);
     if ($okay == false) {
         return false;
     }
     debug::output("Validated: Tag ({$tag}) is correctly formatted.");
     return true;
 }
예제 #3
0
 public function __construct($input, $live)
 {
     parent::__construct($input, $live);
     $sql = "TRUNCATE log_check_lost_bag_inbox_notified";
     mysql::i()->query($sql);
     $host = config::get('sita_imap_host');
     $email_address = config::get('sita_imap_email_address');
     $password = config::get('sita_imap_password');
     $connection = $host . '~' . $email_address . '~' . $password;
     imap::i($connection);
     $mc = imap::i()->check();
     $result = imap::i()->fetch_overview("1:{$mc->Nmsgs}");
     if (!empty($result)) {
         $this->old_lost_tags_notified = $this->getPreviousSITAEmailsNotified();
         $old_lost_tags_invalid = $this->getPreviousSITAEmailsInvalid();
         foreach ($result as $overview) {
             $message_body = imap::i()->fetch_body($overview->msgno);
             $message_body = utils::removeMultiSpaces($message_body);
             list($prefix, $tag, $iata, $world_tracer_ref) = explode(' ', $message_body);
             if (empty($tag)) {
                 debug::output("No tag!\n");
                 continue;
             }
             //skip any tags already handled
             if ($this->old_lost_tags_notified[$tag]) {
                 debug::output("{$tag} owner previously notified\n");
                 continue;
             }
             debug::output("Checking tag format for tag {$tag}...");
             if (parent::checkTagFormat($tag) == true) {
                 debug::output("{$tag} valid format");
                 //do one query to establish if tag exists in database and is associated with a customer
                 $tag_registered = $this->getCustomer($tag);
                 //check that the tag is registered
                 if ($tag_registered == true) {
                     //Check has user got a registered email address ?
                     if (!empty($this->customer_details['email'])) {
                         //is the account 'active'?
                         if ($this->customer_details['status'] == 'ACTIVE') {
                             debug::output("Tag Active. Notify user by email.");
                             $lostBag = utils::getAirportbyIATA($iata);
                             //Owner recieves email containing the report
                             //****This mail function is for mailing ACTIVE Tag holder email****//
                             $mail = new Mail();
                             $mail->protocol = config::get('config_mail_protocol');
                             $mail->parameter = config::get('config_mail_parameter');
                             $mail->hostname = config::get('config_smtp_host');
                             $mail->username = config::get('config_smtp_username');
                             $mail->password = config::get('config_smtp_password');
                             $mail->port = config::get('config_smtp_port');
                             $mail->timeout = config::get('config_smtp_timeout');
                             $mail->setTo($this->customer_details['email']);
                             $mail->setFrom('');
                             $mail->setSender('');
                             $mail->setSubject(html_entity_decode(sprintf('Lost Bag Report')));
                             $report_foundbag_emailtext = "Dear " . $this->customer_details['firstname'] . " <br />  \n\nA lost bag report has been completed and your tag number has been reported.<br /><br />\n\nDetails of the find<br />\n<b>Tag Number: OC </b>" . $this->customer_details['tag_no'] . "<br />\n<b>Name of Finder:</b>" . " " . $this->customer_details['firstname'] . " " . $this->customer_details['lastname'] . "<br />\n<b>Email Address of Finder:</b>" . " " . $this->customer_details['email'] . "<br />\n<b>Telephone Number of Finder:</b>" . " " . $this->customer_details['telephone'] . "<br />\n<b>Mobile Number:</b>" . " " . $this->customer_details['mobile'] . "<br />\n<b>Post Code:</b>" . " " . $this->customer_details['postcode'] . "<br />\n<b>Location of Bag:</b> {$lostBag['airport']}, {$lostBag['place']}, {$lostBag['state']}, {$lostBag['country']}<br /><br />\n\nSincerely</n>\nLost Baggage Team";
                             $mail->setText(strip_tags($report_foundbag_emailtext));
                             //                        echo "<pre>";
                             //                        print_r($mail);
                             //                        die;
                             $mail->send();
                             // End mail for ACTIVE TagNo
                             $this->logCheckLostBagTagInboxNotified($tag, $iata, $world_tracer_ref, true, 'email', $this->customer_details['email']);
                             $this->logDB->logCheckLostBagEmail($this->customer_details['customer_id'], strip_tags($report_foundbag_emailtext), $this->customer_details['email'], $status, $tag);
                         } else {
                             //not active
                             debug::output("{$tag} inactive. Notify user by email.");
                             /* Owner recieves an email to ask them to contact  
                              * who will provide them with the information once they 
                              * have paid a fee. 
                              * (Would like to automate this so email is kept in 
                              * user's acocunt until they have paid a premium of 
                              * £15.00 then they can view the report)*/
                             //****This mail function is for mailing ACTIVE Tag holder email****//
                             $mail = new Mail();
                             $mail->protocol = config::get('config_mail_protocol');
                             $mail->parameter = config::get('config_mail_parameter');
                             $mail->hostname = config::get('config_smtp_host');
                             $mail->username = config::get('config_smtp_username');
                             $mail->password = config::get('config_smtp_password');
                             $mail->port = config::get('config_smtp_port');
                             $mail->timeout = config::get('config_smtp_timeout');
                             $mail->setTo($this->customer_details['email']);
                             $mail->setFrom('');
                             $mail->setSender('');
                             $mail->setSubject(html_entity_decode(sprintf('Lost Bag Report')));
                             //print_r($this->customer_details);
                             $report_foundbag_emailtext = "Dear " . $this->customer_details['firstname'] . " <br />  \nA lost bag report has been completed and your tag number has been reported.<br /><br />                            \nBut we are sorry, your tag is not ACTIVE please call " . config::get('lost_bag_number') . " to reactivate your tag.<br /><br />\n\nSincerely</n>\nLost Baggage Team";
                             $mail->setText(strip_tags($report_foundbag_emailtext));
                             //                        echo "<pre>";
                             //                        print_r($mail);
                             //                        die;
                             $mail->send();
                             // End mail for ACTIVE TagNo
                             $this->logCheckLostBagTagInboxNotified($tag, $iata, $world_tracer_ref, true, 'email', $this->customer_details['email']);
                             $this->logDB->logCheckLostBagEmail($this->customer_details['customer_id'], strip_tags($report_foundbag_emailtext), $this->customer_details['email'], $status, $tag);
                         }
                         //else
                     } else {
                         //not registered
                         debug::output("{$tag} has no registered email address ");
                         //is the account 'active'?
                         if ($this->checkTagNoStatus($tag) == 'ACTIVE') {
                             debug::output("{$tag} active\n");
                             //Owner receives SMS to say a report is waiting for you, please text YES to receive the details, text costs £1.50 or NO to cancel
                             $this->send['destinations'] = utils::formatPhoneNumber($this->customer_details['telephone']);
                             $this->logCheckLostBagTagInboxNotified($tag, $iata, $world_tracer_ref, true, 'sms', $this->send['destinations']);
                             $this->send['body'] = 'Lost bag report available for tag ' . $tag . '. For details text PIN REPORT. Text costs £1.50 each plus standard network rate. Text PIN STOP to cancel.';
                             parent::sendSMS();
                         } else {
                             debug::output("{$tag} inactive\n");
                             //not active
                             /*user recieves text to say account not active please contact
                              * directly on [telephone number] potentially we automate this and 
                              * have them go online to pay the fee before receiving the info - 
                              * your thoughts would be helpful*/
                             $this->send['destinations'] = utils::formatPhoneNumber($this->customer_details['telephone']);
                             $this->send['body'] = 'Lost bag report available for EXPIRED tag ' . $tag . '. Please contact customer services on ' . config::get('lost_bag_number') . ' Text PIN STOP to cancel.';
                             parent::sendSMS();
                             $this->logCheckLostBagTagInboxNotified($tag, $iata, $world_tracer_ref, true, 'sms', $this->send['destinations']);
                         }
                         //else
                     }
                     //else not registered
                 } else {
                     debug::output("{$tag} not registered to customer in database");
                     if (!$old_lost_tags_invalid[$tag]) {
                         $this->logDB->logCheckLostBagInvalidTag($tag);
                         //only log the tag once
                     }
                 }
             } else {
                 debug::output("{$tag} invalid format\n");
                 $this->logDB->logCheckLostBagInvalidTag($tag, $old_lost_tags_invalid);
             }
             unset($this->send);
         }
         //for each message
     } else {
         debug::output("No messages in Inbox\n");
     }
     //empty
     imap::i()->close();
 }
예제 #4
0
 private function inputValidation($tag)
 {
     $okay = true;
     /*
      * Order of validation. Order done to reduce database calls. Check formatting is correct. Then check if activated next. 
      * This cuts out 2 other DB checks as it must be in the group table if activated. 
      * Same reason to check group table next, then if logged.
      */
     /*
      * Make sure tag is in the correct format
      */
     $okay = parent::checkTagFormat($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) is correctly formatted.");
     /*
      * Make sure tag exists in database (do we need to do this check?)
      */
     $okay = $this->checkTagValidityDatabase($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) exists in database.");
     /*
      * Make sure tag exists in database
      */
     $okay = $this->checkDueForRenew($tag);
     if ($okay == false) {
         debug::output("Invalid: " . $this->errors[$tag]);
         return false;
     }
     debug::output("Validated: Tag ({$tag}) is due for renewal.");
     return true;
 }