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);
     }
 }
Exemplo n.º 5
0
 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']);
     }
 }