if ( ! class_exists($proxyClassName)) {
eval(substr($proxyCode, 5));
}
return;
}
$parentDirectory = dirname($fileName);
if ( ! is_dir($parentDirectory) && (false === @mkdir($parentDirectory, 0775, true))) {
throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
}
if ( ! is_writable($parentDirectory)) {
throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
}
$tmpFileName = $fileName . '.' . uniqid('', true);
file_put_contents($tmpFileName, $proxyCode);
@chmod($tmpFileName, 0664);
rename($tmpFileName, $fileName);
}
/**
* Generates the proxy short class name to be used in the template.
*
* @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
*
* @return string
*/
private function generateProxyShortClassName(ClassMetadata $class)
{
$proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
$parts = explode('\\', strrev($proxyClassName), 2);
return strrev($parts[0]);
}
/**
if ( ! class_exists($proxyClassName)) {
eval(substr($proxyCode, 5));
}
return;
}
$parentDirectory = dirname($fileName);
if ( ! is_dir($parentDirectory) && (false === @mkdir($parentDirectory, 0775, true))) {
throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
}
if ( ! is_writable($parentDirectory)) {
throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
}
$tmpFileName = $fileName . '.' . uniqid('', true);
file_put_contents($tmpFileName, $proxyCode);
@chmod($tmpFileName, 0664);
rename($tmpFileName, $fileName);
}
/**
* Generates the proxy short class name to be used in the template.
*
* @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
*
* @return string
*/
private function generateProxyShortClassName(ClassMetadata $class)
{
$proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
$parts = explode('\\', strrev($proxyClassName), 2);
return strrev($parts[0]);
}
/**
$this->definitions[$className] = $this->createProxyDefinition($className);
$proxyClassName = $this->definitions[$className]->proxyClassName;
if ( ! class_exists($proxyClassName, false)) {
$fileName = $this->proxyGenerator->getProxyFileName($className);
switch ($this->autoGenerate) {
case self::AUTOGENERATE_NEVER:
require $fileName;
break;
case self::AUTOGENERATE_FILE_NOT_EXISTS:
if ( ! file_exists($fileName)) {
$this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
}
require $fileName;
break;
case self::AUTOGENERATE_ALWAYS:
$this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
require $fileName;
break;
case self::AUTOGENERATE_EVAL:
$this->proxyGenerator->generateProxyClass($classMetadata, false);
break;
}
}
return $this->definitions[$className];
}
/**
* Determine if this class should be skipped during proxy generation.
*
* @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $metadata
*
* @return bool
*/
abstract protected function skipClass(ClassMetadata $metadata);
$this->metadataFactory = $metadataFactory;
$this->autoGenerate = (int)$autoGenerate;
}
/**
* Gets a reference proxy instance for the entity of the given type and identified by
* the given identifier.
*
* @param string $className
* @param array $identifier
*
* @return \Doctrine\Common\Proxy\Proxy
*
* @throws \Doctrine\Common\Proxy\Exception\OutOfBoundsException
*/
public function getProxy($className, array $identifier)
{
$definition = isset($this->definitions[$className])
? $this->definitions[$className]
: $this->getProxyDefinition($className);
$fqcn = $definition->proxyClassName;
$proxy = new $fqcn($definition->initializer, $definition->cloner);
foreach ($definition->identifierFields as $idField) {
if (! isset($identifier[$idField])) {
throw OutOfBoundsException::missingPrimaryKeyValue($className, $idField);
}
$definition->reflectionFields[$idField]->setValue($proxy, $identifier[$idField]);
}
return $proxy;
}
/**
* Generates proxy classes for all given classes.
*
* @param \Doctrine\Common\Persistence\Mapping\ClassMetadata[] $classes The classes (ClassMetadata instances)
* for which to generate proxies.
* @param string $proxyDir The target directory of the proxy classes. If not specified, the
$newValue instanceof Proxy &&
$newValue->__isInitialized__ === false) {
$this->eagerLoadingEntities[$targetClass->rootEntityName][$relatedIdHash] = current($associatedId);
}
break;
case ($targetClass->subClasses):
// If it might be a subtype, it can not be lazy. There isn't even
// a way to solve this with deferred eager loading, which means putting
// an entity with subclasses at a *-to-one location is really bad! (performance-wise)
$newValue = $this->getEntityPersister($assoc['targetEntity'])->loadOneToOneEntity($assoc, $entity, $associatedId);
break;
default:
switch (true) {
// We are negating the condition here. Other cases will assume it is valid!
case ($hints['fetchMode'][$class->name][$field] !== ClassMetadata::FETCH_EAGER):
$newValue = $this->em->getProxyFactory()->getProxy($assoc['targetEntity'], $associatedId);
break;
// Deferred eager load only works for single identifier classes
case (isset($hints[self::HINT_DEFEREAGERLOAD]) && ! $targetClass->isIdentifierComposite):
// TODO: Is there a faster approach?
$this->eagerLoadingEntities[$targetClass->rootEntityName][$relatedIdHash] = current($associatedId);
$newValue = $this->em->getProxyFactory()->getProxy($assoc['targetEntity'], $associatedId);
break;
default:
// TODO: This is very imperformant, ignore it?
$newValue = $this->em->find($assoc['targetEntity'], $associatedId);
break;
}
// PERF: Inlined & optimized code from UnitOfWork#registerManaged()
$newValueOid = spl_object_hash($newValue);
$this->entityIdentifiers[$newValueOid] = $associatedId;
$this->identityMap[$targetClass->rootEntityName][$relatedIdHash] = $newValue;
// Convert field to a valid PHP value
if (isset($cacheKeyInfo['type'])) {
$type = $cacheKeyInfo['type'];
$value = $type->convertToPHPValue($value, $this->_platform);
}
$fieldName = $cacheKeyInfo['fieldName'];
// Prevent overwrite in case of inherit classes using same property name (See AbstractHydrator)
if ( ! isset($data[$fieldName]) || ! $valueIsNull) {
$data[$fieldName] = $value;
}
}
if (isset($this->_hints[Query::HINT_REFRESH_ENTITY])) {
$this->registerManaged($this->class, $this->_hints[Query::HINT_REFRESH_ENTITY], $data);
}
$uow = $this->_em->getUnitOfWork();
$entity = $uow->createEntity($entityName, $data, $this->_hints);
$result[] = $entity;
if (isset($this->_hints[Query::HINT_INTERNAL_ITERATION]) && $this->_hints[Query::HINT_INTERNAL_ITERATION]) {
$this->_uow->hydrationComplete();
}
}
}
/**
* {@inheritdoc}
*/
protected function cleanup()
{
parent::cleanup();
$this->_uow->triggerEagerLoads();
$this->_uow->hydrationComplete();
}
/**
* {@inheritdoc}
*/
protected function hydrateAllData()
{
$result = array();
while ($row = $this->_stmt->fetch(PDO::FETCH_ASSOC)) {
$this->hydrateRowData($row, $result);
}
$this->_em->getUnitOfWork()->triggerEagerLoads();
return $result;
}
/**
* {@inheritdoc}
*/
protected function hydrateRowData(array $sqlResult, array &$result)
{
$entityName = $this->class->name;
$data = array();
// We need to find the correct entity class name if we have inheritance in resultset
if ($this->class->inheritanceType !== ClassMetadata::INHERITANCE_TYPE_NONE) {
$discrColumnName = $this->_platform->getSQLResultCasing($this->class->discriminatorColumn['name']);
// Find mapped discriminator column from the result set.
* Hydrates all rows returned by the passed statement instance at once.
*
* @param object $stmt
* @param object $resultSetMapping
* @param array $hints
*
* @return array
*/
public function hydrateAll($stmt, $resultSetMapping, array $hints = array())
{
$this->_stmt = $stmt;
$this->_rsm = $resultSetMapping;
$this->_hints = $hints;
$evm = $this->_em->getEventManager();
$evm->addEventListener(array(Events::onClear), $this);
$this->prepare();
$result = $this->hydrateAllData();
$this->cleanup();
return $result;
}
/**
* Hydrates a single row returned by the current statement instance during
* row-by-row hydration with {@link iterate()}.
*
* @return mixed
*/
public function hydrateRow()
{
$row = $this->_stmt->fetch(PDO::FETCH_ASSOC);
if ( ! $row) {
$this->cleanup();
return false;
}
/**
* {@inheritdoc}
*/
public function load(array $criteria, $entity = null, $assoc = null, array $hints = array(), $lockMode = null, $limit = null, array $orderBy = null)
{
$this->switchPersisterContext(null, $limit);
$sql = $this->getSelectSQL($criteria, $assoc, $lockMode, $limit, null, $orderBy);
list($params, $types) = $this->expandParameters($criteria);
$stmt = $this->conn->executeQuery($sql, $params, $types);
if ($entity !== null) {
$hints[Query::HINT_REFRESH] = true;
$hints[Query::HINT_REFRESH_ENTITY] = $entity;
}
$hydrator = $this->em->newHydrator($this->currentPersisterContext->selectJoinSql ? Query::HYDRATE_OBJECT : Query::HYDRATE_SIMPLEOBJECT);
$entities = $hydrator->hydrateAll($stmt, $this->currentPersisterContext->rsm, $hints);
return $entities ? $entities[0] : null;
}
/**
* {@inheritdoc}
*/
public function loadById(array $identifier, $entity = null)
{
return $this->load($identifier, $entity);
}
/**
* {@inheritdoc}
*/
public function loadOneToOneEntity(array $assoc, $sourceEntity, array $identifier = array())
{
if (($foundEntity = $this->em->getUnitOfWork()->tryGetById($identifier, $assoc['targetEntity'])) != false) {
return $foundEntity;
}
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return $persister->loadAll($criteria, $orderBy, $limit, $offset);
}
/**
* Finds a single entity by a set of criteria.
*
* @param array $criteria
* @param array|null $orderBy
*
* @return object|null The entity instance or NULL if the entity can not be found.
*/
public function findOneBy(array $criteria, array $orderBy = null)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return $persister->load($criteria, null, null, array(), null, 1, $orderBy);
}
/**
* Adds support for magic finders.
*
* @param string $method
* @param array $arguments
*
* @return array|object The found entity/entities.
*
* @throws ORMException
* @throws \BadMethodCallException If the method called is an invalid find* method
* or no find* method at all and therefore an invalid
* method call.
*/
public function __call($method, $arguments)
{
switch (true) {
case (0 === strpos($method, 'findBy')):
$by = substr($method, 6);
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function getByID($id)
{
return $this->entityManager->find('Concrete\Core\Entity\Site\Locale', $id);
}
/**
* Get the default site locale (if set).
*
* @return Locale|null
*/
public function getDefaultLocale()
{
try {
return $this->entityManager->getRepository(Locale::class)->findOneBy(['msIsDefault' => true]);
} catch (TableNotFoundException $e) {
return null;
}
}
public function setDefaultLocale(Locale $defaultLocale)
{
foreach ($defaultLocale->getSite()->getLocales() as $locale) {
$locale->setIsDefault(false);
$this->entityManager->persist($locale);
}
$this->entityManager->flush();
$defaultLocale->setIsDefault(true);
$this->entityManager->persist($defaultLocale);
$this->entityManager->flush();
}
public function add(Site $site, $language, $country)
{
* Get the ID of the home page.
*
* @param Page|int $page the page (or its ID) for which you want the home (if not specified, we'll use the default locale site tree)
*
* @return int|null returns NULL if $page is null (or it doesn't have a SiteTree associated) and if there's no default locale
*/
public static function getHomePageID($page = null)
{
if ($page) {
if (!$page instanceof self) {
$page = self::getByID($page);
}
if ($page instanceof self) {
$siteTree = $page->getSiteTreeObject();
if ($siteTree !== null) {
return $siteTree->getSiteHomePageID();
}
}
}
$locale = Application::getFacadeApplication()->make(LocaleService::class)->getDefaultLocale();
if ($locale !== null) {
$siteTree = $locale->getSiteTreeObject();
if ($siteTree != null) {
return $siteTree->getSiteHomePageID();
}
}
$entityManager = Application::getFacadeApplication()->make(EntityManagerInterface::class);
try {
$site = $entityManager->getRepository('Concrete\Core\Entity\Site\Site')
->findOneBy(['siteIsDefault' => true]);
if ($site !== null) {
return $site->getSiteHomePageID();
}
} catch (\Exception $e) {
return null;
}
/**
* Either creates a completely new entity, or ensures that the passed entity has all the items it
* needs to function (e.g. a config repository)
* @param Site|null $site
*/
public function createEntity(Site $site = null)
{
if (!$site) {
$site = new Site($this->config);
} else {
$site->updateSiteConfigRepository($this->config);
}
return $site;
}
public function createDefaultEntity()
{
$tree = new SiteTree();
$tree->setSiteHomePageID(Page::getHomePageID() ?: 1);
$locale = new Locale();
$locale->setLanguage('en');
$locale->setCountry('US');
$locale->setSiteTree($tree);
$site = new Site($this->config);
$site->setSiteHandle('default');
$site->setIsDefault(true);
$tree->setLocale($locale);
return $site;
}
}
}
return $site;
}
/**
* @return Site|null
*/
public function getDefault()
{
$item = $this->cache->getItem(sprintf('/site/default'));
if (!$item->isMiss()) {
$site = $item->get();
} else {
$factory = new Factory($this->config);
try {
$site = $this->entityManager->getRepository('Concrete\Core\Entity\Site\Site')
->findOneBy(['siteIsDefault' => true]);
} catch (\Exception $e) {
return $factory->createDefaultEntity();
}
if (is_object($site)) {
$site = $factory->createEntity($site);
}
$this->cache->save($item->set($site));
}
return $site;
}
/**
* @param Type $type
* @param Theme $theme
* @param string $handle
* @param string $name
* @param string $locale
* @param bool $default
*
* @return Site
*/
<?php
namespace Concrete\Core\Site\Resolver;
use Concrete\Core\Site\Factory;
use Concrete\Core\Site\Service;
use Concrete\Core\Http\Request;
class StandardDriver implements DriverInterface
{
public function getSite(Service $service, Request $request)
{
return $service->getDefault();
}
public function getActiveSiteForEditing(Service $service, Request $request)
{
return $service->getDefault();
}
}
use Concrete\Core\Site\Service;
use Concrete\Core\Http\Request;
class Resolver
{
protected $driver;
protected $service;
protected $request;
public function __construct(Service $service, DriverInterface $driver, Request $request)
{
$this->driver = $driver;
$this->service = $service;
$this->request = $request;
}
public function getSite()
{
return $this->driver->getSite($this->service, $this->request);
}
public function getActiveSiteForEditing()
{
return $this->driver->getActiveSiteForEditing($this->service, $this->request);
}
}
$this->entityManager->flush();
$this->cache->delete('site');
return $site;
}
/**
* Resolve the active site
* This method MUST be treated as `final` by extending drivers, but MAY be replaced by a complete override.
*
* @return Site|null
*/
public function getSite()
{
$item = $this->cache->getItem('site');
if (!$item->isMiss()) {
$site = $item->get();
} else {
$site = $this->resolverFactory->createResolver($this)->getSite();
$this->cache->save($item->set($site));
}
return $site;
}
/**
* Resolve the active site for editing
* This method MUST be treated as `final` by extending drivers, but MAY be replaced by a complete override.
*
* @return Site|null
*/
public function getActiveSiteForEditing()
{
return $this->resolverFactory->createResolver($this)->getActiveSiteForEditing();
}
public function getSiteDomains(Site $site)
{
*/
public function resolve(array $arguments, $resolved = null)
{
$page = null;
$site = null;
// Canonical urls for pages can be different than for the entire site
if (isset($arguments[0]) && $arguments[0] instanceof Page) {
$page = head($arguments);
$tree = $page->getSiteTreeObject();
if ($tree instanceof SiteTree) {
$site = $tree->getSite();
}
} elseif ($this->cached) {
return $this->cached;
}
/* @var \Concrete\Core\Page\Page|null $page */
// Get the site from the current site tree
if ($site === null && $this->app->isInstalled()) {
$site = $this->app->make('site')->getSite();
}
/* @var \Concrete\Core\Entity\Site\Site|null $site */
// Determine trailing slash setting
$trailing_slashes = $this->app->make('config')->get('concrete.seo.trailing_slash') ? Url::TRAILING_SLASHES_ENABLED : Url::TRAILING_SLASHES_DISABLED;
$url = UrlImmutable::createFromUrl('', $trailing_slashes);
$url = $url->setHost(null);
$url = $url->setScheme(null);
if ($site && $configUrl = $site->getSiteCanonicalURL()) {
$requestScheme = strtolower($this->request->getScheme());
$canonical = UrlImmutable::createFromUrl($configUrl, $trailing_slashes);
$canonicalToUse = $canonical;
if ($configUrlAlternative = $site->getSiteAlternativeCanonicalURL()) {
$canonical_alternative = UrlImmutable::createFromUrl($configUrlAlternative, $trailing_slashes);
}
$page = null;
foreach ($arguments as $key => $argument) {
if ($argument instanceof Page) {
$page = $argument;
break;
}
}
if ($page) {
unset($arguments[$key]);
}
$args = $arguments;
$path = array_shift($args);
if (is_scalar($path) || (is_object($path) && method_exists($path, '__toString'))) {
$path = rtrim($path, '/');
$url = $this->canonical->resolve([$page]);
$url = $this->handlePath($url, $path, $args);
return $url;
}
return null;
}
/**
* @param \Concrete\Core\Url\UrlInterface $url
* @param string $path
* @param array $args
*
* @return \Concrete\Core\Url\UrlInterface|\League\Url\Url
*/
protected function handlePath(UrlInterface $url, $path, $args)
{
$path_object = $this->basePath($url, $path, $args);
$components = parse_url($path);
* {@inheritdoc}
*
* @see \Concrete\Core\Url\Resolver\Manager\ResolverManagerInterface::resolve()
*/
public function resolve(array $args)
{
$resolved = null;
foreach ($this->priorityTree as $list) {
foreach ($list as $handle) {
if ($handle == $this->default) {
continue;
}
$resolver = $this->getResolver($handle);
$resolved = $resolver->resolve($args, $resolved);
}
}
if ($default = $this->getResolver($this->default)) {
$resolved = $default->resolve($args, $resolved);
}
return $resolved;
}
}
public static function getFacadeAccessor()
{
return 'url/manager';
}
/**
* Resolve a URL from data.
*
* Working core examples for example.com:
* \Url::to('/some/path', 'some_action', $some_variable = 2)
* http://example.com/some/path/some_action/2/
*
* \Url::to($page_object = \Page::getByPath('blog'), 'action')
* http://example.com/blog/action/
*
* @return \League\URL\URLInterface
*/
public static function to(/* ... */)
{
return static::getFacadeRoot()->resolve(func_get_args());
}
/**
* This method is only here as a legacy decorator, use url::to.
*
* @return \League\URL\URLInterface
*
* @deprecated
*/
public static function route($data)
{
$arguments = array_slice(func_get_args(), 1);
if (!$arguments) {
$arguments = array();
}
$route = static::getFacadeApplication()->make(\Router::class)->route($data);
array_unshift($arguments, $route);
return static::getFacadeRoot()->resolve($arguments);
}
'/formidable/dialog/formidable/bottomjs/{formID}' => '\Concrete\Package\FormidableFull\Controller\Dialog\Formidable::bottomJS'
);
if (is_array($register) && count($register)) {
foreach ($register as $path => $controller) {
Route::register($path, $controller);
}
}
$al = AssetList::getInstance();
$token = Core::make('token');
$slash = '/';
if (Config::get('concrete.seo.trailing_slash')) $slash = '';
$script = "var edit_content = '".t('Edit content')."';
var add_content = '".t('Add content')."';
var changed_values = '".t('You have made some changes to the Form Properties. Are you sure you want to discard these changes?')."';
var formidable_security_token_form = '".$token->generate('formidable_form')."';
var list_url = '".URL::to('/formidable/dialog/dashboard/forms/form_list').$slash."';
var dialog_url = '".URL::to('/formidable/dialog/dashboard/forms/dialog').$slash."';
var tools_url = '".URL::to('/formidable/dialog/dashboard/forms/tools').$slash."';
var title_message_delete = '".t('Delete Formidable Form')."'
$(function() {
ccmFormidableLoadForms();
});";
$al->register('javascript-inline', 'formidable/inline/dashboard/forms/top', $script, array('minify' => true, 'combine' => true));
$script = "var formidable_security_token_element = '".$token->generate('formidable_element')."';
var formidable_security_token_mailing = '".$token->generate('formidable_mailing')."';
var formidable_security_token_dependency = '".$token->generate('formidable_dependency')."';
var formidable_security_token_layout = '".$token->generate('formidable_layout')."';
var option_counter = 10000;
var list_url = '".URL::to('/formidable/dialog/dashboard/forms/element_list').$slash."';
var dialog_url = '".URL::to('/formidable/dialog/dashboard/elements/dialog').$slash."';
var tools_url = '".URL::to('/formidable/dialog/dashboard/elements/tools').$slash."';
var dependency_url = '".URL::to('/formidable/dialog/dashboard/elements/dependency').$slash."';
var layout_dialog_url = '".URL::to('/formidable/dialog/dashboard/layout/dialog').$slash."';
var layout_tools_url = '".URL::to('/formidable/dialog/dashboard/layout/tools').$slash."';
var placeholder_value = '".t('Value')."';
foreach ($this->packages as $pkg) {
if ($config->get('concrete.updates.enable_auto_update_packages')) {
$dbPkg = \Package::getByHandle($pkg->getPackageHandle());
$pkgInstalledVersion = $dbPkg->getPackageVersion();
$pkgFileVersion = $pkg->getPackageVersion();
if (version_compare($pkgFileVersion, $pkgInstalledVersion, '>')) {
$loc->pushActiveContext(Localization::CONTEXT_SYSTEM);
$dbPkg->upgradeCoreData();
$dbPkg->upgrade();
$dbPkg->upgradePackageThemes();
$loc->popActiveContext();
}
}
}
$packagesWithOnAfterStart = [];
$service = $this->make(PackageService::class);
foreach ($this->packages as $pkg) {
if (method_exists($pkg, 'on_start')) {
$pkg->on_start();
}
$service->bootPackageEntityManager($pkg);
if (method_exists($pkg, 'on_after_packages_start')) {
$packagesWithOnAfterStart[] = $pkg;
}
}
foreach ($packagesWithOnAfterStart as $pkg) {
$pkg->on_after_packages_start();
}
}
/**
* Ensure we have a cache directory.
*/
public function setupFilesystem()
{
$config = $this['config'];
if (!is_dir($config->get('concrete.cache.directory'))) {
@mkdir($config->get('concrete.cache.directory'), $config->get('concrete.filesystem.permissions.directory'));
* Create the request object to use.
*/
protected function createRequest()
{
$request = Request::createFromGlobals();
$request::setInstance($request);
return $request;
}
/**
* Setup concrete5 packages.
*
* @deprecated In a future major version this will be part of HTTP middleware
*
* @return Response|void Returns a response if an error occurs
*/
protected function setupPackages()
{
$this->app->setupPackages();
}
/**
* Pre-load class aliases
* This is needed to avoid the problem of calling functions that accept a class alias as a parameter,
* but that alias isn't still auto-loaded. For example, that would result in the following error:
* Argument 1 passed to functionName() must be an instance of Area, instance of Concrete\Core\Area\Area given.
*
* @deprecated Don't use this method: it will be removed in future concrete5 versions
*/
protected function preloadClassAliases()
{
ClassAliasList::getInstance()->resolveRequired();
}
/**
* Load in the `/application/bootstrap/app.php` file.
*
* @deprecated In a future major version this will be part of HTTP middleware
*
* @return Response|void Returns a response if an error occurs
*/
protected function handlePermissionKeys()
{
/* @todo Replace this with a testable service */
Key::loadAll();
}
/**
* Try a list of steps. If a response is returned, halt progression and return the response;.
*
* @param string[] $steps
*
* @return Response|null
*/
protected function trySteps(array $steps)
{
foreach ($steps as $step) {
// Run each step and return if there's a result
if ($result = $this->$step()) {
return $result;
}
}
return null;
}
/**
* Get the config repository to use.
*
* @deprecated In a future major version this will be part of HTTP middleware
*
* @return Repository
*/
protected function getConfig()
{
if (!$this->config) {
$this->config = $this->getDefaultConfig();
}
/**
* Begin the runtime.
*/
public function run()
{
// Load in the /application/bootstrap/app.php file
$this->loadBootstrap();
$response = null;
// Check if we're installed
if ($this->app->isInstalled()) {
// Call each step in the line
// @todo Move these to individual middleware, this is basically a duplicated middleware pipeline
$response = $this->trySteps([
// Set the active language for the site, based either on the site locale, or the
// current user record. This can be changed later as well, during runtime.
// Start localization library.
'setSystemLocale',
// Set the system time zone (what should be the same as the database one)
'initializeSystemTimezone',
// Handle updating automatically
'handleUpdates',
// Set up packages first.
// We do this because we don't want the entity manager to be loaded and we
// want to give packages an opportunity to replace classes and load new classes
'setupPackages',
// Pre-load class aliases
// This is needed to avoid the problem of calling functions that accept a class alias as a parameter,
// but that alias isn't still auto-loaded. For example, that would result in the following error:
// Argument 1 passed to functionName() must be an instance of Area, instance of Concrete\Core\Area\Area given.
// Don't use this method: it will be removed in future concrete5 versions
'preloadClassAliases',
// Load site specific timezones. Has to come after packages because it
$this->status = self::STATUS_ACTIVE;
}
}
/**
* Begin the runtime.
*/
public function run()
{
switch ($this->status) {
case self::STATUS_ENDED:
// We've already ended, lets just return
return;
case self::STATUS_INACTIVE:
throw new \RuntimeException('Runtime has not yet booted.');
}
$runner = $this->getRunner();
$response = $runner->run();
if ($response) {
$this->sendResponse($response);
}
return $response;
}
/**
* The method that handles properly sending a response.
*
* @param \Symfony\Component\HttpFoundation\Response $response
*/
protected function sendResponse(Response $response)
{
$response->send();
// Set the status to ended
$this->status = self::STATUS_ENDED;
}
* Include all autoloaders.
* ----------------------------------------------------------------------------
*/
require __DIR__ . '/bootstrap/autoload.php';
/*
* ----------------------------------------------------------------------------
* Begin concrete5 startup.
* ----------------------------------------------------------------------------
*/
$app = require __DIR__ . '/bootstrap/start.php';
/** @var \Concrete\Core\Application\Application $app */
/*
* ----------------------------------------------------------------------------
* Run the runtime.
* ----------------------------------------------------------------------------
*/
$runtime = $app->getRuntime();
if ($response = $runtime->run()) {
/*
* ------------------------------------------------------------------------
* Shut it down.
* ------------------------------------------------------------------------
*/
$app->shutdown();
} else {
return $app;
}
defined('DIR_CONFIG_SITE') or define('DIR_CONFIG_SITE', DIR_APPLICATION . '/config');
/*
* ----------------------------------------------------------------------------
* Now that we've had the opportunity to load our config file, we know if we
* have a DIRNAME_CORE_UPDATED constant, which lives in that file, and which
* points to another core. If we have this constant, we exit this file
* immeditely and proceed into the updated core.
* ----------------------------------------------------------------------------
*/
if (!defined('APP_UPDATED_PASSTHRU')) {
$update_file = DIR_CONFIG_SITE . '/update.php';
if (file_exists($update_file)) {
$updates = (array) include $update_file;
if (isset($updates['core'])) {
define('APP_UPDATED_PASSTHRU', true);
define('DIRNAME_APP_UPDATED', $updates['core']);
if (is_dir(DIR_BASE . '/' . DIRNAME_UPDATES . '/' . DIRNAME_APP_UPDATED)) {
require DIR_BASE . '/' . DIRNAME_UPDATES . '/' . DIRNAME_APP_UPDATED . '/' . DIRNAME_CORE . '/' . 'dispatcher.php';
} elseif (file_exists(DIRNAME_UPDATES . '/' . DIRNAME_APP_UPDATED . '/' . DIRNAME_CORE . '/' . 'dispatcher.php')) {
require DIRNAME_UPDATES . '/' . DIRNAME_APP_UPDATED . '/' . DIRNAME_CORE . '/' . 'dispatcher.php';
} else {
die(sprintf('Invalid "%s" defined. Please remove it from %s.', 'update.core', $update_file));
}
exit;
}
}
unset($update_file);
define('APP_UPDATED_PASSTHRU', false);
}
if (!defined('DIRNAME_APP_UPDATED') && isset($updates['core'])) {
define('DIRNAME_APP_UPDATED', $updates['core']);
}
/*
* ----------------------------------------------------------------------------
* ## If we're still here, we're proceeding through this concrete directory,
* and it's time to load the rest of our hard-coded configuration options –
<?php
if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50509) {
die("concrete5 requires PHP 5.5.9+ to run.\nYou are running PHP " . PHP_VERSION . "\n");
}
/*
* ----------------------------------------------------------------------------
* Set required constants, including directory names, attempt to include site configuration file with database
* information, attempt to determine if we ought to skip to an updated core, etc...
* ----------------------------------------------------------------------------
*/
require __DIR__ . '/bootstrap/configure.php';
/*
* ----------------------------------------------------------------------------
* Include all autoloaders.
* ----------------------------------------------------------------------------
*/
require __DIR__ . '/bootstrap/autoload.php';
/*
* ----------------------------------------------------------------------------
* Begin concrete5 startup.
* ----------------------------------------------------------------------------
*/
$app = require __DIR__ . '/bootstrap/start.php';
/** @var \Concrete\Core\Application\Application $app */
/*
* ----------------------------------------------------------------------------
* Run the runtime.
* ----------------------------------------------------------------------------
*/
$runtime = $app->getRuntime();
if ($response = $runtime->run()) {
/*
* ------------------------------------------------------------------------
* Shut it down.
<?php
require 'concrete/dispatcher.php';
Key | Value |
Version | 8.5.9 |
Installed Version | 8.5.9 |
Key | Value |
concrete.version | 8.5.9 |
concrete.version_installed | 8.5.9 |
concrete.version_db | 20220319043123 |
concrete.installed | true |
concrete.locale | en_US |
concrete.charset | UTF-8 |
concrete.charset_bom | |
concrete.maintenance_mode | false |
concrete.debug.display_errors | true |
concrete.debug.detail | debug |
concrete.debug.error_reporting | null |
concrete.proxy.host | null |
concrete.proxy.port | null |
concrete.proxy.user | null |
concrete.proxy.password | null |
concrete.upload.extensions | *.flv;*.jpg;*.gif;*.jpeg;*.ico;*.docx;*.xla;*.png;*.psd;*.swf;*.doc;*.txt;*.xls;*.xlsx;*.csv;*.pdf;*.tiff;*.rtf;*.m4a;*.mov;*.wmv;*.mpeg;*.mpg;*.wav;*.3gp;*.avi;*.m4v;*.mp4;*.mp3;*.qt;*.ppt;*.pptx;*.kml;*.xml;*.svg;*.webm;*.ogg;*.ogv |
concrete.upload.extensions_blacklist | *.php;*.php2;*.php3;*.php4;*.php5;*.php7;*.php8;*.phtml;*.phar;*.htaccess;*.pl;*.phpsh;*.pht;*.shtml;*.cgi |
concrete.upload.chunking.enabled | true |
concrete.upload.chunking.chunkSize | null |
concrete.export.csv.include_bom | false |
concrete.export.csv.datetime_format | Y-m-d\TH:i:sP |
concrete.interface.panel.page_relations | false |
concrete.mail.method | php_mail |
concrete.mail.methods.smtp.server | mail.appliedanthro.org |
concrete.mail.methods.smtp.port | |
concrete.mail.methods.smtp.username | webmaster@appliedanthro.org |
concrete.mail.methods.smtp.password | SfAA!2436-new |
concrete.mail.methods.smtp.encryption | SSL |
concrete.mail.methods.smtp.messages_per_connection | null |
concrete.mail.methods.smtp.helo_domain | localhost |
concrete.cache.enabled | true |
concrete.cache.lifetime | 21600 |
concrete.cache.overrides | true |
concrete.cache.blocks | true |
concrete.cache.assets | true |
concrete.cache.theme_css | true |
concrete.cache.pages | 0 |
concrete.cache.doctrine_dev_mode | true |
concrete.cache.full_page_lifetime | default |
concrete.cache.full_page_lifetime_value | null |
concrete.cache.full_contents_assets_hash | false |
concrete.cache.directory | /home/appliet3/public_html/application/files/cache |
concrete.cache.directory_relative | null |
concrete.cache.page.directory | /home/appliet3/public_html/application/files/cache/pages |
concrete.cache.page.adapter | file |
concrete.cache.levels.overrides.drivers.core_ephemeral.class | \Stash\Driver\Ephemeral |
concrete.cache.levels.overrides.drivers.core_filesystem.class | Concrete\Core\Cache\Driver\FileSystemStashDriver |
concrete.cache.levels.overrides.drivers.core_filesystem.options.path | /home/appliet3/public_html/application/files/cache/overrides |
concrete.cache.levels.overrides.drivers.core_filesystem.options.dirPermissions | 493 |
concrete.cache.levels.overrides.drivers.core_filesystem.options.filePermissions | 420 |
concrete.cache.levels.overrides.drivers.redis.class | Concrete\Core\Cache\Driver\RedisStashDriver |
concrete.cache.levels.overrides.drivers.redis.options.prefix | c5_overrides |
concrete.cache.levels.overrides.drivers.redis.options.database | 0 |
concrete.cache.levels.overrides.preferred_driver | core_filesystem |
concrete.cache.levels.expensive.drivers.core_ephemeral.class | \Stash\Driver\Ephemeral |
concrete.cache.levels.expensive.drivers.core_filesystem.class | Concrete\Core\Cache\Driver\FileSystemStashDriver |
concrete.cache.levels.expensive.drivers.core_filesystem.options.path | /home/appliet3/public_html/application/files/cache/expensive |
concrete.cache.levels.expensive.drivers.core_filesystem.options.dirPermissions | 493 |
concrete.cache.levels.expensive.drivers.core_filesystem.options.filePermissions | 420 |
concrete.cache.levels.expensive.drivers.redis.class | Concrete\Core\Cache\Driver\RedisStashDriver |
concrete.cache.levels.expensive.drivers.redis.options.prefix | c5_expensive |
concrete.cache.levels.expensive.drivers.redis.options.database | 0 |
concrete.cache.levels.expensive.preferred_driver | core_filesystem |
concrete.cache.levels.object.drivers.core_ephemeral.class | \Stash\Driver\Ephemeral |
concrete.cache.levels.object.drivers.redis.class | Concrete\Core\Cache\Driver\RedisStashDriver |
concrete.cache.levels.object.drivers.redis.options.prefix | c5_object |
concrete.cache.levels.object.drivers.redis.options.database | 0 |
concrete.cache.levels.object.preferred_driver | core_ephemeral |
concrete.cache.clear.thumbnails | true |
concrete.cache.clear.last_cleared | 1648642409 |
concrete.cache.last_cleared | 1709923632 |
concrete.design.enable_custom | true |
concrete.design.enable_layouts | true |
concrete.log.emails | true |
concrete.log.errors | true |
concrete.log.spam | false |
concrete.log.api | false |
concrete.log.enable_dashboard_report | true |
concrete.log.configuration.mode | simple |
concrete.log.configuration.simple.core_logging_level | NOTICE |
concrete.log.configuration.simple.handler | database |
concrete.log.configuration.simple.file.file | |
concrete.jobs.enable_scheduling | true |
concrete.filesystem.temp_directory | null |
concrete.filesystem.permissions.file | 420 |
concrete.filesystem.permissions.directory | 493 |
concrete.email.enabled | true |
concrete.email.default.address | webmaster-noreply@appliedanthro.org |
concrete.email.default.name | Society for Applied Anthropology |
concrete.email.form_block.address | info@appliedanthro.org |
concrete.email.forgot_password.address | webmaster-noreply@appliedanthro.org |
concrete.email.forgot_password.name | Society for Applied Anthropology |
concrete.email.validate_registration.address | webmaster-noreply@appliedanthro.org |
concrete.email.validate_registration.name | Society for Applied Anthropology |
concrete.email.workflow_notification.address | webmaster-noreply@appliedanthro.org |
concrete.email.workflow_notification.name | |
concrete.email.register_notification.address | webmaster-noreply@appliedanthro.org |
concrete.form.store_form_submissions | auto |
concrete.marketplace.enabled | true |
concrete.marketplace.request_timeout | 30 |
concrete.marketplace.token | null |
concrete.marketplace.site_token | null |
concrete.marketplace.intelligent_search | true |
concrete.marketplace.log_requests | false |
concrete.external.intelligent_search_help | true |
concrete.external.news | true |
concrete.misc.user_timezones | true |
concrete.misc.package_backup_directory | /home/appliet3/public_html/application/files/trash |
concrete.misc.enable_progressive_page_reindex | true |
concrete.misc.mobile_theme_id | 0 |
concrete.misc.sitemap_approve_immediately | true |
concrete.misc.enable_translate_locale_en_us | false |
concrete.misc.page_search_index_lifetime | 259200 |
concrete.misc.enable_trash_can | true |
concrete.misc.default_jpeg_image_compression | 80 |
concrete.misc.default_png_image_compression | 9 |
concrete.misc.default_thumbnail_format | auto |
concrete.misc.inplace_image_operations_limit | 4194304 |
concrete.misc.basic_thumbnailer_generation_strategy | now |
concrete.misc.help_overlay | true |
concrete.misc.require_version_comments | false |
concrete.misc.enable_move_blocktypes_across_sets | false |
concrete.misc.image_editor_cors_policy.enable_cross_origin | false |
concrete.misc.image_editor_cors_policy.anonymous_request | true |
concrete.misc.generator_tag_display_in_header | true |
concrete.misc.login_redirect | HOMEPAGE |
concrete.misc.access_entity_updated | 1709123189 |
concrete.misc.latest_version | 8.5.12 |
concrete.misc.do_page_reindex_check | false |
concrete.misc.login_redirect_cid | 0 |
concrete.theme.compress_preprocessor_output | true |
concrete.theme.generate_less_sourcemap | false |
concrete.updates.enable_auto_update_packages | false |
concrete.updates.enable_permissions_protection | true |
concrete.updates.check_threshold | 172800 |
concrete.updates.services.get_available_updates | https://marketplace.concretecms.com/tools/update_core |
concrete.updates.services.inspect_update | https://marketplace.concretecms.com/tools/inspect_update |
concrete.updates.skip_core | false |
concrete.paths.trash | /!trash |
concrete.paths.drafts | /!drafts |
concrete.icons.page_template.width | 120 |
concrete.icons.page_template.height | 90 |
concrete.icons.theme_thumbnail.width | 120 |
concrete.icons.theme_thumbnail.height | 90 |
concrete.icons.file_manager_listing.handle | file_manager_listing |
concrete.icons.file_manager_listing.width | 60 |
concrete.icons.file_manager_listing.height | 60 |
concrete.icons.file_manager_detail.handle | file_manager_detail |
concrete.icons.file_manager_detail.width | 400 |
concrete.icons.file_manager_detail.height | 400 |
concrete.icons.user_avatar.width | 80 |
concrete.icons.user_avatar.height | 80 |
concrete.icons.user_avatar.default | /updates/concrete-cms-8.5.9-remote-updater/concrete/images/avatar_none.png |
concrete.file_manager.images.use_exif_data_to_rotate_images | false |
concrete.file_manager.images.manipulation_library | gd |
concrete.file_manager.images.create_high_dpi_thumbnails | true |
concrete.file_manager.images.preview_image_size | small |
concrete.file_manager.images.preview_image_popover | true |
concrete.file_manager.images.svg_sanitization.action | sanitize |
concrete.file_manager.images.svg_sanitization.allowed_tags | |
concrete.file_manager.images.svg_sanitization.allowed_attributes | |
concrete.file_manager.images.image_editor_save_area_background_color | |
concrete.file_manager.items_per_page_options.0 | 10 |
concrete.file_manager.items_per_page_options.1 | 25 |
concrete.file_manager.items_per_page_options.2 | 50 |
concrete.file_manager.items_per_page_options.3 | 100 |
concrete.file_manager.items_per_page_options.4 | 250 |
concrete.file_manager.results | 10 |
concrete.search_users.results | 10 |
concrete.sitemap_xml.file | sitemap.xml |
concrete.sitemap_xml.frequency | weekly |
concrete.sitemap_xml.priority | 0.5 |
concrete.accessibility.toolbar_titles | false |
concrete.accessibility.toolbar_large_font | false |
concrete.accessibility.display_help_system | true |
concrete.accessibility.toolbar_tooltips | true |
concrete.i18n.choose_language_login | false |
concrete.i18n.auto_install_package_languages | true |
concrete.i18n.community_translation.entry_point | https://translate.concretecms.org/api |
concrete.i18n.community_translation.api_token | |
concrete.i18n.community_translation.progress_limit | 60 |
concrete.i18n.community_translation.cache_lifetime | 3600 |
concrete.i18n.community_translation.package_url | https://translate.concretecms.org/translate/package |
concrete.urls.concrete5 | http://marketplace.concretecms.com |
concrete.urls.concrete5_secure | https://marketplace.concretecms.com |
concrete.urls.newsflow | http://newsflow.concrete5.org |
concrete.urls.background_feed | //backgroundimages.concrete5.org/wallpaper |
concrete.urls.privacy_policy | //www.concretecms.com/about/legal/privacy-policy |
concrete.urls.background_feed_secure | https://backgroundimages.concrete5.org/wallpaper |
concrete.urls.background_info | http://backgroundimages.concrete5.org/get_image_data.php |
concrete.urls.videos | https://www.youtube.com/user/concrete5cms/videos |
concrete.urls.help.developer | http://documentation.concrete5.org/developers |
concrete.urls.help.user | http://documentation.concrete5.org/editors |
concrete.urls.help.forum | http://www.concrete5.org/community/forums |
concrete.urls.help.slack | https://www.concrete5.org/slack |
concrete.urls.paths.menu_help_service | /tools/get_remote_help_list/ |
concrete.urls.paths.site_page | /private/sites |
concrete.urls.paths.newsflow_slot_content | /tools/slot_content/ |
concrete.urls.paths.marketplace.projects | /profile/projects/ |
concrete.urls.paths.marketplace.connect | /marketplace/connect |
concrete.urls.paths.marketplace.connect_success | /marketplace/connect/-/connected |
concrete.urls.paths.marketplace.connect_validate | /marketplace/connect/-/validate |
concrete.urls.paths.marketplace.connect_new_token | /marketplace/connect/-/generate_token |
concrete.urls.paths.marketplace.checkout | /cart/-/add |
concrete.urls.paths.marketplace.purchases | /marketplace/connect/-/get_available_licenses |
concrete.urls.paths.marketplace.item_information | /marketplace/connect/-/get_item_information |
concrete.urls.paths.marketplace.item_free_license | /marketplace/connect/-/enable_free_license |
concrete.urls.paths.marketplace.remote_item_list | /marketplace/ |
concrete.white_label.logo | false |
concrete.white_label.name | false |
concrete.white_label.background_image | null |
concrete.session.name | CONCRETE5 |
concrete.session.handler | file |
concrete.session.redis.database | 1 |
concrete.session.save_path | null |
concrete.session.max_lifetime | 7200 |
concrete.session.gc_probability | 1 |
concrete.session.gc_divisor | 100 |
concrete.session.cookie.cookie_path | false |
concrete.session.cookie.cookie_lifetime | 0 |
concrete.session.cookie.cookie_domain | false |
concrete.session.cookie.cookie_secure | false |
concrete.session.cookie.cookie_httponly | true |
concrete.session.cookie.cookie_raw | false |
concrete.session.cookie.cookie_samesite | null |
concrete.session.remember_me.lifetime | 1209600 |
concrete.user.registration.enabled | true |
concrete.user.registration.type | validate_email |
concrete.user.registration.captcha | true |
concrete.user.registration.email_registration | true |
concrete.user.registration.display_username_field | false |
concrete.user.registration.display_confirm_password_field | true |
concrete.user.registration.validate_email | true |
concrete.user.registration.approval | false |
concrete.user.registration.notification | null |
concrete.user.group.badge.default_point_value | 50 |
concrete.user.username.maximum | 64 |
concrete.user.username.minimum | 3 |
concrete.user.username.allowed_characters.boundary | A-Za-z0-9 |
concrete.user.username.allowed_characters.middle | A-Za-z0-9_\. |
concrete.user.username.allowed_characters.requirement_string | A username may only contain letters, numbers, dots (not at the beginning/end), and underscores (not at the beginning/end). |
concrete.user.username.allowed_characters.error_string | A username may only contain letters, numbers, dots (not at the beginning/end), and underscores (not at the beginning/end). |
concrete.user.password.maximum | 128 |
concrete.user.password.minimum | 5 |
concrete.user.password.required_special_characters | 0 |
concrete.user.password.required_lower_case | 0 |
concrete.user.password.required_upper_case | 0 |
concrete.user.password.reuse | 0 |
concrete.user.password.hash_portable | false |
concrete.user.password.hash_cost_log2 | 12 |
concrete.user.password.legacy_salt | |
concrete.user.email.test_mx_record | false |
concrete.user.email.strict | true |
concrete.user.private_messages.throttle_max | 20 |
concrete.user.private_messages.throttle_max_timespan | 15 |
concrete.user.deactivation.enable_login_threshold_deactivation | false |
concrete.user.deactivation.login.threshold | 120 |
concrete.user.deactivation.authentication_failure.enabled | false |
concrete.user.deactivation.authentication_failure.amount | 5 |
concrete.user.deactivation.authentication_failure.duration | 300 |
concrete.user.deactivation.message | This user is inactive. Please contact us regarding this account. |
concrete.spam.whitelist_group | 0 |
concrete.spam.notify_email | |
concrete.calendar.colors.text | #ffffff |
concrete.calendar.colors.background | rgb(58, 135, 173) |
concrete.calendar.topic_attribute | event_categories |
concrete.security.session.invalidate_on_user_agent_mismatch | false |
concrete.security.session.invalidate_on_ip_mismatch | false |
concrete.security.session.invalidate_inactive_users.enabled | false |
concrete.security.session.invalidate_inactive_users.time | 300 |
concrete.security.misc.x_frame_options | SAMEORIGIN |
concrete.permissions.forward_to_login | true |
concrete.permissions.model | advanced |
concrete.seo.exclude_words | a, an, as, at, before, but, by, for, from, is, in, into, like, of, off, on, onto, per, since, than, the, this, that, to, up, via, with |
concrete.seo.url_rewriting | true |
concrete.seo.url_rewriting_all | false |
concrete.seo.redirect_to_canonical_url | 0 |
concrete.seo.canonical_url | null |
concrete.seo.canonical_url_alternative | null |
concrete.seo.trailing_slash | false |
concrete.seo.title_format | %2$s :: %1$s |
concrete.seo.title_segment_separator | :: |
concrete.seo.page_path_separator | - |
concrete.seo.group_name_separator | / |
concrete.seo.segment_max_length | 128 |
concrete.seo.paging_string | ccm_paging_p |
concrete.seo.analytics.google.show_toolbar_button | true |
concrete.seo.analytics.google.enable_dashboard_overview | true |
concrete.seo.analytics.google.enable_tracking_code | false |
concrete.seo.analytics.google.profile_id | 197758677 |
concrete.seo.analytics.google.account_id | 143037489 |
concrete.seo.analytics.google.property_id | UA-143037489-1 |
concrete.seo.analytics.google.oauth_token.scope | https://www.googleapis.com/auth/analytics.readonly https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openid |
concrete.seo.analytics.google.oauth_token.token_type | Bearer |
concrete.seo.analytics.google.oauth_token.id_token | eyJhbGciOiJSUzI1NiIsImtpZCI6IjM0OTRiMWU3ODZjZGFkMDkyZTQyMzc2NmJiZTM3ZjU0ZWQ4N2IyMmQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiNDYwNjM0NTIyOTU5LWpzOWhjMnBzbjJ0b2E5ZmNlbDRobG50dW9rMG9wb3NuLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiNDYwNjM0NTIyOTU5LWpzOWhjMnBzbjJ0b2E5ZmNlbDRobG50dW9rMG9wb3NuLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE3NTYwNzUwMzczNjEyMjk4ODI1IiwiZW1haWwiOiJhcmV5LnZpbGxhbnVldmFAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImF0X2hhc2giOiJLMFBrcHZ0cl9EZDljdXcySTQzdXZnIiwiaWF0IjoxNTY1MDIxOTIxLCJleHAiOjE1NjUwMjU1MjF9.Xzm6-n2Is3DgJF1-4iX_IrIUyU_cNabmBiBxVvEYp0Iu1wMD8AaQBFlpK5yCTd7Jjd39MaSyPYOnhgsOvqCxZQZWGjl4ScjFz9rKG3CTrgkKVWIR2-PK4zgU6aCf_zP40Gm_so_jYnNLNW3gma6qWwrWwl12w3EAk4E8CTU8wDf0beBS_U7QGbaffjNmt_j4U7hS5Lucd-kgLwUx09gb7tnyrJvAklfmXXg03L3duxy6uw4FcK8G0suMFl1ipT3om-HQGcckCxmeV2BWPeJHYEKntnKQqmfmXoJxPSgBgrYO05AJQhx_PCyNLhEtlt1ekK26j6aJ1tHmLgGiWAqt_A |
concrete.seo.analytics.google.oauth_token.access_token | ya29.a0Ad52N3_1G-IeJhVoXgGMltBPwt-kuGRHfP60PB2MkNUBHrWfCTvta0LWEykkau6NnZHf4i7goHSCpewf32IoTN9l2qa4MpKamlu66Bj5QTjBHygTh572c40ztTnEK3CDJTJyd6NVB_BMDJImf53q3cgvQBEJUkC9fCxd_LMaCgYKAUoSARISFQHGX2MijmVfoKnKPNmYa-GR4ApM2A0174 |
concrete.seo.analytics.google.oauth_token.refresh_token | 1/lA8opHJMcSu7IuE9XURoRWFe_niZp-ERV6Yz9FUFtlU |
concrete.seo.analytics.google.oauth_token.expires | 1710825494 |
concrete.statistics.track_downloads | true |
concrete.limits.sitemap_pages | 100 |
concrete.limits.delete_pages | 100 |
concrete.limits.copy_pages | 10 |
concrete.limits.page_search_index_batch | 200 |
concrete.limits.job_queue_batch | 10 |
concrete.limits.style_customizer.size_min | -50 |
concrete.limits.style_customizer.size_max | 200 |
concrete.page.search.always_reindex | false |
concrete.composer.idle_timeout | 1 |
concrete.api.enabled | false |
concrete.api.grant_types.client_credentials | true |
concrete.api.grant_types.authorization_code | true |
concrete.api.grant_types.password_credentials | false |
concrete.api.grant_types.refresh_token | true |
concrete.mutex.semaphore.priority | 100 |
concrete.mutex.semaphore.class | Concrete\Core\System\Mutex\SemaphoreMutex |
concrete.mutex.file_lock.priority | 50 |
concrete.mutex.file_lock.class | Concrete\Core\System\Mutex\FileLockMutex |
concrete.style_customizer.updater.ignored_values.preset-fonts-file | Concrete\Core\StyleCustomizer\Style\Value\BasicValue |
concrete.version_db_installed | 20220319043123 |
Key | Value |
CONTEXT_DOCUMENT_ROOT | /home/appliet3/public_html |
CONTEXT_PREFIX | |
DOCUMENT_ROOT | /home/appliet3/public_html |
GATEWAY_INTERFACE | CGI/1.1 |
HTTPS | on |
HTTP_ACCEPT | */* |
HTTP_HOST | www.appliedanthro.org |
HTTP_USER_AGENT | claudebot |
PATH | /bin:/usr/bin |
QUERY_STRING | |
REDIRECT_HTTPS | on |
REDIRECT_SSL_TLS_SNI | www.appliedanthro.org |
REDIRECT_STATUS | 200 |
REDIRECT_UNIQUE_ID | ZfkVV9aCjo6QQPsVCawPVAAAAMg |
REDIRECT_URL | /annual-meeting/distinguished-lectures |
REMOTE_ADDR | 107.23.85.179 |
REMOTE_PORT | 44450 |
REQUEST_METHOD | GET |
REQUEST_SCHEME | https |
REQUEST_URI | /annual-meeting/distinguished-lectures |
SCRIPT_FILENAME | /home/appliet3/public_html/index.php |
SCRIPT_NAME | /index.php |
SERVER_ADDR | 108.179.211.88 |
SERVER_ADMIN | webmaster@appliedanthro.org |
SERVER_NAME | www.appliedanthro.org |
SERVER_PORT | 443 |
SERVER_PROTOCOL | HTTP/1.1 |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache |
SSL_TLS_SNI | www.appliedanthro.org |
TZ | America/Denver |
UNIQUE_ID | ZfkVV9aCjo6QQPsVCawPVAAAAMg |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1710822743.7639 |
REQUEST_TIME | 1710822743 |
argv | Array ( ) |
argc | 0 |
Key | Value |
CONTEXT_DOCUMENT_ROOT | /home/appliet3/public_html |
CONTEXT_PREFIX | |
DOCUMENT_ROOT | /home/appliet3/public_html |
GATEWAY_INTERFACE | CGI/1.1 |
HTTPS | on |
HTTP_ACCEPT | */* |
HTTP_HOST | www.appliedanthro.org |
HTTP_USER_AGENT | claudebot |
PATH | /bin:/usr/bin |
QUERY_STRING | |
REDIRECT_HTTPS | on |
REDIRECT_SSL_TLS_SNI | www.appliedanthro.org |
REDIRECT_STATUS | 200 |
REDIRECT_UNIQUE_ID | ZfkVV9aCjo6QQPsVCawPVAAAAMg |
REDIRECT_URL | /annual-meeting/distinguished-lectures |
REMOTE_ADDR | 107.23.85.179 |
REMOTE_PORT | 44450 |
REQUEST_METHOD | GET |
REQUEST_SCHEME | https |
REQUEST_URI | /annual-meeting/distinguished-lectures |
SCRIPT_FILENAME | /home/appliet3/public_html/index.php |
SCRIPT_NAME | /index.php |
SERVER_ADDR | 108.179.211.88 |
SERVER_ADMIN | webmaster@appliedanthro.org |
SERVER_NAME | www.appliedanthro.org |
SERVER_PORT | 443 |
SERVER_PROTOCOL | HTTP/1.1 |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache |
SSL_TLS_SNI | www.appliedanthro.org |
TZ | America/Denver |
UNIQUE_ID | ZfkVV9aCjo6QQPsVCawPVAAAAMg |