. */ # Known/outstanding issues: # [UNCONFIRMED ISSUE] Plugin seems to keep pinging when importing an XML/WXR file even if pinging is disabled # Plugin does not seem to report any errors if it cannot write to the log file (see E2 blog for example) function SUP_add_options_page(){ if(function_exists("add_options_page")) add_options_page("UP Smart Update Pinger", "UP Smart Update Pinger", 5, basename(__FILE__), "SUP_show_options_page"); } function SUP_show_options_page(){ global $logfile; $ping = get_option("SUP_ping"); $pinglog = get_option("SUP_pinglog"); $uris = get_option("ping_sites"); $forcedpings = false; $SUP_output_log=''; $pingservicesnow = "Ping Services Now!"; $deletelogfile = "Delete Log File"; if(isset($_POST["ping"]) && $_POST["ping"] == $pingservicesnow){ $forcedpings = true; SUP_log(SUP_ping_services($forcedpings).strftime("%D %T")."\tForced pinging services (Homepage)\n\t─────\n"); }elseif(isset($_POST["submit"])){ $uris = $_POST["uris"]; $ping = 0; if($_POST["ping"] == 1) $ping = 1; $pinglog = 0; if($_POST["pinglog"] == 1) $pinglog = 1; update_option("SUP_ping", $ping); update_option("SUP_pinglog", $pinglog); update_option("ping_sites", $uris); echo '

Options saved.

'; }elseif(isset($_POST["delete"]) && $_POST["delete"] == $deletelogfile){ $fh = @fopen($logfile, "w"); if(false === @fwrite($fh, strftime("%D %T")."\tLog file deleted\n\t─────\n")){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } $checked1 = ''; if($ping == 1) $checked1 = 'checked="checked"'; $checked2 = ''; if($pinglog == 1) $checked2 = 'checked="checked"'; echo '

Ultimate Plugins Smart Update Pinger

Click here for installation instructions

Click here for usage instructions

Click here for updated versions

Click here for comments and suggestions

URIs to Ping

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

This plugin also fixes an issue with the default extended ping programming in Wordpress and pre-2.1 versions of Smart Update Pinger (it now includes the url of the new post).

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

Separate multiple service URIs with line breaks:

Ping log

These are the last 100 actions performed by the plugin. In reverse chronological order for easier reading (latest ping first).

'; SUP_get_last_log_entries(500); echo '

'; } # 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; $SUP_output_log="\t─────\n"; $SUP_ping_result=''; $forcedpings = false; if(get_option('SUP_ping') == 1 && trim(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,post_title,guid FROM $wpdb->posts WHERE id=$id")); "SELECT post_date,post_modified,post_title 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_title"]){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (ERROR: YOU HAVE FORGOTTEN TO ENTER A POST TITLE) ...\n".$SUP_output_log; }else{ if($row["post_date"] == $row["post_modified"]){ $SUP_output_log=strftime("%D %T")."\tPinging services (New normal post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # 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{ // Post has been edited or it's a future post // If we have a post title it means that we are in the normal WP loop and therefore it was an edit (not a future post) if($post_title){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (Existing post was edited: “".$row["post_title"]."”) ...\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tPinging services (New timestamped post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # 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 (trim(get_option('ping_sites')) != ""){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: DISABLED BY ADMINISTRATOR)\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: EMPTY PING SERVICES LIST)\n".$SUP_output_log; } } SUP_log($SUP_output_log); } # 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($forcedpings,$SUP_guid = ''){ $SUP_output_log=''; #$services = get_settings('ping_sites'); #UP - 17.07.07 - get_option is newer/better then get_settings $services = get_option('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_output_log=SUP_send_xmlrpc($forcedpings,$SUP_guid,$service).$SUP_output_log; } return $SUP_output_log; } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # Original version: #function weblog_ping($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') ); #if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping #$client->query('weblogUpdates.ping', get_option('blogname'), $home); #} # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($forcedpings,$SUP_guid = '',$server = '', $path = ''){ global $wp_version; $SUP_output_log=''; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 5 seconds should be enough to cover slow servers (changed from 3 to 5) $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 5; $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" (the new URL), and "feed url". # Related Website(s) # http://www.weblogs.com/api.html # An example: # Someblog - Title # http://spaces.msn.com/someblog - Home URL # http://spaces.msn.com/someblog/PersonalSpace.aspx?something - Check/New URL # http://spaces.msn.com/someblog/feed.rss - Feed # Changed the following line therefore: # if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) if ($forcedpings){ # If this is a forced ping it's better to use a regular ping for the homepage without an update URL (safer) if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } }else{ if($client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, $SUP_guid, get_bloginfo('rss2_url'))){ $SUP_output_log=strftime("%D %T")."\t► [Extended Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Updated : '".$SUP_guid."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► RSS URL : '".get_bloginfo('rss2_url')."'\n".$SUP_output_log; } }else{ # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } } } return $SUP_output_log; } $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 $logfile = ABSPATH . 'wp-content/plugins/ultimate-plugins-smart-update-pinger/ultimate-plugins-smart-update-pinger.log'; function SUP_log($SUP_log_output){ global $logfile; $logerror = 0; $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, $SUP_log_output)){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } function SUP_get_last_log_entries($num){ global $logfile; $lines = @file($logfile); if(get_option("SUP_error") == 1){ $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, "")){ echo "Error writing log file (".$logfile."). Most likely your logfile (".$logfile.") is write-protected and no log data can be saved (change the rights of this file to 777), or alternatively this could mean that you have manually removed the log file, or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } @fclose($fh); }else{ if($lines === false){ echo "Error reading log file (".$logfile."). Most likely you have manually removed the log file, or alternatively this could mean that the logfile (".$logfile.") is read-protected (change the rights of this file to 777), or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } } } # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # 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);} if(get_option("SUP_pinglog") === false){update_option("SUP_pinglog", 1);} if(get_option("SUP_error") === false){update_option("SUP_error", 0);} ?> Serve California Tenant with Summons and Complaint

Serve Tenant with Summons and Complaint

Proof of Service of Summons

Once you have successfully filed the Unlawful Detainer with the court you will need to notify the tenant that you are bringing an Unlawful Detainer suit against them. Unfortunately it is not as easy as calling them or knocking on the door and saying I’m suing you because you did not pay me. The correct procedure is to have the tenant served with the stamped copies of the Summons and Complaint that you received from the court clerk when you filed your Unlawful Detainer. Once served, the tenant will have five days to respond to the court. If they do not respond then the landlord can request to enter a default judgment.

Serving the tenant is an important step and must be carried out carefully. It is suggested to hire a professional to serve the papers on the tenant. The charge varies depending on the process server, but range from $60-$100. The reason why you should hire a professional is because they have to serve the papers in person on the tenant you wish to evict. If your tenant is avoiding you, which they most likely will be because they owe you rent, then it will be difficult for you to serve them in person. You also do not want to risk a confrontation with your tenant due to the fact that you are evicting them. Lastly, this step is important and if not carried out correctly it could cause further delay in the eviction process. If the court finds anything wrong with your procedure they may not issue the writ of possession and require that you serve the tenants again, giving the tenants 5 more days to live in your property and also another chance to respond.

Pre-judgment Claim of Right of Possession

Another very important step that some people overlook is to serve what is called a Pre-judgment Claim of Right of Possession along with the Summons and Complaint. This form notified any person living in the property who was not specifically named on the Complaint that they are being evicted. This will prevent someone who is living in the property without the knowledge of the landlord from stalling the eviction because they were not named on the Complaint. Once the Writ of Possession has been issued to the landlord and the sheriff goes to the property to remove the tenant, if someone not named on the Complaint comes forward and says they are living in the property and are unaware of the eviction then the sheriff will not be able to remove that person from the property because they were not properly notified. The landlord will then have to go back to the court and file more paperwork to have this newly identified occupant evicted. This is another area where the law favors the tenant and not the landlord. This situation could occur intentionally, for example a crafty tenant who knows the law (there are many of them who know how to work the system). The crafty tenant may have one of their friends move in and then tell the sheriff who comes to evict the tenant that they live there and had no idea of the eviction. This would then stall the eviction and buy the tenant some more time and allow them to live in your property for free just because of the loophole in the legal system. The situation could also occur legitimately, for example the tenant may rent out a room and pocket the sublease money and never inform the subtenant about the eviction. In either case the landlord will need to protect himself from this situation by having the process server also serve a Pre-judgment Claim of Right of Possession on Unknown Occupants. There is one catch to this, which is that the unknown occupant is given 10 days to respond to the court. This often works to the tenant advantage because they get another 5 days of free rent, but it is worth it for the landlord to go through this extra precaution because it can save time in the long run. After the 5 days have passed you can request default judgement.

Join the Conversation


  1. No, but any adult 18 years of age can serve for you. I recommend hiring a process server, should cost about $100. The process server will serve your tenant and file the paperwork with the court. Process servers can also be helpful in assisting you with paperwork. Call around to a few in your area and ask if they have experience with unlawful detainers.

  2. Can I file the Pre-judgment claim of possession with the summons and complaint forms or is it a separate file and serve process?

  3. Hi,

    You can file the pre-judgement claim with the summons and complaint, they do not need to be served separately.

  4. Hello, we served our ternate with the summons (hired processor) on a Sunday, no response was filed on courts website, we requested a clerks judgement of default Monday morning 8:00am sharp. 1st in line. We do not see our request on the website and now there is a filing of quash of summons by our ternate with a court date. Her filing date shows Monday. How was the ternate able to respond after we had requested a default? Since this just happened is there still a chance that the court clerk will issue the default because we submitted our request prior to her response?

  5. Hi Tami. I need a little more information. You say you hired processor and served on Sunday, then requested the default on Monday. Did you wait a week until the next Monday after serving? Or do you mean the Monday immediately following the day you served? The tenant has 5 days to respond, so if you requested default the day after serving then that could be where the issue is. Also, just because you serve them it does not mean you automatically get the default. After you serve the tenant they have 5 days to respond to the court and request opportunity to state their case. If they responded then that could be the reason why you now have court date set. Some tenants who are aware of the eviction process will respond knowing that buys them more time to stay in your property without paying rent even if they have no intention of going to court. If they do not have good reason for failure to pay and you have followed all the correct steps then you should get a favorable outcome even if the tenant does proceed with the court date. Please keep us posted as to how this turns out.

  6. Can anyone tell me what I can do. I was renting a home that was foreclosed and I was never served with a summons and complaint to leave the property. I just received am notice to vacate the property under the name of the owner. Clearly they have no idea that I;m a tenant. please help

  7. I have been both a tenant AND a landlord. This website & each step described above assumes all tenants are bastards & all landlords are Holy Kings. I have clearly seen that most, yes , most landlords are the bastards. It’s true that some tenants are evil. We rented our million dollar home is SF to what we assumed were mature, professional adults. We were wrong. They ruined the house. Had a dog (which wasn’t allowed), ruined the wall, carpets, appliances, yard. It was a nightmare. Took us months to get them out. And we followed all the processes correctly. However, most tenants aren’t that bad.

  8. Does anyone know how I should handle an eviction notice when it’s my girlfriend whose greedy and who cheated me when we had an arrangement for me to raise her kids and she worked overtime because she made more. Suddenly now she doesn’t need daycare anymore and she’s trying to throw me out so she can sell the house and reap 100 percent of the profits. Greedy right? We had a contract so I’m suing her for that and Ive filed a lis pendes to make it hard for her to sell the house, but how should I respond to the detainer when it finally gets served? Is there a response stating that there’s a suit filed and in place or a way toask to stay longer some how?

Leave a comment

Your email address will not be published. Required fields are marked *

Please enter text below to confirm you are a human *