<?php $slug = uri_segment(2); if ($slug) { $article = fuel_model('articles', array('find' => 'one', 'where' => array('slug' => $slug))); if (empty($article)) { redirect_404(); } } else { $tags = fuel_model('tags'); } if (!empty($article)) { ?> <h1><?php echo fuel_edit($article); echo $article->title; ?> </h1> <div class="author"><?php echo $article->author->name; ?> </div> <img src="<?php echo $article->image_path; ?> " alt="<?php echo $article->title_entities; ?> " class="img_right" /> <article><?php
/** * Renders a static view page that is using the "opt-in controller" method * * @access public * @param boolean Determines whether to return the value or to echo it out (optional) * @param boolean Determines whether to render any inline editing (optional) * @return string */ public function variables_render($return = FALSE, $fuelify = FALSE) { // get the location and load page vars $page = $this->location; $vars = $this->variables(); $this->load_resources($vars); // for convenience we'll add the $CI object' $vars['CI'] =& $this->CI; $this->CI->load->vars($vars); if (!empty($vars['view'])) { $view = $vars['view']; } else { $view = $page; // if view is the index.html file, then show a 404 if ($view == 'index.html') { redirect_404(); } // do not display any views that have an underscore at the beginning of the view name, or is part of the path (e.g. about/_hidden/contact_email1.php) $view_parts = explode('/', $view); foreach ($view_parts as $view_part) { if (!strncmp($view_part, '_', 1)) { show_404(); } } } $output = NULL; // test that the file exists in the associated language if (!empty($this->language) and !$this->fuel->language->is_default($this->language)) { $view_tmp = 'language/' . $this->language . '/' . $view; if (file_exists($this->views_path . $view_tmp . '.php')) { $view = $view_tmp; } } // set the extension... allows for sitemap.xml for example $ext = '.' . pathinfo($view, PATHINFO_EXTENSION); $check_file = $this->views_path . $view; // added .php so $check_file will essentially not work and will then go to any redirects or 404 if (empty($ext) or $ext == '.' or $ext == '.php') { $ext = EXT; $check_file = $this->views_path . $view . $ext; } // find a view file if (!file_exists($check_file)) { if (!isset($vars['find_view']) or isset($vars['find_view']) and $vars['find_view'] !== FALSE) { $view = $this->find_view_file($view); $check_file = $this->views_path . $view . $ext; } } // if view file exists, set the appropriate layout if (file_exists($check_file)) { // set layout variable if it isn't set yet' if (!empty($vars['layout'])) { $layout = $vars['layout']; $this->layout = $this->fuel->layouts->get($layout); } if ($this->layout) { // call layout hook $this->layout->call_hook('pre_render', array('vars' => $vars)); // run the variables through the pre_process method on the layout // !important ... will reference the layout specified to this point so a layout variable set within the body of the page will not work $vars = $this->layout->pre_process($vars); } // load the file so we can parse it if (!empty($vars['parse_view'])) { // load here to save on execution time... $this->CI->load->library('parser'); $body = file_get_contents($check_file); // now parse any template like syntax $vars = $this->CI->load->get_vars(); $body = $this->CI->parser->parse_string($body, $vars, TRUE); } else { $body = $this->CI->load->module_view($this->view_module, $view, $vars, TRUE); } // now set $vars to the cached so that we have a fresh set to send to the layout in case any were declared in the view $vars = $this->CI->load->get_vars(); // set layout variable again if it's changed' if (isset($vars['layout']) and (empty($this->layout) or is_object($this->layout) and $this->layout->name != $vars['layout'])) { $layout = $vars['layout']; if (empty($layout)) { $layout = ''; } $this->layout = $this->fuel->layouts->get($layout); } if ($this->layout) { $this->_page_data['layout'] = $layout; if (is_object($this->layout)) { $layout = $this->layout->name; } } else { $this->_page_data['layout'] = NULL; $layout = FALSE; } if (!empty($layout)) { $vars['body'] = $body; $layout_dir = trim($this->fuel->layouts->layouts_folder, '/'); // remove any trailing slash... we'll add it below' if (strncmp($layout, $layout_dir, strlen($layout_dir)) !== 0) { $layout = $layout_dir . '/' . $layout; } $output = $this->CI->load->module_view($this->layout->module(), $layout, $vars, TRUE); } else { $output = $body; } } if (empty($output) && empty($vars['allow_empty_content'])) { return FALSE; } // call layout hook if ($layout) { $this->layout->call_hook('post_render', array('vars' => $vars, 'output' => $output)); // run the post_process layout method... good for appending to the output (e.g. google analytics code) $output = $this->layout->post_process($output); } if ($fuelify) { $output = $this->fuelify($output); } if ($return) { return $output; } else { $this->CI->output->set_output($output); return TRUE; } }
function post($slug = null) { if (empty($slug)) { redirect_404(); } $this->load->library('session'); $blog_config = $this->fuel->blog->config(); // run before_posts_by_date hook $hook_params = array('slug' => $slug); $this->fuel->blog->run_hook('before_post', $hook_params); $post = $this->fuel->blog->get_post($slug); if (isset($post->id)) { $vars = $this->_common_vars(); $vars['post'] = $post; $vars['user'] = $this->fuel->blog->logged_in_user(); $vars['page_title'] = $post->title; $vars['next'] = $this->fuel->blog->get_next_post($post); $vars['prev'] = $this->fuel->blog->get_prev_post($post); $vars['slug'] = $slug; $vars['is_home'] = $this->fuel->blog->is_home(); $antispam = md5(random_string('unique')); $field_values = array(); // post comment if (!empty($_POST)) { $field_values = $_POST; // the id of "content" is a likely ID on the front end, so we use comment_content and need to remap $field_values['content'] = $field_values['new_comment']; unset($field_values['antispam']); if (!empty($_POST['new_comment'])) { $vars['processed'] = $this->_process_comment($post); } else { add_error(lang('blog_error_blank_comment')); } } $cache_id = fuel_cache_id(); $cache = $this->fuel->blog->get_cache($cache_id); if (!empty($cache) and empty($_POST)) { $output =& $cache; } else { $this->load->library('form'); if (is_true_val($this->fuel->blog->config('use_captchas'))) { $captcha = $this->_render_captcha(); $vars['captcha'] = $captcha; } $vars['thanks'] = $this->session->flashdata('thanks') ? blog_block('comment_thanks', $vars, TRUE) : ''; $vars['comment_form'] = ''; $this->session->set_userdata('antispam', $antispam); if ($post->allow_comments) { $this->load->module_model(BLOG_FOLDER, 'blog_comments_model'); $this->load->library('form_builder', $blog_config['comment_form']); $fields['author_name'] = array('label' => 'Name', 'required' => TRUE); $fields['author_email'] = array('label' => 'Email', 'required' => TRUE); $fields['author_website'] = array('label' => 'Website'); $fields['new_comment'] = array('label' => 'Comment', 'type' => 'textarea', 'required' => TRUE); $fields['post_id'] = array('type' => 'hidden', 'value' => $post->id); $fields['antispam'] = array('type' => 'hidden', 'value' => $antispam); if (!empty($vars['captcha'])) { $fields['captcha'] = array('required' => TRUE, 'label' => 'Security Text', 'value' => '', 'after_html' => ' <span class="captcha">' . $vars['captcha']['image'] . '</span><br /><span class="captcha_text">' . lang('blog_captcha_text') . '</span>'); } // now merge with config... can't do array_merge_recursive' foreach ($blog_config['comment_form']['fields'] as $key => $field) { if (isset($fields[$key])) { $fields[$key] = array_merge($fields[$key], $field); } } if (!isset($blog_config['comment_form']['label_layout'])) { $this->form_builder->label_layout = 'left'; } if (!isset($blog_config['comment_form']['submit_value'])) { $this->form_builder->submit_value = 'Submit Comment'; } if (!isset($blog_config['comment_form']['use_form_tag'])) { $this->form_builder->use_form_tag = TRUE; } if (!isset($blog_config['comment_form']['display_errors'])) { $this->form_builder->display_errors = TRUE; } $this->form_builder->form_attrs = 'method="post" action="' . site_url($this->uri->uri_string()) . '#comments_form"'; $this->form_builder->set_fields($fields); $this->form_builder->set_field_values($field_values); $this->form_builder->set_validator($this->blog_comments_model->get_validation()); $vars['comment_form'] = $this->form_builder->render(); $vars['fields'] = $fields; } $output = $this->_render('post', $vars, TRUE); // save cache only if we are not posting data if (!empty($_POST)) { $this->fuel->blog->save_cache($cache_id, $output); } } if (!empty($output)) { $this->output->set_output($output); return; } } else { show_404(); } }
public function _remap_variables($page) { // set up cache info $cache_group = $this->fuel->config('page_cache_group'); $cache_id = $this->fuel->cache->create_id(); if ($this->fuel->config('use_page_cache') !== 'cms' and $this->cache->get($cache_id, $cache_group, FALSE) and !is_fuelified()) { $output = $this->cache->get($cache_id, $cache_group); } else { // get the output $output = $page->variables_render(TRUE, FALSE); // save to cache but you must not be logged in for it to save if ($this->fuel->config('use_page_cache') !== FALSE and $this->fuel->config('use_page_cache') !== 'cms' and !is_fuelified()) { $this->fuel->cache->save($cache_id, $output, $cache_group, $this->fuel->config('page_cache_ttl')); } } // show 404 if output is explicitly set to FALSE if ($output === FALSE) { // do any redirects... will exit script if any redirect_404(); } // fuelify output $output = $page->fuelify($output); // render output $this->output->set_output($output); }
function _remap() { $this->current_page = $this->fuel->user_guide->current_page(); $cache_id = $this->current_page; if ($this->fuel->user_guide->config('use_cache') and $this->fuel->cache->is_cached($cache_id)) { $output = $this->fuel->cache->get($cache_id); } else { $this->fuel->pagevars->vars_path = USER_GUIDE_PATH . 'views/_variables/'; $vars = array(); // get modules $modules = array('', 'fuel'); $modules = array_merge($modules, $this->fuel->config('modules_allowed')); $vars = $this->fuel->user_guide->get_vars($this->current_page); foreach ($modules as $m) { if ((!$this->fuel->user_guide->config('authenticate') or $this->fuel->auth->has_permission('user_guide_' . $m)) and file_exists(MODULES_PATH . $m . '/views/_docs/index' . EXT)) { $module_view = $this->load->module_view($m, '_docs/index', array(), TRUE); $mod_page_title = $this->fuel->user_guide->page_title($module_view); $vars['modules'][$m] = !empty($mod_page_title) ? $mod_page_title : humanize($m) . ' Module'; } } // render page // pull from modules folder if URI says so $uri_path_index = count(explode('/', $this->fuel->user_guide->config('root_url'))) + 1; $module_page = uri_path(FALSE, $uri_path_index); $module_view_path = !empty($module_page) ? '_docs/' . $module_page : '_docs/index'; $allow_auto_generation = $this->fuel->user_guide->config('allow_auto_generation'); if (is_file(USER_GUIDE_PATH . 'views/' . $this->current_page . EXT)) { $vars['body'] = $this->load->module_view(USER_GUIDE_FOLDER, $this->current_page, $vars, TRUE); if ($this->fuel->user_guide->page_segment(2)) { $vars['sections'] = $this->fuel->user_guide->breadcrumb($this->current_page); } } else { if (is_file(FUEL_PATH . 'views/_docs/' . $this->current_page . EXT)) { $vars['body'] = $this->load->module_view(FUEL_FOLDER, '_docs/' . $this->current_page, $vars, TRUE); if ($this->fuel->user_guide->page_segment(2)) { $vars['sections'] = $this->fuel->user_guide->breadcrumb($this->current_page); } } else { if ($this->fuel->user_guide->page_segment(2)) { if (in_array($this->fuel->user_guide->page_segment(1), $this->fuel->user_guide->valid_folders)) { $module = FUEL_FOLDER; $file = $this->fuel->user_guide->page_segment(2); $uri_path_index = count(explode('/', $this->fuel->user_guide->config('root_url'))) - 2; $module_view_path = '_docs/' . uri_path(FALSE, $uri_path_index); } else { $module = $this->fuel->user_guide->page_segment(2); $file = $this->fuel->user_guide->page_segment(3); if (!empty($file) and $file != 'index') { $module_view_path = '_docs/' . $file; } } $body = ''; if (file_exists(MODULES_PATH . $module . '/views/' . $module_view_path . EXT)) { $body = $this->load->module_view($module, $module_view_path, $vars, TRUE); } else { if ($allow_auto_generation === TRUE or in_array($module, $allow_auto_generation)) { if (!empty($file)) { $uri_folder = $this->fuel->user_guide->page_segment(4); $valid_folders = $this->fuel->user_guide->valid_folders; $file_name = ucfirst($file); $folder = ($uri_folder and in_array($uri_folder, $valid_folders)) ? $uri_folder : 'libraries'; if (preg_match('#_helper$#', $file)) { $folder = 'helpers'; $file_name = strtolower($file); } else { if (preg_match('#_model$#', $file)) { $folder = 'models'; $file_name = strtolower($file); } } $file_name = preg_replace('#^my_(\\w+)#', 'MY_$1', $file_name); $file_path = MODULES_PATH . $module . '/' . $folder . '/' . $file_name . EXT; if (file_exists($file_path)) { $body = $this->fuel->user_guide->generate_docs($file_name, $folder, $module, array()); } else { $file_path = APPPATH . '/' . $folder . '/' . $file_name . EXT; if (file_exists($file_path)) { $body = $this->fuel->user_guide->generate_docs($file_name, $folder, $module, array()); } } if ($this->fuel->user_guide->page_segment(2)) { $vars['sections'] = $this->fuel->user_guide->breadcrumb($this->current_page); } } } } if (!$this->fuel->user_guide->config('authenticate') or $this->fuel->auth->has_permission('user_guide_' . $module) and isset($body)) { $vars['body'] = $body; if ($file) { if (isset($vars['modules'][$module])) { if ($module != FUEL_FOLDER) { $vars['sections'] = array($vars['modules'][$module] => 'modules/' . $module); } } else { redirect_404(); } } } } else { redirect_404(); } } } if (empty($vars['body'])) { redirect_404(); } $vars['page_title'] = $this->fuel->user_guide->page_title($vars['body']); $output = $this->load->module_view(USER_GUIDE_FOLDER, '_layouts/user_guide', $vars, TRUE); if ($this->fuel->user_guide->config('use_cache')) { $this->fuel->cache->save($cache_id, $output); } } $this->output->set_output($output); }