本文整理汇总了PHP中Bolt\Library类的典型用法代码示例。如果您正苦于以下问题:PHP Library类的具体用法?PHP Library怎么用?PHP Library使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Library类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: edit_post_link
/**
* Stub for edit_post_link.
*/
function edit_post_link($text = null, $before = '', $after = '', $id = 0)
{
global $post, $currentuser;
if (!is_object($post) || empty($currentuser['username'])) {
return;
}
$path = \Bolt\Library::path('editcontent', ['contenttypeslug' => $post->contenttype['slug'], 'id' => $post['id']]);
if (null === $text) {
$text = __('Edit This');
}
$link = '<a class="post-edit-link" href="' . $path . '">' . $text . '</a>';
/**
* Filter the post edit link anchor tag.
*
* @since 2.3.0
*
* @param string $link Anchor tag for the edit link.
* @param int $post_id Post ID.
* @param string $text Anchor text.
*/
echo $before . apply_filters('edit_post_link', $link, $post['id'], $text) . $after;
}
示例2: beforeCallback
/**
* beforeCallback.
*
* This callback adds the CSS/JS for the localeswitcher on the backend
* and checks that we are on a valid locale when on the frontend
*/
public function beforeCallback(Request $request)
{
$routeParams = $request->get('_route_params');
if ($this->app['config']->getWhichEnd() == 'backend') {
if (array_key_exists('contenttypeslug', $routeParams)) {
$this->addCss('assets/css/field_locale.css');
if (!empty($routeParams['id'])) {
$this->addJavascript('assets/js/field_locale.js', array('late' => true));
}
}
} else {
if (isset($routeParams['_locale'])) {
$this->app['menu'] = $this->app->share(function ($app) {
$builder = new Menu\LocalizedMenuBuilder($app);
return $builder;
});
$locales = $this->app['config']->get('general/locales');
foreach ($locales as $isolocale => $locale) {
if ($locale['slug'] == $routeParams['_locale']) {
$foundLocale = $isolocale;
}
}
if (isset($foundLocale)) {
setlocale(LC_ALL, $foundLocale);
$this->app['config']->set('general/locale', $foundLocale);
} else {
$routeParams['_locale'] = reset($locales)['slug'];
return $this->app->redirect(Lib::path($request->get('_route'), $routeParams));
}
}
}
}
示例3: addResources
/**
* Adds all resources that belong to a locale.
*
* @param Application $app
* @param string $locale
*/
public static function addResources(Application $app, $locale)
{
// Directories to look for translation file(s)
$transDirs = array_unique([$app['resources']->getPath("app/resources/translations/{$locale}"), $app['resources']->getPath("root/app/resources/translations/{$locale}")]);
$needsSecondPass = true;
foreach ($transDirs as $transDir) {
if (!is_dir($transDir) || !is_readable($transDir)) {
continue;
}
$iterator = new \DirectoryIterator($transDir);
/**
* @var \SplFileInfo $fileInfo
*/
foreach ($iterator as $fileInfo) {
$ext = Lib::getExtension((string) $fileInfo);
if (!$fileInfo->isFile() || !in_array($ext, ['yml', 'xlf'], true)) {
continue;
}
list($domain) = explode('.', $fileInfo->getFilename());
$app['translator']->addResource($ext, $fileInfo->getRealPath(), $locale, $domain);
$needsSecondPass = false;
}
}
if ($needsSecondPass && strlen($locale) === 5) {
static::addResources($app, substr($locale, 0, 2));
}
}
示例4: patchTranslationPath
public function patchTranslationPath()
{
# workaround for Bolt 2.2 - fix in master (3.0), see #3553 and #3800
// $app->before(function() use ($app) {
// $path = $app['resources']->getPath('root/app/resources/translations');
// $app['translator']->addResource('yml', $path.'/contenttypes.de_DE.yml', 'de_DE', 'contenttypes');
// });
if ("Bolt\\Configuration\\Composer" != get_class($this->app['resources'])) {
return;
}
// $versionParser = new \Composer\Package\Version\VersionParser();
// $version = $versionParser->parseConstraints($app['bolt_version']);
// print_r($version);
// Directory to look for translation file(s)
$transDir = $this->app['resources']->getPath('root/app/resources/translations/' . $this->app['locale']);
if (is_dir($transDir)) {
$iterator = new \DirectoryIterator($transDir);
/**
* @var \SplFileInfo $fileInfo
*/
foreach ($iterator as $fileInfo) {
$ext = Lib::getExtension((string) $fileInfo);
if (!$fileInfo->isFile() || !in_array($ext, array('yml', 'xlf'))) {
continue;
}
list($domain) = explode('.', $fileInfo->getFilename());
$this->app['translator']->addResource($ext, $transDir . '/' . $fileInfo->getFilename(), $this->app['locale'], $domain);
}
}
}
示例5: handle
public function handle($path)
{
$files = [];
$folders = [];
$list = $this->filesystem->listContents($path);
$ignored = ['.', '..', '.DS_Store', '.gitignore', '.htaccess'];
foreach ($list as $entry) {
if (in_array($entry['basename'], $ignored)) {
continue;
}
if (!$this->filesystem->authorized($entry['path'])) {
continue;
}
if ($entry['type'] === 'file') {
try {
$url = $this->filesystem->url($entry['path']);
} catch (\Exception $e) {
$url = $entry['path'];
}
// Ugh, for some reason the foldername for the theme is included twice. Why?
// For now we 'fix' this with an ugly hack, replacing it. :-/
// TODO: dig into Filesystem and figure out why this happens.
$pathsegments = explode('/', $entry['path']);
if (!empty($pathsegments[0])) {
$url = str_replace('/' . $pathsegments[0] . '/' . $pathsegments[0] . '/', '/' . $pathsegments[0] . '/', $url);
}
$files[$entry['path']] = ['path' => $entry['dirname'], 'filename' => $entry['basename'], 'newpath' => $entry['path'], 'relativepath' => $entry['path'], 'writable' => true, 'readable' => false, 'type' => isset($entry['extension']) ? $entry['extension'] : '', 'filesize' => Lib::formatFilesize($entry['size']), 'modified' => date("Y/m/d H:i:s", $entry['timestamp']), 'permissions' => 'public', 'url' => $url];
/* **** Extra checks for files that can be resolved via PHP urlopen functions **** */
try {
$files[$entry['path']]['permissions'] = $this->filesystem->getVisibility($entry['path']);
} catch (\Exception $e) {
// Computer says "No!"
}
$fullfilename = $this->filesystem->getAdapter()->applyPathPrefix($entry['path']);
if (is_readable($fullfilename)) {
$files[$entry['path']]['readable'] = true;
if (!empty($entry['extension']) && in_array($entry['extension'], ['gif', 'jpg', 'png', 'jpeg'])) {
$size = getimagesize($fullfilename);
$files[$entry['path']]['imagesize'] = sprintf("%s × %s", $size[0], $size[1]);
}
$files[$entry['path']]['permissions'] = util::full_permissions($fullfilename);
}
}
if ($entry['type'] == 'dir') {
$folders[$entry['path']] = ['path' => $entry['dirname'], 'foldername' => $entry['basename'], 'newpath' => $entry['path'], 'modified' => date("Y/m/d H:i:s", $entry['timestamp']), 'writable' => true];
$fullfilename = $this->filesystem->getAdapter()->applyPathPrefix($entry['path']);
/* **** Extra checks for files that can be resolved via PHP urlopen functions **** */
if (is_readable($fullfilename)) {
if (!is_writable($fullfilename)) {
$folders[$entry['path']]['writable'] = false;
}
}
}
}
ksort($files);
ksort($folders);
return [$files, $folders];
}
示例6: collect
/**
* Collect the date for the Toolbar item.
*
* @param Request $request
* @param Response $response
* @param \Exception $exception
*/
public function collect(Request $request, Response $response, \Exception $exception = null)
{
$this->data = array('version' => $this->app->getVersion(false), 'name' => $this->app['bolt_name'], 'fullversion' => 'Version: ' . $this->app->getVersion(true), 'payoff' => 'Sophisticated, lightweight & simple CMS', 'aboutlink' => sprintf("<a href=\"%s\">%s</a>", Lib::path('about'), 'About'), 'branding' => null, 'editlink' => null, 'edittitle' => null);
if ($this->app['config']->get('general/branding/provided_by/0')) {
$this->data['branding'] = sprintf("%s <a href=\"mailto:%s\">%s</a>", Trans::__('Provided by:'), $this->app['config']->get('general/branding/provided_by/0'), $this->app['config']->get('general/branding/provided_by/1'));
}
if (!empty($this->app['editlink'])) {
$this->data['editlink'] = $this->app['editlink'];
$this->data['edittitle'] = $this->app['edittitle'];
}
}
示例7: allowedUpload
/**
* Checks if a given file is acceptable for upload.
*/
public function allowedUpload($originalFilename)
{
// no UNIX-hidden files
if ($originalFilename[0] === '.') {
return false;
}
// only whitelisted extensions
$extension = strtolower(Lib::getExtension($originalFilename));
$allowedExtensions = $this->getAllowedUploadExtensions();
return in_array($extension, $allowedExtensions);
}
示例8: image
/**
* Helper function to make a path to an image.
*
* @param string $filename Target filename
* @param string|integer $width Target width
* @param string|integer $height Target height
* @param string $crop String identifier for cropped images
*
* @return string Image path
*/
public function image($filename, $width = '', $height = '', $crop = '')
{
if ($width != '' || $height != '') {
// You don't want the image, you just want a thumbnail.
return $this->thumbnail($filename, $width, $height, $crop);
}
// After v1.5.1 we store image data as an array
if (is_array($filename)) {
$filename = isset($filename['filename']) ? $filename['filename'] : $filename['file'];
}
$image = sprintf('%sfiles/%s', $this->app['paths']['root'], Lib::safeFilename($filename));
return $image;
}
示例9: image
/**
* Helper function to make a path to an image.
*
* @param string $filename Target filename
* @param string|integer $width Target width
* @param string|integer $height Target height
* @param string $crop String identifier for cropped images
*
* @return string Image path
*/
public function image($filename, $width = null, $height = null, $crop = null)
{
if ($width || $height) {
// You don't want the image, you just want a thumbnail.
return $this->thumbnail($filename, $width, $height, $crop);
}
// After v1.5.1 we store image data as an array
if (is_array($filename)) {
$filename = isset($filename['filename']) ? $filename['filename'] : $filename['file'];
}
$image = sprintf('%s%s', $this->app['resources']->getUrl('files'), Lib::safeFilename($filename));
return $image;
}
示例10: record
public function record(\Silex\Application $app, $contenttypeslug, $slug = '')
{
$contenttype = $app['storage']->getContentType($contenttypeslug);
// If the contenttype is 'viewless', don't show the record page.
if (isset($contenttype['viewless']) && $contenttype['viewless'] === true) {
return $app->abort(Response::HTTP_NOT_FOUND, "Page {$contenttypeslug}/{$slug} not found.");
}
// Perhaps we don't have a slug. Let's see if we can pick up the 'id', instead.
if (empty($slug)) {
$slug = $app['request']->get('id');
}
$slug = $app['slugify']->slugify($slug);
// First, try to get it by slug.
$content = $app['storage']->getContent($contenttype['slug'], array('slug' => $slug, 'returnsingle' => true, 'log_not_found' => !is_numeric($slug)));
if (!$content && !is_numeric($slug)) {
// And otherwise try getting it by translated slugs
$match = $this->matchTranslatedSlug($app, $contenttype['slug'], $slug);
if (!empty($match)) {
$content = $app['storage']->getContent($contenttype['slug'], array('id' => $match['content_type_id'], 'returnsingle' => true));
}
}
if (!$content && is_numeric($slug)) {
// And otherwise try getting it by ID
$content = $app['storage']->getContent($contenttype['slug'], array('id' => $slug, 'returnsingle' => true));
}
// No content, no page!
if (!$content) {
return $app->abort(Response::HTTP_NOT_FOUND, "Page {$contenttypeslug}/{$slug} not found.");
}
// Then, select which template to use, based on our 'cascading templates rules'
$template = $app['templatechooser']->record($content);
$paths = $app['resources']->getPaths();
// Setting the canonical URL.
if ($content->isHome() && $template == $app['config']->get('general/homepage_template')) {
$app['resources']->setUrl('canonicalurl', $paths['rooturl']);
} else {
$url = $paths['canonical'] . $content->link();
$app['resources']->setUrl('canonicalurl', $url);
}
// Setting the editlink
$app['editlink'] = Lib::path('editcontent', array('contenttypeslug' => $contenttype['slug'], 'id' => $content->id));
$app['edittitle'] = $content->getTitle();
// Make sure we can also access it as {{ page.title }} for pages, etc. We set these in the global scope,
// So that they're also available in menu's and templates rendered by extensions.
$app['twig']->addGlobal('record', $content);
$app['twig']->addGlobal($contenttype['singular_slug'], $content);
// Render the template and return.
return $this->render($app, $template, $content->getTitle());
}
示例11: menuHelper
/**
* Updates a menu item to have at least a 'link' key.
*
* @param array $item
*
* @return array Keys 'link' and possibly 'label', 'title' and 'path'
*/
private function menuHelper($item)
{
// recurse into submenu's
if (isset($item['submenu']) && is_array($item['submenu'])) {
$item['submenu'] = $this->menuHelper($item['submenu']);
}
if (isset($item['route'])) {
$param = !empty($item['param']) ?: array();
$add = !empty($item['add']) ?: '';
$item['link'] = Lib::path($item['route'], $param, $add);
} elseif (isset($item['path'])) {
$item = $this->resolvePathToContent($item);
}
return $item;
}
示例12: before
/**
* Middleware function to check whether a user is logged on.
*
* @param Request $request
* @param \Silex\Application $app
*
* @return null|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function before(Request $request, Silex\Application $app)
{
// This disallows extensions from adding any extra snippets to the output
if ($request->get("_route") !== 'extend') {
$app['htmlsnippets'] = false;
}
// Start the 'stopwatch' for the profiler.
$app['stopwatch']->start('bolt.backend.before');
// Most of the 'check if user is allowed' happens here: match the current route to the 'allowed' settings.
if (!$app['users']->isAllowed('extensions')) {
$app['session']->getFlashBag()->add('error', Trans::__('You do not have the right privileges to view that page.'));
return Lib::redirect('dashboard');
}
// Stop the 'stopwatch' for the profiler.
$app['stopwatch']->stop('bolt.backend.before');
return null;
}
示例13: collect
/**
* Collect information from Twig.
*
* @param Request $request The Request Object
* @param Response $response The Response Object
* @param \Exception $exception The Exception
*/
public function collect(Request $request, Response $response, \Exception $exception = null)
{
$filters = array();
$tests = array();
$extensions = array();
$functions = array();
foreach ($this->getTwig()->getExtensions() as $extensionName => $extension) {
/** @var $extension \Twig_ExtensionInterface */
$extensions[] = array('name' => $extensionName, 'class' => get_class($extension));
foreach ($extension->getFilters() as $filterName => $filter) {
if ($filter instanceof \Twig_FilterInterface) {
$call = $filter->compile();
if (is_array($call) && is_callable($call)) {
$call = 'Method ' . $call[1] . ' of an object ' . get_class($call[0]);
}
} elseif ($filter instanceof \Twig_SimpleFilter) {
$call = $filter->getName();
} else {
continue;
}
$filters[] = array('name' => $filterName, 'extension' => $extensionName, 'call' => $call);
}
foreach ($extension->getTests() as $testName => $test) {
if ($test instanceof \Twig_TestInterface) {
$call = $test->compile();
} elseif ($test instanceof \Twig_SimpleTest) {
$call = $test->getName();
} else {
continue;
}
$tests[] = array('name' => $testName, 'extension' => $extensionName, 'call' => $call);
}
foreach ($extension->getFunctions() as $functionName => $function) {
if ($function instanceof \Twig_FunctionInterface) {
$call = $function->compile();
} elseif ($function instanceof \Twig_SimpleFunction) {
$call = $function->getName();
} else {
continue;
}
$functions[] = array('name' => $functionName, 'extension' => $extensionName, 'call' => $call);
}
}
$this->data = array('extensions' => $extensions, 'tests' => $tests, 'filters' => $filters, 'functions' => $functions, 'templates' => Lib::parseTwigTemplates($this->app['twig.loader']), 'templatechosen' => $this->getTrackedValue('templatechosen'), 'templateerror' => $this->getTrackedValue('templateerror'));
}
示例14: addResources
/**
* Adds all resources that belong to a locale.
*
* @param Application $app
* @param string $locale
*/
public static function addResources(Application $app, $locale)
{
// Directory to look for translation file(s)
$transDir = $app['resources']->getPath('app/resources/translations/' . $locale);
if (is_dir($transDir)) {
$iterator = new \DirectoryIterator($transDir);
/**
* @var \SplFileInfo $fileInfo
*/
foreach ($iterator as $fileInfo) {
$ext = Lib::getExtension((string) $fileInfo);
if (!$fileInfo->isFile() || !in_array($ext, ['yml', 'xlf'])) {
continue;
}
list($domain) = explode('.', $fileInfo->getFilename());
$app['translator']->addResource($ext, $fileInfo->getRealPath(), $locale, $domain);
}
} elseif (strlen($locale) == 5) {
static::addResources($app, substr($locale, 0, 2));
}
}
示例15: edit
/**
* File editor.
*
* @param Request $request The Symfony Request
* @param string $namespace The filesystem namespace
* @param string $file The file path
*
* @return \Bolt\Response\BoltResponse|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function edit(Request $request, $namespace, $file)
{
if ($namespace === 'app' && dirname($file) === 'config') {
// Special case: If requesting one of the major config files, like contenttypes.yml, set the path to the
// correct dir, which might be 'app/config', but it might be something else.
$namespace = 'config';
}
/** @var FilesystemInterface $filesystem */
$filesystem = $this->filesystem()->getFilesystem($namespace);
if (!$filesystem->authorized($file)) {
$error = Trans::__('general.phrase.access-denied-permissions-edit-file', ['%s' => $file]);
$this->abort(Response::HTTP_FORBIDDEN, $error);
}
try {
/** @var File $file */
$file = $filesystem->get($file);
$type = Lib::getExtension($file->getPath());
$data = ['contents' => $file->read()];
} catch (FileNotFoundException $e) {
$error = Trans::__('general.phrase.file-not-exist', ['%s' => $file->getPath()]);
$this->abort(Response::HTTP_NOT_FOUND, $error);
} catch (IOException $e) {
$error = Trans::__('general.phrase.file-not-readable', ['%s' => $file->getPath()]);
$this->abort(Response::HTTP_NOT_FOUND, $error);
}
/** @var Form $form */
$form = $this->createFormBuilder(FormType::class, $data)->add('contents', TextareaType::class)->getForm();
// Handle the POST and check if it's valid.
if ($request->isMethod('POST')) {
return $this->handleEdit($request, $form, $file, $type);
}
// For 'related' files we might need to keep track of the current dirname on top of the namespace.
if (dirname($file->getPath()) !== '') {
$additionalpath = dirname($file->getPath()) . '/';
} else {
$additionalpath = '';
}
$context = ['form' => $form->createView(), 'filetype' => $type, 'file' => $file->getPath(), 'basename' => basename($file->getPath()), 'pathsegments' => $this->getPathSegments(dirname($file->getPath())), 'additionalpath' => $additionalpath, 'namespace' => $namespace, 'write_allowed' => true, 'filegroup' => $this->getFileGroup($filesystem, $file), 'datechanged' => date_format(new \DateTime('@' . $file->getTimestamp()), 'c')];
return $this->render('@bolt/editfile/editfile.twig', $context);
}