GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — develop ( e54387...b62a26 )
by Lonnie
10s
created
myth/Mail/MailServiceInterface.php 1 patch
Indentation   +140 added lines, -140 removed lines patch added patch discarded remove patch
@@ -42,145 +42,145 @@
 block discarded – undo
42 42
  */
43 43
 interface MailServiceInterface {
44 44
 
45
-    /**
46
-     * Does the actual delivery of a message.
47
-     *
48
-     * @param bool  $clear_after    If TRUE, will reset the class after sending.
49
-     *
50
-     * @return mixed
51
-     */
52
-    public function send($clear_after=true);
53
-
54
-    //--------------------------------------------------------------------
55
-
56
-    /**
57
-     * Adds an attachment to the current email that is being built.
58
-     *
59
-     * @param string    $filename
60
-     * @param string    $disposition    like 'inline'. Default is 'attachment'
61
-     * @param string    $newname        If you'd like to rename the file for delivery
62
-     * @param string    $mime           Custom defined mime type.
63
-     */
64
-    public function attach($filename, $disposition=null, $newname=null, $mime=null);
65
-
66
-    //--------------------------------------------------------------------
67
-
68
-    /**
69
-     * Sets a header value for the email. Not every service will provide this.
70
-     *
71
-     * @param $field
72
-     * @param $value
73
-     * @return mixed
74
-     */
75
-    public function setHeader($field, $value);
76
-
77
-    //--------------------------------------------------------------------
78
-
79
-    //--------------------------------------------------------------------
80
-    // Options
81
-    //--------------------------------------------------------------------
82
-
83
-    /**
84
-     * Sets the email address to send the email to.
85
-     *
86
-     * @param $email
87
-     * @return mixed
88
-     */
89
-    public function to($email);
45
+	/**
46
+	 * Does the actual delivery of a message.
47
+	 *
48
+	 * @param bool  $clear_after    If TRUE, will reset the class after sending.
49
+	 *
50
+	 * @return mixed
51
+	 */
52
+	public function send($clear_after=true);
53
+
54
+	//--------------------------------------------------------------------
55
+
56
+	/**
57
+	 * Adds an attachment to the current email that is being built.
58
+	 *
59
+	 * @param string    $filename
60
+	 * @param string    $disposition    like 'inline'. Default is 'attachment'
61
+	 * @param string    $newname        If you'd like to rename the file for delivery
62
+	 * @param string    $mime           Custom defined mime type.
63
+	 */
64
+	public function attach($filename, $disposition=null, $newname=null, $mime=null);
65
+
66
+	//--------------------------------------------------------------------
67
+
68
+	/**
69
+	 * Sets a header value for the email. Not every service will provide this.
70
+	 *
71
+	 * @param $field
72
+	 * @param $value
73
+	 * @return mixed
74
+	 */
75
+	public function setHeader($field, $value);
76
+
77
+	//--------------------------------------------------------------------
78
+
79
+	//--------------------------------------------------------------------
80
+	// Options
81
+	//--------------------------------------------------------------------
82
+
83
+	/**
84
+	 * Sets the email address to send the email to.
85
+	 *
86
+	 * @param $email
87
+	 * @return mixed
88
+	 */
89
+	public function to($email);
90 90
     
91
-    //--------------------------------------------------------------------
92
-
93
-    /**
94
-     * Sets who the email is coming from.
95
-     *
96
-     * @param $email
97
-     * @param null $name
98
-     * @return mixed
99
-     */
100
-    public function from($email, $name=null);
101
-
102
-    //--------------------------------------------------------------------
103
-
104
-    /**
105
-     * Sets a single additional email address to 'cc'.
106
-     *
107
-     * @param $email
108
-     * @return mixed
109
-     */
110
-    public function cc($email);
111
-
112
-    //--------------------------------------------------------------------
113
-
114
-    /**
115
-     * Sets a single email address to 'bcc' to.
116
-     *
117
-     * @param $email
118
-     * @return mixed
119
-     */
120
-    public function bcc($email);
121
-
122
-    //--------------------------------------------------------------------
123
-
124
-    /**
125
-     * Sets the reply to address.
126
-     *
127
-     * @param $email
128
-     * @param $name
129
-     * @return mixed
130
-     */
131
-    public function reply_to($email, $name=null);
132
-
133
-    //--------------------------------------------------------------------
134
-
135
-    /**
136
-     * Sets the subject line of the email.
137
-     *
138
-     * @param $subject
139
-     * @return mixed
140
-     */
141
-    public function subject($subject);
142
-
143
-    //--------------------------------------------------------------------
144
-
145
-    /**
146
-     * Sets the HTML portion of the email address. Optional.
147
-     *
148
-     * @param $message
149
-     * @return mixed
150
-     */
151
-    public function html_message($message);
152
-
153
-    //--------------------------------------------------------------------
154
-
155
-    /**
156
-     * Sets the text portion of the email address. Optional.
157
-     *
158
-     * @param $message
159
-     * @return mixed
160
-     */
161
-    public function text_message($message);
162
-
163
-    //--------------------------------------------------------------------
164
-
165
-    /**
166
-     * Sets the format to send the email in. Either 'html' or 'text'.
167
-     *
168
-     * @param $format
169
-     * @return mixed
170
-     */
171
-    public function format($format);
172
-
173
-    //--------------------------------------------------------------------
174
-
175
-    /**
176
-     * Resets the state to blank, ready for a new email. Useful when
177
-     * sending emails in a loop and you need to make sure that the
178
-     * email is reset.
179
-     *
180
-     * @param bool $clear_attachments
181
-     * @return mixed
182
-     */
183
-    public function reset($clear_attachments=true);
184
-
185
-    //--------------------------------------------------------------------
91
+	//--------------------------------------------------------------------
92
+
93
+	/**
94
+	 * Sets who the email is coming from.
95
+	 *
96
+	 * @param $email
97
+	 * @param null $name
98
+	 * @return mixed
99
+	 */
100
+	public function from($email, $name=null);
101
+
102
+	//--------------------------------------------------------------------
103
+
104
+	/**
105
+	 * Sets a single additional email address to 'cc'.
106
+	 *
107
+	 * @param $email
108
+	 * @return mixed
109
+	 */
110
+	public function cc($email);
111
+
112
+	//--------------------------------------------------------------------
113
+
114
+	/**
115
+	 * Sets a single email address to 'bcc' to.
116
+	 *
117
+	 * @param $email
118
+	 * @return mixed
119
+	 */
120
+	public function bcc($email);
121
+
122
+	//--------------------------------------------------------------------
123
+
124
+	/**
125
+	 * Sets the reply to address.
126
+	 *
127
+	 * @param $email
128
+	 * @param $name
129
+	 * @return mixed
130
+	 */
131
+	public function reply_to($email, $name=null);
132
+
133
+	//--------------------------------------------------------------------
134
+
135
+	/**
136
+	 * Sets the subject line of the email.
137
+	 *
138
+	 * @param $subject
139
+	 * @return mixed
140
+	 */
141
+	public function subject($subject);
142
+
143
+	//--------------------------------------------------------------------
144
+
145
+	/**
146
+	 * Sets the HTML portion of the email address. Optional.
147
+	 *
148
+	 * @param $message
149
+	 * @return mixed
150
+	 */
151
+	public function html_message($message);
152
+
153
+	//--------------------------------------------------------------------
154
+
155
+	/**
156
+	 * Sets the text portion of the email address. Optional.
157
+	 *
158
+	 * @param $message
159
+	 * @return mixed
160
+	 */
161
+	public function text_message($message);
162
+
163
+	//--------------------------------------------------------------------
164
+
165
+	/**
166
+	 * Sets the format to send the email in. Either 'html' or 'text'.
167
+	 *
168
+	 * @param $format
169
+	 * @return mixed
170
+	 */
171
+	public function format($format);
172
+
173
+	//--------------------------------------------------------------------
174
+
175
+	/**
176
+	 * Resets the state to blank, ready for a new email. Useful when
177
+	 * sending emails in a loop and you need to make sure that the
178
+	 * email is reset.
179
+	 *
180
+	 * @param bool $clear_attachments
181
+	 * @return mixed
182
+	 */
183
+	public function reset($clear_attachments=true);
184
+
185
+	//--------------------------------------------------------------------
186 186
 }
Please login to merge, or discard this patch.
myth/Settings/ConfigStore.php 1 patch
Indentation   +138 added lines, -138 removed lines patch added patch discarded remove patch
@@ -49,143 +49,143 @@
 block discarded – undo
49 49
  */
50 50
 class ConfigStore implements SettingsStoreInterface {
51 51
 
52
-    protected $ci;
53
-
54
-    //--------------------------------------------------------------------
55
-
56
-    public function __construct( $ci=null )
57
-    {
58
-        if (is_object($ci))
59
-        {
60
-            $this->ci =& $ci;
61
-        }
62
-        else {
63
-            $this->ci =& get_instance();
64
-        }
65
-    }
66
-
67
-    //--------------------------------------------------------------------
68
-
69
-    /**
70
-     * Inserts/Replaces a single setting item.
71
-     *
72
-     * @param $key
73
-     * @param null $value
74
-     * @param string $group
75
-     */
76
-    public function save($key, $value=null, $group='app')
77
-    {
78
-        // Treat the 'app' group as our primary, un-sectioned
79
-        // config files.
80
-        if ($group != 'app')
81
-        {
82
-            return $this->ci->config->set_item($key, $value);
83
-        }
84
-
85
-        // Otherwise, we'll need to ensure a section exists
86
-        if (! isset($this->ci->config->config[$group]))
87
-        {
88
-            $this->ci->config->config[$group] = [];
89
-        }
90
-
91
-        $this->ci->config->config[$group][$key] = $value;
92
-    }
93
-
94
-    //--------------------------------------------------------------------
95
-
96
-    /**
97
-     * Retrieves a single item. If the config system doesn't have the
98
-     * value loaded, yet, it will attempt to load a config file matching
99
-     * the 'group' name and grab the value from that.
100
-     *
101
-     * @param $key
102
-     * @param string $group
103
-     * @return mixed
104
-     */
105
-    public function get($key, $group='application')
106
-    {
107
-        // First, see if CI already has this key loaded.
108
-        $result = $this->ci->config->item($key);
109
-
110
-        // This bit will fail when the actual value is NULL
111
-        // but should result in false hits infrequently.
112
-        if ($result !== null)
113
-        {
114
-            return $result;
115
-        }
116
-
117
-        // Try to load the 'group' file, then try to load a
118
-        // config file that matches the group name
119
-        $this->ci->load->config($group, false, true);
52
+	protected $ci;
53
+
54
+	//--------------------------------------------------------------------
55
+
56
+	public function __construct( $ci=null )
57
+	{
58
+		if (is_object($ci))
59
+		{
60
+			$this->ci =& $ci;
61
+		}
62
+		else {
63
+			$this->ci =& get_instance();
64
+		}
65
+	}
66
+
67
+	//--------------------------------------------------------------------
68
+
69
+	/**
70
+	 * Inserts/Replaces a single setting item.
71
+	 *
72
+	 * @param $key
73
+	 * @param null $value
74
+	 * @param string $group
75
+	 */
76
+	public function save($key, $value=null, $group='app')
77
+	{
78
+		// Treat the 'app' group as our primary, un-sectioned
79
+		// config files.
80
+		if ($group != 'app')
81
+		{
82
+			return $this->ci->config->set_item($key, $value);
83
+		}
84
+
85
+		// Otherwise, we'll need to ensure a section exists
86
+		if (! isset($this->ci->config->config[$group]))
87
+		{
88
+			$this->ci->config->config[$group] = [];
89
+		}
90
+
91
+		$this->ci->config->config[$group][$key] = $value;
92
+	}
93
+
94
+	//--------------------------------------------------------------------
95
+
96
+	/**
97
+	 * Retrieves a single item. If the config system doesn't have the
98
+	 * value loaded, yet, it will attempt to load a config file matching
99
+	 * the 'group' name and grab the value from that.
100
+	 *
101
+	 * @param $key
102
+	 * @param string $group
103
+	 * @return mixed
104
+	 */
105
+	public function get($key, $group='application')
106
+	{
107
+		// First, see if CI already has this key loaded.
108
+		$result = $this->ci->config->item($key);
109
+
110
+		// This bit will fail when the actual value is NULL
111
+		// but should result in false hits infrequently.
112
+		if ($result !== null)
113
+		{
114
+			return $result;
115
+		}
116
+
117
+		// Try to load the 'group' file, then try to load a
118
+		// config file that matches the group name
119
+		$this->ci->load->config($group, false, true);
120 120
         
121
-        $result = $this->ci->config->item($key);
122
-
123
-        return $result;
124
-    }
125
-
126
-    //--------------------------------------------------------------------
127
-
128
-    /**
129
-     * Deletes a single item.
130
-     *
131
-     * NOT supported by this store.
132
-     *
133
-     * @param $key
134
-     * @param $group
135
-     * @return mixed
136
-     */
137
-    public function delete($key, $group='app')
138
-    {
139
-        return false;
140
-    }
141
-
142
-    //--------------------------------------------------------------------
143
-
144
-    /**
145
-     * Searches the store for any items with $field = $value.
146
-     *
147
-     * Does not work.
148
-     *
149
-     * @param $field
150
-     * @param $value
151
-     * @return mixed
152
-     */
153
-    public function findBy($field, $value)
154
-    {
155
-        return false;
156
-    }
157
-
158
-    //--------------------------------------------------------------------
159
-
160
-    /**
161
-     * Retrieves all items in the store either globally or for a single group.
162
-     *
163
-     * @param string $group
164
-     * @return mixed
165
-     */
166
-    public function all($group=null)
167
-    {
168
-        if (empty($group))
169
-        {
170
-            return $this->ci->config->config;
171
-        }
172
-
173
-        // If we're a group, does the group already exists
174
-        // as a 'section' in the config array?
175
-        if (isset($this->ci->config->config[$group]))
176
-        {
177
-            return $this->ci->config->config[$group];
178
-        }
179
-
180
-        // Still here? Attempt to load the file into a section
181
-        // and try one last time.
182
-        if ($this->ci->load->config($group))
183
-        {
184
-            return $this->ci->config->config($group);
185
-        }
186
-
187
-        return null;
188
-    }
189
-
190
-    //--------------------------------------------------------------------
121
+		$result = $this->ci->config->item($key);
122
+
123
+		return $result;
124
+	}
125
+
126
+	//--------------------------------------------------------------------
127
+
128
+	/**
129
+	 * Deletes a single item.
130
+	 *
131
+	 * NOT supported by this store.
132
+	 *
133
+	 * @param $key
134
+	 * @param $group
135
+	 * @return mixed
136
+	 */
137
+	public function delete($key, $group='app')
138
+	{
139
+		return false;
140
+	}
141
+
142
+	//--------------------------------------------------------------------
143
+
144
+	/**
145
+	 * Searches the store for any items with $field = $value.
146
+	 *
147
+	 * Does not work.
148
+	 *
149
+	 * @param $field
150
+	 * @param $value
151
+	 * @return mixed
152
+	 */
153
+	public function findBy($field, $value)
154
+	{
155
+		return false;
156
+	}
157
+
158
+	//--------------------------------------------------------------------
159
+
160
+	/**
161
+	 * Retrieves all items in the store either globally or for a single group.
162
+	 *
163
+	 * @param string $group
164
+	 * @return mixed
165
+	 */
166
+	public function all($group=null)
167
+	{
168
+		if (empty($group))
169
+		{
170
+			return $this->ci->config->config;
171
+		}
172
+
173
+		// If we're a group, does the group already exists
174
+		// as a 'section' in the config array?
175
+		if (isset($this->ci->config->config[$group]))
176
+		{
177
+			return $this->ci->config->config[$group];
178
+		}
179
+
180
+		// Still here? Attempt to load the file into a section
181
+		// and try one last time.
182
+		if ($this->ci->load->config($group))
183
+		{
184
+			return $this->ci->config->config($group);
185
+		}
186
+
187
+		return null;
188
+	}
189
+
190
+	//--------------------------------------------------------------------
191 191
 }
Please login to merge, or discard this patch.
myth/Settings/SettingsStoreInterface.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -40,58 +40,58 @@
 block discarded – undo
40 40
  */
41 41
 interface SettingsStoreInterface {
42 42
 
43
-    /**
44
-     * Inserts/Replaces a single setting item.
45
-     *
46
-     * @param $key
47
-     * @param null $value
48
-     * @param string $group
49
-     */
50
-    public function save($key, $value=null, $group='app');
43
+	/**
44
+	 * Inserts/Replaces a single setting item.
45
+	 *
46
+	 * @param $key
47
+	 * @param null $value
48
+	 * @param string $group
49
+	 */
50
+	public function save($key, $value=null, $group='app');
51 51
 
52
-    //--------------------------------------------------------------------
52
+	//--------------------------------------------------------------------
53 53
 
54
-    /**
55
-     * Retrieves a single item.
56
-     *
57
-     * @param $key
58
-     * @param string $group
59
-     * @return mixed
60
-     */
61
-    public function get($key, $group='app');
54
+	/**
55
+	 * Retrieves a single item.
56
+	 *
57
+	 * @param $key
58
+	 * @param string $group
59
+	 * @return mixed
60
+	 */
61
+	public function get($key, $group='app');
62 62
 
63
-    //--------------------------------------------------------------------
63
+	//--------------------------------------------------------------------
64 64
 
65
-    /**
66
-     * Deletes a single item.
67
-     *
68
-     * @param $key
69
-     * @param $group
70
-     * @return mixed
71
-     */
72
-    public function delete($key, $group='app');
65
+	/**
66
+	 * Deletes a single item.
67
+	 *
68
+	 * @param $key
69
+	 * @param $group
70
+	 * @return mixed
71
+	 */
72
+	public function delete($key, $group='app');
73 73
 
74
-    //--------------------------------------------------------------------
74
+	//--------------------------------------------------------------------
75 75
 
76
-    /**
77
-     * Searches the store for any items with $field = $value.
78
-     *
79
-     * @param $field
80
-     * @param $value
81
-     * @return mixed
82
-     */
83
-    public function findBy($field, $value);
76
+	/**
77
+	 * Searches the store for any items with $field = $value.
78
+	 *
79
+	 * @param $field
80
+	 * @param $value
81
+	 * @return mixed
82
+	 */
83
+	public function findBy($field, $value);
84 84
 
85
-    //--------------------------------------------------------------------
85
+	//--------------------------------------------------------------------
86 86
 
87
-    /**
88
-     * Retrieves all items in the store either globally or for a single group.
89
-     *
90
-     * @param string $group
91
-     * @return mixed
92
-     */
93
-    public function all($group=null);
87
+	/**
88
+	 * Retrieves all items in the store either globally or for a single group.
89
+	 *
90
+	 * @param string $group
91
+	 * @return mixed
92
+	 */
93
+	public function all($group=null);
94 94
 
95
-    //--------------------------------------------------------------------
95
+	//--------------------------------------------------------------------
96 96
 
97 97
 }
Please login to merge, or discard this patch.
myth/Themers/MetaCollection.php 1 patch
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -35,219 +35,219 @@
 block discarded – undo
35 35
 
36 36
 class MetaCollection implements MetaInterface {
37 37
 
38
-    /**
39
-     * Stores the meta values the user has set.
40
-     *
41
-     * @var array
42
-     */
43
-    protected $meta = [];
44
-
45
-    /**
46
-     * Stores the standard meta-value names
47
-     * Mostly here for reference, I guess.
48
-     *
49
-     * @var array
50
-     */
51
-    protected $std_meta = [
52
-        'application-name',
53
-        'author',
54
-        'copyright',
55
-        'description',
56
-        'generator',
57
-        'keywords',
58
-        'robots',
59
-        'googlebot'
60
-    ];
61
-
62
-    /**
63
-     * Stores the HTTP-Equiv meta tags
64
-     * since they need to be rendered differently.
65
-     *
66
-     * @var array
67
-     */
68
-    protected $http_equiv_meta = [
69
-        'cache-control',
70
-        'content-language',
71
-        'content-type',
72
-        'default-style',
73
-        'expires',
74
-        'pragma',
75
-        'refresh',
76
-        'set-cookie'
77
-    ];
78
-
79
-    /**
80
-     * Stores the document's character encoding.
81
-     *
82
-     * @var string
83
-     */
84
-    public $charset = 'utf-8';
85
-
86
-    //--------------------------------------------------------------------
87
-
88
-    public function __construct($ci)
89
-    {
90
-        $ci->config->load('html_meta', true);
91
-
92
-        $config = $ci->config->item('html_meta');
93
-
94
-        $this->meta = $config['meta'];
95
-
96
-        $this->http_equiv_meta = array_merge($this->http_equiv_meta, $config['http-equiv']);
97
-    }
98
-
99
-    //--------------------------------------------------------------------
100
-
101
-
102
-    /**
103
-     * Sets a single meta item.
104
-     * $alias can also be an array of key/value pairs to set.
105
-     *
106
-     * @param string|array $alias
107
-     * @param null $value
108
-     *
109
-     * @return mixed
110
-     */
111
-    public function set($alias, $value=null, $escape=true)
112
-    {
113
-        if (is_array($alias))
114
-        {
115
-            foreach ($alias as $key => $val)
116
-            {
117
-                $this->set($key, $val);
118
-            }
119
-
120
-            return $this;
121
-        }
122
-
123
-        // Charset
124
-        if (strtolower($alias) == 'charset')
125
-        {
126
-            $this->charset = $value;
127
-
128
-            return $this;
129
-        }
130
-
131
-        $this->meta[ strtolower($alias) ] = $escape ? esc($value, 'htmlAttr') : $value;
132
-
133
-        return $this;
134
-    }
135
-
136
-    //--------------------------------------------------------------------
137
-
138
-    /**
139
-     * Returns a single meta item.
140
-     *
141
-     * @param $alias
142
-     *
143
-     * @return mixed
144
-     */
145
-    public function get($alias)
146
-    {
147
-        $alias = strtolower($alias);
148
-
149
-        return isset($this->meta[ $alias ]) ? $this->meta[$alias] : null;
150
-    }
151
-
152
-    //--------------------------------------------------------------------
153
-
154
-    /**
155
-     * Renders out all defined meta tags.
156
-     *
157
-     * @return mixed
158
-     */
159
-    public function renderTags()
160
-    {
161
-        if (! count($this->meta))
162
-        {
163
-            return null;
164
-        }
165
-
166
-        $output = '';
167
-
168
-        // Character Encoding
169
-        $output .= "\t<meta charset=\"{$this->charset}\" >";
170
-
171
-        // Everything else
172
-        foreach ($this->meta as $name => $content)
173
-        {
174
-            if (is_array($content))
175
-            {
176
-                $content = implode(',', $content);
177
-            }
178
-
179
-            if (empty($content))
180
-            {
181
-                continue;
182
-            }
183
-
184
-            // Http Equivalent meta tags.
185
-            if (in_array($name, $this->http_equiv_meta))
186
-            {
187
-                $output .= "\t<meta http-equiv=\"{$name}\" content=\"{$content}\">\n";
188
-            }
189
-            // Standard Meta Tag
190
-            else {
191
-                $output .= "\t<meta name=\"{$name}\" content=\"{$content}\">\n";
192
-            }
193
-        }
194
-
195
-        return $output;
196
-    }
197
-
198
-    //--------------------------------------------------------------------
199
-
200
-    /**
201
-     * Registers a new HTTP Equivalent meta tag so it can be
202
-     * rendered out properly.
203
-     *
204
-     * @param $name
205
-     *
206
-     * @return $this
207
-     */
208
-    public function registerHTTPEquivTag($name)
209
-    {
210
-        if (is_null($name))
211
-        {
212
-            return $this;
213
-        }
214
-
215
-        $this->http_equiv_meta[] = strtolower($name);
216
-
217
-        return $this;
218
-    }
219
-
220
-    //--------------------------------------------------------------------
221
-
222
-
223
-    /**
224
-     * Convenience implementation to set a value
225
-     * as if it was a property of the class.
226
-     *
227
-     * @param $alias
228
-     * @param null $value
229
-     */
230
-    public function __set($alias, $value=null)
231
-    {
232
-        $this->set($alias, $value);
233
-    }
234
-
235
-    //--------------------------------------------------------------------
236
-
237
-    /**
238
-     * Convenience method to access a value
239
-     * as if it was a property of the class.
240
-     *
241
-     * @param $alias
242
-     *
243
-     * @return mixed
244
-     */
245
-    public function __get($alias)
246
-    {
247
-        return $this->get($alias);
248
-    }
249
-
250
-    //--------------------------------------------------------------------
38
+	/**
39
+	 * Stores the meta values the user has set.
40
+	 *
41
+	 * @var array
42
+	 */
43
+	protected $meta = [];
44
+
45
+	/**
46
+	 * Stores the standard meta-value names
47
+	 * Mostly here for reference, I guess.
48
+	 *
49
+	 * @var array
50
+	 */
51
+	protected $std_meta = [
52
+		'application-name',
53
+		'author',
54
+		'copyright',
55
+		'description',
56
+		'generator',
57
+		'keywords',
58
+		'robots',
59
+		'googlebot'
60
+	];
61
+
62
+	/**
63
+	 * Stores the HTTP-Equiv meta tags
64
+	 * since they need to be rendered differently.
65
+	 *
66
+	 * @var array
67
+	 */
68
+	protected $http_equiv_meta = [
69
+		'cache-control',
70
+		'content-language',
71
+		'content-type',
72
+		'default-style',
73
+		'expires',
74
+		'pragma',
75
+		'refresh',
76
+		'set-cookie'
77
+	];
78
+
79
+	/**
80
+	 * Stores the document's character encoding.
81
+	 *
82
+	 * @var string
83
+	 */
84
+	public $charset = 'utf-8';
85
+
86
+	//--------------------------------------------------------------------
87
+
88
+	public function __construct($ci)
89
+	{
90
+		$ci->config->load('html_meta', true);
91
+
92
+		$config = $ci->config->item('html_meta');
93
+
94
+		$this->meta = $config['meta'];
95
+
96
+		$this->http_equiv_meta = array_merge($this->http_equiv_meta, $config['http-equiv']);
97
+	}
98
+
99
+	//--------------------------------------------------------------------
100
+
101
+
102
+	/**
103
+	 * Sets a single meta item.
104
+	 * $alias can also be an array of key/value pairs to set.
105
+	 *
106
+	 * @param string|array $alias
107
+	 * @param null $value
108
+	 *
109
+	 * @return mixed
110
+	 */
111
+	public function set($alias, $value=null, $escape=true)
112
+	{
113
+		if (is_array($alias))
114
+		{
115
+			foreach ($alias as $key => $val)
116
+			{
117
+				$this->set($key, $val);
118
+			}
119
+
120
+			return $this;
121
+		}
122
+
123
+		// Charset
124
+		if (strtolower($alias) == 'charset')
125
+		{
126
+			$this->charset = $value;
127
+
128
+			return $this;
129
+		}
130
+
131
+		$this->meta[ strtolower($alias) ] = $escape ? esc($value, 'htmlAttr') : $value;
132
+
133
+		return $this;
134
+	}
135
+
136
+	//--------------------------------------------------------------------
137
+
138
+	/**
139
+	 * Returns a single meta item.
140
+	 *
141
+	 * @param $alias
142
+	 *
143
+	 * @return mixed
144
+	 */
145
+	public function get($alias)
146
+	{
147
+		$alias = strtolower($alias);
148
+
149
+		return isset($this->meta[ $alias ]) ? $this->meta[$alias] : null;
150
+	}
151
+
152
+	//--------------------------------------------------------------------
153
+
154
+	/**
155
+	 * Renders out all defined meta tags.
156
+	 *
157
+	 * @return mixed
158
+	 */
159
+	public function renderTags()
160
+	{
161
+		if (! count($this->meta))
162
+		{
163
+			return null;
164
+		}
165
+
166
+		$output = '';
167
+
168
+		// Character Encoding
169
+		$output .= "\t<meta charset=\"{$this->charset}\" >";
170
+
171
+		// Everything else
172
+		foreach ($this->meta as $name => $content)
173
+		{
174
+			if (is_array($content))
175
+			{
176
+				$content = implode(',', $content);
177
+			}
178
+
179
+			if (empty($content))
180
+			{
181
+				continue;
182
+			}
183
+
184
+			// Http Equivalent meta tags.
185
+			if (in_array($name, $this->http_equiv_meta))
186
+			{
187
+				$output .= "\t<meta http-equiv=\"{$name}\" content=\"{$content}\">\n";
188
+			}
189
+			// Standard Meta Tag
190
+			else {
191
+				$output .= "\t<meta name=\"{$name}\" content=\"{$content}\">\n";
192
+			}
193
+		}
194
+
195
+		return $output;
196
+	}
197
+
198
+	//--------------------------------------------------------------------
199
+
200
+	/**
201
+	 * Registers a new HTTP Equivalent meta tag so it can be
202
+	 * rendered out properly.
203
+	 *
204
+	 * @param $name
205
+	 *
206
+	 * @return $this
207
+	 */
208
+	public function registerHTTPEquivTag($name)
209
+	{
210
+		if (is_null($name))
211
+		{
212
+			return $this;
213
+		}
214
+
215
+		$this->http_equiv_meta[] = strtolower($name);
216
+
217
+		return $this;
218
+	}
219
+
220
+	//--------------------------------------------------------------------
221
+
222
+
223
+	/**
224
+	 * Convenience implementation to set a value
225
+	 * as if it was a property of the class.
226
+	 *
227
+	 * @param $alias
228
+	 * @param null $value
229
+	 */
230
+	public function __set($alias, $value=null)
231
+	{
232
+		$this->set($alias, $value);
233
+	}
234
+
235
+	//--------------------------------------------------------------------
236
+
237
+	/**
238
+	 * Convenience method to access a value
239
+	 * as if it was a property of the class.
240
+	 *
241
+	 * @param $alias
242
+	 *
243
+	 * @return mixed
244
+	 */
245
+	public function __get($alias)
246
+	{
247
+		return $this->get($alias);
248
+	}
249
+
250
+	//--------------------------------------------------------------------
251 251
 
252 252
 
253 253
 
Please login to merge, or discard this patch.
myth/Themers/MetaInterface.php 1 patch
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -33,50 +33,50 @@
 block discarded – undo
33 33
 
34 34
 interface MetaInterface {
35 35
 
36
-    /**
37
-     * Sets a single meta item.
38
-     *
39
-     * @param $alias
40
-     * @param null $value
41
-     *
42
-     * @return mixed
43
-     */
44
-    public function set($alias, $value=null);
36
+	/**
37
+	 * Sets a single meta item.
38
+	 *
39
+	 * @param $alias
40
+	 * @param null $value
41
+	 *
42
+	 * @return mixed
43
+	 */
44
+	public function set($alias, $value=null);
45 45
 
46
-    //--------------------------------------------------------------------
46
+	//--------------------------------------------------------------------
47 47
 
48
-    /**
49
-     * Returns a single meta item.
50
-     *
51
-     * @param $alias
52
-     *
53
-     * @return mixed
54
-     */
55
-    public function get($alias);
48
+	/**
49
+	 * Returns a single meta item.
50
+	 *
51
+	 * @param $alias
52
+	 *
53
+	 * @return mixed
54
+	 */
55
+	public function get($alias);
56 56
 
57
-    //--------------------------------------------------------------------
57
+	//--------------------------------------------------------------------
58 58
 
59
-    /**
60
-     * Renders out all defined meta tags.
61
-     *
62
-     * @param array $show_tags
63
-     *
64
-     * @return mixed
65
-     */
66
-    public function renderTags();
59
+	/**
60
+	 * Renders out all defined meta tags.
61
+	 *
62
+	 * @param array $show_tags
63
+	 *
64
+	 * @return mixed
65
+	 */
66
+	public function renderTags();
67 67
 
68
-    //--------------------------------------------------------------------
68
+	//--------------------------------------------------------------------
69 69
 
70
-    /**
71
-     * Registers a new HTTP Equivalent meta tag so it can be
72
-     * rendered out properly.
73
-     *
74
-     * @param $name
75
-     *
76
-     * @return $this
77
-     */
78
-    public function registerHTTPEquivTag($name);
70
+	/**
71
+	 * Registers a new HTTP Equivalent meta tag so it can be
72
+	 * rendered out properly.
73
+	 *
74
+	 * @param $name
75
+	 *
76
+	 * @return $this
77
+	 */
78
+	public function registerHTTPEquivTag($name);
79 79
 
80
-    //--------------------------------------------------------------------
80
+	//--------------------------------------------------------------------
81 81
 
82 82
 }
83 83
\ No newline at end of file
Please login to merge, or discard this patch.
myth/Themers/ThemerInterface.php 1 patch
Indentation   +214 added lines, -214 removed lines patch added patch discarded remove patch
@@ -38,219 +38,219 @@
 block discarded – undo
38 38
  */
39 39
 interface ThemerInterface
40 40
 {
41
-    /**
42
-     * The main entryway into rendering a view. This is called from the
43
-     * controller and is generally the last method called.
44
-     *
45
-     * @param string $layout If provided, will override the default layout.
46
-     */
47
-    public function render($layout = null);
48
-
49
-    //--------------------------------------------------------------------
50
-
51
-    /**
52
-     * Used within the template layout file to render the current content.
53
-     * This content is typically used to display the current view.
54
-     */
55
-    public function content();
56
-
57
-    //--------------------------------------------------------------------
58
-
59
-    /**
60
-     * Sets the active theme to use. This theme should be
61
-     * relative to one of the 'theme_paths' folders.
62
-     *
63
-     * @param $theme
64
-     */
65
-    public function setTheme($theme);
66
-
67
-    //--------------------------------------------------------------------
68
-
69
-    /**
70
-     * Returns the current theme.
71
-     *
72
-     * @return mixed|string
73
-     */
74
-    public function theme();
75
-
76
-    //--------------------------------------------------------------------
77
-
78
-    /**
79
-     * Sets the default theme to use.
80
-     *
81
-     * @param $theme
82
-     * @return mixed
83
-     */
84
-    public function setDefaultTheme($theme);
85
-
86
-    //--------------------------------------------------------------------
87
-
88
-    /**
89
-     * Sets the current view file to render.
90
-     *
91
-     * @param $file
92
-     * @return mixed
93
-     */
94
-    public function setView($file);
95
-
96
-    //--------------------------------------------------------------------
97
-
98
-    /**
99
-     * Returns the current view.
100
-     *
101
-     * @return mixed|string
102
-     */
103
-    public function view();
104
-
105
-    //--------------------------------------------------------------------
106
-
107
-    /**
108
-     * Sets the current layout to be used. MUST be the name of one of
109
-     * the layout files within the current theme. Case-sensitive.
110
-     *
111
-     * @param $file
112
-     * @return mixed
113
-     */
114
-    public function setLayout($file);
115
-
116
-    //--------------------------------------------------------------------
117
-
118
-    /**
119
-     * Returns the active layout.
120
-     *
121
-     * @return mixed
122
-     */
123
-    public function layout();
124
-
125
-    //--------------------------------------------------------------------
126
-
127
-    /**
128
-     * Stores one or more pieces of data to be passed to the views when
129
-     * they are rendered out.
130
-     *
131
-     * If both $key and $value are ! empty, then it will treat it as a
132
-     * key/value pair. If $key is an array of key/value pairs, then $value
133
-     * is ignored and each element of the array are made available to the
134
-     * view as if it was a single $key/$value pair.
135
-     *
136
-     * @param string|array $key
137
-     * @param mixed        $value
138
-     */
139
-    public function set($key, $value = null);
140
-
141
-    //--------------------------------------------------------------------
142
-
143
-    /**
144
-     * Returns a value that has been previously set().
145
-     *
146
-     * @param $key
147
-     * @return mixed
148
-     */
149
-    public function get($key);
150
-
151
-    //--------------------------------------------------------------------
152
-
153
-    /**
154
-     * Determines whether or not the view should be parsed with the
155
-     * CodeIgniter's parser.
156
-     *
157
-     * @param bool $parse
158
-     * @return mixed
159
-     */
160
-    public function parseViews($parse = false);
161
-
162
-    //--------------------------------------------------------------------
163
-
164
-    /**
165
-     * Theme paths allow you to have multiple locations for themes to be
166
-     * stored. This might be used for separating themes for different sub-
167
-     * applications, or a core theme and user-submitted themes.
168
-     *
169
-     * @param $alias The name the theme can be referenced by
170
-     * @param $path  A new path where themes can be found.
171
-     *
172
-     * @return mixed
173
-     */
174
-    public function addThemePath($alias, $path);
175
-
176
-    //--------------------------------------------------------------------
177
-
178
-    /**
179
-     * Removes a single theme path.
180
-     *
181
-     * @param $alias
182
-     */
183
-    public function removeThemePath($alias);
184
-    //--------------------------------------------------------------------
185
-
186
-    /**
187
-     * Loads a view file. Useful to control caching. Intended for use
188
-     * from within view files.
189
-     *
190
-     * You can specify that a view should belong to a theme by prefixing
191
-     * the name of the theme and a colon to the view name. For example,
192
-     * "admin:header" would try to display the "header.php" file within
193
-     * the "admin" theme.
194
-     *
195
-     * @param string    $view
196
-     * @param array     $data
197
-     * @param int       $cache_time  The number of MINUTES to cache the output
198
-     * @return mixed
199
-     */
200
-    public function display($view, $data = array(), $cache_time = 0);
201
-
202
-    //--------------------------------------------------------------------
203
-
204
-    /**
205
-     * Sets the variant used when creating view names. These variants can
206
-     * be anything, but by default are used to render specific templates
207
-     * for desktop, tablet, and phone. The name of the variant is added
208
-     * to the view name, joined by a "+" symbol.
209
-     *
210
-     * Example:
211
-     *      $this->setVariant('phone');
212
-     *      $this->display('header');
213
-     *
214
-     *      Tries to display "views/header+phone.php"
215
-     *
216
-     * @param $variant
217
-     * @return mixed
218
-     */
219
-    public function setVariant($variant);
220
-
221
-    //--------------------------------------------------------------------
222
-
223
-    /**
224
-     * Adds a new variant to the system.
225
-     *
226
-     * @param $name
227
-     * @param $postfix
228
-     * @return mixed
229
-     */
230
-    public function addVariant($name, $postfix);
231
-
232
-    //--------------------------------------------------------------------
233
-
234
-    /**
235
-     * Removes a variant from the system.
236
-     *
237
-     * @param $name
238
-     * @param $postfix
239
-     * @return mixed
240
-     */
241
-    public function removeVariant($name);
242
-
243
-    //--------------------------------------------------------------------
244
-
245
-    /**
246
-     * Runs a callback method and returns the contents to the view.
247
-     *
248
-     * @param $command
249
-     * @param int $cache_minutes
250
-     * @return mixed
251
-     */
252
-    public function call($command, $cache_minutes=0);
253
-
254
-    //--------------------------------------------------------------------
41
+	/**
42
+	 * The main entryway into rendering a view. This is called from the
43
+	 * controller and is generally the last method called.
44
+	 *
45
+	 * @param string $layout If provided, will override the default layout.
46
+	 */
47
+	public function render($layout = null);
48
+
49
+	//--------------------------------------------------------------------
50
+
51
+	/**
52
+	 * Used within the template layout file to render the current content.
53
+	 * This content is typically used to display the current view.
54
+	 */
55
+	public function content();
56
+
57
+	//--------------------------------------------------------------------
58
+
59
+	/**
60
+	 * Sets the active theme to use. This theme should be
61
+	 * relative to one of the 'theme_paths' folders.
62
+	 *
63
+	 * @param $theme
64
+	 */
65
+	public function setTheme($theme);
66
+
67
+	//--------------------------------------------------------------------
68
+
69
+	/**
70
+	 * Returns the current theme.
71
+	 *
72
+	 * @return mixed|string
73
+	 */
74
+	public function theme();
75
+
76
+	//--------------------------------------------------------------------
77
+
78
+	/**
79
+	 * Sets the default theme to use.
80
+	 *
81
+	 * @param $theme
82
+	 * @return mixed
83
+	 */
84
+	public function setDefaultTheme($theme);
85
+
86
+	//--------------------------------------------------------------------
87
+
88
+	/**
89
+	 * Sets the current view file to render.
90
+	 *
91
+	 * @param $file
92
+	 * @return mixed
93
+	 */
94
+	public function setView($file);
95
+
96
+	//--------------------------------------------------------------------
97
+
98
+	/**
99
+	 * Returns the current view.
100
+	 *
101
+	 * @return mixed|string
102
+	 */
103
+	public function view();
104
+
105
+	//--------------------------------------------------------------------
106
+
107
+	/**
108
+	 * Sets the current layout to be used. MUST be the name of one of
109
+	 * the layout files within the current theme. Case-sensitive.
110
+	 *
111
+	 * @param $file
112
+	 * @return mixed
113
+	 */
114
+	public function setLayout($file);
115
+
116
+	//--------------------------------------------------------------------
117
+
118
+	/**
119
+	 * Returns the active layout.
120
+	 *
121
+	 * @return mixed
122
+	 */
123
+	public function layout();
124
+
125
+	//--------------------------------------------------------------------
126
+
127
+	/**
128
+	 * Stores one or more pieces of data to be passed to the views when
129
+	 * they are rendered out.
130
+	 *
131
+	 * If both $key and $value are ! empty, then it will treat it as a
132
+	 * key/value pair. If $key is an array of key/value pairs, then $value
133
+	 * is ignored and each element of the array are made available to the
134
+	 * view as if it was a single $key/$value pair.
135
+	 *
136
+	 * @param string|array $key
137
+	 * @param mixed        $value
138
+	 */
139
+	public function set($key, $value = null);
140
+
141
+	//--------------------------------------------------------------------
142
+
143
+	/**
144
+	 * Returns a value that has been previously set().
145
+	 *
146
+	 * @param $key
147
+	 * @return mixed
148
+	 */
149
+	public function get($key);
150
+
151
+	//--------------------------------------------------------------------
152
+
153
+	/**
154
+	 * Determines whether or not the view should be parsed with the
155
+	 * CodeIgniter's parser.
156
+	 *
157
+	 * @param bool $parse
158
+	 * @return mixed
159
+	 */
160
+	public function parseViews($parse = false);
161
+
162
+	//--------------------------------------------------------------------
163
+
164
+	/**
165
+	 * Theme paths allow you to have multiple locations for themes to be
166
+	 * stored. This might be used for separating themes for different sub-
167
+	 * applications, or a core theme and user-submitted themes.
168
+	 *
169
+	 * @param $alias The name the theme can be referenced by
170
+	 * @param $path  A new path where themes can be found.
171
+	 *
172
+	 * @return mixed
173
+	 */
174
+	public function addThemePath($alias, $path);
175
+
176
+	//--------------------------------------------------------------------
177
+
178
+	/**
179
+	 * Removes a single theme path.
180
+	 *
181
+	 * @param $alias
182
+	 */
183
+	public function removeThemePath($alias);
184
+	//--------------------------------------------------------------------
185
+
186
+	/**
187
+	 * Loads a view file. Useful to control caching. Intended for use
188
+	 * from within view files.
189
+	 *
190
+	 * You can specify that a view should belong to a theme by prefixing
191
+	 * the name of the theme and a colon to the view name. For example,
192
+	 * "admin:header" would try to display the "header.php" file within
193
+	 * the "admin" theme.
194
+	 *
195
+	 * @param string    $view
196
+	 * @param array     $data
197
+	 * @param int       $cache_time  The number of MINUTES to cache the output
198
+	 * @return mixed
199
+	 */
200
+	public function display($view, $data = array(), $cache_time = 0);
201
+
202
+	//--------------------------------------------------------------------
203
+
204
+	/**
205
+	 * Sets the variant used when creating view names. These variants can
206
+	 * be anything, but by default are used to render specific templates
207
+	 * for desktop, tablet, and phone. The name of the variant is added
208
+	 * to the view name, joined by a "+" symbol.
209
+	 *
210
+	 * Example:
211
+	 *      $this->setVariant('phone');
212
+	 *      $this->display('header');
213
+	 *
214
+	 *      Tries to display "views/header+phone.php"
215
+	 *
216
+	 * @param $variant
217
+	 * @return mixed
218
+	 */
219
+	public function setVariant($variant);
220
+
221
+	//--------------------------------------------------------------------
222
+
223
+	/**
224
+	 * Adds a new variant to the system.
225
+	 *
226
+	 * @param $name
227
+	 * @param $postfix
228
+	 * @return mixed
229
+	 */
230
+	public function addVariant($name, $postfix);
231
+
232
+	//--------------------------------------------------------------------
233
+
234
+	/**
235
+	 * Removes a variant from the system.
236
+	 *
237
+	 * @param $name
238
+	 * @param $postfix
239
+	 * @return mixed
240
+	 */
241
+	public function removeVariant($name);
242
+
243
+	//--------------------------------------------------------------------
244
+
245
+	/**
246
+	 * Runs a callback method and returns the contents to the view.
247
+	 *
248
+	 * @param $command
249
+	 * @param int $cache_minutes
250
+	 * @return mixed
251
+	 */
252
+	public function call($command, $cache_minutes=0);
253
+
254
+	//--------------------------------------------------------------------
255 255
 
256 256
 }
Please login to merge, or discard this patch.
myth/Themers/ViewThemer.php 1 patch
Indentation   +522 added lines, -522 removed lines patch added patch discarded remove patch
@@ -35,70 +35,70 @@  discard block
 block discarded – undo
35 35
 class ViewThemer implements ThemerInterface
36 36
 {
37 37
 
38
-    protected $theme = '';
38
+	protected $theme = '';
39 39
 
40
-    protected $default_theme = null;
40
+	protected $default_theme = null;
41 41
 
42 42
 	protected $active_theme = null;
43 43
 
44
-    protected $layout = 'index';
44
+	protected $layout = 'index';
45 45
 
46
-    protected $view = '';
46
+	protected $view = '';
47 47
 
48
-    protected $vars = [];
48
+	protected $vars = [];
49 49
 
50
-    protected $folders = [];
50
+	protected $folders = [];
51 51
 
52
-    protected $variants = [];
52
+	protected $variants = [];
53 53
 
54
-    protected $current_variant = '';
54
+	protected $current_variant = '';
55 55
 
56 56
 	protected $parse_views = false;
57 57
 
58
-    protected $ci;
58
+	protected $ci;
59 59
 
60
-    //--------------------------------------------------------------------
60
+	//--------------------------------------------------------------------
61 61
 
62
-    public function __construct($ci)
63
-    {
64
-        $this->ci = $ci;
62
+	public function __construct($ci)
63
+	{
64
+		$this->ci = $ci;
65 65
 
66
-	    $this->parse_views = config_item('theme.parse_views');
67
-    }
66
+		$this->parse_views = config_item('theme.parse_views');
67
+	}
68 68
 
69
-    //--------------------------------------------------------------------
69
+	//--------------------------------------------------------------------
70 70
 
71
-    /**
72
-     * The main entryway into rendering a view. This is called from the
73
-     * controller and is generally the last method called.
74
-     *
75
-     * @param string $layout        If provided, will override the default layout.
76
-     * @param int    $cache_time    The number of seconds to cache the output for.
77
-     * @return mixed
78
-     */
79
-    public function render($layout = null)
80
-    {
81
-        // Make the template engine available within the views.
82
-        $this->vars['themer'] = $this;
71
+	/**
72
+	 * The main entryway into rendering a view. This is called from the
73
+	 * controller and is generally the last method called.
74
+	 *
75
+	 * @param string $layout        If provided, will override the default layout.
76
+	 * @param int    $cache_time    The number of seconds to cache the output for.
77
+	 * @return mixed
78
+	 */
79
+	public function render($layout = null)
80
+	{
81
+		// Make the template engine available within the views.
82
+		$this->vars['themer'] = $this;
83 83
 
84
-        // Render our current view content
85
-        $this->vars['view_content'] = $this->content();
84
+		// Render our current view content
85
+		$this->vars['view_content'] = $this->content();
86 86
 
87
-        $theme = empty($this->theme) ? $this->default_theme : $this->theme;
87
+		$theme = empty($this->theme) ? $this->default_theme : $this->theme;
88 88
 
89
-        if (! isset($this->folders[$theme])) {
90
-            throw new \LogicException( sprintf( lang('theme.bad_folder'), $theme ) );
91
-        }
89
+		if (! isset($this->folders[$theme])) {
90
+			throw new \LogicException( sprintf( lang('theme.bad_folder'), $theme ) );
91
+		}
92 92
 
93
-	    $this->active_theme = $theme;
93
+		$this->active_theme = $theme;
94 94
 
95
-        // Make the path available within views.
96
-        $this->vars['theme_path'] = $this->folders[$theme];
95
+		// Make the path available within views.
96
+		$this->vars['theme_path'] = $this->folders[$theme];
97 97
 
98
-        return $this->display($this->folders[$theme] . '/' . $this->layout);
99
-    }
98
+		return $this->display($this->folders[$theme] . '/' . $this->layout);
99
+	}
100 100
 
101
-    //--------------------------------------------------------------------
101
+	//--------------------------------------------------------------------
102 102
 
103 103
 	/**
104 104
 	 * Used within the template layout file to render the current content.
@@ -108,490 +108,490 @@  discard block
 block discarded – undo
108 108
 	 *
109 109
 	 * @return mixed
110 110
 	 */
111
-    public function content()
112
-    {
113
-        // Calc our view name based on current method/controller
114
-        $dir = $this->ci->router->fetch_directory();
111
+	public function content()
112
+	{
113
+		// Calc our view name based on current method/controller
114
+		$dir = $this->ci->router->fetch_directory();
115 115
 
116
-        foreach (Modules::$locations as $key => $offset) {
116
+		foreach (Modules::$locations as $key => $offset) {
117 117
 
118
-            if (stripos($dir, 'module') !== false) {
118
+			if (stripos($dir, 'module') !== false) {
119 119
 //                $dir = str_replace($offset, '', $dir);
120
-                $dir = str_replace('controllers/', '', $dir);
121
-            }
122
-        }
123
-
124
-        $module = $this->ci->router->fetch_module();
125
-
126
-        if (! empty($module) && substr($dir, -strlen($module .'/')) == $module . '/') {
127
-            $dir = '';
128
-        }
129
-
130
-        $view = ! empty($this->view) ? $this->view :
131
-            $dir . $this->ci->router->fetch_class() . '/' . $this->ci->router->fetch_method();
132
-
133
-        return $this->display($view);
134
-    }
135
-
136
-    //--------------------------------------------------------------------
137
-
138
-    /**
139
-     * Loads a view file. Useful to control caching. Intended for use
140
-     * from within view files.
141
-     *
142
-     * You can specify that a view should belong to a theme by prefixing
143
-     * the name of the theme and a colon to the view name. For example,
144
-     * "admin:header" would try to display the "header.php" file within
145
-     * the "admin" theme.
146
-     *
147
-     * If a variant has been specified, it will be added to the end
148
-     * of the view name before looking for the file.
149
-     *
150
-     * @param string $view
151
-     * @param array  $data
152
-     * @param int    $cache_time Number of minutes to cache the page for
153
-     * @param string $cache_name A custom name for the cached file.
154
-     * @return mixed
155
-     */
156
-    public function display($view, $data = array(), $cache_time = 0, $cache_name=null)
157
-    {
158
-	    if (empty($cache_name))
159
-	    {
160
-		    $cache_name = 'theme_view_' . $view . '_' . $this->ci->router->fetch_class() . '_' . $this->ci->router->fetch_method();
161
-		    $cache_name = str_replace( '/', '_', $cache_name );
162
-	    }
163
-
164
-	    if ($cache_time == 0 || ! $output = $this->ci->cache->get($cache_name))
165
-	    {
166
-		    $theme        = NULL;
167
-		    $variant_view = NULL;
168
-
169
-		    // Pull out the theme from the view, if given.
170
-		    if ( strpos( $view, ':' ) !== FALSE )
171
-		    {
172
-			    list( $theme, $view ) = explode( ':', $view );
173
-
174
-			    $theme = str_replace('{theme}', $this->active_theme, $theme);
175
-		    }
176
-
177
-		    if ( ! empty( $theme ) && isset( $this->folders[ $theme ] ) )
178
-		    {
179
-			    $view = rtrim( $this->folders[ $theme ], '/' ) . '/' . $view;
180
-		    }
181
-
182
-		    if (! is_array($data))
183
-		    {
184
-			    $data = [];
185
-		    }
186
-
187
-		    $data = array_merge( $this->vars, $data );
188
-
189
-		    // if using a variant, add it to the view name.
190
-		    if ( ! empty( $this->current_variant ) )
191
-		    {
192
-			    $variant_view = $view . $this->variants[ $this->current_variant ];
193
-
194
-			    $output = $this->loadView($variant_view, $data);
195
-		    }
196
-
197
-		    // If that didn't find anything, then try it without a variant
198
-		    if ( empty( $output ) )
199
-		    {
200
-			    $output = $this->loadView($view, $data);
201
-		    }
202
-
203
-		    // Cache it
204
-		    if ((int)$cache_time > 0)
205
-		    {
206
-			    $this->ci->cache->save($cache_name, $output, (int)$cache_time * 60);
207
-		    }
208
-	    }
209
-
210
-	    // Parse views?
211
-	    if ($this->parse_views)
212
-	    {
213
-		    $this->ci->load->library('parser');
214
-
215
-		    // Any class objects will cause failure
216
-		    // so get rid of those bad boys....
217
-		    unset($data['uikit'], $data['themer']);
218
-
219
-		    $output = $this->ci->parser->parse_string($output, $data, true);
220
-	    }
221
-
222
-        return $output;
223
-    }
224
-
225
-    //--------------------------------------------------------------------
226
-
227
-    /**
228
-     * Runs a callback method and returns the contents to the view.
229
-     *
230
-     * @param $command
231
-     * @param int $cache_time
232
-     * @param string $cache_name    // Number of MINUTES to cache output
233
-     * @return mixed|void
234
-     */
235
-    public function call($command, $cache_time=0, $cache_name=null)
236
-    {
237
-	    if (empty($cache_name))
238
-	    {
239
-		    $cache_name = 'theme_call_' . md5( $command );
240
-	    }
241
-
242
-        if (! $output = $this->ci->cache->get($cache_name)) {
243
-            $parts = explode(' ', $command);
244
-
245
-            list($class, $method) = explode(':', array_shift($parts));
246
-
247
-            // Prepare our parameter list to send to the callback
248
-            // by splitting $parts on equal signs.
249
-            $params = array();
250
-
251
-            foreach ($parts as $part) {
252
-                $p = explode('=', $part);
253
-
254
-                if (empty($p[0]) || empty($p[1]))
255
-                {
256
-                    continue;
257
-                }
258
-
259
-                $params[ $p[0] ] = $p[1];
260
-            }
261
-
262
-            // Let PHP try to autoload it through any available autoloaders
263
-            // (including Composer and user's custom autoloaders). If we
264
-            // don't find it, then assume it's a CI library that we can reach.
265
-            if (class_exists($class)) {
266
-                $class = new $class();
267
-            } else {
268
-                $this->ci->load->library($class);
269
-                $class =& $this->ci->$class;
270
-            }
271
-
272
-            if (! method_exists($class, $method)) {
273
-                throw new \RuntimeException( sprintf( lang('themer.bad_callback'), $class, $method ) );
274
-            }
275
-
276
-            // Call the class with our parameters
277
-            $output = $class->{$method}($params);
278
-
279
-            // Cache it
280
-            if ((int)$cache_time > 0)
281
-            {
282
-                $this->ci->cache->save($cache_name, $output, (int)$cache_time * 60);
283
-            }
284
-        }
285
-
286
-        return $output;
287
-    }
288
-
289
-    //--------------------------------------------------------------------
290
-
291
-    /**
292
-     * Sets the active theme to use. This theme should be
293
-     * relative to one of the 'theme_paths' folders.
294
-     *
295
-     * @param $theme
296
-     */
297
-    public function setTheme($theme)
298
-    {
299
-        $this->theme = $theme;
300
-    }
301
-
302
-    //--------------------------------------------------------------------
303
-
304
-    /**
305
-     * Returns the current theme.
306
-     *
307
-     * @return mixed|string
308
-     */
309
-    public function theme()
310
-    {
311
-        return $this->theme;
312
-    }
313
-
314
-    //--------------------------------------------------------------------
315
-
316
-    /**
317
-     * Sets the default theme to use if another isn't specified.
318
-     *
319
-     * @param $theme
320
-     * @return mixed|void
321
-     */
322
-    public function setDefaultTheme($theme)
323
-    {
324
-        $this->default_theme = $theme;
325
-    }
326
-
327
-    //--------------------------------------------------------------------
328
-
329
-
330
-    /**
331
-     * Sets the current view file to render.
332
-     *
333
-     * @param $file
334
-     * @return mixed
335
-     */
336
-    public function setView($file)
337
-    {
338
-        $this->view = $file;
339
-    }
340
-
341
-    //--------------------------------------------------------------------
342
-
343
-    /**
344
-     * Returns the current view.
345
-     *
346
-     * @return mixed|string
347
-     */
348
-    public function view()
349
-    {
350
-        return $this->view;
351
-    }
352
-
353
-    //--------------------------------------------------------------------
354
-
355
-    /**
356
-     * Sets the current layout to be used. MUST be the name of one of
357
-     * the layout files within the current theme. Case-sensitive.
358
-     *
359
-     * @param $file
360
-     * @return mixed
361
-     */
362
-    public function setLayout($file)
363
-    {
364
-        if (empty($file)) return;
365
-
366
-        $this->layout = $file;
367
-    }
368
-
369
-    //--------------------------------------------------------------------
370
-
371
-    /**
372
-     * Returns the current layout.
373
-     *
374
-     * @return mixed|string
375
-     */
376
-    public function layout()
377
-    {
378
-        return $this->layout;
379
-    }
380
-
381
-    //--------------------------------------------------------------------
382
-
383
-    /**
384
-     * Stores one or more pieces of data to be passed to the views when
385
-     * they are rendered out.
386
-     *
387
-     * If both $key and $value are ! empty, then it will treat it as a
388
-     * key/value pair. If $key is an array of key/value pairs, then $value
389
-     * is ignored and each element of the array are made available to the
390
-     * view as if it was a single $key/$value pair.
391
-     *
392
-     * @param string|array $key
393
-     * @param mixed $value
394
-     * @return $this
395
-     */
396
-    public function set($key, $value = null)
397
-    {
398
-        if (is_array($key)) {
399
-            $this->vars = array_merge($this->vars, $key);
400
-            return;
401
-        }
402
-
403
-        $this->vars[$key] = $value;
404
-
405
-        return $this;
406
-    }
407
-
408
-    //--------------------------------------------------------------------
409
-
410
-    /**
411
-     * Returns a value that has been previously set().
412
-     *
413
-     * @param $key
414
-     * @return mixed
415
-     */
416
-    public function get($key)
417
-    {
418
-        return isset($this->vars[$key]) ? $this->vars[$key] : null;
419
-    }
420
-
421
-    //--------------------------------------------------------------------
422
-
423
-    /**
424
-     * Determines whether or not the view should be parsed with the
425
-     * CodeIgniter's parser.
426
-     *
427
-     * @param bool $parse
428
-     * @return mixed
429
-     */
430
-    public function parseViews($parse = false)
431
-    {
432
-	    $this->parse_views = $parse;
433
-
434
-        return $this;
435
-    }
436
-
437
-    //--------------------------------------------------------------------
438
-
439
-    /**
440
-     * Theme paths allow you to have multiple locations for themes to be
441
-     * stored. This might be used for separating themes for different sub-
442
-     * applications, or a core theme and user-submitted themes.
443
-     *
444
-     * @param $alias The name the theme can be referenced by
445
-     * @param $path  A new path where themes can be found.
446
-     *
447
-     * @return mixed
448
-     */
449
-    public function addThemePath($alias, $path)
450
-    {
451
-        $this->folders[$alias] = $path;
452
-
453
-        return $this;
454
-    }
455
-
456
-    //--------------------------------------------------------------------
457
-
458
-    /**
459
-     * Removes a single theme path.
460
-     *
461
-     * @param $alias
462
-     * @return $this
463
-     */
464
-    public function removeThemePath($alias)
465
-    {
466
-        unset($this->folders[$alias]);
467
-
468
-        return $this;
469
-    }
470
-
471
-    //--------------------------------------------------------------------
472
-
473
-    /**
474
-     * Returns the path to the active/default theme's folder.
475
-     *
476
-     * @return string|null
477
-     */
478
-    public function getThemePath()
479
-    {
480
-        $theme = empty($this->theme) ? $this->default_theme : $this->theme;
481
-
482
-        if (! isset($this->folders[ $theme ]))
483
-        {
484
-            return null;
485
-        }
486
-
487
-        return $this->folders[$theme];
488
-    }
489
-
490
-    //--------------------------------------------------------------------
491
-
492
-
493
-
494
-    //--------------------------------------------------------------------
495
-    // Variants
496
-    //--------------------------------------------------------------------
497
-
498
-    /**
499
-     * Sets the variant used when creating view names. These variants can
500
-     * be anything, but by default are used to render specific templates
501
-     * for desktop, tablet, and phone. The name of the variant is added
502
-     * to the view name, joined by a "+" symbol.
503
-     *
504
-     * Example:
505
-     *      $this->setVariant('phone');
506
-     *      $this->display('header');
507
-     *
508
-     *      Tries to display "views/header+phone.php"
509
-     *
510
-     * @param $variant
511
-     * @return $this
512
-     */
513
-    public function setVariant($variant)
514
-    {
515
-        if (isset($this->variants[$variant])) {
516
-            $this->current_variant = $variant;
517
-        }
518
-
519
-        return $this;
520
-    }
521
-    //--------------------------------------------------------------------
522
-
523
-    /**
524
-     * Adds a new variant to the system.
525
-     *
526
-     * @param $name
527
-     * @param $postfix
528
-     * @return $this|mixed
529
-     */
530
-    public function addVariant($name, $postfix)
531
-    {
532
-        $this->variants[$name] = $postfix;
533
-
534
-        return $this;
535
-    }
536
-
537
-    //--------------------------------------------------------------------
538
-
539
-    /**
540
-     * Removes a variant from the system.
541
-     *
542
-     * @param $name
543
-     * @return $this|mixed
544
-     */
545
-    public function removeVariant($name)
546
-    {
547
-        if (isset($this->variants[$name])) {
548
-            unset($this->variants[$name]);
549
-        }
550
-
551
-        return $this;
552
-    }
553
-
554
-    //--------------------------------------------------------------------
555
-    // Private Methods
556
-    //--------------------------------------------------------------------
557
-
558
-    /**
559
-     * Handles the actual loading of a view file, and checks for any
560
-     * overrides in themes, etc.
561
-     *
562
-     * @param $view
563
-     * @param $data
564
-     *
565
-     * @return string
566
-     */
567
-    private function loadView($view, $data)
568
-    {
569
-        // First - does it exist in the current theme?
570
-        $theme = ! empty($this->active_theme) ? $this->active_theme : $this->default_theme;
571
-        $theme = ! empty($this->folders[$theme]) ? $this->folders[$theme] : $theme;
572
-        $theme = rtrim($theme, '/ ') .'/';
573
-
574
-        if (file_exists($theme ."{$view}.php"))
575
-        {
576
-            $output = $this->ci->load->view_path( $theme . $view, $data, TRUE );
577
-        }
578
-
579
-        // Next, if it's a real file with path, then load it
580
-        elseif ( realpath( $view . '.php' ) )
581
-        {
582
-            $output = $this->ci->load->view_path( $view, $data, TRUE );
583
-        }
584
-
585
-        // Otherwise, treat it as a standard view, which means
586
-        // application/views will override any modules. (See HMVC/Loader)
587
-        else
588
-        {
589
-            $output = $this->ci->load->view( $view, $data, TRUE );
590
-        }
591
-
592
-        return $output;
593
-    }
594
-
595
-    //--------------------------------------------------------------------
120
+				$dir = str_replace('controllers/', '', $dir);
121
+			}
122
+		}
123
+
124
+		$module = $this->ci->router->fetch_module();
125
+
126
+		if (! empty($module) && substr($dir, -strlen($module .'/')) == $module . '/') {
127
+			$dir = '';
128
+		}
129
+
130
+		$view = ! empty($this->view) ? $this->view :
131
+			$dir . $this->ci->router->fetch_class() . '/' . $this->ci->router->fetch_method();
132
+
133
+		return $this->display($view);
134
+	}
135
+
136
+	//--------------------------------------------------------------------
137
+
138
+	/**
139
+	 * Loads a view file. Useful to control caching. Intended for use
140
+	 * from within view files.
141
+	 *
142
+	 * You can specify that a view should belong to a theme by prefixing
143
+	 * the name of the theme and a colon to the view name. For example,
144
+	 * "admin:header" would try to display the "header.php" file within
145
+	 * the "admin" theme.
146
+	 *
147
+	 * If a variant has been specified, it will be added to the end
148
+	 * of the view name before looking for the file.
149
+	 *
150
+	 * @param string $view
151
+	 * @param array  $data
152
+	 * @param int    $cache_time Number of minutes to cache the page for
153
+	 * @param string $cache_name A custom name for the cached file.
154
+	 * @return mixed
155
+	 */
156
+	public function display($view, $data = array(), $cache_time = 0, $cache_name=null)
157
+	{
158
+		if (empty($cache_name))
159
+		{
160
+			$cache_name = 'theme_view_' . $view . '_' . $this->ci->router->fetch_class() . '_' . $this->ci->router->fetch_method();
161
+			$cache_name = str_replace( '/', '_', $cache_name );
162
+		}
163
+
164
+		if ($cache_time == 0 || ! $output = $this->ci->cache->get($cache_name))
165
+		{
166
+			$theme        = NULL;
167
+			$variant_view = NULL;
168
+
169
+			// Pull out the theme from the view, if given.
170
+			if ( strpos( $view, ':' ) !== FALSE )
171
+			{
172
+				list( $theme, $view ) = explode( ':', $view );
173
+
174
+				$theme = str_replace('{theme}', $this->active_theme, $theme);
175
+			}
176
+
177
+			if ( ! empty( $theme ) && isset( $this->folders[ $theme ] ) )
178
+			{
179
+				$view = rtrim( $this->folders[ $theme ], '/' ) . '/' . $view;
180
+			}
181
+
182
+			if (! is_array($data))
183
+			{
184
+				$data = [];
185
+			}
186
+
187
+			$data = array_merge( $this->vars, $data );
188
+
189
+			// if using a variant, add it to the view name.
190
+			if ( ! empty( $this->current_variant ) )
191
+			{
192
+				$variant_view = $view . $this->variants[ $this->current_variant ];
193
+
194
+				$output = $this->loadView($variant_view, $data);
195
+			}
196
+
197
+			// If that didn't find anything, then try it without a variant
198
+			if ( empty( $output ) )
199
+			{
200
+				$output = $this->loadView($view, $data);
201
+			}
202
+
203
+			// Cache it
204
+			if ((int)$cache_time > 0)
205
+			{
206
+				$this->ci->cache->save($cache_name, $output, (int)$cache_time * 60);
207
+			}
208
+		}
209
+
210
+		// Parse views?
211
+		if ($this->parse_views)
212
+		{
213
+			$this->ci->load->library('parser');
214
+
215
+			// Any class objects will cause failure
216
+			// so get rid of those bad boys....
217
+			unset($data['uikit'], $data['themer']);
218
+
219
+			$output = $this->ci->parser->parse_string($output, $data, true);
220
+		}
221
+
222
+		return $output;
223
+	}
224
+
225
+	//--------------------------------------------------------------------
226
+
227
+	/**
228
+	 * Runs a callback method and returns the contents to the view.
229
+	 *
230
+	 * @param $command
231
+	 * @param int $cache_time
232
+	 * @param string $cache_name    // Number of MINUTES to cache output
233
+	 * @return mixed|void
234
+	 */
235
+	public function call($command, $cache_time=0, $cache_name=null)
236
+	{
237
+		if (empty($cache_name))
238
+		{
239
+			$cache_name = 'theme_call_' . md5( $command );
240
+		}
241
+
242
+		if (! $output = $this->ci->cache->get($cache_name)) {
243
+			$parts = explode(' ', $command);
244
+
245
+			list($class, $method) = explode(':', array_shift($parts));
246
+
247
+			// Prepare our parameter list to send to the callback
248
+			// by splitting $parts on equal signs.
249
+			$params = array();
250
+
251
+			foreach ($parts as $part) {
252
+				$p = explode('=', $part);
253
+
254
+				if (empty($p[0]) || empty($p[1]))
255
+				{
256
+					continue;
257
+				}
258
+
259
+				$params[ $p[0] ] = $p[1];
260
+			}
261
+
262
+			// Let PHP try to autoload it through any available autoloaders
263
+			// (including Composer and user's custom autoloaders). If we
264
+			// don't find it, then assume it's a CI library that we can reach.
265
+			if (class_exists($class)) {
266
+				$class = new $class();
267
+			} else {
268
+				$this->ci->load->library($class);
269
+				$class =& $this->ci->$class;
270
+			}
271
+
272
+			if (! method_exists($class, $method)) {
273
+				throw new \RuntimeException( sprintf( lang('themer.bad_callback'), $class, $method ) );
274
+			}
275
+
276
+			// Call the class with our parameters
277
+			$output = $class->{$method}($params);
278
+
279
+			// Cache it
280
+			if ((int)$cache_time > 0)
281
+			{
282
+				$this->ci->cache->save($cache_name, $output, (int)$cache_time * 60);
283
+			}
284
+		}
285
+
286
+		return $output;
287
+	}
288
+
289
+	//--------------------------------------------------------------------
290
+
291
+	/**
292
+	 * Sets the active theme to use. This theme should be
293
+	 * relative to one of the 'theme_paths' folders.
294
+	 *
295
+	 * @param $theme
296
+	 */
297
+	public function setTheme($theme)
298
+	{
299
+		$this->theme = $theme;
300
+	}
301
+
302
+	//--------------------------------------------------------------------
303
+
304
+	/**
305
+	 * Returns the current theme.
306
+	 *
307
+	 * @return mixed|string
308
+	 */
309
+	public function theme()
310
+	{
311
+		return $this->theme;
312
+	}
313
+
314
+	//--------------------------------------------------------------------
315
+
316
+	/**
317
+	 * Sets the default theme to use if another isn't specified.
318
+	 *
319
+	 * @param $theme
320
+	 * @return mixed|void
321
+	 */
322
+	public function setDefaultTheme($theme)
323
+	{
324
+		$this->default_theme = $theme;
325
+	}
326
+
327
+	//--------------------------------------------------------------------
328
+
329
+
330
+	/**
331
+	 * Sets the current view file to render.
332
+	 *
333
+	 * @param $file
334
+	 * @return mixed
335
+	 */
336
+	public function setView($file)
337
+	{
338
+		$this->view = $file;
339
+	}
340
+
341
+	//--------------------------------------------------------------------
342
+
343
+	/**
344
+	 * Returns the current view.
345
+	 *
346
+	 * @return mixed|string
347
+	 */
348
+	public function view()
349
+	{
350
+		return $this->view;
351
+	}
352
+
353
+	//--------------------------------------------------------------------
354
+
355
+	/**
356
+	 * Sets the current layout to be used. MUST be the name of one of
357
+	 * the layout files within the current theme. Case-sensitive.
358
+	 *
359
+	 * @param $file
360
+	 * @return mixed
361
+	 */
362
+	public function setLayout($file)
363
+	{
364
+		if (empty($file)) return;
365
+
366
+		$this->layout = $file;
367
+	}
368
+
369
+	//--------------------------------------------------------------------
370
+
371
+	/**
372
+	 * Returns the current layout.
373
+	 *
374
+	 * @return mixed|string
375
+	 */
376
+	public function layout()
377
+	{
378
+		return $this->layout;
379
+	}
380
+
381
+	//--------------------------------------------------------------------
382
+
383
+	/**
384
+	 * Stores one or more pieces of data to be passed to the views when
385
+	 * they are rendered out.
386
+	 *
387
+	 * If both $key and $value are ! empty, then it will treat it as a
388
+	 * key/value pair. If $key is an array of key/value pairs, then $value
389
+	 * is ignored and each element of the array are made available to the
390
+	 * view as if it was a single $key/$value pair.
391
+	 *
392
+	 * @param string|array $key
393
+	 * @param mixed $value
394
+	 * @return $this
395
+	 */
396
+	public function set($key, $value = null)
397
+	{
398
+		if (is_array($key)) {
399
+			$this->vars = array_merge($this->vars, $key);
400
+			return;
401
+		}
402
+
403
+		$this->vars[$key] = $value;
404
+
405
+		return $this;
406
+	}
407
+
408
+	//--------------------------------------------------------------------
409
+
410
+	/**
411
+	 * Returns a value that has been previously set().
412
+	 *
413
+	 * @param $key
414
+	 * @return mixed
415
+	 */
416
+	public function get($key)
417
+	{
418
+		return isset($this->vars[$key]) ? $this->vars[$key] : null;
419
+	}
420
+
421
+	//--------------------------------------------------------------------
422
+
423
+	/**
424
+	 * Determines whether or not the view should be parsed with the
425
+	 * CodeIgniter's parser.
426
+	 *
427
+	 * @param bool $parse
428
+	 * @return mixed
429
+	 */
430
+	public function parseViews($parse = false)
431
+	{
432
+		$this->parse_views = $parse;
433
+
434
+		return $this;
435
+	}
436
+
437
+	//--------------------------------------------------------------------
438
+
439
+	/**
440
+	 * Theme paths allow you to have multiple locations for themes to be
441
+	 * stored. This might be used for separating themes for different sub-
442
+	 * applications, or a core theme and user-submitted themes.
443
+	 *
444
+	 * @param $alias The name the theme can be referenced by
445
+	 * @param $path  A new path where themes can be found.
446
+	 *
447
+	 * @return mixed
448
+	 */
449
+	public function addThemePath($alias, $path)
450
+	{
451
+		$this->folders[$alias] = $path;
452
+
453
+		return $this;
454
+	}
455
+
456
+	//--------------------------------------------------------------------
457
+
458
+	/**
459
+	 * Removes a single theme path.
460
+	 *
461
+	 * @param $alias
462
+	 * @return $this
463
+	 */
464
+	public function removeThemePath($alias)
465
+	{
466
+		unset($this->folders[$alias]);
467
+
468
+		return $this;
469
+	}
470
+
471
+	//--------------------------------------------------------------------
472
+
473
+	/**
474
+	 * Returns the path to the active/default theme's folder.
475
+	 *
476
+	 * @return string|null
477
+	 */
478
+	public function getThemePath()
479
+	{
480
+		$theme = empty($this->theme) ? $this->default_theme : $this->theme;
481
+
482
+		if (! isset($this->folders[ $theme ]))
483
+		{
484
+			return null;
485
+		}
486
+
487
+		return $this->folders[$theme];
488
+	}
489
+
490
+	//--------------------------------------------------------------------
491
+
492
+
493
+
494
+	//--------------------------------------------------------------------
495
+	// Variants
496
+	//--------------------------------------------------------------------
497
+
498
+	/**
499
+	 * Sets the variant used when creating view names. These variants can
500
+	 * be anything, but by default are used to render specific templates
501
+	 * for desktop, tablet, and phone. The name of the variant is added
502
+	 * to the view name, joined by a "+" symbol.
503
+	 *
504
+	 * Example:
505
+	 *      $this->setVariant('phone');
506
+	 *      $this->display('header');
507
+	 *
508
+	 *      Tries to display "views/header+phone.php"
509
+	 *
510
+	 * @param $variant
511
+	 * @return $this
512
+	 */
513
+	public function setVariant($variant)
514
+	{
515
+		if (isset($this->variants[$variant])) {
516
+			$this->current_variant = $variant;
517
+		}
518
+
519
+		return $this;
520
+	}
521
+	//--------------------------------------------------------------------
522
+
523
+	/**
524
+	 * Adds a new variant to the system.
525
+	 *
526
+	 * @param $name
527
+	 * @param $postfix
528
+	 * @return $this|mixed
529
+	 */
530
+	public function addVariant($name, $postfix)
531
+	{
532
+		$this->variants[$name] = $postfix;
533
+
534
+		return $this;
535
+	}
536
+
537
+	//--------------------------------------------------------------------
538
+
539
+	/**
540
+	 * Removes a variant from the system.
541
+	 *
542
+	 * @param $name
543
+	 * @return $this|mixed
544
+	 */
545
+	public function removeVariant($name)
546
+	{
547
+		if (isset($this->variants[$name])) {
548
+			unset($this->variants[$name]);
549
+		}
550
+
551
+		return $this;
552
+	}
553
+
554
+	//--------------------------------------------------------------------
555
+	// Private Methods
556
+	//--------------------------------------------------------------------
557
+
558
+	/**
559
+	 * Handles the actual loading of a view file, and checks for any
560
+	 * overrides in themes, etc.
561
+	 *
562
+	 * @param $view
563
+	 * @param $data
564
+	 *
565
+	 * @return string
566
+	 */
567
+	private function loadView($view, $data)
568
+	{
569
+		// First - does it exist in the current theme?
570
+		$theme = ! empty($this->active_theme) ? $this->active_theme : $this->default_theme;
571
+		$theme = ! empty($this->folders[$theme]) ? $this->folders[$theme] : $theme;
572
+		$theme = rtrim($theme, '/ ') .'/';
573
+
574
+		if (file_exists($theme ."{$view}.php"))
575
+		{
576
+			$output = $this->ci->load->view_path( $theme . $view, $data, TRUE );
577
+		}
578
+
579
+		// Next, if it's a real file with path, then load it
580
+		elseif ( realpath( $view . '.php' ) )
581
+		{
582
+			$output = $this->ci->load->view_path( $view, $data, TRUE );
583
+		}
584
+
585
+		// Otherwise, treat it as a standard view, which means
586
+		// application/views will override any modules. (See HMVC/Loader)
587
+		else
588
+		{
589
+			$output = $this->ci->load->view( $view, $data, TRUE );
590
+		}
591
+
592
+		return $output;
593
+	}
594
+
595
+	//--------------------------------------------------------------------
596 596
 
597 597
 }
Please login to merge, or discard this patch.
myth/Themers/escape.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -4,79 +4,79 @@
 block discarded – undo
4 4
 
5 5
 if (! function_exists('esc'))
6 6
 {
7
-    /**
8
-     * Escapes strings to make them safe for use
9
-     * within HTML templates. Used by the auto-escaping
10
-     * functionality in setVar() and available to
11
-     * use within your views.
12
-     *
13
-     * Uses ZendFramework's Escaper to handle the actual escaping,
14
-     * based on context. Valid contexts are:
15
-     *      - html
16
-     *      - htmlAttr
17
-     *      - js
18
-     *      - css
19
-     *      - url
20
-     *
21
-     * References:
22
-     *  - https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
23
-     *  - http://framework.zend.com/manual/current/en/modules/zend.escaper.introduction.html
24
-     *
25
-     * @param $data
26
-     * @param $context
27
-     * @param escaper   // An instance of ZF's Escaper to avoid repeated class instantiation.
28
-     *
29
-     * @return string
30
-     */
31
-    function esc($data, $context='html', $escaper=null)
32
-    {
33
-        if (is_array($data))
34
-        {
35
-            foreach ($data as $key => &$value)
36
-            {
37
-                $value = esc($value, $context);
38
-            }
39
-        }
7
+	/**
8
+	 * Escapes strings to make them safe for use
9
+	 * within HTML templates. Used by the auto-escaping
10
+	 * functionality in setVar() and available to
11
+	 * use within your views.
12
+	 *
13
+	 * Uses ZendFramework's Escaper to handle the actual escaping,
14
+	 * based on context. Valid contexts are:
15
+	 *      - html
16
+	 *      - htmlAttr
17
+	 *      - js
18
+	 *      - css
19
+	 *      - url
20
+	 *
21
+	 * References:
22
+	 *  - https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
23
+	 *  - http://framework.zend.com/manual/current/en/modules/zend.escaper.introduction.html
24
+	 *
25
+	 * @param $data
26
+	 * @param $context
27
+	 * @param escaper   // An instance of ZF's Escaper to avoid repeated class instantiation.
28
+	 *
29
+	 * @return string
30
+	 */
31
+	function esc($data, $context='html', $escaper=null)
32
+	{
33
+		if (is_array($data))
34
+		{
35
+			foreach ($data as $key => &$value)
36
+			{
37
+				$value = esc($value, $context);
38
+			}
39
+		}
40 40
 
41
-        $context = strtolower($context);
41
+		$context = strtolower($context);
42 42
 
43
-        if (! is_object($escaper))
44
-        {
45
-            $escaper = new Escaper(config_item('charset'));
46
-        }
43
+		if (! is_object($escaper))
44
+		{
45
+			$escaper = new Escaper(config_item('charset'));
46
+		}
47 47
 
48
-        // Valid context?
49
-        if (! in_array($context, ['html', 'htmlattr', 'js', 'css', 'url']))
50
-        {
51
-            throw new \InvalidArgumentException('Invalid Context type: '. $context);
52
-        }
48
+		// Valid context?
49
+		if (! in_array($context, ['html', 'htmlattr', 'js', 'css', 'url']))
50
+		{
51
+			throw new \InvalidArgumentException('Invalid Context type: '. $context);
52
+		}
53 53
 
54
-        if (! is_string($data))
55
-        {
56
-            return $data;
57
-        }
54
+		if (! is_string($data))
55
+		{
56
+			return $data;
57
+		}
58 58
 
59
-        switch ($context)
60
-        {
61
-            case 'html':
62
-                $data = $escaper->escapeHtml($data);
63
-                break;
64
-            case 'htmlattr':
65
-                $data = $escaper->escapeHtmlAttr($data);
66
-                break;
67
-            case 'js':
68
-                $data = $escaper->escapeJs($data);
69
-                break;
70
-            case 'css':
71
-                $data = $escaper->escapeCss($data);
72
-                break;
73
-            case 'url':
74
-                $data = $escaper->escapeUrl($data);
75
-                break;
76
-            default:
77
-                break;
78
-        }
59
+		switch ($context)
60
+		{
61
+			case 'html':
62
+				$data = $escaper->escapeHtml($data);
63
+				break;
64
+			case 'htmlattr':
65
+				$data = $escaper->escapeHtmlAttr($data);
66
+				break;
67
+			case 'js':
68
+				$data = $escaper->escapeJs($data);
69
+				break;
70
+			case 'css':
71
+				$data = $escaper->escapeCss($data);
72
+				break;
73
+			case 'url':
74
+				$data = $escaper->escapeUrl($data);
75
+				break;
76
+			default:
77
+				break;
78
+		}
79 79
 
80
-        return $data;
81
-    }
80
+		return $data;
81
+	}
82 82
 }
83 83
\ No newline at end of file
Please login to merge, or discard this patch.
myth/UIKits/Foundation.php 1 patch
Indentation   +574 added lines, -574 removed lines patch added patch discarded remove patch
@@ -37,639 +37,639 @@
 block discarded – undo
37 37
  */
38 38
 class Foundation extends BaseUIKit {
39 39
 
40
-    //--------------------------------------------------------------------
41
-
42
-    public function name()
43
-    {
44
-        return 'Foundation5UIKit';
45
-    }
46
-
47
-    //--------------------------------------------------------------------
48
-
49
-    //--------------------------------------------------------------------
50
-    // Grid
51
-    //--------------------------------------------------------------------
52
-
53
-    /**
54
-     * Creates a row wrapper of HTML. We would have simple returned the
55
-     * the class for it, but some frameworks use a completely different
56
-     * approach to rows and columns than the reference Bootstrap and Foundation.
57
-     *
58
-     * @param array $options
59
-     * @return mixed
60
-     */
61
-    public function row($options=[], \Closure $c)
62
-    {
63
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'row', true);
64
-
65
-        $output = "<div {$classes} {$id} {$attributes}>";
66
-
67
-        $output .= $this->runClosure($c);
68
-
69
-        $output .= "</div>";
70
-
71
-        return $output;
72
-    }
73
-
74
-    //--------------------------------------------------------------------
75
-
76
-    /**
77
-     * Creates the CSS for a column in a grid.
78
-     *
79
-     * The attribute array is made up of key/value pairs with the
80
-     * key being the size, and the value being the number of columns/offset
81
-     * in a 12-column grid.
82
-     *
83
-     * Note that we currently DO NOT support offset columns.
84
-     *
85
-     * Valid sizes - 's', 'm', 'l', 'xl', 's-offset', 'm-offset', 'l-offset', 'xl-offset'
86
-     *
87
-     * Please note that that sizes are different than in Bootstrap. For example, for a 'xs'
88
-     * column size in Bootstrap, you would use 's' here. 'sm' = 'm', etc.
89
-     *
90
-     * @param array $attributes
91
-     * @return mixed
92
-     */
93
-    public function column($options=[], \Closure $c)
94
-    {
95
-        // Build our classes
96
-        $classes = '';
97
-
98
-        foreach ($options['sizes'] as $size => $value)
99
-        {
100
-            switch ($size)
101
-            {
102
-                case 's':
103
-                    $classes .= ' small-'. $value;
104
-                    break;
105
-                case 'm':
106
-                    $classes .= ' medium-'. $value;
107
-                    break;
108
-                case 'l':
109
-                    $classes .= ' large-'. $value;
110
-                    break;
111
-                case 'xl':
112
-                    $classes .= ' large-'. $value;
113
-                    break;
114
-                case 's-offset':
115
-                    $classes .= ' small-offset-'. $value;
116
-                    break;
117
-                case 'm-offset':
118
-                    $classes .= ' medium-offset-'. $value;
119
-                    break;
120
-                case 'l-offset':
121
-                    $classes .= ' large-offset-'. $value;
122
-                    break;
123
-                case 'xl-offset':
124
-                    $classes .= ' large-offset-'. $value;
125
-                    break;
126
-            }
127
-        }
128
-
129
-        $classes = $this->buildClassString($classes .' columns', $options, true);
130
-
131
-        $id = $this->buildIdFromOptions($options);
132
-
133
-        $attributes = $this->buildAttributesFromOptions($options);
134
-
135
-        $output = "<div {$classes} {$id} {$attributes}>";
136
-
137
-        $output .= $this->runClosure($c);
138
-
139
-        $output .= "</div>";
140
-
141
-        return $output;
142
-    }
143
-
144
-    //--------------------------------------------------------------------
145
-
146
-    //--------------------------------------------------------------------
147
-    // Navigation
148
-    //--------------------------------------------------------------------
149
-
150
-    /**
151
-     * Generates the container code for a navbar, typically used along the
152
-     * top of a page.
153
-     *
154
-     * @param array    $options
155
-     * @param callable $c
156
-     * @return string
157
-     */
158
-    public function navbar($options=[], \Closure $c)
159
-    {
160
-        $output = '';
161
-
162
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'top-bar ', true);
163
-
164
-        foreach ($options as $option)
165
-        {
166
-            switch ($option)
167
-            {
168
-                case 'sticky-top':
169
-                    $classes .= " navbar-static-top";
170
-                    break;
171
-                case 'fixed':
172
-                    $classes .= " navbar-fixed-top";
173
-                    break;
174
-            }
175
-        }
176
-
177
-        $output .= "<nav {$classes} {$id} {$attributes} data-topbar>";
178
-
179
-        /*
40
+	//--------------------------------------------------------------------
41
+
42
+	public function name()
43
+	{
44
+		return 'Foundation5UIKit';
45
+	}
46
+
47
+	//--------------------------------------------------------------------
48
+
49
+	//--------------------------------------------------------------------
50
+	// Grid
51
+	//--------------------------------------------------------------------
52
+
53
+	/**
54
+	 * Creates a row wrapper of HTML. We would have simple returned the
55
+	 * the class for it, but some frameworks use a completely different
56
+	 * approach to rows and columns than the reference Bootstrap and Foundation.
57
+	 *
58
+	 * @param array $options
59
+	 * @return mixed
60
+	 */
61
+	public function row($options=[], \Closure $c)
62
+	{
63
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'row', true);
64
+
65
+		$output = "<div {$classes} {$id} {$attributes}>";
66
+
67
+		$output .= $this->runClosure($c);
68
+
69
+		$output .= "</div>";
70
+
71
+		return $output;
72
+	}
73
+
74
+	//--------------------------------------------------------------------
75
+
76
+	/**
77
+	 * Creates the CSS for a column in a grid.
78
+	 *
79
+	 * The attribute array is made up of key/value pairs with the
80
+	 * key being the size, and the value being the number of columns/offset
81
+	 * in a 12-column grid.
82
+	 *
83
+	 * Note that we currently DO NOT support offset columns.
84
+	 *
85
+	 * Valid sizes - 's', 'm', 'l', 'xl', 's-offset', 'm-offset', 'l-offset', 'xl-offset'
86
+	 *
87
+	 * Please note that that sizes are different than in Bootstrap. For example, for a 'xs'
88
+	 * column size in Bootstrap, you would use 's' here. 'sm' = 'm', etc.
89
+	 *
90
+	 * @param array $attributes
91
+	 * @return mixed
92
+	 */
93
+	public function column($options=[], \Closure $c)
94
+	{
95
+		// Build our classes
96
+		$classes = '';
97
+
98
+		foreach ($options['sizes'] as $size => $value)
99
+		{
100
+			switch ($size)
101
+			{
102
+				case 's':
103
+					$classes .= ' small-'. $value;
104
+					break;
105
+				case 'm':
106
+					$classes .= ' medium-'. $value;
107
+					break;
108
+				case 'l':
109
+					$classes .= ' large-'. $value;
110
+					break;
111
+				case 'xl':
112
+					$classes .= ' large-'. $value;
113
+					break;
114
+				case 's-offset':
115
+					$classes .= ' small-offset-'. $value;
116
+					break;
117
+				case 'm-offset':
118
+					$classes .= ' medium-offset-'. $value;
119
+					break;
120
+				case 'l-offset':
121
+					$classes .= ' large-offset-'. $value;
122
+					break;
123
+				case 'xl-offset':
124
+					$classes .= ' large-offset-'. $value;
125
+					break;
126
+			}
127
+		}
128
+
129
+		$classes = $this->buildClassString($classes .' columns', $options, true);
130
+
131
+		$id = $this->buildIdFromOptions($options);
132
+
133
+		$attributes = $this->buildAttributesFromOptions($options);
134
+
135
+		$output = "<div {$classes} {$id} {$attributes}>";
136
+
137
+		$output .= $this->runClosure($c);
138
+
139
+		$output .= "</div>";
140
+
141
+		return $output;
142
+	}
143
+
144
+	//--------------------------------------------------------------------
145
+
146
+	//--------------------------------------------------------------------
147
+	// Navigation
148
+	//--------------------------------------------------------------------
149
+
150
+	/**
151
+	 * Generates the container code for a navbar, typically used along the
152
+	 * top of a page.
153
+	 *
154
+	 * @param array    $options
155
+	 * @param callable $c
156
+	 * @return string
157
+	 */
158
+	public function navbar($options=[], \Closure $c)
159
+	{
160
+		$output = '';
161
+
162
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'top-bar ', true);
163
+
164
+		foreach ($options as $option)
165
+		{
166
+			switch ($option)
167
+			{
168
+				case 'sticky-top':
169
+					$classes .= " navbar-static-top";
170
+					break;
171
+				case 'fixed':
172
+					$classes .= " navbar-fixed-top";
173
+					break;
174
+			}
175
+		}
176
+
177
+		$output .= "<nav {$classes} {$id} {$attributes} data-topbar>";
178
+
179
+		/*
180 180
          * Do any user content inside the bar
181 181
          */
182
-        $output .= $this->runClosure($c);
182
+		$output .= $this->runClosure($c);
183 183
 
184
-        if (isset($this->states['nav-section-open']))
185
-        {
186
-            $output .= "</section>";
187
-            unset($this->states['nav-section-open']);
188
-        }
184
+		if (isset($this->states['nav-section-open']))
185
+		{
186
+			$output .= "</section>";
187
+			unset($this->states['nav-section-open']);
188
+		}
189 189
 
190
-        /*
190
+		/*
191 191
          * Close out the navbar
192 192
          */
193
-        $output .= '</nav>';
194
-
195
-        return $output;
196
-    }
197
-
198
-    //--------------------------------------------------------------------
199
-
200
-    /**
201
-     * Builds the HTML for the Title portion of the navbar. This typically
202
-     * includes the code for the hamburger menu on small resolutions.
203
-     *
204
-     * @param        $title
205
-     * @param string $url
206
-     * @return string
207
-     */
208
-    public function navbarTitle($title, $url='#')
209
-    {
210
-        return "<ul class='title-area'>
193
+		$output .= '</nav>';
194
+
195
+		return $output;
196
+	}
197
+
198
+	//--------------------------------------------------------------------
199
+
200
+	/**
201
+	 * Builds the HTML for the Title portion of the navbar. This typically
202
+	 * includes the code for the hamburger menu on small resolutions.
203
+	 *
204
+	 * @param        $title
205
+	 * @param string $url
206
+	 * @return string
207
+	 */
208
+	public function navbarTitle($title, $url='#')
209
+	{
210
+		return "<ul class='title-area'>
211 211
     <li class='name'>
212 212
       <h1><a href='{$url}'>{$title}</a></h1>
213 213
     </li>
214 214
     <li class='toggle-topbar menu-icon'><a href='#'><span>Menu</span></a></li>
215 215
   </ul>";
216
-    }
216
+	}
217 217
 
218
-    //--------------------------------------------------------------------
218
+	//--------------------------------------------------------------------
219 219
 
220
-    /**
221
-     * Creates a UL meant to pull to the right within the navbar.
222
-     *
223
-     * Available options:
224
-     *      'class'     - An additional class to add
225
-     *
226
-     * @param array    $options
227
-     * @param callable $c
228
-     * @return string
229
-     */
230
-    public function navbarRight($options=[], \Closure $c)
231
-    {
232
-        $output = '';
220
+	/**
221
+	 * Creates a UL meant to pull to the right within the navbar.
222
+	 *
223
+	 * Available options:
224
+	 *      'class'     - An additional class to add
225
+	 *
226
+	 * @param array    $options
227
+	 * @param callable $c
228
+	 * @return string
229
+	 */
230
+	public function navbarRight($options=[], \Closure $c)
231
+	{
232
+		$output = '';
233 233
 
234
-        if (! isset($this->states['nav-section-open']))
235
-        {
236
-            $output .= "<section class='top-bar-section'>\n";
237
-            $this->states['nav-section-open'] = true;
238
-        }
234
+		if (! isset($this->states['nav-section-open']))
235
+		{
236
+			$output .= "<section class='top-bar-section'>\n";
237
+			$this->states['nav-section-open'] = true;
238
+		}
239 239
 
240
-        // Class
241
-        $classes = $this->buildClassString('right', $options);
240
+		// Class
241
+		$classes = $this->buildClassString('right', $options);
242 242
 
243
-        // ID
244
-        $id = $this->buildIdFromOptions($options);
243
+		// ID
244
+		$id = $this->buildIdFromOptions($options);
245 245
 
246
-        $attributes = $this->buildAttributesFromOptions($options);
246
+		$attributes = $this->buildAttributesFromOptions($options);
247 247
 
248
-        $output .= "<ul class='{$classes}' {$id} {$attributes}>\n";
248
+		$output .= "<ul class='{$classes}' {$id} {$attributes}>\n";
249 249
 
250
-        $output .= $this->runClosure($c);
250
+		$output .= $this->runClosure($c);
251 251
 
252
-        $output .= "</ul>\n";
252
+		$output .= "</ul>\n";
253 253
 
254
-        return $output;
255
-    }
254
+		return $output;
255
+	}
256 256
 
257
-    //--------------------------------------------------------------------
257
+	//--------------------------------------------------------------------
258 258
 
259
-    /**
260
-     * Creates a UL meant to pull to the left within the navbar.
261
-     *
262
-     * Available options:
263
-     *      'class'     - An additional class to add
264
-     *
265
-     * @param array    $options
266
-     * @param callable $c
267
-     * @return string
268
-     */
269
-    public function navbarLeft($options=[], \Closure $c)
270
-    {
271
-        $output = '';
259
+	/**
260
+	 * Creates a UL meant to pull to the left within the navbar.
261
+	 *
262
+	 * Available options:
263
+	 *      'class'     - An additional class to add
264
+	 *
265
+	 * @param array    $options
266
+	 * @param callable $c
267
+	 * @return string
268
+	 */
269
+	public function navbarLeft($options=[], \Closure $c)
270
+	{
271
+		$output = '';
272 272
 
273
-        if (! isset($this->states['nav-section-open']))
274
-        {
275
-            $output .= "<section class='top-bar-section'>\n";
276
-            $this->states['nav-section-open'] = true;
277
-        }
273
+		if (! isset($this->states['nav-section-open']))
274
+		{
275
+			$output .= "<section class='top-bar-section'>\n";
276
+			$this->states['nav-section-open'] = true;
277
+		}
278 278
 
279
-        // Class
280
-        $classes = $this->buildClassString('left', $options);
279
+		// Class
280
+		$classes = $this->buildClassString('left', $options);
281 281
 
282
-        // ID
283
-        $id = $this->buildIdFromOptions($options);
282
+		// ID
283
+		$id = $this->buildIdFromOptions($options);
284 284
 
285
-        $attributes = $this->buildAttributesFromOptions($options);
285
+		$attributes = $this->buildAttributesFromOptions($options);
286 286
 
287
-        $output .= "<ul class='{$classes}' {$id} {$attributes}>\n";
287
+		$output .= "<ul class='{$classes}' {$id} {$attributes}>\n";
288 288
 
289
-        $output .= $this->runClosure($c);
289
+		$output .= $this->runClosure($c);
290 290
 
291
-        $output .= "</ul>\n";
291
+		$output .= "</ul>\n";
292 292
 
293
-        return $output;
294
-    }
293
+		return $output;
294
+	}
295 295
 
296
-    //--------------------------------------------------------------------
296
+	//--------------------------------------------------------------------
297 297
 
298
-    public function nav()
299
-    {
298
+	public function nav()
299
+	{
300 300
 
301
-    }
301
+	}
302 302
 
303
-    //--------------------------------------------------------------------
303
+	//--------------------------------------------------------------------
304 304
 
305 305
 
306
-    /**
307
-     * Creates a single list item for use within a nav section.
308
-     *
309
-     * @param       $title
310
-     * @param       $url
311
-     * @param array $options
312
-     * @return string
313
-     */
314
-    public function navItem($title, $url='#', $options=[], $active=false)
315
-    {
316
-        $options['active'] = $active;
306
+	/**
307
+	 * Creates a single list item for use within a nav section.
308
+	 *
309
+	 * @param       $title
310
+	 * @param       $url
311
+	 * @param array $options
312
+	 * @return string
313
+	 */
314
+	public function navItem($title, $url='#', $options=[], $active=false)
315
+	{
316
+		$options['active'] = $active;
317 317
 
318
-        $classes = $this->buildClassString('', $options, true);
318
+		$classes = $this->buildClassString('', $options, true);
319 319
 
320
-        $id = $this->buildIdFromOptions($options);
320
+		$id = $this->buildIdFromOptions($options);
321 321
 
322
-        $attributes = $this->buildAttributesFromOptions($options);
322
+		$attributes = $this->buildAttributesFromOptions($options);
323 323
 
324
-        return "\t<li {$classes} {$id} {$attributes}><a href='{$url}'>{$title}</a></li>";
325
-    }
324
+		return "\t<li {$classes} {$id} {$attributes}><a href='{$url}'>{$title}</a></li>";
325
+	}
326 326
 
327
-    //--------------------------------------------------------------------
327
+	//--------------------------------------------------------------------
328 328
 
329
-    /**
330
-     * Builds the shell of a Dropdown button for use within a nav area.
331
-     *
332
-     * @param          $title
333
-     * @param array    $options
334
-     * @param callable $c
335
-     */
336
-    public function navDropdown($title,$options=[], \Closure $c)
337
-    {
338
-        $classes = $this->buildClassString('has-dropdown', $options, true);
329
+	/**
330
+	 * Builds the shell of a Dropdown button for use within a nav area.
331
+	 *
332
+	 * @param          $title
333
+	 * @param array    $options
334
+	 * @param callable $c
335
+	 */
336
+	public function navDropdown($title,$options=[], \Closure $c)
337
+	{
338
+		$classes = $this->buildClassString('has-dropdown', $options, true);
339 339
 
340
-        $id = $this->buildIdFromOptions($options);
340
+		$id = $this->buildIdFromOptions($options);
341 341
 
342
-        $attributes = $this->buildAttributesFromOptions($options);
342
+		$attributes = $this->buildAttributesFromOptions($options);
343 343
 
344
-        $output = "\t<li {$classes} {$id} {$attributes}>
344
+		$output = "\t<li {$classes} {$id} {$attributes}>
345 345
         <a href='#'>{$title}</a>
346 346
         <ul class='dropdown'>";
347 347
 
348
-        $output .= $this->runClosure($c);
348
+		$output .= $this->runClosure($c);
349 349
 
350
-        $output .= "\t</ul></li>";
350
+		$output .= "\t</ul></li>";
351 351
 
352
-        return $output;
353
-    }
352
+		return $output;
353
+	}
354 354
 
355
-    //--------------------------------------------------------------------
355
+	//--------------------------------------------------------------------
356 356
 
357
-    /**
358
-     * Creates a divider for use within a nav list.
359
-     *
360
-     * @return string
361
-     */
362
-    public function navDivider()
363
-    {
364
-        return '<li class="divider"></li>';
365
-    }
357
+	/**
358
+	 * Creates a divider for use within a nav list.
359
+	 *
360
+	 * @return string
361
+	 */
362
+	public function navDivider()
363
+	{
364
+		return '<li class="divider"></li>';
365
+	}
366 366
 
367
-    //--------------------------------------------------------------------
367
+	//--------------------------------------------------------------------
368 368
 
369
-    public function sideNav($options=[], \Closure $c)
370
-    {
371
-        $classes = $this->buildClassString('side-nav', $options, true);
369
+	public function sideNav($options=[], \Closure $c)
370
+	{
371
+		$classes = $this->buildClassString('side-nav', $options, true);
372 372
 
373
-        $id = $this->buildIdFromOptions($options);
373
+		$id = $this->buildIdFromOptions($options);
374 374
 
375
-        $attributes = $this->buildAttributesFromOptions($options);
375
+		$attributes = $this->buildAttributesFromOptions($options);
376 376
 
377
-        $output = "<ul {$classes} {$id} {$attributes}>\n";
378
-
379
-        $output .= $this->runClosure($c);
380
-
381
-        $output .= "</ul>\n";
382
-
383
-        return $output;
384
-    }
385
-
386
-    //--------------------------------------------------------------------
387
-
388
-    /**
389
-     * Creates a list of nav items to function as breadcrumbs for a site.
390
-     *
391
-     * @param array    $options
392
-     * @param callable $c
393
-     * @return mixed
394
-     */
395
-    public function breadcrumb($options=[], \Closure $c)
396
-    {
397
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'breadcrumbs', true);
398
-
399
-        $output = "<ul {$classes} {$id} {$attributes}>\n";
400
-
401
-        $output .= $this->runClosure($c);
402
-
403
-        $output .= "</ul>\n";
404
-
405
-        return $output;
406
-    }
407
-
408
-    //--------------------------------------------------------------------
409
-
410
-    //--------------------------------------------------------------------
411
-    // Tables
412
-    //--------------------------------------------------------------------
413
-
414
-    public function table()
415
-    {
416
-        return 'table';
417
-    }
418
-
419
-    //--------------------------------------------------------------------
420
-
421
-    //--------------------------------------------------------------------
422
-    // Buttons
423
-    //--------------------------------------------------------------------
424
-
425
-    /**
426
-     * Creates a simple button.
427
-     *
428
-     * $style can be 'default', 'primary', 'success', 'info', 'warning', 'danger'
429
-     * $size can be 'default', 'small', 'xsmall', 'large'
430
-     *
431
-     * @param       $title
432
-     * @param string $style
433
-     * @param array $options
434
-     * @return mixed
435
-     */
436
-    public function button($title, $style='default', $size='default', $options=[])
437
-    {
438
-        $tag= "<button type='button' {classes} {id} {attributes}>{$title}</button>";
439
-
440
-        return $this->renderButtonElement($title, $style, $size, $options, $tag);
441
-    }
442
-
443
-    //--------------------------------------------------------------------
444
-
445
-    /**
446
-     * Creates a simple link styled as a button.
447
-     *
448
-     * $style can be 'default', 'primary', 'success', 'info', 'warning', 'danger'
449
-     * $size can be 'default', 'small', 'xsmall', 'large'
450
-     *
451
-     * @param       $title
452
-     * @param string $url
453
-     * @param string $style
454
-     * @param array $options
455
-     * @return mixed
456
-     */
457
-    public function buttonLink($title, $url='#', $style='default', $size='default', $options=[])
458
-    {
459
-        $class = isset($options['class']) ? $options['class'] .' button' : 'button';
460
-        $options['class'] = $class;
461
-
462
-        $tag = "<a {classes} {id} {attributes} role='button'>{$title}</a>";
463
-
464
-        return $this->renderButtonElement($title, $style, $size, $options, $tag);
465
-    }
466
-
467
-    //--------------------------------------------------------------------
468
-
469
-    /**
470
-     * Helper method to render out our buttons in a DRY manner.
471
-     *
472
-     * @param $title
473
-     * @param $style
474
-     * @param $size
475
-     * @param $tag
476
-     */
477
-    protected function renderButtonElement($title, $style, $size, $options, $tag)
478
-    {
479
-        $valid_styles = ['default', 'primary', 'success', 'info', 'warning', 'danger'];
480
-        $valid_sizes  = ['default', 'small', 'xsmall', 'large'];
481
-
482
-        if (! in_array($style, $valid_styles))
483
-        {
484
-            $style = 'default';
485
-            $options['attributes'][] = 'data-error="Invalid Style passed to button method."';
486
-        }
487
-
488
-        $classes = 'btn ';
489
-
490
-        // Sizes
491
-        switch($size)
492
-        {
493
-            case 'small':
494
-                $classes .= 'small ';
495
-                break;
496
-            case 'xsmall':
497
-                $classes .= 'tiny ';
498
-                break;
499
-            case 'large':
500
-                $classes .= 'large ';
501
-                break;
502
-            default:
503
-                break;
504
-        }
505
-
506
-        // Styles
507
-        switch ($style)
508
-        {
509
-            case 'primary':
510
-                $classes .= '';
511
-                break;
512
-            case 'success':
513
-                $classes .= 'success ';
514
-                break;
515
-            case 'info':
516
-                $classes .= 'secondary ';
517
-                break;
518
-            case 'warning':
519
-                $classes .= 'alert ';
520
-                break;
521
-            case 'danger':
522
-                $classes .= 'alert ';
523
-                break;
524
-            case 'default':
525
-                $classes .= 'secondary ';
526
-                break;
527
-        }
528
-
529
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, $classes, true);
530
-
531
-        $tag = str_replace('{classes}', $classes, $tag);
532
-        $tag = str_replace('{id}', $id, $tag);
533
-        $tag = str_replace('{attributes}', $attributes, $tag);
534
-        $tag = str_replace('{title}', $title, $tag);
535
-
536
-        // If we're in a button group we need to wrap each item in li tags.
537
-        if (isset($this->states['inButtonGroup']))
538
-        {
539
-            $tag = '<li>'. $tag .'</li>';
540
-        }
541
-        return $tag;
542
-    }
543
-
544
-    //--------------------------------------------------------------------
545
-
546
-    /**
547
-     * Creates button groups wrapping HTML.
548
-     *
549
-     * @param          $options
550
-     * @param callable $c
551
-     * @return mixed
552
-     */
553
-    public function buttonGroup($options, \Closure $c)
554
-    {
555
-        $this->states['inButtonGroup'] = true;
556
-
557
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button-group', true);
558
-
559
-        $output = "<ul {$classes} {$id} {$attributes}>\n";
560
-
561
-        $output .= $this->runClosure($c);
562
-
563
-        $output .= "</ul>\n";
564
-
565
-        unset($this->states['inButtonGroup']);
566
-
567
-        return $output;
568
-    }
569
-
570
-    //--------------------------------------------------------------------
571
-
572
-    /**
573
-     * Creates the button bar wrapping HTML.
574
-     *
575
-     * @param          $options
576
-     * @param callable $c
577
-     * @return mixed
578
-     */
579
-    public function buttonBar($options, \Closure $c)
580
-    {
581
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button-bar', true);
582
-
583
-        $output = "<div {$classes} {$id} {$attributes}>\n";
584
-
585
-        $output .= $this->runClosure($c);
586
-
587
-        $output .= "</div>\n";
588
-
589
-        return $output;
590
-    }
591
-
592
-    //--------------------------------------------------------------------
593
-
594
-    /**
595
-     * Creates a button that also has a dropdown menu. Also called Split Buttons
596
-     * by some frameworks.
597
-     *
598
-     * @param        $title
599
-     * @param string $style
600
-     * @param string $size
601
-     * @param array  $options
602
-     * @param callable $c
603
-     * @return mixed
604
-     */
605
-    public function buttonDropdown($title, $style='default', $size='default', $options=[], \Closure $c)
606
-    {
607
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button split', true);
608
-
609
-        $output = "<a href='#' {$classes} {$id} {$attributes}>{$title} <span data-dropdown='drop'></span></a><br>\n
377
+		$output = "<ul {$classes} {$id} {$attributes}>\n";
378
+
379
+		$output .= $this->runClosure($c);
380
+
381
+		$output .= "</ul>\n";
382
+
383
+		return $output;
384
+	}
385
+
386
+	//--------------------------------------------------------------------
387
+
388
+	/**
389
+	 * Creates a list of nav items to function as breadcrumbs for a site.
390
+	 *
391
+	 * @param array    $options
392
+	 * @param callable $c
393
+	 * @return mixed
394
+	 */
395
+	public function breadcrumb($options=[], \Closure $c)
396
+	{
397
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'breadcrumbs', true);
398
+
399
+		$output = "<ul {$classes} {$id} {$attributes}>\n";
400
+
401
+		$output .= $this->runClosure($c);
402
+
403
+		$output .= "</ul>\n";
404
+
405
+		return $output;
406
+	}
407
+
408
+	//--------------------------------------------------------------------
409
+
410
+	//--------------------------------------------------------------------
411
+	// Tables
412
+	//--------------------------------------------------------------------
413
+
414
+	public function table()
415
+	{
416
+		return 'table';
417
+	}
418
+
419
+	//--------------------------------------------------------------------
420
+
421
+	//--------------------------------------------------------------------
422
+	// Buttons
423
+	//--------------------------------------------------------------------
424
+
425
+	/**
426
+	 * Creates a simple button.
427
+	 *
428
+	 * $style can be 'default', 'primary', 'success', 'info', 'warning', 'danger'
429
+	 * $size can be 'default', 'small', 'xsmall', 'large'
430
+	 *
431
+	 * @param       $title
432
+	 * @param string $style
433
+	 * @param array $options
434
+	 * @return mixed
435
+	 */
436
+	public function button($title, $style='default', $size='default', $options=[])
437
+	{
438
+		$tag= "<button type='button' {classes} {id} {attributes}>{$title}</button>";
439
+
440
+		return $this->renderButtonElement($title, $style, $size, $options, $tag);
441
+	}
442
+
443
+	//--------------------------------------------------------------------
444
+
445
+	/**
446
+	 * Creates a simple link styled as a button.
447
+	 *
448
+	 * $style can be 'default', 'primary', 'success', 'info', 'warning', 'danger'
449
+	 * $size can be 'default', 'small', 'xsmall', 'large'
450
+	 *
451
+	 * @param       $title
452
+	 * @param string $url
453
+	 * @param string $style
454
+	 * @param array $options
455
+	 * @return mixed
456
+	 */
457
+	public function buttonLink($title, $url='#', $style='default', $size='default', $options=[])
458
+	{
459
+		$class = isset($options['class']) ? $options['class'] .' button' : 'button';
460
+		$options['class'] = $class;
461
+
462
+		$tag = "<a {classes} {id} {attributes} role='button'>{$title}</a>";
463
+
464
+		return $this->renderButtonElement($title, $style, $size, $options, $tag);
465
+	}
466
+
467
+	//--------------------------------------------------------------------
468
+
469
+	/**
470
+	 * Helper method to render out our buttons in a DRY manner.
471
+	 *
472
+	 * @param $title
473
+	 * @param $style
474
+	 * @param $size
475
+	 * @param $tag
476
+	 */
477
+	protected function renderButtonElement($title, $style, $size, $options, $tag)
478
+	{
479
+		$valid_styles = ['default', 'primary', 'success', 'info', 'warning', 'danger'];
480
+		$valid_sizes  = ['default', 'small', 'xsmall', 'large'];
481
+
482
+		if (! in_array($style, $valid_styles))
483
+		{
484
+			$style = 'default';
485
+			$options['attributes'][] = 'data-error="Invalid Style passed to button method."';
486
+		}
487
+
488
+		$classes = 'btn ';
489
+
490
+		// Sizes
491
+		switch($size)
492
+		{
493
+			case 'small':
494
+				$classes .= 'small ';
495
+				break;
496
+			case 'xsmall':
497
+				$classes .= 'tiny ';
498
+				break;
499
+			case 'large':
500
+				$classes .= 'large ';
501
+				break;
502
+			default:
503
+				break;
504
+		}
505
+
506
+		// Styles
507
+		switch ($style)
508
+		{
509
+			case 'primary':
510
+				$classes .= '';
511
+				break;
512
+			case 'success':
513
+				$classes .= 'success ';
514
+				break;
515
+			case 'info':
516
+				$classes .= 'secondary ';
517
+				break;
518
+			case 'warning':
519
+				$classes .= 'alert ';
520
+				break;
521
+			case 'danger':
522
+				$classes .= 'alert ';
523
+				break;
524
+			case 'default':
525
+				$classes .= 'secondary ';
526
+				break;
527
+		}
528
+
529
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, $classes, true);
530
+
531
+		$tag = str_replace('{classes}', $classes, $tag);
532
+		$tag = str_replace('{id}', $id, $tag);
533
+		$tag = str_replace('{attributes}', $attributes, $tag);
534
+		$tag = str_replace('{title}', $title, $tag);
535
+
536
+		// If we're in a button group we need to wrap each item in li tags.
537
+		if (isset($this->states['inButtonGroup']))
538
+		{
539
+			$tag = '<li>'. $tag .'</li>';
540
+		}
541
+		return $tag;
542
+	}
543
+
544
+	//--------------------------------------------------------------------
545
+
546
+	/**
547
+	 * Creates button groups wrapping HTML.
548
+	 *
549
+	 * @param          $options
550
+	 * @param callable $c
551
+	 * @return mixed
552
+	 */
553
+	public function buttonGroup($options, \Closure $c)
554
+	{
555
+		$this->states['inButtonGroup'] = true;
556
+
557
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button-group', true);
558
+
559
+		$output = "<ul {$classes} {$id} {$attributes}>\n";
560
+
561
+		$output .= $this->runClosure($c);
562
+
563
+		$output .= "</ul>\n";
564
+
565
+		unset($this->states['inButtonGroup']);
566
+
567
+		return $output;
568
+	}
569
+
570
+	//--------------------------------------------------------------------
571
+
572
+	/**
573
+	 * Creates the button bar wrapping HTML.
574
+	 *
575
+	 * @param          $options
576
+	 * @param callable $c
577
+	 * @return mixed
578
+	 */
579
+	public function buttonBar($options, \Closure $c)
580
+	{
581
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button-bar', true);
582
+
583
+		$output = "<div {$classes} {$id} {$attributes}>\n";
584
+
585
+		$output .= $this->runClosure($c);
586
+
587
+		$output .= "</div>\n";
588
+
589
+		return $output;
590
+	}
591
+
592
+	//--------------------------------------------------------------------
593
+
594
+	/**
595
+	 * Creates a button that also has a dropdown menu. Also called Split Buttons
596
+	 * by some frameworks.
597
+	 *
598
+	 * @param        $title
599
+	 * @param string $style
600
+	 * @param string $size
601
+	 * @param array  $options
602
+	 * @param callable $c
603
+	 * @return mixed
604
+	 */
605
+	public function buttonDropdown($title, $style='default', $size='default', $options=[], \Closure $c)
606
+	{
607
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'button split', true);
608
+
609
+		$output = "<a href='#' {$classes} {$id} {$attributes}>{$title} <span data-dropdown='drop'></span></a><br>\n
610 610
                   <ul id='drop' class='f-dropdown' data-dropdown-content>\n";
611 611
 
612
-        $output .= $this->runClosure($c);
613
-
614
-        $output .= "</ul>\n";
615
-
616
-        return $output;
617
-    }
618
-
619
-    //--------------------------------------------------------------------
620
-
621
-    //--------------------------------------------------------------------
622
-    // Notices
623
-    //--------------------------------------------------------------------
624
-
625
-    /**
626
-     * Creates an 'alert-box' style of notice grid.
627
-     *
628
-     * $style can be 'default', 'success', 'info', 'warning', 'danger'
629
-     *
630
-     * @param $content
631
-     * @param string $style
632
-     * @param bool $closable
633
-     * @return mixed
634
-     */
635
-    public function notice($content, $style='success', $closable=true, $options=[])
636
-    {
637
-        list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'alert-box ', false);
638
-
639
-        // Styles
640
-        switch ($style)
641
-        {
642
-            case 'success':
643
-                $classes .= ' success ';
644
-                break;
645
-            case 'info':
646
-                $classes .= ' secondary ';
647
-                break;
648
-            case 'warning':
649
-                $classes .= ' alert ';
650
-                break;
651
-            case 'danger':
652
-                $classes .= ' alert ';
653
-                break;
654
-            case 'default':
655
-                $classes .= ' secondary ';
656
-                break;
657
-        }
658
-
659
-        $output = "<div data-alert class='{$classes}'>\n";
660
-
661
-        $output .= "\t$content\n";
662
-
663
-        if ($closable)
664
-        {
665
-            $output .= "\t<a href='#' class='close'>&times;</a>\n";
666
-        }
667
-
668
-        $output .= "</div>\n";
669
-
670
-        return $output;
671
-    }
672
-
673
-    //--------------------------------------------------------------------
612
+		$output .= $this->runClosure($c);
613
+
614
+		$output .= "</ul>\n";
615
+
616
+		return $output;
617
+	}
618
+
619
+	//--------------------------------------------------------------------
620
+
621
+	//--------------------------------------------------------------------
622
+	// Notices
623
+	//--------------------------------------------------------------------
624
+
625
+	/**
626
+	 * Creates an 'alert-box' style of notice grid.
627
+	 *
628
+	 * $style can be 'default', 'success', 'info', 'warning', 'danger'
629
+	 *
630
+	 * @param $content
631
+	 * @param string $style
632
+	 * @param bool $closable
633
+	 * @return mixed
634
+	 */
635
+	public function notice($content, $style='success', $closable=true, $options=[])
636
+	{
637
+		list($classes, $id, $attributes) = $this->parseStandardOptions($options, 'alert-box ', false);
638
+
639
+		// Styles
640
+		switch ($style)
641
+		{
642
+			case 'success':
643
+				$classes .= ' success ';
644
+				break;
645
+			case 'info':
646
+				$classes .= ' secondary ';
647
+				break;
648
+			case 'warning':
649
+				$classes .= ' alert ';
650
+				break;
651
+			case 'danger':
652
+				$classes .= ' alert ';
653
+				break;
654
+			case 'default':
655
+				$classes .= ' secondary ';
656
+				break;
657
+		}
658
+
659
+		$output = "<div data-alert class='{$classes}'>\n";
660
+
661
+		$output .= "\t$content\n";
662
+
663
+		if ($closable)
664
+		{
665
+			$output .= "\t<a href='#' class='close'>&times;</a>\n";
666
+		}
667
+
668
+		$output .= "</div>\n";
669
+
670
+		return $output;
671
+	}
672
+
673
+	//--------------------------------------------------------------------
674 674
 
675 675
 }
Please login to merge, or discard this patch.