/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/database/DB_cache.php

  • Committer: Gustav Hatvigsson
  • Date: 2013-05-30 12:02:31 UTC
  • mfrom: (85.1.28 lenasys)
  • Revision ID: gustav.hartvigsson@gmail.com-20130530120231-ttqgqjqw2w8enn7g
Merged Ohlsons changes:
added function to get ssn and name for the registrationspages in the user model.
added the registrationpage for students.
edited the registration page for instructors
edited the css for both the registrationpages
minor fix to registration css

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
2
/**
 
3
 * CodeIgniter
 
4
 *
 
5
 * An open source application development framework for PHP 5.1.6 or newer
 
6
 *
 
7
 * @package             CodeIgniter
 
8
 * @author              ExpressionEngine Dev Team
 
9
 * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
 
10
 * @license             http://codeigniter.com/user_guide/license.html
 
11
 * @link                http://codeigniter.com
 
12
 * @since               Version 1.0
 
13
 * @filesource
 
14
 */
 
15
 
 
16
// ------------------------------------------------------------------------
 
17
 
 
18
/**
 
19
 * Database Cache Class
 
20
 *
 
21
 * @category    Database
 
22
 * @author              ExpressionEngine Dev Team
 
23
 * @link                http://codeigniter.com/user_guide/database/
 
24
 */
 
25
class CI_DB_Cache {
 
26
 
 
27
        var $CI;
 
28
        var $db;        // allows passing of db object so that multiple database connections and returned db objects can be supported
 
29
 
 
30
        /**
 
31
         * Constructor
 
32
         *
 
33
         * Grabs the CI super object instance so we can access it.
 
34
         *
 
35
         */
 
36
        function __construct(&$db)
 
37
        {
 
38
                // Assign the main CI object to $this->CI
 
39
                // and load the file helper since we use it a lot
 
40
                $this->CI =& get_instance();
 
41
                $this->db =& $db;
 
42
                $this->CI->load->helper('file');
 
43
        }
 
44
 
 
45
        // --------------------------------------------------------------------
 
46
 
 
47
        /**
 
48
         * Set Cache Directory Path
 
49
         *
 
50
         * @access      public
 
51
         * @param       string  the path to the cache directory
 
52
         * @return      bool
 
53
         */
 
54
        function check_path($path = '')
 
55
        {
 
56
                if ($path == '')
 
57
                {
 
58
                        if ($this->db->cachedir == '')
 
59
                        {
 
60
                                return $this->db->cache_off();
 
61
                        }
 
62
 
 
63
                        $path = $this->db->cachedir;
 
64
                }
 
65
 
 
66
                // Add a trailing slash to the path if needed
 
67
                $path = preg_replace("/(.+?)\/*$/", "\\1/",  $path);
 
68
 
 
69
                if ( ! is_dir($path) OR ! is_really_writable($path))
 
70
                {
 
71
                        // If the path is wrong we'll turn off caching
 
72
                        return $this->db->cache_off();
 
73
                }
 
74
 
 
75
                $this->db->cachedir = $path;
 
76
                return TRUE;
 
77
        }
 
78
 
 
79
        // --------------------------------------------------------------------
 
80
 
 
81
        /**
 
82
         * Retrieve a cached query
 
83
         *
 
84
         * The URI being requested will become the name of the cache sub-folder.
 
85
         * An MD5 hash of the SQL statement will become the cache file name
 
86
         *
 
87
         * @access      public
 
88
         * @return      string
 
89
         */
 
90
        function read($sql)
 
91
        {
 
92
                if ( ! $this->check_path())
 
93
                {
 
94
                        return $this->db->cache_off();
 
95
                }
 
96
 
 
97
                $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
 
98
 
 
99
                $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
 
100
 
 
101
                $filepath = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'.md5($sql);
 
102
 
 
103
                if (FALSE === ($cachedata = read_file($filepath)))
 
104
                {
 
105
                        return FALSE;
 
106
                }
 
107
 
 
108
                return unserialize($cachedata);
 
109
        }
 
110
 
 
111
        // --------------------------------------------------------------------
 
112
 
 
113
        /**
 
114
         * Write a query to a cache file
 
115
         *
 
116
         * @access      public
 
117
         * @return      bool
 
118
         */
 
119
        function write($sql, $object)
 
120
        {
 
121
                if ( ! $this->check_path())
 
122
                {
 
123
                        return $this->db->cache_off();
 
124
                }
 
125
 
 
126
                $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
 
127
 
 
128
                $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
 
129
 
 
130
                $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/';
 
131
 
 
132
                $filename = md5($sql);
 
133
 
 
134
                if ( ! @is_dir($dir_path))
 
135
                {
 
136
                        if ( ! @mkdir($dir_path, DIR_WRITE_MODE))
 
137
                        {
 
138
                                return FALSE;
 
139
                        }
 
140
 
 
141
                        @chmod($dir_path, DIR_WRITE_MODE);
 
142
                }
 
143
 
 
144
                if (write_file($dir_path.$filename, serialize($object)) === FALSE)
 
145
                {
 
146
                        return FALSE;
 
147
                }
 
148
 
 
149
                @chmod($dir_path.$filename, FILE_WRITE_MODE);
 
150
                return TRUE;
 
151
        }
 
152
 
 
153
        // --------------------------------------------------------------------
 
154
 
 
155
        /**
 
156
         * Delete cache files within a particular directory
 
157
         *
 
158
         * @access      public
 
159
         * @return      bool
 
160
         */
 
161
        function delete($segment_one = '', $segment_two = '')
 
162
        {
 
163
                if ($segment_one == '')
 
164
                {
 
165
                        $segment_one  = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
 
166
                }
 
167
 
 
168
                if ($segment_two == '')
 
169
                {
 
170
                        $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
 
171
                }
 
172
 
 
173
                $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/';
 
174
 
 
175
                delete_files($dir_path, TRUE);
 
176
        }
 
177
 
 
178
        // --------------------------------------------------------------------
 
179
 
 
180
        /**
 
181
         * Delete all existing cache files
 
182
         *
 
183
         * @access      public
 
184
         * @return      bool
 
185
         */
 
186
        function delete_all()
 
187
        {
 
188
                delete_files($this->db->cachedir, TRUE);
 
189
        }
 
190
 
 
191
}
 
192
 
 
193
 
 
194
/* End of file DB_cache.php */
 
195
/* Location: ./system/database/DB_cache.php */
 
 
b'\\ No newline at end of file'