Changes to Phile Core


docs/philecorechanges
<!--
Title: Changes to Phile Core
Date: 2014-03-05
chapter: 0.2
comments: false
-->

This page tracks the various small tweaks I made to the phile core.  See the referenced page for more information or to make comments.



## System Config/DEFINE

See [One Phile Multiple Sites](install.shared.core).  I wanted to use a shared system folder for multiple sites. Files changed:

* index.php

## Proper link URLS
* don't use the base tag from the head section of the templates
* use base_url explicitely in templates. i.e. 
~~~~
    <li><a href="{{ base_url }}/{{ page.url }}">{{ page.title }}</a></li>
~~~~

Files changed:

* theme files *.html

This is somewhat related to the [problem of subfolder links](plugins/plugin.jaccms) links in markdown on an index or excerpt pages.

## The Request URI

Phile does not let you change the request_uri.  Pico does let you change it.  Ability to change it resolves some issues and gives plugins more flexibility.  I needed several virtual pages. In any case I changeded these lines in `Core.php` method `initializeCurrentPage() `.

~~~~
* @triggerEvent request_uri this event is triggered after the request uri is detected.
*
*/
//jacmgr::  need to be able to change uri in plugin
//Event::triggerEvent('request_uri', array('uri' => $uri));
Event::triggerEvent('request_uri', array('uri' => &$uri));
~~~~

Files changed:
* Core.php


## The Page Model

I've made 3 changes in the Page model.

### 1) Added some getters

See the [blog post](%base_url%/posts/getpagestweak2).

Files Changed:

* Lib\Phile\Model\Page.php

I needed to get the full raw text content un-parsed.  There were  no getters in the page model for that.  I added the following getters, `getContentRaw()` and `getRawData()`.

### 2) Added a setter for Meta
See the [blog post](%base_url%/posts/getpagestweak3).

I needed to be able to set meta data into a page.  There were  no setters in the page model for that.  

These are the setters and getters I added.

~~~~
	/**
	 * Page Model JACMGR ADDITIONS
	 * by jacmgr
	 */
    //jacmgr: set some meta
    public function setMeta($key, $value) {
		$this->meta->set($key, $value);
	}      
    //jacmgr: Get the Content section of file without parsing
	public function getContentRaw() {
		return $this->content;
	}
    //jacmgr: Get the full page content
	public function getRawData() {
		return $this->rawData;
	}     	        
	//SETTERS
    public function setRawData($content) {
		$this->rawData = $content;
	}
    public function setUrl($newUrl) {
		$this->url = $newUrl;
	}
~~~~

### 3) Need to adjust the before_parse trigger
Should be able to modify the content in the before_parse trigger.  This change does that.
~~~~
//Event::triggerEvent('before_parse_content', array('content' => $this->content, 'page' => &$this));
Event::triggerEvent('before_parse_content', array('content' => &$this->content, 'page' => &$this));
~~~~

## Twig and Phile Settings

I made 2 changes in the TWIG object.

Files Changed:

* Phile\plugins\phile\templateTwig\Classes\Template\Twig.php
* 
### 1) Phile Settings

> NO CHANGES MADE in PHILE 1.0.  I don't seem to have this problem, but we'll see in the future, since Phile 1.0 still acts the same way.

For Phile 0.9
See the [blog post](%base_url%/posts/coretemplate). Noticed that some settings that were made in plugins were not making it into template.

The `render` method is using a `$this->settings` that was defined in the constructor.  Many plugins could have added more settings since then?

### 2) Added a template exist check

> NO CHANGES MADE in PHILE 1.0.  I don't seem to have this problem, but we'll see in the future. Stile monitoring

For Phile 0.9: See the [blog post](%base_url%/posts/coretemplatetheme). When use a meta `template` phile does not check if the template actually exists.  So it will throw an exception if it does not exist.  I would rather it simply uses the default template if the meta `template` is not found.

I think I can actually make this a plugin instead of modify core, but seems like core behavior to me.