PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/fuel/modules/user_guide/controllers/user_guide.php

http://github.com/daylightstudio/FUEL-CMS
PHP | 149 lines | 122 code | 20 blank | 7 comment | 16 complexity | d4f621bfb5f837178dc99fd408cbd124 MD5 | raw file
Possible License(s): LGPL-2.1, MPL-2.0-no-copyleft-exception
  1. <?php
  2. require_once(FUEL_PATH.'/libraries/Fuel_base_controller.php');
  3. class User_guide extends Fuel_base_controller {
  4. public $current_page;
  5. function __construct()
  6. {
  7. parent::__construct(FALSE);
  8. $this->load->module_config(USER_GUIDE_FOLDER, 'user_guide');
  9. if ($this->config->item('user_guide_authenticate'))
  10. {
  11. $this->_check_login();
  12. }
  13. }
  14. function _remap()
  15. {
  16. $this->load->module_helper(USER_GUIDE_FOLDER, 'user_guide');
  17. $this->load->module_library(FUEL_FOLDER, 'fuel_pagevars');
  18. $this->load->helper('text');
  19. $this->load->helper('inflector');
  20. $this->load->helper('utility');
  21. $this->current_page = $this->_get_page();
  22. if (empty($this->current_page)) $this->current_page = 'home';
  23. $this->fuel_pagevars->vars_path = USER_GUIDE_PATH.'views/_variables/';
  24. $vars = array();
  25. // get modules
  26. $modules = array('', 'fuel');
  27. $modules = array_merge($modules, $this->config->item('modules_allowed', 'fuel'));
  28. $vars = $this->_get_vars($this->current_page);
  29. foreach($modules as $m)
  30. {
  31. if ((!$this->config->item('user_guide_authenticate') OR $this->fuel_auth->has_permission('user_guide_'.$m)) AND file_exists(MODULES_PATH.$m.'/views/_docs/index'.EXT))
  32. {
  33. $module_view = $this->load->module_view($m, '_docs/index', array(), TRUE);
  34. $mod_page_title = $this->_get_page_title($module_view);
  35. $vars['modules'][$m] = (!empty($mod_page_title)) ? $mod_page_title : humanize($m).' Module';
  36. }
  37. }
  38. // render page
  39. // pull from modules folder if URI says so
  40. $uri_path_index = count(explode('/', $this->config->item('user_guide_root_url'))) + 1;
  41. $module_page = uri_path(FALSE, $uri_path_index);
  42. $module_view_path = (!empty($module_page)) ? '_docs/'.$module_page : '_docs/index';
  43. if ($this->_get_page_segment(1) == 'modules' AND ($this->_get_page_segment(2) AND file_exists(MODULES_PATH.$this->_get_page_segment(2).'/views/'.$module_view_path.EXT)))
  44. {
  45. $module = $this->_get_page_segment(2);
  46. if (!$this->config->item('user_guide_authenticate') OR $this->fuel_auth->has_permission('user_guide_'.$module))
  47. {
  48. $vars['body'] = $this->load->module_view($module, $module_view_path, $vars, TRUE);
  49. if ($this->_get_page_segment(3))
  50. {
  51. $vars['sections'] = array($vars['modules'][$module] => 'modules/'.$module);
  52. }
  53. }
  54. }
  55. else
  56. {
  57. if (!is_file(MODULES_PATH.USER_GUIDE_FOLDER.'/views/'.$this->current_page.EXT))
  58. {
  59. show_404();
  60. }
  61. $vars['body'] = $this->load->module_view(USER_GUIDE_FOLDER, $this->current_page, $vars, TRUE);
  62. if ($this->_get_page_segment(2))
  63. {
  64. $vars['sections'] = $this->_get_breadcrumb($this->current_page);
  65. }
  66. }
  67. $vars['page_title'] = $this->_get_page_title($vars['body']);
  68. $this->load->module_view(USER_GUIDE_FOLDER, '_layouts/user_guide', $vars);
  69. }
  70. function _get_page()
  71. {
  72. $uri = uri_path(FALSE);
  73. $root_url = $this->config->item('user_guide_root_url');
  74. if (substr($root_url, -1) == '/') $root_url = substr($root_url, 0, (strlen($root_url) -1));
  75. $new_uri = preg_replace('#^'.$root_url.'#', '', $uri);
  76. return $new_uri;
  77. }
  78. function _get_page_segment($segment)
  79. {
  80. $segment = $segment - 1;
  81. // clean off beginning and ending slashes
  82. $page = preg_replace('#^(\/)?(.+)(\/)?$#', '$2', $this->current_page);
  83. $segs = explode('/', $page);
  84. if (!empty($segs[$segment]))
  85. {
  86. return $segs[$segment];
  87. }
  88. return FALSE;
  89. }
  90. function _get_page_title($page)
  91. {
  92. preg_match('#<h1>(.+)<\/h1>#U', $page, $matches);
  93. if (!empty($matches[1]))
  94. {
  95. return strip_tags($matches[1]);
  96. }
  97. return '';
  98. }
  99. function _get_breadcrumb($page)
  100. {
  101. $vars = $this->_get_vars($page);
  102. $page_arr = explode('/', $page);
  103. if (count($page_arr) == 1) return '';
  104. array_pop($page_arr);
  105. $prev_page = implode('/', $page_arr);
  106. if (is_file(MODULES_PATH.USER_GUIDE_FOLDER.'/views'.$prev_page.EXT))
  107. {
  108. $prev_view = $this->load->module_view(USER_GUIDE_FOLDER, $prev_page, $vars, TRUE);
  109. //array($this->_get_page_title($prev_view) => $prev_page);
  110. $vars['breadcrumb'][$this->_get_page_title($prev_view)] = $prev_page;
  111. }
  112. return $vars['breadcrumb'];
  113. }
  114. function _get_vars($page)
  115. {
  116. $vars = $this->fuel_pagevars->view_variables($page, 'user_guide');
  117. $vars['modules'] = array();
  118. $vars['site_docs'] = '';
  119. $vars['use_search'] = TRUE;
  120. $vars['use_breadcrumb'] = TRUE;
  121. $vars['use_nav'] = TRUE;
  122. $vars['use_footer'] = TRUE;
  123. $vars['sections'] = array();
  124. $vars['breadcrumb'] = array();
  125. return $vars;
  126. }
  127. }
  128. /* End of file user_guide.php */
  129. /* Location: ./fuel/modules/user_guide/controllers/user_guide.php */