diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 5b3f54a..3e2b99d 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -125,9 +125,16 @@
require(BASEPATH.'codeigniter/Base5'.EXT);
}
+// Load the base controller class
load_class('Controller', FALSE);
-require(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);
+// Load the local application controller
+// Note: The Router class automatically validates the controller path. If this include fails it
+// means that the default controller in the Routes.php file is not resolving to something valid.
+if ( ! @include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT))
+{
+ show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
+}
// Set a mark point for benchmarking
$BM->mark('loading_time_base_classes_end');
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 84b096c..fdef5dd 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -45,7 +45,7 @@
*
* @access public
*/
- function CI_Calendar()
+ function CI_Calendar($config = array())
{
$this->CI =& get_instance();
@@ -55,6 +55,12 @@
}
$this->local_time = time();
+
+ if (count($config) > 0)
+ {
+ $this->initialize($config);
+ }
+
log_message('debug', "Calendar Class Initialized");
}
@@ -153,6 +159,9 @@
// "previous" month link
if ($this->show_next_prev == TRUE)
{
+ // Add a trailing slash to the URL if needed
+ $this->next_prev_url = preg_replace("/(.+?)\/*$/", "\\1/", $this->next_prev_url);
+
$adjusted_date = $this->adjust_date($month - 1, $year);
$out .= str_replace('{previous_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_previous_cell']);
$out .= "\n";
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index c66d570..07ad6a6 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -120,8 +120,11 @@
if ($CI->uri->segment($this->uri_segment) != 0)
{
$this->cur_page = $CI->uri->segment($this->uri_segment);
+
+ // Prep the current page - no funny business!
+ $this->cur_page = preg_replace("/[a-z\-]/", "", $this->cur_page);
}
-
+
if ( ! is_numeric($this->cur_page))
{
$this->cur_page = 0;
diff --git a/user_guide/general/alternative_php.html b/user_guide/general/alternative_php.html
index 888123e..2018bf2 100644
--- a/user_guide/general/alternative_php.html
+++ b/user_guide/general/alternative_php.html
@@ -63,15 +63,21 @@
<h1>Alternate PHP Syntax for View Files</h1>
<p>If you do not utilize Code Igniter's <a href="../libraries/parser.html">template engine</a>, you'll be using pure PHP
-in your View files. To minimize the PHP code in these files, and to make it easier to identify the code blocks it is recommended that you use PHPs alternative
-syntax for control structures and echo statements. If you are not familiar with this syntax, it allows you to eliminate the braces from your code,
+in your View files. To minimize the PHP code in these files, and to make it easier to identify the code blocks it is recommended that you use
+PHPs alternative syntax for control structures and short tag echo statements. If you are not familiar with this syntax, it allows you to eliminate the braces from your code,
and eliminate "echo" statements.</p>
-<p class="important"><strong>Note:</strong> If you find that the syntax described in this page does not work on your server it might
+<h2>Automatic Short Tag Support</h2>
+
+<p><strong>Note:</strong> If you find that the syntax described in this page does not work on your server it might
be that "short tags" are disabled in your PHP ini file. Code Igniter will optionally rewrite short tags on-the-fly,
allowing you to use that syntax even if your server doesn't support it. This feature can be enabled in your
<dfn>config/config.php</dfn> file.</p>
+<p class="important">Please note that if you do use this feature, if PHP errors are encountered
+in your <strong>view files</strong>, the error message and line number will not be accurately shown. Instead, all errors
+will be shown as <kbd>eval()</kbd> errors.</p>
+
<h2>Alternative Echos</h2>
diff --git a/user_guide/libraries/calendar.html b/user_guide/libraries/calendar.html
index 0303517..ff61701 100644
--- a/user_guide/libraries/calendar.html
+++ b/user_guide/libraries/calendar.html
@@ -119,19 +119,18 @@
<h2>Setting Display Preferences</h2>
-<p>There are seven preferences you can set to control various aspects of the calendar. Preferences are set using an initialization
-function similar to other classes. Here is an example:
+<p>There are seven preferences you can set to control various aspects of the calendar. Preferences are set by passing an
+array of preferences in the second parameter of the loading function. Here is an example:</p>
-<code>$this->load->library('calendar');<br />
-<br />
+<code>
$prefs = array (<br />
'start_day' => 'saturday',<br />
'month_type' => 'long',<br />
'day_type' => 'short'<br />
);<br />
<br />
-$this->calendar->initialize($prefs);<br />
+$this->load->library('calendar', $prefs);<br />
<br />
echo $this->calendar->generate();</code>
@@ -166,6 +165,30 @@
+<h2>Showing Next/Previous Month Links</h2>
+
+<p>To allow your calendar to dynamically increment/decrement via the next/previous links requires that you set up your calendar
+code similar to this example:</p>
+
+
+<code>$this->load->library('calendar');<br />
+<br />
+$prefs = array (<br />
+ 'show_next_prev' => TRUE,<br />
+ 'next_prev_url' => 'http://www.your-site.com/index.php/calendar/show/'<br />
+ );<br />
+<br />
+echo $this->calendar->generate(<var>$this->uri->segment(3)</var>, <var>$this->uri->segment(4)</var>, $prefs);</code>
+
+<p>You'll notice a few things about the above example:</p>
+
+<ul>
+<li>You must set the "show_next_prev" to TRUE.</li>
+<li>You must supply the URL to the controller containing your calendar in the "next_prev_url" preference.</li>
+<li>You must supply the "year" and "month" to the calendar generating function via the URI segments where they appear (Note: The calendar class automatically adds the year/month to the base URL you provide.).</li>
+</ul>
+
+
<h2>Creating a Calendar Template</h2>
@@ -173,7 +196,7 @@
calendar will be placed within a pair of pseudo-variables as shown here:</p>
-<code>$this->load->library('calendar');<br /><br />
+<code>
$prefs['template'] = '<br /><br />
<dfn>{table_open}</dfn><var><table border="0" cellpadding="0" cellspacing="0"></var><dfn>{/table_open}</dfn><br />
<br />
@@ -206,39 +229,12 @@
<dfn>{table_close}</dfn><var></table></var><dfn>{/table_close}</dfn><br />
';<br />
<br />
-$this->calendar->initialize($prefs);<br />
+$this->load->library('calendar', $prefs);<br />
<br />
echo $this->calendar->generate();</code>
-<h2>Showing Next/Previous Month Links</h2>
-
-<p>To allow your calendar to dynamically increment/decrement via the next/previous links requires that you set up your calendar
-code similar to this example:</p>
-
-
-<code>$this->load->library('calendar');<br />
-<br />
-$prefs = array (<br />
- 'show_next_prev' => TRUE,<br />
- 'next_prev_url' => 'http://www.your-site.com/index.php/calendar/show/'<br />
- );<br />
-<br />
-$this->calendar->initialize($prefs);<br />
-<br />
-echo $this->calendar->generate(<var>$this->uri->segment(3)</var>, <var>$this->uri->segment(4)</var>);</code>
-
-<p>You'll notice a few things about the above example:</p>
-
-<ul>
-<li>You must set the "show_next_prev" to TRUE.</li>
-<li>You must supply the URL to the controller containing your calendar in the "next_prev_url" preference.</li>
-<li>You must supply the "year" and "month" to the calendar generating function via the URI segments where they appear (Note: The calendar class automatically adds the year/month to the base URL you provide.).</li>
-</ul>
-
-
-
</div>
<!-- END CONTENT -->
diff --git a/user_guide/libraries/file_uploading.html b/user_guide/libraries/file_uploading.html
index 6a2317d..1fa93bf 100644
--- a/user_guide/libraries/file_uploading.html
+++ b/user_guide/libraries/file_uploading.html
@@ -171,7 +171,7 @@
$config['max_width'] = '1024';
$config['max_height'] = '768';
- $this->upload->initialize($config);
+ $this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
@@ -230,6 +230,9 @@
$config['max_width'] = '1024';<br />
$config['max_height'] = '768';<br />
<br />
+$this->load->library('ftp', $config);<br /><br />
+
+// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:<br />
$this->upload->initialize($config);</code>
<p>The above preferences should be fairly self-explanatory. Below is a table describing all available preferences.</p>