/**
  * Function log any own error
  */
 public static function write($message, $err_file, $err_line)
 {
     $err_message = "[" . date('r') . "] {$message} ({$err_file}:{$err_line})\n";
     if (qpimg_config::get_option('log_file')) {
         if (@file_put_contents(qpimg_config::get_option('log_file'), $err_message, FILE_APPEND)) {
             return true;
         }
     }
     print "<div><strong>qpimg message:</strong><br />{$err_message}</div>";
     return true;
 }
예제 #2
0
 /**
  * Generate string to empty-image (look at config)
  * 
  * @return string empty-image source
  */
 public static function get_empty_image_src()
 {
     return qpimg_config::get_option('empty_image_src');
 }
예제 #3
0
 /**
  * Redirect (mean read from file and output) to CSS-file of current map.
  * Almost generate header-values.
  * 
  * @param array $map_cfg map-config array
  * 
  * @return bool is redirect done 
  */
 public static function redirect($map_cfg)
 {
     $filename = self::get_valid_css_source($map_cfg, isset($map_cfg['attach']));
     if ($filename === false) {
         return false;
     }
     //---------------------------------------------------------------------
     $cache_timeout = qpimg_config::get_option('cache_time_expire');
     $headers = array();
     $headers['Expires'] = gmdate('D, d M Y H:i:s \\G\\M\\T', time() + $cache_timeout);
     $headers['Last-Modified'] = gmdate('D, d M Y H:i:s \\G\\M\\T', filemtime($filename));
     $headers['ETag'] = "\"qpimg-{$map_cfg['id']}-{$map_cfg['hash']}\"";
     //---------------------------------------------------------------------
     $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : false;
     $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) : false;
     if ($if_none_match && $if_none_match == $headers['ETag']) {
         $headers[':Response-Code'] = 304;
         $filename = false;
     } elseif ($if_modified_since && $if_modified_since == $headers['Last-Modified']) {
         $headers[':Response-Code'] = 304;
         $filename = false;
     } else {
         $headers['Content-Type'] = 'text/css';
         $headers['Cache-Control'] = "max-age={$cache_timeout}, public, must-revalidate";
     }
     qpimg_utils::send_headers($headers);
     if ($filename !== false) {
         @readfile($filename);
     }
     return true;
 }
예제 #4
0
 /**
  * Prepare media-items array by map-config array. 
  * Make media-items objects & detect count of data:URI objects.
  * 
  * @param array & $map_cfg map-config array (save result in it)
  * 
  * @return bool true
  */
 private static function prepare_media_items(&$map_cfg)
 {
     $media_items = array();
     $dataURI_files_count = 0;
     //----------------------------------------------------------------------
     // Prepare map-default presets array
     $default_presets = array('@');
     if (isset($map_cfg['default_presets']) === true) {
         $tmp_default_presets = explode('@', $map_cfg['default_presets']);
         foreach ($tmp_default_presets as $tmp_default_preset) {
             if ($tmp_default_preset == '' || $tmp_default_preset[0] == '~') {
                 continue;
             }
             $default_presets[] = $tmp_default_preset;
         }
         unset($tmp_default_presets, $tmp_default_preset);
     }
     //----------------------------------------------------------------------
     foreach ($map_cfg['objects'] as $media_id => $media_cfg) {
         list($media_id, $presets, $media_source, $media_cfg) = self::parse_media_values($media_id, $media_cfg);
         $safe_media_source = self::parse_media_source($media_source, $map_cfg['id']);
         if ($safe_media_source === false) {
             $media_items[$media_id] = new media_item_crash();
             qpimg_logger::write("QPIMG_NOTICE: Failed on get file '{$media_source}' (map_id - '{$map_cfg['id']}'; media_id - '{$media_id}')", __FILE__, __LINE__);
             continue;
         }
         $img_attrs = getimagesize($safe_media_source);
         if ($img_attrs === false) {
             $media_items[$media_id] = new media_item_crash();
             qpimg_logger::write("QPIMG_NOTICE: Failed on get image size '{$media_source}' (map_id - '{$map_cfg['id']}'; media_id - '{$media_id}')", __FILE__, __LINE__);
             continue;
         }
         list($img_width, $img_height, $img_imagetype) = $img_attrs;
         $media_item = new media_item_cfg($media_source, $img_width, $img_height, $img_imagetype);
         //-----------------------------------------------------------------
         if (filesize($safe_media_source) > qpimg_config::get_option('dataURI_filesize_limit')) {
             $media_item->set('data:URI', false);
         } elseif ($map_cfg['data:URI'] === true) {
             $media_item->set('data:URI', true);
         }
         //---[1] Apply presets config attributes---
         $set_presets = array_merge($default_presets, $presets['set']);
         foreach ($set_presets as $preset_id) {
             $preset_id = trim($preset_id);
             if ($preset_id == '') {
                 continue;
             }
             if (in_array($preset_id, $presets['unset']) === true) {
                 continue;
             }
             $preset_attrs = qpimg_config::get_preset($preset_id);
             if ($preset_attrs === false) {
                 qpimg_logger::write("QPIMG_NOTICE: Undefined preset id '{$preset_id}' (map_id - '{$map_cfg['id']}'; media_id - '{$media_id}')", __FILE__, __LINE__);
                 continue;
             }
             foreach ($preset_attrs as $cfg_key => $cfg_value) {
                 $media_item->set($cfg_key, $cfg_value);
             }
         }
         //---[2] Apply own config attributes---
         foreach ($media_cfg as $cfg_key => $cfg_value) {
             $media_item->set($cfg_key, $cfg_value);
         }
         if ($media_item->get('data:URI') === true) {
             $dataURI_files_count++;
         }
         $media_items[$media_id] = $media_item;
     }
     $map_cfg['objects:items'] = $media_items;
     $map_cfg['objects:dataURI_files_count'] = $dataURI_files_count;
     return true;
 }