From 091dd4cf2279a45e7689e16280f54bb78f25e4ef Mon Sep 17 00:00:00 2001 From: Shikiryu Date: Sat, 11 Jul 2015 00:12:31 +0200 Subject: [PATCH] Made Files & Email work --- app/code/Scenario.php | 35 ++++++++++++++++++++++++++++------- app/code/Transport/Email.php | 21 +++++++++++---------- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/app/code/Scenario.php b/app/code/Scenario.php index 3433125..4b20a70 100644 --- a/app/code/Scenario.php +++ b/app/code/Scenario.php @@ -21,14 +21,10 @@ class Scenario { public static function autoload($class) { - // Autoload only "sub-namespaced" class if (strpos($class, __NAMESPACE__.'\\') === 0) { - // Delete current namespace from class one $relative_NS = str_replace(__NAMESPACE__, '', $class); - // Translate namespace structure into directory structure $translated_path = str_replace('\\', '/', $relative_NS); - // Load class suffixed by ".class.php" require __DIR__ . '/' . $translated_path . '.php'; } } @@ -45,26 +41,51 @@ class Scenario { public function send() { - $this->transport->send(); + try { + $this->transport->send(); + } catch (\Exception $e) { + throw $e; + } } + /** + * Launch the whole job + * + * @param $scenario + * + * @throws \Exception + */ public static function launch($scenario) { // add autoloader static::register(); + $scenario = __DIR__.'/../scenario/'.$scenario; + // check the given scenario if (is_readable($scenario)) { $scenario = json_decode(file_get_contents($scenario), true); if (!is_null($scenario) && static::isValid($scenario)) { - $scenario = new self($scenario); - $scenario->send(); + try { + $scenario = new self($scenario); + $scenario->send(); + } catch (\Exception $e) { + throw $e; + } + exit; } throw new \Exception('invalid scenario.'); } throw new \Exception('scenario not found.'); } + /** + * Check given scenario validation + * + * @param array $scenario + * + * @return bool + */ public static function isValid(array $scenario) { return diff --git a/app/code/Transport/Email.php b/app/code/Transport/Email.php index 4dbcc44..23021ad 100644 --- a/app/code/Transport/Email.php +++ b/app/code/Transport/Email.php @@ -152,7 +152,7 @@ class Email extends TransportAbstract $this->to = $this->config['to']; $this->from = $this->config['from']; $this->encoding = $this->config['encoding']; - $this->subjet = $this->config['subject']; + $this->subject = $this->config['subject']; $this->message = $this->config['message']; $this->encoding = $this->config['encoding']; } @@ -229,25 +229,28 @@ class Email extends TransportAbstract * Send the mail * * @see #mail - * * @return bool + * @throws \Exception */ - public function send() { + public function send() + { // Checking files are selected $zip = new \ZipArchive(); // Load zip library $zip_name = time().".zip"; // Zip name - if($zip->open(TEMP_DIR.$zip_name, \ZIPARCHIVE::CREATE)==TRUE) { + if ($zip->open(TEMP_DIR.$zip_name, \ZIPARCHIVE::CREATE)==TRUE) { if(!empty($this->files)) { - foreach($this->files as $file) + foreach($this->files as $file => $name) { - $zip->addFile($file); // Adding files into zip + $zip->addFile($file, $name); // Adding files into zip } } $zip->close(); - } + } else { + throw new \Exception('Transport::Email::Can\'t zip the given backup.'); + } - $this->files = array(TEMP_DIR.$zip_name=>dirname(__FILE__).'/bu/'.$zip_name); + $this->files = array(TEMP_DIR.$zip_name=>$zip_name); $random_hash = md5(date('r', time())); $headers = "From: " . $this->from . "\r\nReply-To: " . $this->from; @@ -262,8 +265,6 @@ Content-Transfer-Encoding: 8bit if(!empty($this->files)) foreach($this->files as $file => $name) { - $name = explode('/', $name); - $name = end($name); $output .= " --$random_hash Content-Type: " . self::getMimeType($file) . "; name=" . $name . "