Example #1
0
 protected function defaultViewDataTo(array &$data)
 {
     $info = $this->config('company');
     // Trying to reverse-map the logo URL to local path. Upon success attach that
     // file to the message as "related" file so it's not visible in the attachment
     // list and can be refered to with special "cid:NAME" prefix (e.g. in src).
     // Unlike remote images attached ones are not hidden by most mail viewers.
     $logoFile = assetPath($info['logo']);
     if ($logoFile) {
         $this->attachRelatedLocal($logoFile, $name = 'head-logo' . S::ext($logoFile));
         $info['logo'] = "cid:{$name}";
     }
     $data['header']['logo'] = Block::execCustom('Vane::logo', array('input' => $info, 'ajax' => false, 'response' => true, 'return' => 'response'))->render();
     $info = array_filter($info, 'is_scalar') + array('l0' => HLEx::tag('a', \URL::to(Current::bundleURL())), 'l1' => '</a>');
     $signature = __('vanemart::general.mail.signature', $info);
     $data['footer']['signature'] = HLEx::p($signature);
 }
Example #2
0
 static function place($file, array $attributes = array())
 {
     $attributes += array('uploader' => null, 'desc' => '', 'mime' => null, 'name' => null, 'ext' => null);
     if (!empty($attributes['name'])) {
         $attributes['name'] = basename($attributes['name']);
     } else {
         $ext = strtolower(ltrim($attributes['ext'], '.'));
         $attributes['name'] = substr(uniqid(), 0, 8) . ".{$ext}";
         $msg = "Placing a file without explicit name, generated random: {$attributes['name']}.";
         Log::info_File($msg);
     }
     $ext = $attributes['ext'] = strtolower(ltrim(S::ext($attributes['name']), '.'));
     $ext === '' and $attributes['ext'] = 'dat';
     $dest = static::generatePath($attributes['name']);
     S::mkdirOf($dest);
     $attributes['path'] = S::tryUnprefix($dest, static::storage());
     if (is_resource($file)) {
         $attributes['size'] = static::streamCopyTo($dest, $file);
     } else {
         $attributes['size'] = strlen($file);
         if (!file_put_contents($dest, $file, LOCK_EX)) {
             throw new Error("Cannot write new File data [{$dest}].");
         }
     }
     try {
         // explicit ID so it's harder to guess new file's ID (e.g. to access it directly
         // from web) since they're not sequental.
         $attributes['id'] = static::generateID();
         $model = with(new static())->fill_raw($attributes);
         $model->md5 = md5_file($dest);
         $model->mime = $attributes['mime'] ?: \File::mime($model->ext, '');
         return Event::insertModel($model, 'file');
     } catch (\Exception $e) {
         unlink($dest);
         throw $e;
     }
 }