Joostina CMS / CMF v2.* API
  • Docs
  • Package
  • Class
  • Tree
  • Todo
Overview

Packages

  • Components
    • Acls
      • Models
        • Admin
        • Site
    • BlogCategory
      • Models
        • Admin
        • Site
    • Blogs
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Coder
      • Controllers
        • Admin
      • Models
        • Admin
    • Comments
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • CommentsCounter
      • Models
        • Admin
        • Site
    • Mainpage
      • Controllers
        • Site
    • News
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Pages
      • Controllers
        • Admin
        • Site
      • Models
        • Site
    • Search
      • Controllers
        • Site
    • Site
      • Controllers
        • Admin
        • Site
    • Sitemap
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
    • Test
      • Controllers
        • Site
    • Torrents
      • Controllers
        • Site
    • Users
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
  • Compression
  • Core
    • Libraries
      • Arhive
      • Array
      • Attached
      • Autoadmin
      • Autoloader
      • Benchmark
      • Breadcrumbs
      • Cache
      • Config
      • Cookie
      • Csrf
      • Database
        • Drivers
          • Interfaces
      • Datetime
      • Debug
      • Editor
      • Events
      • File
      • Filter
      • Flashmessage
      • Folder
      • Hit
      • Html
      • Image
      • Inflector
      • Inputfilter
      • Libraries
      • Mail
      • Module
      • Nestedset
      • Pager
      • Pages
      • Params
      • Randomizer
      • Request
      • RobotLoader
      • Route
      • Security
      • Session
      • Static
      • String
      • Text
      • Trash
      • Validate
  • Email
  • Extra
    • Libraries
      • Basket
  • Joostina
    • Controller
    • Core
    • Document
  • JSMin
  • Libraries
    • Extra
      • Basket
        • Models
          • Site
  • None
  • Plugins
    • Autoadmin
    • Editor
    • Sitemap
  • SimpleMail
  • Vendors
    • Libraries
      • Email

Classes

  • joosRequest
  1: <?php defined('_JOOS_CORE') or exit();
  2: 
  3: /**
  4:  * Библиотека работы со входящими пользовательскими данными и информацией
  5:  *
  6:  * @version    1.0
  7:  * @package    Core\Libraries
  8:  * @subpackage Request
  9:  * @category   Libraries
 10:  * @author     Joostina Team <info@joostina.ru>
 11:  * @copyright  (C) 2007-2012 Joostina Team
 12:  * @license    MIT License http://www.opensource.org/licenses/mit-license.php
 13:  * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
 14:  *
 15:  * @todo       в mosGetParams была очистка данных. Может, стоит и сюда прикрутить?
 16:  * joosInputFilter::instance()->process($return)
 17:  *
 18:  * */
 19: class joosRequest
 20: {
 21:     /**
 22:      * Получение параметра
 23:      *
 24:      * @param string $name    название параметра
 25:      * @param string $default значение для параметра по умолчани
 26:      * @param array  $vars    массив переменных из которого необходимо получить параметр $name, по умолчанию используется суперглобальный $_REQUEST
 27:      *
 28:      * @return mixed результат, массив или строка
 29:      *
 30:      * @todo проанализировать необходимоть проверки наличия с empty (isset($vars[$name]) && !empty( $vars[$name] ) )
 31:      */
 32:     public static function param($name, $default = null, $vars = false)
 33:     {
 34:         $vars = $vars ? $vars : $_REQUEST;
 35: 
 36:         return (isset($vars[$name])) ? $vars[$name] : $default;
 37:     }
 38: 
 39:     /**
 40:      * Получение параметров из суперглобального массива $_GET
 41:      *
 42:      * @param string $name    название параметра $name
 43:      * @param string $default значение для параметра, используемое по умолчанию
 44:      *
 45:      * @return mixed результат, массив или строка
 46:      */
 47:     public static function get($name, $default = null)
 48:     {
 49:         return self::param($name, $default, $_GET);
 50:     }
 51: 
 52:     /**
 53:      * Получение параметров из суперглобального массива $_POST
 54:      *
 55:      * @param string $name    название параметра $name
 56:      * @param string $default значение для параметра, используемое по умолчанию
 57:      *
 58:      * @return mixed результат, массив или строка
 59:      */
 60:     public static function post($name, $default = null)
 61:     {
 62:         return self::param($name, $default, $_POST);
 63:     }
 64: 
 65:     /**
 66:      * Получение параметров из суперглобального массива $_REQUEST
 67:      *
 68:      * @param string $name    название параметра $name
 69:      * @param string $default значение для параметра, используемое по умолчанию
 70:      *
 71:      * @return mixed результат, массив или строка
 72:      */
 73:     public static function request($name, $default = null)
 74:     {
 75:         return self::param($name, $default, $_REQUEST);
 76:     }
 77: 
 78:     /**
 79:      * Получение параметров загруженного файла из суперглобального массива $_FILES
 80:      *
 81:      * @param string $name название параметра $name
 82:      *
 83:      * @return mixed массив с информацией о файле, либо FALSE в случае отсутствия данных
 84:      */
 85:     public static function file($name)
 86:     {
 87:         return self::param($name, false, $_FILES);
 88:     }
 89: 
 90:     /**
 91:      * Получение параметров из суперглобального массива $_SERVER
 92:      *
 93:      * @param string $name    название параметра $name
 94:      * @param string $default значение для параметра, используемое по умолчанию
 95:      *
 96:      * @return mixed результат, массив или строка
 97:      */
 98:     public static function server($name, $default = null)
 99:     {
100:         return self::param($name, $default, $_SERVER);
101:     }
102: 
103:     /**
104:      * Получение параметров из суперглобального массива $_ENV
105:      *
106:      * @param string $name    название параметра $name
107:      * @param string $default значение для параметра, используемое по умолчанию
108:      *
109:      * @return mixed результат, массив или строка
110:      */
111:     public static function env($name, $default = null)
112:     {
113:         return self::param($name, $default, $_ENV);
114:     }
115: 
116:     /**
117:      * Получение параметров из суперглобального массива $_SESSION
118:      *
119:      * @param string $name    название параметра $name
120:      * @param string $default значение для параметра, используемое по умолчанию
121:      *
122:      * @return mixed результат, массив или строка
123:      */
124:     public static function session($name, $default = null)
125:     {
126:         return self::param($name, $default, $_SESSION);
127:     }
128: 
129:     /**
130:      * Получение параметров из суперглобального массива $_COOKIE
131:      *
132:      * @param string $name    название параметра $name
133:      * @param string $default значение для параметра, используемое по умолчанию
134:      *
135:      * @return mixed результат, массив или строка
136:      */
137:     public static function cookies($name, $default = null)
138:     {
139:         return self::param($name, $default, $_COOKIE);
140:     }
141: 
142:     /**
143:      * Получение параметра из заголовков сервера или клиенского браузера
144:      *
145:      * @param string $name    название параметра
146:      * @param string $default значение для параметра, используемое по умолчанию
147:      *
148:      * @return mixed результат, массив или строка, либо false если параметр не обнаружен ( по умолчанию )
149:      */
150:     public static function header($name, $default = false)
151:     {
152:         $name_ = 'HTTP_' . strtoupper(str_replace('-', '_', $name));
153:         if (isset($_SERVER[$name_])) {
154:             return $_SERVER[$name_];
155:         }
156: 
157:         if (function_exists('apache_request_headers')) {
158:             $headers = apache_request_headers();
159:             if (isset($headers[$name])) {
160:                 return $headers[$name];
161:             }
162:         }
163: 
164:         return $default;
165:     }
166: 
167:     /**
168:      * Получение параметра с принудительным приведением к цельночисленному (йифровому) варианту
169:      *
170:      * @param string $name    название параметра
171:      * @param string $default значение для параметра по умолчани
172:      * @param array  $vars    массив переменных из которого необходимо получить параметр $name, по умолчанию используется суперглобальный $_REQUEST
173:      *
174:      * @return mixed результат, массив или строка
175:      */
176:     public static function int($name = null, $default = null, $vars = null)
177:     {
178:         return (int) self::param($name, $default, $vars);
179:     }
180: 
181:     /**
182:      * Получение массива параметров
183:      *
184:      * @param string $name    название параметра
185:      * @param string $default значение для параметра по умолчани
186:      * @param array  $vars    массив переменных из которого необходимо получить параметр $name, по умолчанию используется суперглобальный $_REQUEST
187:      *
188:      * @return array результат, массив или строка
189:      */
190:     public static function array_param($name = null, array $default = null, $vars = null)
191:     {
192:         return (array) self::param($name, $default, $vars);
193:     }
194: 
195:     /**
196:      * Получение протокола активного соединения, http или https в случае защищенного соединения
197:      * @return string http или https
198:      */
199:     public static function protocol()
200:     {
201:         return ('on' == self::server('HTTPS') || 443 == self::server('SERVER_PORT')) ? 'https' : 'http';
202:     }
203: 
204:     /**
205:      * Проверка на работу методом GET
206:      * @return bool результат проверки
207:      */
208:     public static function is_get()
209:     {
210:         return 'GET' === strtoupper(self::server('REQUEST_METHOD'));
211:     }
212: 
213:     /**
214:      * Проверка на работу методом POST
215:      * @return bool результат проверки
216:      */
217:     public static function is_post()
218:     {
219:         return 'POST' == strtoupper(self::server('REQUEST_METHOD'));
220:     }
221: 
222:     /**
223:      * Проверка на работу методом PUT
224:      * @return bool результат проверки
225:      */
226:     public static function is_put()
227:     {
228:         return 'PUT' == strtoupper(self::server('REQUEST_METHOD'));
229:     }
230: 
231:     /**
232:      * Проверка на работу методом DELETE
233:      * @return bool результат проверки
234:      */
235:     public static function is_delete()
236:     {
237:         return 'DELETE' == strtoupper(self::server('REQUEST_METHOD'));
238:     }
239: 
240:     /**
241:      * Проверка работы через Ajax-соединение
242:      * @return bool результат проверки
243:      */
244:     public static function is_ajax()
245:     {
246:         return 'xmlhttprequest' == strtolower(self::header('X_REQUESTED_WITH'));
247:     }
248: 
249:     /**
250:      * Проверка работы через через безопасное https соединение
251:      * @return bool результат проверки
252:      */
253:     public static function is_https()
254:     {
255:         return 'https' == self::protocol();
256:     }
257: 
258:     /**
259:      * Получение IP адреса активного пользователя
260:      * @return string IP адрес пользователя, либо FALSE в случае если IP адрес не получен
261:      */
262:     public static function user_ip()
263:     {
264:         $keys = array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'REMOTE_ADDR');
265: 
266:         foreach ($keys as $key) {
267:             if (!isset($_SERVER[$key])) {
268:                 continue;
269:             }
270:             $ips = explode(',', $_SERVER[$key], 1);
271:             $ip = $ips[0];
272:             if (false != ip2long($ip) && long2ip(ip2long($ip) === $ip)) {
273:                 return $ips[0];
274:             }
275:         }
276: 
277:         return false;
278:     }
279: 
280:     /**
281:      * Отправка HTTP заголовков
282:      *
283:      * @static
284:      * @param $code_string
285:      */
286:     public static function send_headers($code_string)
287:     {
288:         header($code_string);
289:     }
290: 
291:     /**
292:      * Установка кода HTTP ответа в заголовок страницы
293:      *
294:      * @tutorial joosRequest::send_headers_by_code(200);
295:      * @tutorial joosRequest::send_headers_by_code(301);
296:      * @tutorial joosRequest::send_headers_by_code(404);
297:      * @tutorial joosRequest::send_headers_by_code(504);
298:      *
299:      * @param int $code_num номер кода
300:      */
301:     public static function send_headers_by_code($code_num = 200)
302:     {
303:         $code_array = array(// Информационные 1xx
304:             100 => 'Continue', 101 => 'Switching Protocols', // Успешный 2xx
305:             200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', // Редиректы 3xx
306:             300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', // 1.1
307:             303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', // 306 зарезервирован
308:             307 => 'Temporary Redirect', // ошибки клиента 4xx
309:             400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', // ошибки сервера 5xx
310:             500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 509 => 'Bandwidth Limit Exceeded');
311: 
312:         // проверяем наличие кода ошибки
313:         if (isset($code_array[$code_num])) {
314: 
315:             $code_message = $code_array[$code_num];
316:         } else {
317: 
318:             throw new joosException('Код :code не поддерживается протоколом HTTP', array(':code' => $code_num));
319:         }
320: 
321:         // версия HTTP протокола
322:         if (isset($_SERVER['SERVER_PROTOCOL'])) {
323:             $protocol = $_SERVER['SERVER_PROTOCOL'];
324:         } else {
325:             $protocol = 'HTTP/1.1';
326:         }
327: 
328:         $code_string = sprintf('%s %s %s', $protocol, $code_num, $code_message);
329: 
330:         self::send_headers($code_string);
331:     }
332: 
333:     /**
334:      * Проверка на запуск скрипта через консаоль
335:      *
336:      * @return bool
337:      */
338:     public static function is_console()
339:     {
340:         return PHP_SAPI === 'cli';
341:     }
342: 
343: }
344: 
Joostina CMS / CMF v2.* API API documentation generated by ApiGen 2.6.1 – Template adapted by @olvlv and Joostina Team