本文整理汇总了PHP中PageManager::fetchPageTypes方法的典型用法代码示例。如果您正苦于以下问题:PHP PageManager::fetchPageTypes方法的具体用法?PHP PageManager::fetchPageTypes怎么用?PHP PageManager::fetchPageTypes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PageManager
的用法示例。
在下文中一共展示了PageManager::fetchPageTypes方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: fetchAvailablePageTypes
/**
* Returns all the page types that exist in this Symphony install.
* There are 6 default system page types, and new types can be added
* by Developers via the Page Editor.
*
* @since Symphony 2.3 introduced the JSON type.
* @return array
* An array of strings of the page types used in this Symphony
* install. At the minimum, this will be an array with the values
* 'index', 'XML', 'JSON', 'admin', '404' and '403'.
*/
public static function fetchAvailablePageTypes()
{
$system_types = array('index', 'XML', 'JSON', 'admin', '404', '403');
$types = PageManager::fetchPageTypes();
return !empty($types) ? General::array_remove_duplicates(array_merge($system_types, $types)) : $system_types;
}
示例2: fetchPageTypes
/**
* Given a page ID, return it's type from `tbl_pages`
*
* @deprecated This function will be removed in Symphony 2.4. Use
* `PageManager::fetchPageTypes` instead.
* @param integer $page_id
* The page ID to find it's type
* @return array
* An array of types that this page is set as
*/
public static function fetchPageTypes($page_id)
{
return PageManager::fetchPageTypes($page_id);
}
示例3: appendPresets
/**
* Append presets
* @param $context
*/
public function appendPresets($context)
{
Symphony::Engine()->Page->addScriptToHead(URL . '/extensions/ckeditor/assets/preferences.js', 4676);
$wrapper = $context['wrapper'];
$fieldset = new XMLElement('fieldset', '', array('class' => 'settings'));
$fieldset->appendChild(new XMLElement('legend', __('CKEditor File Browser')));
$sectionManager = new SectionManager($this);
$sections = $sectionManager->fetch();
// Check which sections are allowed:
$data = Symphony::Configuration()->get('sections', 'ckeditor');
$checkedSections = $data != false ? explode(',', $data) : array();
// If there are no sections found:
if ($sections) {
$options = array();
foreach ($sections as $section) {
$options[] = array($section->get('id'), in_array($section->get('id'), $checkedSections), $section->get('name'));
}
$label = Widget::Label(__('Permitted sections for the file browser:'));
$label->appendChild(Widget::Select('ckeditor_sections[]', $options, array('multiple' => 'multiple')));
$fieldset->appendChild($label);
}
// Link templates for CKEditor:
$sections = SectionManager::fetch();
$dbpages = PageManager::fetch();
$pages = array();
// Filter out the ck_hide:
foreach ($dbpages as $page) {
$types = PageManager::fetchPageTypes($page['id']);
if (!in_array('ck_hide', $types)) {
$pages[] = $page;
}
}
// Adjust page title:
foreach ($pages as &$_page) {
$p = $_page;
$title = $_page['title'];
while (!is_null($p['parent'])) {
$p = PageManager::fetch(false, array(), array('id' => $p['parent']));
$title = $p['title'] . ' : ' . $title;
}
$_page['title'] = $title;
}
// Sort the array:
$titles = array();
foreach ($pages as $key => $row) {
$titles[$key] = strtolower($row['title']);
}
array_multisort($titles, SORT_ASC, $pages);
$this->sections = array();
foreach ($sections as $s) {
$a = array('id' => $s->get('id'), 'name' => $s->get('name'), 'fields' => array());
$fields = FieldManager::fetch(null, $s->get('id'));
foreach ($fields as $field) {
// For now, only allow fields of the type 'input' to be used as a handle:
if ($field->get('type') == 'input') {
$a['fields'][] = array('id' => $field->get('id'), 'label' => $field->get('label'), 'element_name' => $field->get('element_name'));
}
}
$this->sections[] = $a;
}
$fieldset->appendChild(new XMLElement('p', __('Link templates:'), array('class' => 'label')));
$ol = new XMLElement('ol');
$ol->setAttribute('class', 'ckeditor-duplicator');
$templates = Symphony::Database()->fetch('SELECT * FROM `tbl_ckeditor_link_templates`;');
if (!is_array($pages)) {
$pages = array($pages);
}
foreach ($pages as $page) {
foreach ($templates as $template) {
if ($template['page_id'] != $page['id']) {
continue;
}
$duplicator = $this->__buildDuplicatorItem($page, $template);
$ol->appendChild($duplicator);
}
$duplicator = $this->__buildDuplicatorItem($page, NULL);
$ol->appendChild($duplicator);
}
$fieldset->appendChild($ol);
$wrapper->appendChild($fieldset);
}
示例4: __viewEdit
public function __viewEdit()
{
$this->setPageType('form');
$fields = array("title" => null, "handle" => null, "parent" => null, "params" => null, "type" => null, "data_sources" => null);
$existing = $fields;
$nesting = Symphony::Configuration()->get('pages_table_nest_children', 'symphony') == 'yes';
// Verify page exists:
if ($this->_context[0] == 'edit') {
if (!($page_id = (int) $this->_context[1])) {
redirect(SYMPHONY_URL . '/blueprints/pages/');
}
$existing = PageManager::fetchPageByID($page_id);
if (!$existing) {
Administration::instance()->errorPageNotFound();
} else {
$existing['type'] = PageManager::fetchPageTypes($page_id);
}
}
// Status message:
if (isset($this->_context[2])) {
$flag = $this->_context[2];
$link_suffix = '';
if (isset($_REQUEST['parent']) && is_numeric($_REQUEST['parent'])) {
$link_suffix = "?parent=" . $_REQUEST['parent'];
} else {
if ($nesting == true && isset($existing) && !is_null($existing['parent'])) {
$link_suffix = '?parent=' . $existing['parent'];
}
}
switch ($flag) {
case 'saved':
$this->pageAlert(__('Page updated at %s.', array(DateTimeObj::getTimeAgo())) . ' <a href="' . SYMPHONY_URL . '/blueprints/pages/new/" accesskey="c">' . __('Create another?') . '</a> <a href="' . SYMPHONY_URL . '/blueprints/pages/" accesskey="a">' . __('View all Pages') . '</a>', Alert::SUCCESS);
break;
case 'created':
$this->pageAlert(__('Page created at %s.', array(DateTimeObj::getTimeAgo())) . ' <a href="' . SYMPHONY_URL . '/blueprints/pages/new/" accesskey="c">' . __('Create another?') . '</a> <a href="' . SYMPHONY_URL . '/blueprints/pages/" accesskey="a">' . __('View all Pages') . '</a>', Alert::SUCCESS);
}
}
// Find values:
if (isset($_POST['fields'])) {
$fields = $_POST['fields'];
} elseif ($this->_context[0] == 'edit') {
$fields = $existing;
if (!is_null($fields['type'])) {
$fields['type'] = implode(', ', $fields['type']);
}
$fields['data_sources'] = preg_split('/,/i', $fields['data_sources'], -1, PREG_SPLIT_NO_EMPTY);
$fields['events'] = preg_split('/,/i', $fields['events'], -1, PREG_SPLIT_NO_EMPTY);
} elseif (isset($_REQUEST['parent']) && is_numeric($_REQUEST['parent'])) {
$fields['parent'] = $_REQUEST['parent'];
}
$title = $fields['title'];
if (trim($title) == '') {
$title = $existing['title'];
}
$this->setTitle(__($title ? '%1$s – %2$s – %3$s' : '%2$s – %3$s', array($title, __('Pages'), __('Symphony'))));
$page_id = isset($page_id) ? $page_id : null;
if (!empty($title)) {
$template_name = $fields['handle'];
$page_url = URL . '/' . PageManager::resolvePagePath($page_id) . '/';
if ($existing['parent']) {
$parents = PageManager::resolvePagePath($existing['parent']);
$template_name = PageManager::createFilePath($parents, $fields['handle']);
}
$this->appendSubheading($title, array(Widget::Anchor(__('View Page'), $page_url, __('View Page on Frontend'), 'button', NULL, array('target' => '_blank', 'accesskey' => 'v')), Widget::Anchor(__('Edit Page Template'), SYMPHONY_URL . '/blueprints/pages/template/' . $template_name, __('Edit Page Template'), 'button', NULL, array('accesskey' => 't'))));
} else {
$this->appendSubheading(!empty($title) ? $title : __('Untitled'));
}
if (isset($page_id)) {
$this->insertBreadcrumbsUsingPageIdentifier($page_id, false);
} else {
$_GET['parent'] = isset($_GET['parent']) ? $_GET['parent'] : null;
$this->insertBreadcrumbsUsingPageIdentifier((int) $_GET['parent'], true);
}
// Title --------------------------------------------------------------
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('class', 'settings');
$fieldset->appendChild(new XMLElement('legend', __('Page Settings')));
$label = Widget::Label(__('Title'));
$label->appendChild(Widget::Input('fields[title]', General::sanitize($fields['title'])));
if (isset($this->_errors['title'])) {
$label = Widget::Error($label, $this->_errors['title']);
}
$fieldset->appendChild($label);
// Handle -------------------------------------------------------------
$group = new XMLElement('div');
$group->setAttribute('class', 'two columns');
$column = new XMLElement('div');
$column->setAttribute('class', 'column');
$label = Widget::Label(__('URL Handle'));
$label->appendChild(Widget::Input('fields[handle]', $fields['handle']));
if (isset($this->_errors['handle'])) {
$label = Widget::Error($label, $this->_errors['handle']);
}
$column->appendChild($label);
// Parent ---------------------------------------------------------
$label = Widget::Label(__('Parent Page'));
$where = array(sprintf('id != %d', $page_id));
$pages = PageManager::fetch(false, array('id'), $where, 'title ASC');
$options = array(array('', false, '/'));
if (!empty($pages)) {
//.........这里部分代码省略.........
示例5: resolvePage
/**
* This function attempts to resolve the given page in to it's Symphony page. If no
* page is given, it is assumed the 'index' is being requested. Before a page row is
* returned, it is checked to see that if it has the 'admin' type, that the requesting
* user is authenticated as a Symphony author. If they are not, the Symphony 403
* page is returned (whether that be set as a user defined page using the page type
* of 403, or just returning the Default Symphony 403 error page). Any URL parameters
* set on the page are added to the `$env` variable before the function returns an
* associative array of page details such as Title, Content Type etc.
*
* @uses FrontendPrePageResolve
* @see __isSchemaValid()
* @param string $page
* The URL of the current page that is being Rendered as returned by `getCurrentPage()`.
* If no URL is provided, Symphony assumes the Page with the type 'index' is being
* requested.
* @throws SymphonyErrorPage
* @return array
* An associative array of page details
*/
public function resolvePage($page = null)
{
if ($page) {
$this->_page = $page;
}
$row = null;
/**
* Before page resolve. Allows manipulation of page without redirection
* @delegate FrontendPrePageResolve
* @param string $context
* '/frontend/'
* @param mixed $row
* @param FrontendPage $page
* An instance of this FrontendPage
*/
Symphony::ExtensionManager()->notifyMembers('FrontendPrePageResolve', '/frontend/', array('row' => &$row, 'page' => &$this->_page));
// Default to the index page if no page has been specified
if ((!$this->_page || $this->_page == '//') && is_null($row)) {
$row = PageManager::fetchPageByType('index');
// Not the index page (or at least not on first impression)
} elseif (is_null($row)) {
$page_extra_bits = array();
$pathArr = preg_split('/\\//', trim($this->_page, '/'), -1, PREG_SPLIT_NO_EMPTY);
$handle = array_pop($pathArr);
do {
$path = implode('/', $pathArr);
if ($row = PageManager::resolvePageByPath($handle, $path)) {
$pathArr[] = $handle;
break 1;
} else {
$page_extra_bits[] = $handle;
}
} while ($handle = array_pop($pathArr));
// If the `$pathArr` is empty, that means a page hasn't resolved for
// the given `$page`, however in some cases the index page may allow
// parameters, so we'll check.
if (empty($pathArr)) {
// If the index page does not handle parameters, then return false
// (which will give up the 404), otherwise treat the `$page` as
// parameters of the index. RE: #1351
$index = PageManager::fetchPageByType('index');
if (!$this->__isSchemaValid($index['params'], $page_extra_bits)) {
return false;
} else {
$row = $index;
}
// Page resolved, check the schema (are the parameters valid?)
} elseif (!$this->__isSchemaValid($row['params'], $page_extra_bits)) {
return false;
}
}
// Process the extra URL params
$url_params = preg_split('/\\//', $row['params'], -1, PREG_SPLIT_NO_EMPTY);
foreach ($url_params as $var) {
$this->_env['url'][$var] = null;
}
if (isset($page_extra_bits)) {
if (!empty($page_extra_bits)) {
$page_extra_bits = array_reverse($page_extra_bits);
}
for ($i = 0, $ii = count($page_extra_bits); $i < $ii; $i++) {
$this->_env['url'][$url_params[$i]] = str_replace(' ', '+', $page_extra_bits[$i]);
}
}
if (!is_array($row) || empty($row)) {
return false;
}
$row['type'] = PageManager::fetchPageTypes($row['id']);
// Make sure the user has permission to access this page
if (!$this->is_logged_in && in_array('admin', $row['type'])) {
$row = PageManager::fetchPageByType('403');
if (empty($row)) {
Frontend::instance()->throwCustomError(__('Please login to view this page.') . ' <a href="' . SYMPHONY_URL . '/login/">' . __('Take me to the login page') . '</a>.', __('Forbidden'), Page::HTTP_STATUS_FORBIDDEN);
}
$row['type'] = PageManager::fetchPageTypes($row['id']);
}
$row['filelocation'] = PageManager::resolvePageFileLocation($row['path'], $row['handle']);
return $row;
}
示例6: appendPresets
/**
* Append presets
* @param $context
*/
public function appendPresets($context)
{
Symphony::Engine()->Page->addScriptToHead(URL . '/extensions/ckeditor/assets/preferences.js', 4676);
$wrapper = $context['wrapper'];
$fieldset = new XMLElement('fieldset', '', array('class' => 'settings'));
$fieldset->appendChild(new XMLElement('legend', __('CKEditor File Browser')));
$sectionManager = new SectionManager($this);
$sections = $sectionManager->fetch();
// Check which sections are allowed:
$data = Symphony::Configuration()->get('sections', 'ckeditor');
$checkedSections = $data != false ? explode(',', $data) : array();
// If there are no sections found:
if ($sections) {
$options = array();
foreach ($sections as $section) {
$options[] = array($section->get('id'), in_array($section->get('id'), $checkedSections), $section->get('name'));
}
$label = Widget::Label(__('Permitted sections for the file browser:'));
$label->appendChild(Widget::Select('ckeditor_sections[]', $options, array('multiple' => 'multiple')));
$fieldset->appendChild($label);
}
// Link templates for CKEditor:
$sections = SectionManager::fetch();
$dbpages = PageManager::fetch();
$pages = array();
// Filter out the ck_hide:
foreach ($dbpages as $page) {
$types = PageManager::fetchPageTypes($page['id']);
if (!in_array('ck_hide', $types)) {
$pages[] = $page;
}
}
// Adjust page title:
foreach ($pages as &$_page) {
$p = $_page;
$title = $_page['title'];
while (!is_null($p['parent'])) {
$p = PageManager::fetch(false, array(), array('id' => $p['parent']));
$title = $p['title'] . ' : ' . $title;
}
$_page['title'] = $title;
}
// Sort the array:
$titles = array();
foreach ($pages as $key => $row) {
$titles[$key] = strtolower($row['title']);
}
array_multisort($titles, SORT_ASC, $pages);
$this->sections = array();
foreach ($sections as $s) {
$a = array('id' => $s->get('id'), 'name' => $s->get('name'), 'fields' => array());
$fields = FieldManager::fetch(null, $s->get('id'));
foreach ($fields as $field) {
// For now, only allow fields of the type 'input' to be used as a handle:
if ($field->get('type') == 'input') {
$a['fields'][] = array('id' => $field->get('id'), 'label' => $field->get('label'), 'element_name' => $field->get('element_name'));
}
}
$this->sections[] = $a;
}
$fieldset->appendChild(new XMLElement('p', __('Link templates:'), array('class' => 'label')));
$ol = new XMLElement('ol');
$ol->setAttribute('class', 'ckeditor-duplicator');
$templates = Symphony::Database()->fetch('SELECT * FROM `tbl_ckeditor_link_templates`;');
if (!is_array($pages)) {
$pages = array($pages);
}
foreach ($pages as $page) {
foreach ($templates as $template) {
if ($template['page_id'] != $page['id']) {
continue;
}
$duplicator = $this->__buildDuplicatorItem($page, $template);
$ol->appendChild($duplicator);
}
$duplicator = $this->__buildDuplicatorItem($page, NULL);
$ol->appendChild($duplicator);
}
$fieldset->appendChild($ol);
// Plugin presets:
$fieldset->appendChild(new XMLElement('p', __('Plugin presets:'), array('class' => 'label')));
$ol = new XMLElement('ol');
$ol->setAttribute('class', 'ckeditor-duplicator');
// Create template:
$template = new XMLElement('li', null, array('class' => 'template'));
$template->appendChild(new XMLElement('header', '<h3>' . __('New Preset') . '</h3>'));
$template->appendChild(Widget::Label(__('Name'), Widget::Input('ckeditor_presets[-1][name]')));
$template->appendChild(Widget::Label(__('Toolbar'), Widget::Textarea('ckeditor_presets[-1][toolbar]', 5, 50)));
$template->appendChild(Widget::Label(__('Plugins'), Widget::Textarea('ckeditor_presets[-1][plugins]', 5, 50)));
$template->appendChild(Widget::Label(__('%s Enable resizing', array(Widget::Input('ckeditor_presets[-1][resize]', 'yes', 'checkbox')->generate()))));
$template->appendChild(Widget::Label(__('%s Show outline blocks', array(Widget::Input('ckeditor_presets[-1][outline]', 'yes', 'checkbox')->generate()))));
$ol->appendChild($template);
// Append all the fields:
$presets = Symphony::Database()->fetch('SELECT * FROM `tbl_ckeditor_presets');
$index = 0;
foreach ($presets as $preset) {
//.........这里部分代码省略.........
示例7: checkFrontendPagePermissions
public function checkFrontendPagePermissions($context)
{
$isLoggedIn = false;
$errors = array();
$action = null;
// Checks $_REQUEST to see if a Member Action has been requested,
// member-action['login'] and member-action['logout']/?member-action=logout
// are the only two supported at this stage.
if (isset($_REQUEST['member-action']) && is_array($_REQUEST['member-action'])) {
list($action) = array_keys($_REQUEST['member-action']);
} else {
if (isset($_REQUEST['member-action'])) {
$action = $_REQUEST['member-action'];
}
}
// Check to see a Member is already logged in.
$isLoggedIn = $this->getMemberDriver()->isLoggedIn($errors);
// Logout
if (trim($action) == 'logout') {
/**
* Fired just before a member is logged out (and page redirection),
* this delegate provides the current Member ID
*
* @delegate MembersPreLogout
* @param string $context
* '/frontend/'
* @param integer $member_id
* The Member ID of the member who is about to logged out
*/
Symphony::ExtensionManager()->notifyMembers('MembersPreLogout', '/frontend/', array('member_id' => $this->getMemberDriver()->getMemberID()));
$this->getMemberDriver()->logout();
// If a redirect is provided, redirect to that, otherwise return the user
// to the index of the site. Issue #51 & #121
if (isset($_REQUEST['redirect'])) {
redirect($_REQUEST['redirect']);
}
redirect(URL);
} else {
if (trim($action) == 'login' && !is_null($_POST['fields'])) {
// If a Member is already logged in and another Login attempt is requested
// log the Member out first before trying to login with new details.
if ($isLoggedIn) {
$this->getMemberDriver()->logout();
}
if ($this->getMemberDriver()->login($_POST['fields'])) {
/**
* Fired just after a Member has successfully logged in, this delegate
* provides the current Member ID. This delegate is fired just before
* the page redirection (if it is provided)
*
* @delegate MembersPostLogin
* @param string $context
* '/frontend/'
* @param integer $member_id
* The Member ID of the member who just logged in.
* @param Entry $member
* The Entry object of the logged in Member.
*/
Symphony::ExtensionManager()->notifyMembers('MembersPostLogin', '/frontend/', array('member_id' => $this->getMemberDriver()->getMemberID(), 'member' => $this->getMemberDriver()->getMember()));
if (isset($_POST['redirect'])) {
redirect($_POST['redirect']);
}
} else {
self::$_failed_login_attempt = true;
/**
* A failed Member login attempt
*
* @delegate MembersLoginFailure
* @param string $context
* '/frontend/'
* @param string $username
* The username of the Member who attempted to login.
*/
Symphony::ExtensionManager()->notifyMembers('MembersLoginFailure', '/frontend/', array('username' => Symphony::Database()->cleanValue($_POST['fields'][extension_Members::getFieldHandle('identity')])));
}
}
}
$this->Member->initialiseMemberObject();
$hasRoles = FieldManager::isFieldUsed(extension_Members::getFieldType('role'));
if ($isLoggedIn && $this->getMemberDriver()->getMember() instanceof Entry) {
$this->getMemberDriver()->updateSystemTimezoneOffset();
if ($hasRoles) {
$role_field = extension_Members::getField('role');
if ($role_field) {
$role_data = $this->getMemberDriver()->getMember()->getData($role_field->get('id'));
}
}
}
// If there is no role field, or a Developer is logged in, return, as Developers
// should be able to access every page. Handles Symphony 2.4 or Symphony 2.5
$isDeveloper = method_exists(Symphony::Engine(), 'Author') ? Symphony::Engine()->Author() instanceof Author && Symphony::Engine()->Author()->isDeveloper() : Symphony::Engine()->Author instanceof Author && Symphony::Engine()->Author->isDeveloper();
if (!$hasRoles || $isDeveloper) {
return;
}
$role_id = $isLoggedIn ? $role_data['role_id'] : Role::PUBLIC_ROLE;
$role = RoleManager::fetch($role_id);
if ($role instanceof Role && !$role->canAccessPage((int) $context['page_data']['id'])) {
// User has no access to this page, so look for a custom 403 page
if ($row = PageManager::fetchPageByType('403')) {
$row['type'] = PageManager::fetchPageTypes($row['id']);
//.........这里部分代码省略.........
示例8: isPagePrototype
public static function isPagePrototype($page_id)
{
$page_types = PageManager::fetchPageTypes($page_id);
return in_array('prototype', $page_types);
}