Exemple #1
2
 public function __construct(Application $app, $config, Block $b, Page $c, Area $a)
 {
     parent::__construct();
     $p = new \Permissions($b);
     $this->permissions = $p;
     $this->block = $b;
     $this->page = $c;
     $this->area = $a;
     $this->setAttribute('data-block-menu', 'block-menu-b' . $b->getBlockID());
     $this->setAttribute('class', 'ccm-edit-mode-block-menu');
     $btw = $b->getBlockTypeObject();
     $btOriginal = $btw;
     $bID = $b->getBlockID();
     $aID = $a->getAreaID();
     $heightPlus = 20;
     $btHandle = $btw->getBlockTypeHandle();
     $editInline = false;
     if ($btw->supportsInlineEdit()) {
         $editInline = true;
     }
     if ($btw->getBlockTypeHandle() == BLOCK_HANDLE_SCRAPBOOK_PROXY) {
         $_bi = $b->getInstance();
         $_bo = Block::getByID($_bi->getOriginalBlockID());
         $btOriginal = BlockType::getByHandle($_bo->getBlockTypeHandle());
         $btHandle = $btOriginal->getBlockTypeHandle();
         $heightPlus = 80;
         if ($btOriginal->supportsInlineEdit()) {
             $editInline = true;
         }
     }
     $canDesign = $p->canEditBlockDesign() && $config->get('concrete.design.enable_custom') == true;
     $canModifyGroups = $p->canEditBlockPermissions() && $config->get('concrete.permissions.model') != 'simple' && !$a->isGlobalArea();
     $canEditName = $p->canEditBlockName();
     $canEditCacheSettings = $p->canEditBlockCacheSettings();
     $canEditCustomTemplate = $p->canEditBlockCustomTemplate();
     $canScheduleGuestAccess = $config->get('concrete.permissions.model') != 'simple' && $p->canGuestsViewThisBlock() && $p->canScheduleGuestAccess() && !$a->isGlobalArea();
     $canAliasBlockOut = $c->isMasterCollection() && !$a->isGlobalArea();
     if ($canAliasBlockOut) {
         $ct = Type::getByID($c->getPageTypeID());
     }
     $isAlias = $b->isAlias();
     $u = new \User();
     $numChildren = !$isAlias ? $b->getNumChildren() : 0;
     if ($isAlias) {
         $deleteMessage = t('Do you want to delete this block?');
     } elseif ($numChildren) {
         $deleteMessage = t('Do you want to delete this block? This item is an original. If you delete it, you will delete all blocks aliased to it');
     } else {
         $deleteMessage = t('Do you want to delete this block?');
     }
     if ($btOriginal->getBlockTypeHandle() == BLOCK_HANDLE_STACK_PROXY) {
         if (is_object($_bo)) {
             $bi = $_bo->getInstance();
         } else {
             $bi = $b->getInstance();
         }
         $stack = \Stack::getByID($bi->stID);
         if (is_object($stack)) {
             $sp = new \Permissions($stack);
             if ($sp->canWrite()) {
                 $this->addItem(new LinkItem(\URL::to('/dashboard/blocks/stacks', 'view_details', $stack->getCollectionID()), t('Manage Stack Contents')));
             }
         }
     } else {
         if ($p->canEditBlock() && $b->isEditable()) {
             if ($editInline) {
                 if ($b->getBlockTypeHandle() == BLOCK_HANDLE_LAYOUT_PROXY) {
                     $this->addItem(new LinkItem('javascript:void(0)', t('Edit Layout'), ['data-menu-action' => 'edit_inline', 'data-area-enable-grid-container' => $a->isGridContainerEnabled(), 'data-area-grid-maximum-columns' => $a->getAreaGridMaximumColumns()]));
                 } else {
                     $this->addItem(new LinkItem('javascript:void(0)', t('Edit Block'), ['data-menu-action' => 'edit_inline', 'data-area-enable-grid-container' => $a->isGridContainerEnabled(), 'data-area-grid-maximum-columns' => $a->getAreaGridMaximumColumns()]));
                 }
             } else {
                 $this->addItem(new LinkItem('javascript:void(0)', t('Edit Block'), ['data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/edit'), 'dialog-title' => t('Edit %s', t($btOriginal->getBlockTypeName())), 'dialog-width' => $btOriginal->getBlockTypeInterfaceWidth(), 'dialog-height' => $btOriginal->getBlockTypeInterfaceHeight() + $heightPlus]));
             }
         }
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_LAYOUT_PROXY && $b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY) {
         $this->addItem(new LinkItem('javascript:void(0)', t('Copy to Clipboard'), ['data-menu-action' => 'block_scrapbook', 'data-token' => $app->make('token')->generate('tools/clipboard/to')]));
     }
     if ($p->canDeleteBlock()) {
         $this->addItem(new LinkItem('javascript:void(0)', t('Delete'), ['data-menu-action' => 'delete_block', 'data-menu-delete-message' => $deleteMessage]));
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_LAYOUT_PROXY) {
         if ($canDesign || $canEditCustomTemplate || $canEditName || $canEditCacheSettings) {
             $this->addItem(new DividerItem());
             if ($canDesign || $canEditCustomTemplate) {
                 $this->addItem(new LinkItem('#', t('Design & Custom Template'), ['data-menu-action' => 'block_design']));
             }
             if ($b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY && ($canEditName || $canEditCacheSettings)) {
                 $this->addItem(new LinkItem('#', t('Advanced'), ['dialog-title' => t('Advanced Block Settings'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/cache'), 'dialog-width' => 500, 'dialog-height' => 320]));
             }
         }
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY && ($canModifyGroups || $canScheduleGuestAccess || $canAliasBlockOut)) {
         $this->addItem(new DividerItem());
         if ($canModifyGroups) {
             $this->addItem(new LinkItem('#', t('Permissions'), ['dialog-title' => t('Block Permissions'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/permissions/list'), 'dialog-width' => 350, 'dialog-height' => 450]));
         }
         if ($canScheduleGuestAccess) {
             $this->addItem(new LinkItem('#', t('Schedule Guest Access'), ['dialog-title' => t('Schedule Guest Access'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/permissions/guest_access'), 'dialog-width' => 500, 'dialog-height' => 320]));
         }
         if ($canAliasBlockOut) {
             $this->addItem(new LinkItem('#', t('Setup on Child Pages'), ['dialog-title' => t('Setup on Child Pages'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/aliasing'), 'dialog-width' => 500, 'dialog-height' => 'auto']));
         }
     }
 }
 /**
  * Returns a callable for the given controller.
  *
  * @param string $controller A Controller string
  *
  * @return mixed A PHP callable
  *
  * @throws \InvalidArgumentException
  */
 protected function createController($controller)
 {
     if (false === strpos($controller, '::')) {
         throw new \InvalidArgumentException(sprintf('Unable to find controller "%s".', $controller));
     }
     list($class, $method) = explode('::', $controller, 2);
     if (!class_exists($class)) {
         throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
     }
     return array($this->app->make($class), $method);
 }
 public function testBindings()
 {
     $app = new Application();
     $provider = new ServiceProvider($app);
     $provider->register();
     $service = new \Concrete\Tests\Core\Authentication\Fixtures\ServiceFixture();
     /** @var \OAuth\UserData\ExtractorFactory $extractor_factory */
     $extractor_factory = $app['oauth/factory/extractor'];
     $this->assertInstanceOf('OAuth\\UserData\\ExtractorFactoryInterface', $extractor_factory);
     $extractor_factory->addExtractorMapping('Concrete\\Tests\\Core\\Authentication\\Fixtures\\ServiceFixture', 'Concrete\\Tests\\Core\\Authentication\\Fixtures\\ExtractorFixture');
     $this->assertInstanceOf('OAuth\\UserData\\Extractor\\ExtractorInterface', $app->make('oauth_extractor', array($service)));
 }
 /**
  * Build a service from an abstract.
  *
  * @param string|callable $abstract
  * @param string $version
  *
  * @return ServiceInterface|null
  */
 private function buildService($abstract, $version = '')
 {
     $resolved = null;
     if (is_string($abstract)) {
         // If it's a string, throw it at the IoC container
         $resolved = $this->app->make($abstract, array($version));
     } elseif (is_callable($abstract)) {
         // If it's a callable, lets call it with the application and $this
         $resolved = $abstract($version, $this->app, $this);
     }
     return $resolved;
 }
 /**
  * Return the correct MappingDriver base on the application config
  * 
  * @return XmlDriver|YamlDriver|AnnotationDriver
  */
 public function getDriver()
 {
     $config = $this->config;
     if ($this->isLegacy()) {
         $appEntityPath = DIR_APPLICATION . DIRECTORY_SEPARATOR . DIRNAME_CLASSES;
         $reader = $this->app->make('orm/cachedSimpleAnnotationReader');
     } else {
         $appEntityPath = DIR_APPLICATION . DIRECTORY_SEPARATOR . DIRNAME_CLASSES . DIRECTORY_SEPARATOR . DIRNAME_ENTITIES;
         $reader = $this->app->make('orm/cachedAnnotationReader');
     }
     $appDriverSettings = $config->get(CONFIG_ORM_METADATA_APPLICATION);
     $xmlConfig = DIR_APPLICATION . DIRECTORY_SEPARATOR . REL_DIR_METADATA_XML;
     $ymlConfig = DIR_APPLICATION . DIRECTORY_SEPARATOR . REL_DIR_METADATA_YAML;
     // Default setting so it comes first
     if (empty($appDriverSettings) && is_dir($appEntityPath)) {
         return new AnnotationDriver($reader, $appEntityPath);
     } else {
         if ($appDriverSettings === 'xml') {
             if (is_dir($xmlConfig)) {
                 return new XmlDriver($xmlConfig);
             } else {
                 // Fallback to default
                 return new AnnotationDriver($reader, $appEntityPath);
             }
         } else {
             if ($appDriverSettings === 'yaml' || $appDriverSettings === 'yml') {
                 if (is_dir($ymlConfig)) {
                     return new YamlDriver($ymlConfig);
                 } else {
                     // Fallback to default
                     return new AnnotationDriver($reader, $appEntityPath);
                 }
             }
         }
     }
 }
Exemple #6
0
 /**
  * Create a entity manager used for the package installation,
  * update and unistall process.
  *
  * @return \Doctrine\ORM\EntityManager
  */
 public function getPackageEntityManager()
 {
     $providerFactory = new PackageProviderFactory($this->app, $this);
     $provider = $providerFactory->getEntityManagerProvider();
     $drivers = $provider->getDrivers();
     if (count($drivers)) {
         $config = Setup::createConfiguration(true, $this->app->make('config')->get('database.proxy_classes'));
         $driverImpl = new MappingDriverChain();
         $coreDriver = new CoreDriver($this->app);
         // Add the core driver to it so packages can extend the core and not break.
         $driverImpl->addDriver($coreDriver->getDriver(), $coreDriver->getNamespace());
         foreach ($drivers as $driver) {
             $driverImpl->addDriver($driver->getDriver(), $driver->getNamespace());
         }
         $config->setMetadataDriverImpl($driverImpl);
         $em = EntityManager::create(\Database::connection(), $config);
         return $em;
     }
 }
 private function handleDispatch($request)
 {
     $collection = $this->router->getList();
     $context = new RequestContext();
     $context->fromRequest($request);
     $matcher = new UrlMatcher($collection, $context);
     $path = rtrim($request->getPathInfo(), '/') . '/';
     try {
         $request->attributes->add($matcher->match($path));
         $matched = $matcher->match($path);
         $route = $collection->get($matched['_route']);
         $this->router->setRequest($request);
         $response = $this->router->execute($route, $matched);
     } catch (ResourceNotFoundException $e) {
         $callback = $this->app->make(DispatcherRouteCallback::class, ['dispatcher']);
         $response = $callback->execute($request);
     }
     return $response;
 }
 /**
  * If we haven't installed and we're not looking at the install directory, redirect.
  *
  * @param Application $app
  * @param Request $request
  *
  * @return null|Response
  */
 private function checkInstall(Application $app, Request $request)
 {
     if (!$app->isInstalled()) {
         if (!$request->matches('/install/*') && $request->getPath() != '/install' && !$request->matches('/ccm/assets/localization/*')) {
             $manager = $app->make('Concrete\\Core\\Url\\Resolver\\Manager\\ResolverManager');
             $response = new RedirectResponse($manager->resolve(array('install')));
             return $response;
         }
     }
 }
Exemple #9
0
 /**
  * @param \Symfony\Component\HttpFoundation\Session\Session $session
  *
  * @deprecated Use \Concrete\Core\Session\SessionValidator
  */
 public static function testSessionFixation(SymfonySession $session)
 {
     $validator = self::$app->make('Concrete\\Core\\Session\\SessionValidatorInterface');
     $validator->handleSessionValidation($session);
 }
Exemple #10
0
 /**
  * {@inheritdoc}
  *
  * @see \Concrete\Core\Service\ServiceInterface::getConfigurator()
  */
 public function getConfigurator()
 {
     return $this->app->make($this->configurator_class);
 }
 public function entityManager()
 {
     return $this->app->make('Doctrine\\ORM\\EntityManager');
 }
Exemple #12
0
 /**
  * Returns the settings for all defined filters in the filter
  * settings repository.
  *
  * @return array
  */
 protected function getFilterSettings()
 {
     $rep = $this->app->make('Concrete\\Package\\AssetPipeline\\Src\\Asset\\Filter\\SettingsRepositoryInterface');
     return $rep->getAllFilterSettings();
 }
 /**
  * @param Repository $config
  * @param Application $app
  */
 private function initializeLegacyURLDefinitions(Application $app)
 {
     if (!defined('BASE_URL')) {
         try {
             define('BASE_URL', rtrim((string) $app->make('url/canonical'), '/'));
         } catch (\Exception $x) {
             echo $x->getMessage();
             die(1);
         }
     }
 }
 /**
  * Get the AnnotationDriver
  * 
  * @return AnnotationDriver
  */
 public function getDriver()
 {
     $annotationDriver = new AnnotationDriver($this->app->make('orm/cachedAnnotationReader'), [DIR_BASE_CORE . DIRECTORY_SEPARATOR . DIRNAME_CLASSES . '/' . DIRNAME_ENTITIES]);
     return $annotationDriver;
 }
 /**
  * Get StandardAnnotationReader
  * 
  * @return \Doctrine\Common\Annotations\CachedReader with a
  *         \Doctrine\Common\Annotations\AnnotationReader
  */
 protected function getStandardAnnotationReader()
 {
     return $this->app->make('orm/cachedAnnotationReader');
 }
Exemple #16
0
 public function __construct(Application $app)
 {
     $this->app = $app;
     $this->config = $app->make('config');
 }