comparison Calcon.pm @ 19:7dfd5644478b

validation
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 11 Oct 2013 09:25:35 +0900
parents 12ddd9dd9fc6
children 3fcdab33e15d
comparison
equal deleted inserted replaced
18:12ddd9dd9fc6 19:7dfd5644478b
2888 } 2888 }
2889 2889
2890 # if ($record{'date'}->is_allday() && $self->{'-fake-allday'}) { 2890 # if ($record{'date'}->is_allday() && $self->{'-fake-allday'}) {
2891 # $record{'date'}=$record{'date'}->add($self->{'-time-for-allday'}); 2891 # $record{'date'}=$record{'date'}->add($self->{'-time-for-allday'});
2892 # } 2892 # }
2893 my $dtstart = "\nDTSTART;TZID=$timezone:".$self->date($record{'date'}); 2893 my $dtstart = "\r\nDTSTART;TZID=$timezone:".$self->date($record{'date'});
2894 my $dtend = ''; 2894 my $dtend = '';
2895 my $dtstamp = ''; 2895 my $dtstamp = '';
2896 2896
2897 if (! $record{'date'}->is_allday()) { 2897 if (! $record{'date'}->is_allday()) {
2898 if (! defined( $record{'end-date'}) || $record{'end-date'} == $record{'date'} ) { 2898 if (! defined( $record{'end-date'}) || $record{'end-date'} == $record{'date'} ) {
2899 # $dtend = "\nDURATION:PT2H"; this is useless for iCal 2899 # $dtend = "\nDURATION:PT2H"; this is useless for iCal
2900 $record{'end-date'} = $record{'date'}->add( 2900 $record{'end-date'} = $record{'date'}->add(
2901 $self->{'-add-time-for-allday'}); 2901 $self->{'-add-time-for-allday'});
2902 $dtend = "\nDTEND;TZID=$timezone:".$self->date($record{'end-date'}); 2902 $dtend = "\r\nDTEND;TZID=$timezone:".$self->date($record{'end-date'});
2903 } else { 2903 } else {
2904 $dtend = "\nDTEND;TZID=$timezone:".$self->date($record{'end-date'}); 2904 $dtend = "\r\nDTEND;TZID=$timezone:".$self->date($record{'end-date'});
2905 } 2905 }
2906 } else { 2906 } else {
2907 $dtend = ''; 2907 $dtend = '';
2908 $dtstart =~ s/T000000$//; 2908 # $dtstart =~ s/T000000$//;
2909 } 2909 }
2910 if (defined( $record{'modify-date'})) { 2910 if (defined( $record{'modify-date'})) {
2911 $dtstamp = "\nDTSTAMP;TZID=$timezone:".$self->date($record{'modify-date'}); 2911 $dtstamp = "\r\nDTSTAMP:".$self->date($record{'modify-date'})."Z";
2912 } 2912 }
2913 2913
2914 my $summary = ''; 2914 my $summary = '';
2915 my $description = ''; 2915 my $description = '';
2916 if (defined($record{'memo'})) { 2916 if (defined($record{'memo'})) {
2924 2924
2925 if ($description eq $summary) { 2925 if ($description eq $summary) {
2926 $description = ""; 2926 $description = "";
2927 } else { 2927 } else {
2928 if ($description) { 2928 if ($description) {
2929 $description = "\nDESCRIPTION: $description"; 2929 $description = "\r\nDESCRIPTION: $description";
2930 } 2930 }
2931 } 2931 }
2932 return if (! $description && ! $summary ); 2932 return if (! $description && ! $summary );
2933 2933
2934 # DURATION:PT1H = "DURATION:PT1H"; 2934 # DURATION:PT1H = "DURATION:PT1H";
2935 # X-WR-CALNAME;VALUE=TEXT:ホーム 2935 # X-WR-CALNAME;VALUE=TEXT:ホーム
2936 # X-WR-TIMEZONE;VALUE=TEXT:Asia/Tokyo 2936 # X-WR-TIMEZONE;VALUE=TEXT:Asia/Tokyo
2937 # SEQUENCE:$i 2937 # SEQUENCE:$i
2938 2938
2939 $self->print(<<"EOFEOF"); 2939 $self->print(<<"EOFEOF");
2940 BEGIN:VEVENT 2940 BEGIN:VEVENT\r
2941 SUMMARY:$summary$dtstart$dtend$description$dtstamp 2941 SUMMARY:$summary$dtstart$dtend$description$dtstamp\r
2942 END:VEVENT 2942 END:VEVENT\r
2943 EOFEOF 2943 EOFEOF
2944 # print "\n"; 2944 # print "\r\n";
2945 } 2945 }
2946 2946
2947 sub date { 2947 sub date {
2948 my ($self,$date) = @_; 2948 my ($self,$date) = @_;
2949 my ($year,$month,$day,$hour,$min) = $self->localtime($date); 2949 my ($year,$month,$day,$hour,$min) = $self->localtime($date);
2976 if ($record{'time'} =~ /(.*)-(.*)/) { 2976 if ($record{'time'} =~ /(.*)-(.*)/) {
2977 $record{'time'} = $1; 2977 $record{'time'} = $1;
2978 $record{'end-time'} = $2; 2978 $record{'end-time'} = $2;
2979 } 2979 }
2980 2980
2981 print "BEGIN:VCARD\n"; 2981 print "BEGIN:VCARD\r\n";
2982 print "VERSION:3.0\n"; 2982 print "VERSION:3.0\r\n";
2983 if(defined $record{'name'}) { 2983 if(defined $record{'name'}) {
2984 $data = $record{'name'}; 2984 $data = $record{'name'};
2985 if(0 && defined $record{'name-yomi'}) { 2985 if(0 && defined $record{'name-yomi'}) {
2986 $data = join(";",split(/ /,$record{'name-yomi'})); 2986 $data = join(";",split(/ /,$record{'name-yomi'}));
2987 print "N:$data\n" if($data); 2987 print "N:$data\n" if($data);
3010 if(defined $record{'office'}) { 3010 if(defined $record{'office'}) {
3011 $data = "$record{'office'}"; 3011 $data = "$record{'office'}";
3012 if(defined $record{'section'}) { 3012 if(defined $record{'section'}) {
3013 $data .= ";".$record{'section'}; 3013 $data .= ";".$record{'section'};
3014 } 3014 }
3015 print "ORG:$data\n" if($data); 3015 print "ORG:$data\r\n" if($data);
3016 } 3016 }
3017 if(defined $record{'title'}) { 3017 if(defined $record{'title'}) {
3018 $data = "$record{'title'}"; 3018 $data = "$record{'title'}";
3019 print "TITLE:$data\n" if($data); 3019 print "TITLE:$data\n" if($data);
3020 } 3020 }
3031 print "ADR;TYPE=WORK;TYPE=PREF:;;$adr1;$adr2;$adr_state;$adr_zip;$adr_country\n" if ($data); 3031 print "ADR;TYPE=WORK;TYPE=PREF:;;$adr1;$adr2;$adr_state;$adr_zip;$adr_country\n" if ($data);
3032 print "LABEL;TYPE=WORK;TYPE=PREF:$adr_zip $data\n" if($data); 3032 print "LABEL;TYPE=WORK;TYPE=PREF:$adr_zip $data\n" if($data);
3033 } 3033 }
3034 if(defined $record{'tel'}) { 3034 if(defined $record{'tel'}) {
3035 $data = $record{'tel'}; 3035 $data = $record{'tel'};
3036 print "TEL;TYPE=WORK:$data\n" if($data); 3036 print "TEL;TYPE=WORK:$data\r\n" if($data);
3037 } 3037 }
3038 if(defined $record{'tel2'}) { 3038 if(defined $record{'tel2'}) {
3039 $data = $record{'tel2'}; 3039 $data = $record{'tel2'};
3040 print "TEL;TYPE=CELL:$data\n" if($data); 3040 print "TEL;TYPE=CELL:$data\r\n" if($data);
3041 } 3041 }
3042 if(defined $record{'fax'}) { 3042 if(defined $record{'fax'}) {
3043 $data = $record{'fax'}; 3043 $data = $record{'fax'};
3044 print "TEL;TYPE=FAX:$data\n" if($data); 3044 print "TEL;TYPE=FAX:$data\r\n" if($data);
3045 } 3045 }
3046 if(defined $record{'mail'}) { 3046 if(defined $record{'mail'}) {
3047 $data = $record{'mail'}; 3047 $data = $record{'mail'};
3048 print "EMAIL;INTERNET:$data\n" if($data); 3048 print "EMAIL;INTERNET:$data\r\n" if($data);
3049 } 3049 }
3050 if(defined $record{'memo'}) { 3050 if(defined $record{'memo'}) {
3051 $data = $record{'memo'}; 3051 $data = $record{'memo'};
3052 print "NOTE:$data\n" if($data); 3052 print "NOTE:$data\n" if($data);
3053 } 3053 }
3054 if(defined $record{'birth'}) { 3054 if(defined $record{'birth'}) {
3055 $data = $record{'birth'}; 3055 $data = $record{'birth'};
3056 print "BDAY:".$data->date()."\n" if($data); 3056 print "BDAY:".$data->date()."\r\n" if($data);
3057 } 3057 }
3058 if(defined $record{'name-yomi'}) { 3058 if(defined $record{'name-yomi'}) {
3059 $data = $record{'name-yomi'}; 3059 $data = $record{'name-yomi'};
3060 print "X-CUSTOM1:$data\n" if($data); 3060 print "X-CUSTOM1:$data\r\n" if($data);
3061 } 3061 }
3062 if(defined $record{'office-yomi'}) { 3062 if(defined $record{'office-yomi'}) {
3063 $data = $record{'office-yomi'}; 3063 $data = $record{'office-yomi'};
3064 print "X-CUSTOM2:$data\n" if($data); 3064 print "X-CUSTOM2:$data\r\n" if($data);
3065 } 3065 }
3066 print "END:VCARD\n"; 3066 print "END:VCARD\r\n";
3067 print "\n"; 3067 print "\r\n";
3068 } 3068 }
3069 3069
3070 #######################################################################/ 3070 #######################################################################/
3071 3071
3072 package Calcon::Vcard_Apple_write; 3072 package Calcon::Vcard_Apple_write;
3113 $record{'name-yomi'} =~ s/^ *//; 3113 $record{'name-yomi'} =~ s/^ *//;
3114 } 3114 }
3115 if(defined($record{'office-yomi'})) { 3115 if(defined($record{'office-yomi'})) {
3116 $record{'office-yomi'} =~ s/^ *//; 3116 $record{'office-yomi'} =~ s/^ *//;
3117 } 3117 }
3118 $self->print("BEGIN:VCARD\n"); 3118 $self->print("BEGIN:VCARD\r\n");
3119 $self->print("VERSION:3.0\n"); 3119 $self->print("VERSION:3.0\r\n");
3120 if(defined $record{'name'}) { 3120 if(defined $record{'name'}) {
3121 $data = $record{'name'}; 3121 $data = $record{'name'};
3122 $self->print("FN:$data\n") if($data); 3122 $self->print("FN:$data\n") if($data);
3123 if(0 && defined $record{'name-yomi'}) { 3123 if(0 && defined $record{'name-yomi'}) {
3124 $data = join(";",split(/ /,$record{'name-yomi'})); 3124 $data = join(";",split(/ /,$record{'name-yomi'}));
3125 $self->print("N:$data\n") if($data); 3125 $self->print("N:$data\r\n") if($data);
3126 } else { 3126 } else {
3127 $data = join(";",split(/ /,$data)); 3127 $data = join(";",split(/ /,$data));
3128 $self->print("N:$data\n") if($data); 3128 $self->print("N:$data\r\n") if($data);
3129 } 3129 }
3130 if(defined $record{'name-yomi'}) { 3130 if(defined $record{'name-yomi'}) {
3131 my ($last , $first , $last_yomi , $first_yomi ); 3131 my ($last , $first , $last_yomi , $first_yomi );
3132 $last = $first = $last_yomi = $first_yomi = ''; 3132 $last = $first = $last_yomi = $first_yomi = '';
3133 ($last,$first) = split(/ /,$record{'name'}); 3133 ($last,$first) = split(/ /,$record{'name'});
3134 ($last_yomi,$first_yomi) = split(/ /,$record{'name-yomi'}), 3134 ($last_yomi,$first_yomi) = split(/ /,$record{'name-yomi'}),
3135 $self->print("X-PHONETIC-LAST-NAME:$last_yomi\n"); 3135 $self->print("X-PHONETIC-LAST-NAME:$last_yomi\r\n");
3136 $self->print("X-PHONETIC-FIRST-NAME:$first_yomi\n"); 3136 $self->print("X-PHONETIC-FIRST-NAME:$first_yomi\r\n");
3137 } 3137 }
3138 3138
3139 # print "fn:$data\n" if($data); 3139 # print "fn:$data\n" if($data);
3140 # if(defined $record{'office'}) { 3140 # if(defined $record{'office'}) {
3141 # $data = $data.";".$record{'office'}; 3141 # $data = $data.";".$record{'office'};
3143 # print "n:$data\n" if($data); 3143 # print "n:$data\n" if($data);
3144 } 3144 }
3145 # my $cat = 0; 3145 # my $cat = 0;
3146 if(defined $record{'group'}) { 3146 if(defined $record{'group'}) {
3147 $data = "$record{'group'}"; 3147 $data = "$record{'group'}";
3148 $self->print("CATEGORIES:$data\n") if($data); 3148 $self->print("CATEGORIES:$data\r\n") if($data);
3149 } 3149 }
3150 if(defined $record{'office'}) { 3150 if(defined $record{'office'}) {
3151 $data = "$record{'office'}"; 3151 $data = "$record{'office'}";
3152 $self->print("ORG:$data;\n") if($data); 3152 $self->print("ORG:$data;\r\n") if($data);
3153 # if ($cat==0) { 3153 # if ($cat==0) {
3154 # $self->print("CATEGORIES:$data\n") if($data); 3154 # $self->print("CATEGORIES:$data\n") if($data);
3155 # } 3155 # }
3156 } 3156 }
3157 my $title; 3157 my $title;
3158 if(defined $record{'section'}) { 3158 if(defined $record{'section'}) {
3159 $title = $record{'section'}; 3159 $title = $record{'section'};
3160 } 3160 }
3161 if(defined $record{'title'}) { 3161 if(defined $record{'title'}) {
3162 $title .= ($title?'\n':'')."$record{'title'}"; 3162 $title .= ($title?'\r\n':'')."$record{'title'}";
3163 $self->print("TITLE:$data\n") if($data); 3163 $self->print("TITLE:$data\r\n") if($data);
3164 } 3164 }
3165 if(defined $record{'address'}) { 3165 if(defined $record{'address'}) {
3166 my $i = $self->{'item'}++; 3166 my $i = $self->{'item'}++;
3167 my ($adr1 , $adr2 , $adr_state , $adr_zip , $adr_country ); 3167 my ($adr1 , $adr2 , $adr_state , $adr_zip , $adr_country );
3168 $adr1 = $adr2 = $adr_state = $adr_zip = $adr_country = ''; 3168 $adr1 = $adr2 = $adr_state = $adr_zip = $adr_country = '';
3175 $self->print("ITEM$i.ADR;TYPE=WORK;TYPE=PREF:;;$adr1;$adr2;$adr_state;$adr_zip;$adr_country\n") if ($data); 3175 $self->print("ITEM$i.ADR;TYPE=WORK;TYPE=PREF:;;$adr1;$adr2;$adr_state;$adr_zip;$adr_country\n") if ($data);
3176 } 3176 }
3177 if(defined $record{'tel'}) { 3177 if(defined $record{'tel'}) {
3178 # my $i = $self->{'item'}++; 3178 # my $i = $self->{'item'}++;
3179 $data = $record{'tel'}; 3179 $data = $record{'tel'};
3180 $self->print("TEL;TYPE=WORK:$data\n") if($data); 3180 $self->print("TEL;TYPE=WORK:$data\r\n") if($data);
3181 } 3181 }
3182 if(defined $record{'mobile-tel'}) { 3182 if(defined $record{'mobile-tel'}) {
3183 # my $i = $self->{'item'}++; 3183 # my $i = $self->{'item'}++;
3184 $data = $record{'mobile-tel'}; 3184 $data = $record{'mobile-tel'};
3185 $self->print("TEL;TYPE=CELL:$data\n") if($data); 3185 $self->print("TEL;TYPE=CELL:$data\r\n") if($data);
3186 } 3186 }
3187 if(defined $record{'home-tel'}) { 3187 if(defined $record{'home-tel'}) {
3188 # my $i = $self->{'item'}++; 3188 # my $i = $self->{'item'}++;
3189 $data = $record{'tel'}; 3189 $data = $record{'tel'};
3190 $self->print("TEL;TYPE=HOME:$data\n") if($data); 3190 $self->print("TEL;TYPE=HOME:$data\r\n") if($data);
3191 } 3191 }
3192 if(defined $record{'tel2'}) { 3192 if(defined $record{'tel2'}) {
3193 # my $i = $self->{'item'}++; 3193 # my $i = $self->{'item'}++;
3194 $data = $record{'tel2'}; 3194 $data = $record{'tel2'};
3195 $self->print("TEL;TYPE=CELL:$data\n") if($data); 3195 $self->print("TEL;TYPE=CELL:$data\r\n") if($data);
3196 } 3196 }
3197 if(defined $record{'fax'}) { 3197 if(defined $record{'fax'}) {
3198 # my $i = $self->{'item'}++; 3198 # my $i = $self->{'item'}++;
3199 $data = $record{'fax'}; 3199 $data = $record{'fax'};
3200 $self->print( "TEL;TYPE=FAX:$data\n") if($data); 3200 $self->print( "TEL;TYPE=FAX:$data\r\n") if($data);
3201 } 3201 }
3202 if(defined $record{'home-address'}) { 3202 if(defined $record{'home-address'}) {
3203 my $i = $self->{'item'}++; 3203 my $i = $self->{'item'}++;
3204 my ($adr1 , $adr2 , $adr_state , $adr_zip , $adr_country ); 3204 my ($adr1 , $adr2 , $adr_state , $adr_zip , $adr_country );
3205 $adr1 = $adr2 = $adr_state = $adr_zip = $adr_country = ''; 3205 $adr1 = $adr2 = $adr_state = $adr_zip = $adr_country = '';
3213 # $self->print("item$1.X-ABADR:ja\n") if ($data); 3213 # $self->print("item$1.X-ABADR:ja\n") if ($data);
3214 } 3214 }
3215 if(defined $record{'mail2'}) { 3215 if(defined $record{'mail2'}) {
3216 # my $i = $self->{'item'}++; 3216 # my $i = $self->{'item'}++;
3217 $data = $record{'mail2'}; 3217 $data = $record{'mail2'};
3218 $self->print("EMAIL;TYPE=internet;TYPE=HOME:$data\n") if($data); 3218 $self->print("EMAIL;TYPE=internet;TYPE=HOME:$data\r\n") if($data);
3219 } 3219 }
3220 if(defined $record{'mail'}) { 3220 if(defined $record{'mail'}) {
3221 # my $i = $self->{'item'}++; 3221 # my $i = $self->{'item'}++;
3222 $data = $record{'mail'}; 3222 $data = $record{'mail'};
3223 $self->print("EMAIL;TYPE=internet;TYPE=PREF:$data\n") if($data); 3223 $self->print("EMAIL;TYPE=internet;TYPE=PREF:$data\r\n") if($data);
3224 } 3224 }
3225 if(defined $record{'birth'}) { 3225 if(defined $record{'birth'}) {
3226 $data = $record{'birth'}; 3226 $data = $record{'birth'};
3227 $self->print("BDAY:".$data->date()."\n") if($data); 3227 $self->print("BDAY:".$data->date()."\r\n") if($data);
3228 } 3228 }
3229 if(defined $record{'memo'}) { 3229 if(defined $record{'memo'}) {
3230 $data = $record{'memo'}; 3230 $data = $record{'memo'};
3231 $self->print("NOTE:$data\n") if($data); 3231 $self->print("NOTE:$data\r\n") if($data);
3232 } 3232 }
3233 # if(defined $record{'name-yomi'}) { 3233 # if(defined $record{'name-yomi'}) {
3234 # $data = $record{'name-yomi'}; 3234 # $data = $record{'name-yomi'};
3235 # $self->print "x-custom1:$data\n" if($data); 3235 # $self->print "x-custom1:$data\n" if($data);
3236 # } 3236 # }
3237 # if(defined $record{'office-yomi'}) { 3237 # if(defined $record{'office-yomi'}) {
3238 # $data = $record{'office-yomi'}; 3238 # $data = $record{'office-yomi'};
3239 # $self->print "x-custom2:$data\n" if($data); 3239 # $self->print "x-custom2:$data\n" if($data);
3240 # } 3240 # }
3241 $self->print("END:VCARD\n"); 3241 $self->print("END:VCARD\r\n");
3242 $self->print("\n"); 3242 $self->print("\r\n");
3243 } 3243 }
3244 3244
3245 package Calcon::Vcard_N702iD_write; 3245 package Calcon::Vcard_N702iD_write;
3246 use strict; 3246 use strict;
3247 # use warnings; 3247 # use warnings;