<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /**
* CodeIgniter
*
* An open source application development framework for PHP 5.1.6 or newer
*
* @package CodeIgniter
* @author ExpressionEngine Dev Team
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://c...content-available-to-author-only...r.com/user_guide/license.html
* @link http://c...content-available-to-author-only...r.com
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
/**
* Logging Class
*
* @package CodeIgniter
* @subpackage Libraries
* @category Logging
* @author ExpressionEngine Dev Team
* @link http://c...content-available-to-author-only...r.com/user_guide/general/errors.html
*/
class CI_Log {
protected $_log_path;
protected $_threshold = 1;
protected $_date_fmt = 'Y-m-d H:i:s';
protected $_enabled = TRUE;
protected $_levels = array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4');
/**
* Constructor
*/
public function __construct()
{
$config =& get_config();
$this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';
if ( ! is_dir($this->_log_path
) OR
! is_really_writable
($this->_log_path
)) {
$this->_enabled = FALSE;
}
{
$this->_threshold = $config['log_threshold'];
}
if ($config['log_date_format'] != '')
{
$this->_date_fmt = $config['log_date_format'];
}
var_dump(is_image_exists
("https://m...content-available-to-author-only...s.com/616426713.jpg")); var_dump(is_image_exists
("https://m...content-available-to-author-only...s.com/625420833.jpg")); }
// --------------------------------------------------------------------
/**
* Write Log File
*
* Generally this function will be called using the global log_message() function
*
* @param string the error level
* @param string the error message
* @param bool whether the error is a native PHP error
* @return bool
*/
public function write_log($level = 'error', $msg, $php_error = FALSE)
{
if ($this->_enabled === FALSE)
{
return FALSE;
}
if ( ! isset($this->_levels
[$level]) OR
($this->_levels
[$level] > $this->_threshold
)) {
return FALSE;
}
$filepath = $this->_log_path
.'log-'.date('Y-m-d').'.php'; $message = '';
{
$message .= "<"."?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
}
if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE
)) {
return FALSE;
}
$message .= $level.' '.(($level == 'INFO') ?
' -' : '-').' '.date($this->_date_fmt
). ' --> '.$msg."\n";
@chmod($filepath, FILE_WRITE_MODE
); return TRUE;
}
function is_image_exists($url) {
curl_setopt($ch, CURLOPT_NOBODY
, true); // Don’t download the body curl_setopt($ch, CURLOPT_FOLLOWLOCATION
, true); // Handle redirects curl_setopt($ch, CURLOPT_TIMEOUT
, 5); // Optional: prevent long waits
}
}
// END Log Class
/* End of file Log.php */
/* Location: ./system/libraries/Log.php */
PD9waHAgIGlmICggISBkZWZpbmVkKCdCQVNFUEFUSCcpKSBleGl0KCdObyBkaXJlY3Qgc2NyaXB0IGFjY2VzcyBhbGxvd2VkJyk7Ci8qKgogKiBDb2RlSWduaXRlcgogKgogKiBBbiBvcGVuIHNvdXJjZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBmcmFtZXdvcmsgZm9yIFBIUCA1LjEuNiBvciBuZXdlcgogKgogKiBAcGFja2FnZQkJQ29kZUlnbml0ZXIKICogQGF1dGhvcgkJRXhwcmVzc2lvbkVuZ2luZSBEZXYgVGVhbQogKiBAY29weXJpZ2h0CUNvcHlyaWdodCAoYykgMjAwOCAtIDIwMTEsIEVsbGlzTGFiLCBJbmMuCiAqIEBsaWNlbnNlCQlodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vdXNlcl9ndWlkZS9saWNlbnNlLmh0bWwKICogQGxpbmsJCWh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbQogKiBAc2luY2UJCVZlcnNpb24gMS4wCiAqIEBmaWxlc291cmNlCiAqLwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogTG9nZ2luZyBDbGFzcwogKgogKiBAcGFja2FnZQkJQ29kZUlnbml0ZXIKICogQHN1YnBhY2thZ2UJTGlicmFyaWVzCiAqIEBjYXRlZ29yeQlMb2dnaW5nCiAqIEBhdXRob3IJCUV4cHJlc3Npb25FbmdpbmUgRGV2IFRlYW0KICogQGxpbmsJCWh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS91c2VyX2d1aWRlL2dlbmVyYWwvZXJyb3JzLmh0bWwKICovCmNsYXNzIENJX0xvZyB7CgoJcHJvdGVjdGVkICRfbG9nX3BhdGg7Cglwcm90ZWN0ZWQgJF90aHJlc2hvbGQJPSAxOwoJcHJvdGVjdGVkICRfZGF0ZV9mbXQJPSAnWS1tLWQgSDppOnMnOwoJcHJvdGVjdGVkICRfZW5hYmxlZAk9IFRSVUU7Cglwcm90ZWN0ZWQgJF9sZXZlbHMJPSBhcnJheSgnRVJST1InID0+ICcxJywgJ0RFQlVHJyA9PiAnMicsICAnSU5GTycgPT4gJzMnLCAnQUxMJyA9PiAnNCcpOwoKCS8qKgoJICogQ29uc3RydWN0b3IKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKCXsKCQkkY29uZmlnID0mIGdldF9jb25maWcoKTsKCgkJJHRoaXMtPl9sb2dfcGF0aCA9ICgkY29uZmlnWydsb2dfcGF0aCddICE9ICcnKSA/ICRjb25maWdbJ2xvZ19wYXRoJ10gOiBBUFBQQVRILidsb2dzLyc7CgoJCWlmICggISBpc19kaXIoJHRoaXMtPl9sb2dfcGF0aCkgT1IgISBpc19yZWFsbHlfd3JpdGFibGUoJHRoaXMtPl9sb2dfcGF0aCkpCgkJewoJCQkkdGhpcy0+X2VuYWJsZWQgPSBGQUxTRTsKCQl9CgoJCWlmIChpc19udW1lcmljKCRjb25maWdbJ2xvZ190aHJlc2hvbGQnXSkpCgkJewoJCQkkdGhpcy0+X3RocmVzaG9sZCA9ICRjb25maWdbJ2xvZ190aHJlc2hvbGQnXTsKCQl9CgoJCWlmICgkY29uZmlnWydsb2dfZGF0ZV9mb3JtYXQnXSAhPSAnJykKCQl7CgkJCSR0aGlzLT5fZGF0ZV9mbXQgPSAkY29uZmlnWydsb2dfZGF0ZV9mb3JtYXQnXTsKCQl9CgkJCgkJdmFyX2R1bXAoaXNfaW1hZ2VfZXhpc3RzKCJodHRwczovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuY29tLzYxNjQyNjcxMy5qcGciKSk7IAogICAgICAgIHZhcl9kdW1wKGlzX2ltYWdlX2V4aXN0cygiaHR0cHM6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS82MjU0MjA4MzMuanBnIikpOwoJfQoKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLyoqCgkgKiBXcml0ZSBMb2cgRmlsZQoJICoKCSAqIEdlbmVyYWxseSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHVzaW5nIHRoZSBnbG9iYWwgbG9nX21lc3NhZ2UoKSBmdW5jdGlvbgoJICoKCSAqIEBwYXJhbQlzdHJpbmcJdGhlIGVycm9yIGxldmVsCgkgKiBAcGFyYW0Jc3RyaW5nCXRoZSBlcnJvciBtZXNzYWdlCgkgKiBAcGFyYW0JYm9vbAl3aGV0aGVyIHRoZSBlcnJvciBpcyBhIG5hdGl2ZSBQSFAgZXJyb3IKCSAqIEByZXR1cm4JYm9vbAoJICovCglwdWJsaWMgZnVuY3Rpb24gd3JpdGVfbG9nKCRsZXZlbCA9ICdlcnJvcicsICRtc2csICRwaHBfZXJyb3IgPSBGQUxTRSkKCXsKCQlpZiAoJHRoaXMtPl9lbmFibGVkID09PSBGQUxTRSkKCQl7CgkJCXJldHVybiBGQUxTRTsKCQl9CgoJCSRsZXZlbCA9IHN0cnRvdXBwZXIoJGxldmVsKTsKCgkJaWYgKCAhIGlzc2V0KCR0aGlzLT5fbGV2ZWxzWyRsZXZlbF0pIE9SICgkdGhpcy0+X2xldmVsc1skbGV2ZWxdID4gJHRoaXMtPl90aHJlc2hvbGQpKQoJCXsKCQkJcmV0dXJuIEZBTFNFOwoJCX0KCgkJJGZpbGVwYXRoID0gJHRoaXMtPl9sb2dfcGF0aC4nbG9nLScuZGF0ZSgnWS1tLWQnKS4nLnBocCc7CgkJJG1lc3NhZ2UgID0gJyc7CgoJCWlmICggISBmaWxlX2V4aXN0cygkZmlsZXBhdGgpKQoJCXsKCQkJJG1lc3NhZ2UgLj0gIjwiLiI/cGhwICBpZiAoICEgZGVmaW5lZCgnQkFTRVBBVEgnKSkgZXhpdCgnTm8gZGlyZWN0IHNjcmlwdCBhY2Nlc3MgYWxsb3dlZCcpOyA/Ii4iPlxuXG4iOwoJCX0KCgkJaWYgKCAhICRmcCA9IEBmb3BlbigkZmlsZXBhdGgsIEZPUEVOX1dSSVRFX0NSRUFURSkpCgkJewoJCQlyZXR1cm4gRkFMU0U7CgkJfQoKCQkkbWVzc2FnZSAuPSAkbGV2ZWwuJyAnLigoJGxldmVsID09ICdJTkZPJykgPyAnIC0nIDogJy0nKS4nICcuZGF0ZSgkdGhpcy0+X2RhdGVfZm10KS4gJyAtLT4gJy4kbXNnLiJcbiI7CgoJCWZsb2NrKCRmcCwgTE9DS19FWCk7CgkJZndyaXRlKCRmcCwgJG1lc3NhZ2UpOwoJCWZsb2NrKCRmcCwgTE9DS19VTik7CgkJZmNsb3NlKCRmcCk7CgoJCUBjaG1vZCgkZmlsZXBhdGgsIEZJTEVfV1JJVEVfTU9ERSk7CgkJcmV0dXJuIFRSVUU7CgkJCgkJCgl9CgkKCWZ1bmN0aW9uIGlzX2ltYWdlX2V4aXN0cygkdXJsKSB7CiAgICAkY2ggPSBjdXJsX2luaXQoJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfTk9CT0RZLCB0cnVlKTsgLy8gRG9u4oCZdCBkb3dubG9hZCB0aGUgYm9keQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgdHJ1ZSk7IC8vIEhhbmRsZSByZWRpcmVjdHMKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCA1KTsgLy8gT3B0aW9uYWw6IHByZXZlbnQgbG9uZyB3YWl0cwogICAgY3VybF9leGVjKCRjaCk7CiAgICAkaHR0cF9jb2RlID0gY3VybF9nZXRpbmZvKCRjaCwgQ1VSTElORk9fSFRUUF9DT0RFKTsKICAgIGN1cmxfY2xvc2UoJGNoKTsKCiAgICByZXR1cm4gaW5fYXJyYXkoJGh0dHBfY29kZSwgWzIwMF0pOwp9CgkKCQoKfQovLyBFTkQgTG9nIENsYXNzCgovKiBFbmQgb2YgZmlsZSBMb2cucGhwICovCi8qIExvY2F0aW9uOiAuL3N5c3RlbS9saWJyYXJpZXMvTG9nLnBocCAqLw==