diff --git a/gcal-import-admin.php b/gcal-import-admin.php index 0bb4130..78e1955 100644 --- a/gcal-import-admin.php +++ b/gcal-import-admin.php @@ -65,6 +65,9 @@ function gcal_admin_init(){ add_settings_section('gcal_geocoding', 'Geocoding', 'gcal_geocoding_section_text', 'gcal'); add_settings_field('gcal_geocoding', 'Geocoding', 'gcal_geocoding_setting_string', 'gcal', 'gcal_geocoding'); + + add_settings_section('gcal_debugging', 'Debugging', 'gcal_debugging_section_text', 'gcal'); + add_settings_field('gcal_debugging', 'Debugging', 'gcal_debugging_setting_string', 'gcal', 'gcal_debugging'); } @@ -133,7 +136,7 @@ function gcal_geocoding_setting_string() { ), array( 'option' => 'osm', - 'name' => 'OpenStreetMap - in Entwicklung', + 'name' => 'OpenStreetMap', ), ); @@ -149,6 +152,22 @@ function gcal_geocoding_setting_string() { } +function gcal_debugging_section_text() { +?> +

Debugging aktivieren (landet in ${APACHE_LOG_DIR}/error.log).

+'; + // actual logging is done by gcal_error_log() +} + + function gcal_options_validate($input) { return $input; diff --git a/gcal-import-geocode.php b/gcal-import-geocode.php index 40b5d5a..b8c80be 100644 --- a/gcal-import-geocode.php +++ b/gcal-import-geocode.php @@ -126,7 +126,7 @@ Suchen: if ( isset ( $options['geocache']['hashx'] ) ) ... 'gcal_geo_lon' => $lon, 'gcal_geo_timestamp' => time(), )); - error_log ("INFO: geocoded and cached lat=$lat lon=$lon for location $location"); + gcal_error_log ("INFO: geocoded and cached lat=$lat lon=$lon for location $location"); } // error handling? } @@ -138,7 +138,7 @@ function gcal_import_geocode_official($location) { $options = get_option('gcal_options'); $apikey = $options['apikey']; if ( empty ($apikey) ) { // ??? we should handle this in the admin frontend. - error_log ("WARN: using Google official geocoding but provided no APIKEY"); + gcal_error_log ("WARN: using Google official geocoding but provided no APIKEY"); return array ('',''); } else { $location = urlencode($location); @@ -171,7 +171,7 @@ function gcal_import_geocode_osm($location) { // https://wiki.openstreetmap.org/wiki/Nominatim // https://nominatim.openstreetmap.org/search?q=Hotel+Gumberger+Gasthof+GmbH&format=json' $location = urlencode($location); - error_log ("gcal_import_geocode_osm: location $location"); + gcal_error_log ("gcal_import_geocode_osm: location $location"); // the main problem with Nominatim is that it doesn't understand GCal location information very well. // we ought to cut off the location name and the country, i.e. zip code, city & street address only $url = 'https://nominatim.openstreetmap.org/search?q="' . $location . '"&format=json'; @@ -182,7 +182,7 @@ function gcal_import_geocode_osm($location) { // https://www.php.net/manual/en/function.json-decode.php $decoded = json_decode($json, true); - // TODO error handling + // TODO error handling e.g. if we get no usable values. /* $file = dirname (__FILE__) . '/json-decoded.txt'; // should simply be ->lat and -> lon @@ -191,9 +191,7 @@ function gcal_import_geocode_osm($location) { */ $lat = $decoded['0']['lat']; $lon = $decoded['0']['lon']; -/* - error_log ("gcal_import_geocode_osm found lat=$lat lon=$lon loc $location"); -*/ + gcal_error_log ("gcal_import_geocode_osm found lat=$lat lon=$lon loc $location"); return array ($lat, $lon); } @@ -216,9 +214,9 @@ function gcal_import_geocode_inofficial($location) { } elseif (429 == $http_code) { time.sleep(2); ++$attempts; - error_log ("got $attempts HTTP 429 Too Many Requests on $url"); + gcal_error_log ("INFO: got $attempts HTTP 429 Too Many Requests on $url"); } else { - error_log ("Ärgerlicher HTTP Fehler $http_code"); + gcal_error_log ("WARN: Unspecified HTTP error $http_code"); return array ('', ''); } } diff --git a/gcal-import-worker.php b/gcal-import-worker.php index d71221b..2a26535 100644 --- a/gcal-import-worker.php +++ b/gcal-import-worker.php @@ -34,7 +34,7 @@ function gcal_import_worker() { foreach($terms as $term){ $unique_id = 'gcal_feed_' . $term->name; if ( empty ( $options[$unique_id] ) || $options[$unique_id] == '' ) { - error_log ( "INFO: link for event category $term->name is not known; next"); + gcal_error_log ( "INFO: link for event category $term->name is not known; next"); continue; } @@ -66,7 +66,7 @@ The update and delete logic goes as follows: } // now we process the current feed. $link = $options[$unique_id]; - error_log ("INFO: now importing event cat $term->name, link $link"); + gcal_error_log ("INFO: now importing event cat $term->name, link $link"); gcal_import_do_import($term->name, $link); // look if there are any published event posts in the current event category which were not posted anew or updated (ie recent == false) @@ -90,7 +90,7 @@ The update and delete logic goes as follows: foreach( $post_ids as $post_id ) { $id = $post_id->ID; wp_trash_post( $id ); - error_log ("Event post $id gelöscht."); + gcal_error_log ("Event post $id gelöscht."); } } @@ -131,7 +131,7 @@ function gcal_import_do_import($category, $link) { if ($r['DTEND'] < $now) { continue; } else { - error_log ("INFO: processing $summary on $dtstart"); + gcal_error_log ("INFO: processing $summary on $dtstart"); } // The zeitstempel. No idea what it's for, but kal3000 seems to use it. @@ -193,7 +193,7 @@ function gcal_import_do_import($category, $link) { // create image attachment and associate with new post $attach = $r['ATTACH']; $summary = $r['SUMMARY']; - error_log ("INFO: found attachment $attach for $summary"); + gcal_error_log ("INFO: found attachment $attach for $summary"); } if ( isset ( $r['CLASS'] ) && 'PRIVATE' == $r['CLASS']) { @@ -263,7 +263,7 @@ function gcal_import_do_import($category, $link) { $post_id = wp_insert_post( $post ); if ( is_wp_error( $post_id ) ) { $message = $post_id->get_error_message(); - error_log ( "WARN: $message" ); + gcal_error_log ( "WARN: $message" ); } else { update_post_meta( $post_id, '_edit_last', $user_id ); $now = time(); @@ -271,7 +271,7 @@ function gcal_import_do_import($category, $link) { update_post_meta( $post_id, '_edit_lock', $lock ); // and assign the taxonomy type and event category. wp_set_object_terms( $post_id, $category, 'termine_type' ); - error_log ("INFO: posted new post $post_id"); + gcal_error_log ("INFO: posted new post $post_id"); } } else { // good, the post exists already. @@ -285,19 +285,19 @@ function gcal_import_do_import($category, $link) { $post_id = wp_update_post( $post, false ); // and update the _created field update_post_meta ( $id, '_gcal_created', $lastmodified ); - error_log ("INFO: updated post $post_id"); + gcal_error_log ("INFO: updated post $post_id"); } elseif ( $lastmodified == $created ) { // it was not modified after we created it, so we only update the recent tag. } elseif ( $lastmodified < $created ) { // iiiiek! A time reversal or a secret time machine! That should not happen! - error_log ("WARN: post $id last-modified : created $lastmodified < $created "); + gcal_error_log ("WARN: post $id last-modified : created $lastmodified < $created "); } // and set the event to recent = true no matter what. update_post_meta ( $id, '_gcal_recent', 'true' ); } } else { $file = dirname (__FILE__) . '/get_posts-' . $post->post_name . '.txt'; - error_log ("WARN: hmmm, get_posts() did not return an array. Logging to $file"); + gcal_error_log ("WARN: hmmm, get_posts() did not return an array. Logging to $file"); file_put_contents ($file, var_export ($post_ids, TRUE)); } // and on the next entry. diff --git a/gcal-import.php b/gcal-import.php index 35ba5c9..9f1ca30 100644 --- a/gcal-import.php +++ b/gcal-import.php @@ -129,3 +129,17 @@ function gcal_import_uninstall() register_uninstall_hook( __FILE__, 'gcal_import_uninstall' ); + +/* + * Debug logging if debugging is activated + * + * @since 0.3.0 + */ + +function gcal_error_log($args) { + $options = get_option('gcal_options'); + if ( isset ( gcal_options['gcal_debugging'] ) && '1' == gcal_options['gcal_debugging'] ) { + error_log ( $args ); + } +} +