/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addEventSubscriber(new CleanFormSubscriber(array('description' => 'html'))); $builder->addEventSubscriber(new FormExitSubscriber('asset.asset', $options)); $builder->add('storageLocation', 'button_group', array('label' => 'mautic.asset.asset.form.storageLocation', 'choice_list' => new ChoiceList(array('local', 'remote'), array('mautic.asset.asset.form.storageLocation.local', 'mautic.asset.asset.form.storageLocation.remote')), 'attr' => array('onchange' => 'Mautic.changeAssetStorageLocation();'))); $maxUploadSize = $this->assetModel->getMaxUploadSize('', true); $builder->add('tempName', 'hidden', array('label' => $this->translator->trans('mautic.asset.asset.form.file.upload', array('%max%' => $maxUploadSize)), 'label_attr' => array('class' => 'control-label'), 'required' => false)); $builder->add('originalFileName', 'hidden', array('required' => false)); $builder->add('remotePath', 'text', array('label' => 'mautic.asset.asset.form.remotePath', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control'), 'required' => false)); $builder->add('title', 'text', array('label' => 'mautic.core.title', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control'))); $builder->add('alias', 'text', array('label' => 'mautic.core.alias', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control', 'tooltip' => 'mautic.asset.asset.help.alias'), 'required' => false)); $builder->add('description', 'textarea', array('label' => 'mautic.core.description', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control editor'), 'required' => false)); $builder->add('category', 'category', array('bundle' => 'asset')); $builder->add('language', 'locale', array('label' => 'mautic.core.language', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control', 'tooltip' => 'mautic.asset.asset.form.language.help'), 'required' => false)); $builder->add('isPublished', 'yesno_button_group'); $builder->add('publishUp', 'datetime', array('widget' => 'single_text', 'label' => 'mautic.core.form.publishup', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control', 'data-toggle' => 'datetime'), 'format' => 'yyyy-MM-dd HH:mm', 'required' => false)); $builder->add('publishDown', 'datetime', array('widget' => 'single_text', 'label' => 'mautic.core.form.publishdown', 'label_attr' => array('class' => 'control-label'), 'attr' => array('class' => 'form-control', 'data-toggle' => 'datetime'), 'format' => 'yyyy-MM-dd HH:mm', 'required' => false)); $builder->add('tempId', 'hidden', array('required' => false)); $builder->add('buttons', 'form_buttons', array()); if (!empty($options["action"])) { $builder->setAction($options["action"]); } }
/** * Validates file before upload * * @param ValidationEvent $event */ public function onUploadValidation(ValidationEvent $event) { $file = $event->getFile(); $extensions = $this->coreParametersHelper->getParameter('allowed_extensions'); $maxSize = $this->assetModel->getMaxUploadSize('B'); if ($file !== null) { if ($file->getSize() > $maxSize) { $message = $this->translator->trans('mautic.asset.asset.error.file.size', ['%fileSize%' => round($file->getSize() / 1048576, 2), '%maxSize%' => round($maxSize / 1048576, 2)], 'validators'); throw new ValidationException($message); } if (!in_array(strtolower($file->getExtension()), array_map('strtolower', $extensions))) { $message = $this->translator->trans('mautic.asset.asset.error.file.extension', ['%fileExtension%' => $file->getExtension(), '%extensions%' => implode(', ', $extensions)], 'validators'); throw new ValidationException($message); } } }
/** * @param MauticEvents\CommandListEvent $event */ public function onBuildCommandList(MauticEvents\CommandListEvent $event) { if ($this->security->isGranted(['asset:assets:viewown', 'asset:assets:viewother'], 'MATCH_ONE')) { $event->addCommands('mautic.asset.assets', $this->assetModel->getCommandList()); } }
/** * @param LeadMergeEvent $event */ public function onLeadMerge(LeadMergeEvent $event) { $this->assetModel->getDownloadRepository()->updateLead($event->getLoser()->getId(), $event->getVictor()->getId()); }
/** * Set a widget detail when needed. * * @param WidgetDetailEvent $event */ public function onWidgetDetailGenerate(WidgetDetailEvent $event) { $this->checkPermissions($event); $canViewOthers = $event->hasPermission('asset:assets:viewother'); if ($event->getType() == 'asset.downloads.in.time') { $widget = $event->getWidget(); $params = $widget->getParams(); if (!$event->isCached()) { $event->setTemplateData(['chartType' => 'line', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->assetModel->getDownloadsLineChartData($params['timeUnit'], $params['dateFrom'], $params['dateTo'], $params['dateFormat'], $canViewOthers)]); } $event->setTemplate('MauticCoreBundle:Helper:chart.html.php'); $event->stopPropagation(); } if ($event->getType() == 'unique.vs.repetitive.downloads') { if (!$event->isCached()) { $params = $event->getWidget()->getParams(); $model = $this->factory->getModel('asset'); $event->setTemplateData(['chartType' => 'pie', 'chartHeight' => $event->getWidget()->getHeight() - 80, 'chartData' => $this->assetModel->getUniqueVsRepetitivePieChartData($params['dateFrom'], $params['dateTo'], $canViewOthers)]); } $event->setTemplate('MauticCoreBundle:Helper:chart.html.php'); $event->stopPropagation(); } if ($event->getType() == 'popular.assets') { if (!$event->isCached()) { $params = $event->getWidget()->getParams(); if (empty($params['limit'])) { // Count the pages limit from the widget height $limit = round(($event->getWidget()->getHeight() - 80) / 35 - 1); } else { $limit = $params['limit']; } $assets = $this->assetModel->getPopularAssets($limit, $params['dateFrom'], $params['dateTo'], $canViewOthers); $items = []; // Build table rows with links if ($assets) { foreach ($assets as &$asset) { $assetUrl = $this->router->generate('mautic_asset_action', ['objectAction' => 'view', 'objectId' => $asset['id']]); $row = [['value' => $asset['title'], 'type' => 'link', 'link' => $assetUrl], ['value' => $asset['download_count']]]; $items[] = $row; } } $event->setTemplateData(['headItems' => [$event->getTranslator()->trans('mautic.dashboard.label.title'), $event->getTranslator()->trans('mautic.dashboard.label.downloads')], 'bodyItems' => $items, 'raw' => $assets]); } $event->setTemplate('MauticCoreBundle:Helper:table.html.php'); $event->stopPropagation(); } if ($event->getType() == 'created.assets') { if (!$event->isCached()) { $params = $event->getWidget()->getParams(); if (empty($params['limit'])) { // Count the assets limit from the widget height $limit = round(($event->getWidget()->getHeight() - 80) / 35 - 1); } else { $limit = $params['limit']; } $assets = $this->assetModel->getAssetList($limit, $params['dateFrom'], $params['dateTo'], [], ['canViewOthers' => $canViewOthers]); $items = []; // Build table rows with links if ($assets) { foreach ($assets as &$asset) { $assetUrl = $this->router->generate('mautic_asset_action', ['objectAction' => 'view', 'objectId' => $asset['id']]); $row = [['value' => $asset['name'], 'type' => 'link', 'link' => $assetUrl]]; $items[] = $row; } } $event->setTemplateData(['headItems' => [$event->getTranslator()->trans('mautic.dashboard.label.title')], 'bodyItems' => $items, 'raw' => $assets]); } $event->setTemplate('MauticCoreBundle:Helper:table.html.php'); $event->stopPropagation(); } }