/**
  * @access public
  *
  * @param string $file
  * @param string $contents
  * @param int|bool $mode
  * @return bool
  */
 public function put_contents($file, $contents, $mode = false)
 {
     $temp = wp_tempnam($file);
     if (!($temphandle = @fopen($temp, 'w+'))) {
         unlink($temp);
         return false;
     }
     // The FTP class uses string functions internally during file download/upload
     mbstring_binary_safe_encoding();
     $bytes_written = fwrite($temphandle, $contents);
     if (false === $bytes_written || $bytes_written != strlen($contents)) {
         fclose($temphandle);
         unlink($temp);
         reset_mbstring_encoding();
         return false;
     }
     fseek($temphandle, 0);
     // Skip back to the start of the file being written to
     $ret = $this->ftp->fput($file, $temphandle);
     reset_mbstring_encoding();
     fclose($temphandle);
     unlink($temp);
     $this->chmod($file, $mode);
     return $ret;
 }