public function view() { if (!($prototype_id = (int) $_GET['prototype_id'])) { $this->_status = self::STATUS_BAD; $this->_Result = json_encode(array('status' => __('Missing or wrong parameter.'))); return; } $fields = PageManager::fetchPageByID($prototype_id); // return datasources and events as arrays $fields['data_sources'] = explode(',', $fields['data_sources']); $fields['events'] = explode(',', $fields['events']); // remove "prototype" from the type array and reorder $fields['type'] = array_values(array_diff($fields['type'], array('prototype'))); $this->_Result = json_encode($fields); }
public static function updatePagesOfPrototype($prototype_id, $types) { if (empty($prototype_id)) { return; } $prototype = PageManager::fetchPageByID($prototype_id); $pages = self::fetchPagesOfPrototype($prototype_id); $fields = array(); if (is_array($pages) && !empty($pages)) { foreach ($pages as $page) { $fields['params'] = $prototype['params']; $fields['events'] = $prototype['events']; $fields['data_sources'] = $prototype['data_sources']; PageManager::edit($page['id'], $fields, true); PageManager::addPageTypesToPage($page['id'], array_values(array_diff($types, array('prototype')))); } } }
/** * This function takes a Page ID and removes the Page from the database * in `tbl_pages` and it's associated Page Types in `tbl_pages_types`. * This function does not delete any of the Page's children. * * @see toolkit.PageManager#deletePageTypes * @see toolkit.PageManager#deletePageFiles * @param integer $page_id * The ID of the Page that should be deleted. * @param boolean $delete_files * If true, this parameter will remove the Page's templates from the * the filesystem. By default this is true. * @return boolean */ public static function delete($page_id = null, $delete_files = true) { if (!is_int($page_id)) { return false; } $can_proceed = true; // Delete Files (if told to) if ($delete_files) { $page = PageManager::fetchPageByID($page_id, array('path', 'handle')); if (empty($page)) { return false; } $can_proceed = PageManager::deletePageFiles($page['path'], $page['handle']); } // Delete from tbl_pages/tbl_page_types if ($can_proceed) { PageManager::deletePageTypes($page_id); Symphony::Database()->delete('tbl_pages', sprintf(" `id` = %d ", $page_id)); Symphony::Database()->query(sprintf("\n\t\t\t\t\t\tUPDATE\n\t\t\t\t\t\t\ttbl_pages\n\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t`sortorder` = (`sortorder` + 1)\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t`sortorder` < %d\n\t\t\t\t\t", $page_id)); } return $can_proceed; }
public function __actionDelete($pages, $redirect) { $success = true; $deleted_page_ids = array(); if (!is_array($pages)) { $pages = array($pages); } /** * Prior to deleting Pages * * @delegate PagePreDelete * @since Symphony 2.2 * @param string $context * '/blueprints/pages/' * @param array $page_ids * An array of Page ID's that are about to be deleted, passed * by reference * @param string $redirect * The absolute path that the Developer will be redirected to * after the Pages are deleted */ Symphony::ExtensionManager()->notifyMembers('PagePreDelete', '/blueprints/pages/', array('page_ids' => &$pages, 'redirect' => &$redirect)); foreach ($pages as $page_id) { $page = PageManager::fetchPageByID($page_id); if (empty($page)) { $success = false; $this->pageAlert(__('Page could not be deleted because it does not exist.'), Alert::ERROR); break; } if (PageManager::hasChildPages($page_id)) { $this->_hilights[] = $page['id']; $success = false; $this->pageAlert(__('Page could not be deleted because it has children.'), Alert::ERROR); continue; } if (!PageManager::deletePageFiles($page['path'], $page['handle'])) { $this->_hilights[] = $page['id']; $success = false; $this->pageAlert(__('One or more pages could not be deleted.') . ' ' . __('Please check permissions on %s.', array('<code>/workspace/pages</code>')), Alert::ERROR); continue; } if (PageManager::delete($page_id, false)) { $deleted_page_ids[] = $page_id; } } if ($success) { /** * Fires after all Pages have been deleted * * @delegate PagePostDelete * @since Symphony 2.3 * @param string $context * '/blueprints/pages/' * @param array $page_ids * The page ID's that were just deleted */ Symphony::ExtensionManager()->notifyMembers('PagePostDelete', '/blueprints/pages/', array('page_ids' => $deleted_page_ids)); redirect($redirect); } }
public function setPageDetails($page_id) { $page = PageManager::fetchPageByID($page_id); if (count($page) == 0) { $this->set('page_title', __('Invalid or missing Page')); $this->set('page_uri', __('Invalid or missing Page')); } else { $this->set('page_title', $page['title']); $this->set('page_uri', URL . '/' . $page['path'] . '/' . $page['handle']); $this->set('page_events', $page['events']); $this->set('page_params', $page['params']); } }