Options saved.

'; } $checked = ''; if($ping == 1) $checked = 'checked="checked"'; echo '

URIs to Ping

The following services will automatically be pinged/notified when you publish posts. Not when you edit previously published posts, as WordPress does by default.

NB: this list is synchronized with the original update services list.

Separate multiple service URIs with line breaks:

Ping log

These are the lastest actions performed by the plugin.

'.SUP_get_last_log_entries(20).'

'; } # telling WordPress to ping if the post is new, but not if it's just been edited function SUP_ping_if_new($id) { global $wpdb, $post_title; if(get_option('SUP_ping') == 1 and get_option('ping_sites') != "") { # fetches data directly from database; the function "get_post" is cached, # and using it here will get the post as is was before the last save $row = mysql_fetch_array(mysql_query( "SELECT post_date,post_modified FROM $wpdb->posts WHERE id=$id")); # if time when created equals time when modified it is a new post, # otherwise the author has edited/modified it if($row["post_date"] == $row["post_modified"]) { if($post_title) SUP_log("Pinging services (new post: “".$post_title."”) ..."); else SUP_log("Pinging services (new post) ..."); SUP_ping_services(); # Try commenting the line above, and uncommenting this line below # if pinging seems to be out of order. Please notify the author if it helps! # generic_ping(); } else { if($post_title) SUP_log("NOT pinging services (“".$post_title."” was edited)"); else SUP_log("NOT pinging services (a post was edited)"); } } else SUP_log("NOT pinging services (disabled by administrator)"); } # More or less a copy of WP's "generic_ping" from functions.php, # but uses another function to send the actual XML-RPC messages. function SUP_ping_services() { $services = get_settings('ping_sites'); $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines $services = trim($services); if ( '' != $services ) { $services = explode("\n", $services); foreach ($services as $service) SUP_send_xmlrpc($service); } } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($server = '', $path = '') { global $wp_version; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 3 seconds should be enough to cover slow servers $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 3; $client->useragent .= ' -- WordPress/'.$wp_version; // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit( get_option('home') ); # the extendedPing format should be "blog name", "blog url", "check url" (whatever that is), and "feed url", # but it would seem as if the standard has been mixed up. it's therefore best to repeat the feed url. if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) { SUP_log("- ".$server." was successfully pinged (extended format)"); } else { # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_settings('blogname'), $home)) { SUP_log("- ".$server." was successfully pinged"); } else { SUP_log("- ".$server." could not be pinged. Error message: “".$client->error->message."”"); } } } $post_title = ""; # Receives the title of the post from a filter below function SUP_post_title($title) { global $post_title; $post_title = $title; return $title; } # ----- # Log stuff $logfile = ABSPATH."wp-content/smart-update-pinger.log"; # for debugging function SUP_log($line) { global $logfile; $fh = @fopen($logfile, "a"); @fwrite($fh, strftime("%D %T")."\t$line\n"); @fclose($fh); } function SUP_get_last_log_entries($num) { global $logfile; $lines = @file($logfile); if($lines === false) return "Error reading log file (".$logfile."). This could mean that the wp-content directory is write-protected and no log data can be saved, that you have manually removed the log file, or that you have recently upgraded the plugin."; else { $lines = array_slice($lines, count($lines) - $num); $msg = ""; foreach($lines as $line) $msg .= trim($line)."
"; return $msg; } } # ----- # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # adds some hooks # shows the options in the administration panel add_action("admin_menu", "SUP_add_options_page"); # calls SUP_ping whenever a post is published add_action("publish_post", "SUP_ping_if_new"); # calls SUP_ping_draft when changing the status from private/draft to published # add_action("private_to_published', 'SUP_ping_draft'); # removes the "WordPress official" pinging hook remove_action("publish_post", "generic_ping"); # activates pinging if setting doesn't exist in database yet # (before the user has changed the settings the first time) if(get_option("SUP_ping") === false) { update_option("SUP_ping", 1); } ?> Curriculum vitae | Staffan Malmgrens blogg

Curriculum vitae

Profil

Jag har en bakgrund som systemutvecklare och företagare. 2005 började jag studera juridik och har nu en jur.kand-examen. Jag är bra på att se sambanden mellan en verksamhets tekniska, affärsmässiga och juridiska förutsättningar, och jag gillar att arbeta med att även få andra att förstå dem.

Erfarenhet

Utredningssekreterare, Uppgiftslämnarutredningen (N 2012:01)

Notarie, förvaltningsrätten i Stockholm  — jan 2012 (f.n. tjänstledig)

Projektledare, Domstolsverket  — jan 2010-december 2011

Jag har framförallt ansvarat för utvecklingen av det offentliga rättsinformationssystemet. Arbetet innefattar att leda utveckling och förvaltning av en standard och ett system för publicering av grundläggande rättsinformation på Internet, och samordnande av myndigheter som ska publicera information i systemet. Systemet regleras av rättsinformationsförordningen (1999:175) och syftar till att göra grundläggande rättsinformation mer tillgänglig för enskilda och den offentliga förvaltningen. Jag har även haft produktansvar för domstolsverkets egna rättsinformationstjänster.

Lärare, Juridicum — dec 2008-pågående

Håller/har hållit seminarier och föreläsningar på följande kurser/program:

  • Rättsinformatik,med fokus på offentlighetsprincipen, e-förvaltning, e-handel och personuppgiftslagen (även examination)
  • Experimentell immaterialrätt (”Tekniken på internet”)
  • Master Programme in Law and IT (”The technology of social networks”)
  • GRiM Winter School (”Relevance ranking”)

Grundare, Lagen.nu — nov 2004–pågående

Lagen.nu är en fri rättsinformationstjänst med lagar, förordningar och vägledande rättsfall, samt förklarande kommentarer för många lagar och juridiska begrepp. Tjänsten har i dagsläget ca 120 000 unika besökare per månad. Utvecklingen har delvis finansierats med stipendium från Internetfonden (IIS-stiftelsen) för att avlöna juriststudenter och färdiga jurister för att skriva kommentarer. Publikationer om projektet:

Styrelseledamot, Svenska föreningen för IT och juridik (ADBJ) — april 2009-april 2012

ADBJ anordnar seminarier om aktuella ämnen inom IT och juridik, och delar även ut stipendier för arbeten i området. Jag anordnade seminarier och ansvarade för föreningens webbplats, samt var föreningens kassör.

Systemutveckling, Blendow Group — december 2007–april 2009

Jag arbetade med att vidareutveckla webbplatsen webbplatsen Lexnova för att hantera redaktionell publicering av rättsinformation.

Frilansskribent, IDG — september 2007–januari 2009

Jag skrev analyser, kommentarer och artiklar med fokus på juridik och IT i tidningen Techworld (47 000 läsare).

Konsult, Verket för förvaltningsutveckling (Verva) — oktober 2006–juni 2007

Jag hjälpte Verva med att konstruera en begreppsmodell för att hantera svensk rättsinformation, vilket resulterade i specifikationen för ESFR, inom ramen för rättsinformationsprojektet.

Forskningsamanuens, Institutet för rättsinformatik — augusti 2005-december 2008

Forskningsamanuens på IRI vid Stockholms Universitet. Jag arbetade med inköp och underhåll av institutets bibliotek, skötte om webbplatser för institutet och associerade projekt, assisterade med administrativa och undervisningsuppgifter i kursen Rättsinformatik på juristlinjens grundutbildning, m.m. Inom ramen för tjänsten var jag även kanslist för Stiftelsen för Rättsinformation.

Medgrundare, Ehand — oktober 1998-december 2004

Företaget utvecklade lösningar för mobildataplattformar med fokus på synkronisering av information med företags affärssystem. Som medgrundare fick jag pröva på många olika sysslor, som projektledare, IT-chef, marknadsföring med mera. Företaget hade som mest 45 anställda, och såldes i maj 2002 till det amerikanska företaget Xcellenet, vilket i sin tur såldes till iAnywhere (Sybase) juni 2004.

Tidigare arbete i sammandrag

  • IDG.se —  september 2003 – juni 2004
  • Spray Interactive AB/Razorfish Interactive AB — februari 1996–oktober 1998
  • Bonnier Datamedia —  juli 1998
  • MNW Records —  1995–1997

Utbildning

  • Juridisk grundutbildning, Stockholms universitet —  januari 2005-oktober 2011. Examensarbete inom rättsinformatik, ”Towards a theory of jurisprudential relevance ranking – Using link analysis on EU case law”
  • Datavetenskaplig linje, Uppsala universitet —  augusti 1994–februari 1996, ej avslutad
  • Naturvetenskaplig linje —  augusti 1991–juni1994

Referenser

Tillgängliga på begäran

Programmering, juridik, punkrock och andra trivialiteter