private function intercept()
 {
     intercept('XeStorage@remove', 'storage.optimize.log', function ($target, $file) {
         $this->bag[] = $file;
         return $target($file);
     });
 }
 /**
  * registerInterceptForThemePreview
  *
  * @return void
  */
 protected function registerInterceptForThemePreview()
 {
     $preview_theme = $this->app['request']->get('preview_theme', null);
     if ($preview_theme !== null) {
         intercept('Theme@getSelectedTheme', 'preview_theme', function ($target) use($preview_theme) {
             /** @var ThemeHandler $themeHandler */
             $themeHandler = $target->getTargetObject();
             $themeHandler->selectTheme($preview_theme);
             return $target();
         });
     }
 }
Esempio n. 3
0
 public function boot()
 {
     // 라우트 등록
     intercept('Plugin@addPluginRoutes', 'route_for_pluginsample', function ($target, &$args) {
         $routes = $args[0];
         $this->registerAssignedRoute($routes);
         $target($args);
     });
     $args::get('/manage', function () {
         return 'hihihi';
     });
 }
 /**
  * registerInterceptForThemePreview
  *
  * @return void
  */
 protected function registerInterceptForThemePreview()
 {
     $preview_theme = $this->app['request']->get('preview_theme', null);
     if ($preview_theme !== null) {
         intercept('XeTheme@getSelectedTheme', 'preview_theme', function ($target) use($preview_theme) {
             if (!auth()->user()->isAdmin()) {
                 throw new AccessDeniedHttpException();
             }
             /** @var ThemeHandler $themeHandler */
             $themeHandler = $target->getTargetObject();
             $themeHandler->selectTheme($preview_theme);
             return $target();
         });
     }
 }
 private function registerEvent()
 {
     intercept('XePresenter@make', 'googleAnalytics.addScript', function ($target, $id, $data = [], $mergeData = [], $html = true, $api = false) {
         $app = app();
         $router = $app['router'];
         /** @var \Illuminate\Routing\Route $route */
         $route = $router->current();
         if (in_array('manage', $route->middleware()) === false) {
             $setting = $this->getSetting();
             if ($setting->get('trackingId')) {
                 XeFrontend::html('analytics')->content($this->getTrackingCode($setting->get('trackingId'), $setting->get('domain', 'auto')))->load();
             }
         }
         return $target($id, $data, $mergeData, $html, $api);
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->bind('xe.storage', function ($app) {
         $distributor = new RoundRobinDistributor($app['config']['filesystems'], $app['xe.db']->connection());
         $proxyClass = $app['xe.interception']->proxy(Storage::class, 'Storage');
         return new $proxyClass(new FileHandler($app['filesystem'], $distributor), new DatabaseFileRepository($app['xe.db']->connection()), $app['xe.auth'], $app['xe.keygen']);
     }, true);
     $this->app->bind(Storage::class, 'xe.storage');
     $this->app->bind('xe.storage.url', function ($app) {
         return new UrlMaker($app['Illuminate\\Contracts\\Routing\\UrlGenerator'], $app['config']['filesystems.disks']);
     }, true);
     intercept('Settings@getManageMenu', ['storage.managemenu' => ['before' => 'manage.sort']], function ($target) {
         $menu = $target();
         $menu['contents']['submenu']['file'] = ['title' => '파일', 'description' => 'blur blur~', 'link' => '/manage/storage'];
         return $menu;
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->bind('xe.comment', function ($app) {
         $repo = new CommentRepository($app['xe.db']->connection('comment'), $app['xe.keygen']);
         // xe.db 에서 schema builder 반환하는지 확인
         $decorator = new DivisionDecorator($repo, $app['db']->connection()->getSchemaBuilder(), $app['config']['comment.schema'], $app['xe.config']);
         $proxyClass = $app['xe.interception']->proxy(CommentHandler::class, 'Comment');
         $comment = new $proxyClass($app['xe.member'], $app['xe.auth'], $decorator, $app['xe.config'], $app['session.store'], $app['xe.counter']);
         return $comment;
     }, true);
     $this->app->bind(CommentHandler::class, 'xe.comment');
     // manage menu 등록
     intercept('Settings@getManageMenu', ['comment.managemenu' => ['before' => 'manage.sort']], function ($target) {
         $menu = $target();
         $menu['contents']['submenu']['comment'] = ['title' => '댓글', 'description' => 'blur blur~', 'link' => '/manage/comment'];
         return $menu;
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->singleton('xe.trash', function ($app) {
         $proxyClass = $app['xe.interception']->proxy(TrashManager::class, 'Trash');
         return new $proxyClass($app['xe.register'], $app['xe.db']->connection());
     });
     //        /**
     //         * register command
     //         */
     //        $this->commands([
     //            Commands\Trash::class,
     //        ]);
     // manage menu 등록
     intercept('XeSettings@getManageMenu', ['trash.managemenu' => ['before' => 'manage.sort']], function ($target) {
         $menu = $target();
         $menu['contents']['submenu']['trash'] = ['title' => '휴지통 관리', 'description' => 'blur blur~', 'link' => route('manage.trash.index')];
         return $menu;
     });
 }
Esempio n. 9
0
 public function boot()
 {
     intercept('XeStorage@upload', 'orientator.orientate', function ($target, $uploaded, $path, $name = null, $disk = null, $user = null) {
         /** @var UploadedFile $uploaded */
         if ($uploaded->isValid()) {
             $mime = $uploaded->getMimeType();
             /** @var \Xpressengine\Media\Handlers\ImageHandler $imageHandler */
             $imageHandler = app('xe.media')->getHandler(Media::TYPE_IMAGE);
             // todo: 모바일 판단여부 적용 or 무시 (ex. app('request')->isMobile())
             if ($imageHandler->isAvailable($mime)) {
                 $manager = new ImageManager();
                 $image = $manager->make($uploaded);
                 if (isset($image->exif()['Orientation'])) {
                     $content = $image->orientate()->encode()->getEncoded();
                     file_put_contents($uploaded->getPathname(), $content);
                     $uploaded = new UploadedFile($uploaded->getPathname(), $uploaded->getClientOriginalName(), $uploaded->getClientMimeType(), strlen($content));
                 }
             }
         }
         return $target($uploaded, $path, $name, $disk, $user);
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->singleton('xe.widget', function ($app) {
         $proxyClass = $app['xe.interception']->proxy(WidgetHandler::class, 'Widget');
         $widgetHandler = new $proxyClass($app['xe.pluginRegister'], $app['xe.auth'], $app['view'], $app['config']->get('app.debug') === true);
         return $widgetHandler;
     });
     $this->app->singleton('xe.widget.parser', function ($app) {
         $handler = $app['xe.widget'];
         return new WidgetParser($handler);
     });
     $this->app->bind('Xpressengine\\Widget\\WidgetHandler', 'xe.widget');
     $this->app->bind('Xpressengine\\Widget\\WidgetParser', 'xe.widget.parser');
     intercept('HtmlRenderer@render', 'widget.replace', function ($target) {
         $htmlResponseString = $target();
         /**
          * @var WidgetParser $parser
          */
         $parser = app('xe.widget.parser');
         $htmlResponseString = $parser->parseXml($htmlResponseString);
         return $htmlResponseString;
     });
 }
 /**
  * register comment intercept
  *
  * @return void
  */
 protected function registerCommentIntercept()
 {
     $app = $this->app;
     // add comment interception
     intercept('Comment@add', 'DocumentCommentCountIncrease', function ($method, CommentEntity $comment, MemberEntityInterface $user = null) use($app) {
         /** @var VirtualConnection $conn */
         $conn = $app['xe.db']->connection('document');
         $conn->beginTransaction();
         // add comment
         $result = $method($comment, $user);
         /** @var DocumentHandler $documentHandler */
         $documentHandler = app('xe.document');
         $doc = $documentHandler->get($comment->targetId, $comment->instanceId);
         /** @var CommentHandler $commentHandler */
         $commentHandler = app('xe.comment');
         $doc->commentCount = $commentHandler->countAllByTarget($comment->instanceId, $comment->targetId);
         $documentHandler->put($doc);
         $conn->commit();
         return $result;
     });
     intercept('Comment@remove', 'DocumentCommentCountDecrease', function ($method, CommentEntity $comment) use($app) {
         /** @var VirtualConnection $conn */
         $conn = $app['xe.db']->connection('document');
         $conn->beginTransaction();
         // remove comment
         $result = $method($comment);
         /** @var DocumentHandler $documentHandler */
         $documentHandler = app('xe.document');
         $doc = $documentHandler->get($comment->targetId, $comment->instanceId);
         /** @var CommentHandler $commentHandler */
         $commentHandler = app('xe.comment');
         $doc->commentCount = $commentHandler->countAllByTarget($comment->instanceId, $comment->targetId);
         $documentHandler->put($doc);
         $conn->commit();
         return $result;
     });
 }
 private function registerEvent()
 {
     intercept('XeStorage@remove', 'media.remove', function ($target, $file) {
         /** @var MediaManager $manager */
         $manager = $this->app['xe.media'];
         if ($manager->is($file)) {
             if (!$file instanceof Media) {
                 $file = $manager->make($file);
             }
             $manager->metaRemove($file);
         }
         return $target($file);
     });
 }
Esempio n. 13
0
 /**
  * skin 설정할 때 thumbnail table 을 join 할 수 있도록 intercept 등록
  *
  * @return void
  */
 protected static function interceptSetSkinTargetId()
 {
     intercept(sprintf('%s@setSkinTargetId', Presenter::class), 'board_gallery_skin::set_skin_target_id', function ($func, $skinTargetId) {
         $func($skinTargetId);
         $request = app('request');
         $instanceConfig = InstanceConfig::instance();
         if ($request instanceof Request) {
             $isMobile = $request->isMobile();
         } else {
             $isMobile = false;
         }
         $assignedSkin = XeSkin::getAssigned([$skinTargetId, $instanceConfig->getInstanceId()], $isMobile ? 'mobile' : 'desktop');
         // target 의 스킨이 현재 skin 의 아이디와 일치하는지 확인
         if (in_array($assignedSkin->getId(), static::getThumbSkins())) {
             // 리스트 출력할 때 gallery thumbnail 확인을 위한 table join 이벤트 등록
             Event::listen('xe.plugin.board.articles', function ($query) {
                 $query->leftJoin('board_gallery_thumbs', sprintf('%s.%s', $query->getQuery()->from, 'id'), '=', sprintf('%s.%s', 'board_gallery_thumbs', 'targetId'));
             });
         }
     });
 }
Esempio n. 14
0
 /**
  * 댓글 등록 시 글 작성자에게 이메일 발송
  * 인터셉셥 사용
  *
  * @see http://xpressengine.io/docs/3.0/Interception#사용법
  * @see http://xpressengine.io/plugin/xe_aoplist
  * @return void
  */
 protected function pointInterception()
 {
     // 게시물 등록 인터셉트
     intercept(BoardHandler::class . '@add', static::getId() . '::board.add', function ($addFunc, array $args, UserInterface $user, ConfigEntity $config) {
         /** @var Board $board */
         $board = $addFunc($args, $user, $config);
         $pointLog = new PointLog();
         $pointLog->userId = $user->getId();
         $pointLog->point = 2;
         //            관리자에서 설정한 값으로 사용하도록
         //            $config = app('xe.config')->get('openseminar');
         //            $pointLog->point = $config->get('document_point');
         $pointLog->createdAt = date('Y-m-d H:i:s');
         $pointLog->save();
         $point = Point::find($user->getId());
         if ($point === null) {
             $point = new Point();
         }
         $point->userId = $user->getId();
         $point->point = $pointLog->where('userId', $user->getId())->sum('point');
         $point->save();
         return $board;
     });
     // 댓글 등록 인터셉트트
     intercept(CommentHandler::class . '@create', static::getId() . '::comment.add', function ($addFunc, array $inputs, UserInterface $user = null) {
         /** @var Comment $comment */
         $comment = $addFunc($inputs, $user);
         if ($user == null) {
             $user = Auth::user();
         }
         $pointLog = new PointLog();
         $pointLog->userId = $user->getId();
         $pointLog->point = 1;
         //            관리자에서 설정한 값으로 사용하도록
         //            $config = app('xe.config')->get('openseminar');
         //            $pointLog->point = $config->get('comment_point');
         $pointLog->createdAt = date('Y-m-d H:i:s');
         $pointLog->save();
         $point = Point::find($user->getId());
         if ($point === null) {
             $point = new Point();
         }
         $point->userId = $user->getId();
         $point->point = $pointLog->where('userId', $user->getId())->sum('point');
         $point->save();
         return $comment;
     });
 }
Esempio n. 15
0
 public static function registerManagerAlarmIntercept()
 {
     intercept(sprintf('%s@add', BoardHandler::class), static::class . '-manager-board-alarm', function ($func, $args, $user, $config) {
         $board = $func($args, $user, $config);
         /** @var UrlHandler $urlHandler */
         $urlHandler = app('xe.board.url');
         $urlHandler->setConfig($config);
         $url = $urlHandler->getShow($board);
         $data = ['title' => xe_trans('board::newPostsRegistered'), 'contents' => sprintf('<a href="%s" target="_blank">%s</a><br/><br/><br/>%s', $url, $url, $board->pureContent)];
         /** @var ConfigHandler $configHandler */
         $configHandler = app('xe.board.config');
         $config = $configHandler->get($board->instanceId);
         if ($config->get('managerEmail') === null) {
             return $board;
         }
         $managerEmails = explode(',', trim($config->get('managerEmail')));
         if (count($managerEmails) == 0) {
             return $board;
         }
         foreach ($managerEmails as $toMail) {
             if (!$toMail) {
                 continue;
             }
             Mail::send('emails.notice', $data, function ($m) use($toMail, $board) {
                 $fromEmail = app('config')->get('mail.from.address');
                 $applicationName = xe_trans(app('xe.site')->getSiteConfig()->get('site_title'));
                 $menuItem = app('xe.menu')->getItem($board->instanceId);
                 $subject = sprintf('[%s - %s] %s', $applicationName, xe_trans($menuItem->title), xe_trans('board::newPostsRegistered'));
                 $m->from($fromEmail, $applicationName);
                 $m->to($toMail, 'Board manager');
                 $m->subject($subject);
             });
         }
         return $board;
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->bind('xe.media', function ($app) {
         $config = $app['config']['xe.media'];
         $proxyClass = $app['xe.interception']->proxy(MediaManager::class, 'Media');
         $mediaManager = new $proxyClass(new CommandFactory(), $config['thumbnail']);
         $image = new ImageHandler($app['xe.storage'], new ImageRepository($app['xe.db']->connection()));
         $mediaManager->extend(Media::TYPE_IMAGE, $image);
         $extensionName = isset($config['videoExtensionDefault']) ? $config['videoExtensionDefault'] : 'dummy';
         $method = 'create' . ucfirst($extensionName) . 'Extension';
         if (method_exists($this, $method) !== true) {
             throw new \InvalidArgumentException(sprintf('Unknown extension [%s]', $config['videoExtensionDefault']));
         }
         $extension = $this->{$method}($config);
         $video = new VideoHandler($app['xe.storage'], new VideoRepository($app['xe.db']->connection()), new \getID3(), new TempStorage(), $extension);
         $mediaManager->extend(Media::TYPE_VIDEO, $video);
         $audio = new AudioHandler($app['xe.storage'], new AudioRepository($app['xe.db']->connection()), new \getID3(), new TempStorage());
         $mediaManager->extend(Media::TYPE_AUDIO, $audio);
         return $mediaManager;
     }, true);
     $app = $this->app;
     intercept('Storage@remove', 'media.remove', function ($target, $file) use($app) {
         /** @var MediaManager $manager */
         $manager = $app['xe.media'];
         if ($manager->is($file)) {
             $media = $manager->make($file);
             if ($media->originId === null) {
                 $manager->getHandler(Media::TYPE_IMAGE)->removeThumbnails($media);
             }
             $manager->remove($media);
         }
         return $target($file);
     });
 }
Esempio n. 17
0
function a($x, $y)
{
    return intercept($x, $y);
}