@@ -3038,8 +3038,6 @@ PHP_FUNCTION(imap_fetch_overview)
3038
3038
zval * imap_conn_obj ;
3039
3039
zend_string * sequence ;
3040
3040
php_imap_object * imap_conn_struct ;
3041
- zval myoverview ;
3042
- zend_string * address ;
3043
3041
zend_long status , flags = 0L ;
3044
3042
3045
3043
if (zend_parse_parameters (ZEND_NUM_ARGS (), "OS|l" , & imap_conn_obj , php_imap_ce , & sequence , & flags ) == FAILURE ) {
@@ -3053,136 +3051,147 @@ PHP_FUNCTION(imap_fetch_overview)
3053
3051
RETURN_THROWS ();
3054
3052
}
3055
3053
3056
- array_init (return_value );
3057
-
3058
3054
status = (flags & FT_UID )
3059
3055
? mail_uid_sequence (imap_conn_struct -> imap_stream , (unsigned char * )ZSTR_VAL (sequence ))
3060
3056
: mail_sequence (imap_conn_struct -> imap_stream , (unsigned char * )ZSTR_VAL (sequence ));
3061
3057
3062
- if (status ) {
3058
+ if (!status ) {
3059
+ RETURN_EMPTY_ARRAY ();
3060
+ }
3061
+
3062
+ array_init (return_value );
3063
+ for (unsigned long i = 1 ; i <= imap_conn_struct -> imap_stream -> nmsgs ; i ++ ) {
3063
3064
MESSAGECACHE * elt ;
3064
3065
ENVELOPE * env ;
3065
- unsigned long i ;
3066
-
3067
- for (i = 1 ; i <= imap_conn_struct -> imap_stream -> nmsgs ; i ++ ) {
3068
- if (((elt = mail_elt (imap_conn_struct -> imap_stream , i ))-> sequence ) &&
3069
- (env = mail_fetch_structure (imap_conn_struct -> imap_stream , i , NIL , NIL ))) {
3070
-
3071
- // TODO Use part _php_make_header_object function?
3072
- object_init (& myoverview );
3073
- if (env -> subject ) {
3074
- zend_update_property_string (
3075
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3076
- "subject" , strlen ("subject" ),
3077
- env -> subject
3078
- );
3079
- }
3080
- if (env -> from ) {
3081
- env -> from -> next = NULL ;
3082
- address = _php_rfc822_write_address (env -> from );
3083
- if (address ) {
3084
- zend_update_property_str (
3085
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3086
- "from" , strlen ("from" ),
3087
- address
3088
- );
3089
- zend_string_release (address );
3090
- }
3091
- }
3092
- if (env -> to ) {
3093
- env -> to -> next = NULL ;
3094
- address = _php_rfc822_write_address (env -> to );
3095
- if (address ) {
3096
- zend_update_property_str (
3097
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3098
- "to" , strlen ("to" ),
3099
- address
3100
- );
3101
- zend_string_release (address );
3102
- }
3103
- }
3104
- if (env -> date ) {
3105
- zend_update_property_string (
3106
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3107
- "date" , strlen ("date" ),
3108
- (char * )env -> date
3109
- );
3110
- }
3111
- if (env -> message_id ) {
3112
- zend_update_property_string (
3113
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3114
- "message_id" , strlen ("message_id" ),
3115
- env -> message_id
3116
- );
3117
- }
3118
- if (env -> references ) {
3119
- zend_update_property_string (
3120
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3121
- "references" , strlen ("references" ),
3122
- env -> references
3123
- );
3124
- }
3125
- if (env -> in_reply_to ) {
3126
- zend_update_property_string (
3127
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3128
- "in_reply_to" , strlen ("in_reply_to" ),
3129
- env -> in_reply_to
3130
- );
3131
- }
3132
- zend_update_property_long (
3133
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3134
- "size" , strlen ("size" ),
3135
- elt -> rfc822_size
3136
- );
3137
- zend_update_property_long (
3138
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3139
- "uid" , strlen ("uid" ),
3140
- mail_uid (imap_conn_struct -> imap_stream , i )
3141
- );
3142
- zend_update_property_long (
3143
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3144
- "msgno" , strlen ("msgno" ),
3145
- i
3146
- );
3147
- zend_update_property_long (
3148
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3149
- "recent" , strlen ("recent" ),
3150
- elt -> recent
3151
- );
3152
- zend_update_property_long (
3153
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3154
- "flagged" , strlen ("flagged" ),
3155
- elt -> flagged
3156
- );
3157
- zend_update_property_long (
3158
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3159
- "answered" , strlen ("answered" ),
3160
- elt -> answered
3161
- );
3162
- zend_update_property_long (
3163
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3164
- "deleted" , strlen ("deleted" ),
3165
- elt -> deleted
3166
- );
3167
- zend_update_property_long (
3168
- Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3169
- "seen" , strlen ("seen" ),
3170
- elt -> seen
3171
- );
3172
- zend_update_property_long (
3066
+
3067
+ elt = mail_elt (imap_conn_struct -> imap_stream , i );
3068
+ if (!elt -> sequence ) {
3069
+ continue ;
3070
+ }
3071
+
3072
+ env = mail_fetch_structure (imap_conn_struct -> imap_stream , i , NIL , NIL );
3073
+ if (!env ) {
3074
+ continue ;
3075
+ }
3076
+
3077
+ // TODO Use part _php_make_header_object function?
3078
+ zval myoverview ;
3079
+ object_init (& myoverview );
3080
+ if (env -> subject ) {
3081
+ zend_update_property_string (
3082
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3083
+ "subject" , strlen ("subject" ),
3084
+ env -> subject
3085
+ );
3086
+ }
3087
+ if (env -> from ) {
3088
+ zend_string * from_address ;
3089
+
3090
+ env -> from -> next = NULL ;
3091
+ from_address = _php_rfc822_write_address (env -> from );
3092
+ if (from_address ) {
3093
+ zend_update_property_str (
3173
3094
Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3174
- "draft " , strlen ("draft " ),
3175
- elt -> draft
3095
+ "from " , strlen ("from " ),
3096
+ from_address
3176
3097
);
3177
- zend_update_property_long (
3098
+ zend_string_release (from_address );
3099
+ }
3100
+ }
3101
+ if (env -> to ) {
3102
+ zend_string * to_address ;
3103
+
3104
+ env -> to -> next = NULL ;
3105
+ to_address = _php_rfc822_write_address (env -> to );
3106
+ if (to_address ) {
3107
+ zend_update_property_str (
3178
3108
Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3179
- "udate " , strlen ("udate " ),
3180
- mail_longdate ( elt )
3109
+ "to " , strlen ("to " ),
3110
+ to_address
3181
3111
);
3182
-
3183
- zend_hash_next_index_insert_new (Z_ARR_P (return_value ), & myoverview );
3112
+ zend_string_release (to_address );
3184
3113
}
3185
3114
}
3115
+ if (env -> date ) {
3116
+ zend_update_property_string (
3117
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3118
+ "date" , strlen ("date" ),
3119
+ (char * )env -> date
3120
+ );
3121
+ }
3122
+ if (env -> message_id ) {
3123
+ zend_update_property_string (
3124
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3125
+ "message_id" , strlen ("message_id" ),
3126
+ env -> message_id
3127
+ );
3128
+ }
3129
+ if (env -> references ) {
3130
+ zend_update_property_string (
3131
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3132
+ "references" , strlen ("references" ),
3133
+ env -> references
3134
+ );
3135
+ }
3136
+ if (env -> in_reply_to ) {
3137
+ zend_update_property_string (
3138
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3139
+ "in_reply_to" , strlen ("in_reply_to" ),
3140
+ env -> in_reply_to
3141
+ );
3142
+ }
3143
+ zend_update_property_long (
3144
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3145
+ "size" , strlen ("size" ),
3146
+ elt -> rfc822_size
3147
+ );
3148
+ zend_update_property_long (
3149
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3150
+ "uid" , strlen ("uid" ),
3151
+ mail_uid (imap_conn_struct -> imap_stream , i )
3152
+ );
3153
+ zend_update_property_long (
3154
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3155
+ "msgno" , strlen ("msgno" ),
3156
+ i
3157
+ );
3158
+ zend_update_property_long (
3159
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3160
+ "recent" , strlen ("recent" ),
3161
+ elt -> recent
3162
+ );
3163
+ zend_update_property_long (
3164
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3165
+ "flagged" , strlen ("flagged" ),
3166
+ elt -> flagged
3167
+ );
3168
+ zend_update_property_long (
3169
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3170
+ "answered" , strlen ("answered" ),
3171
+ elt -> answered
3172
+ );
3173
+ zend_update_property_long (
3174
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3175
+ "deleted" , strlen ("deleted" ),
3176
+ elt -> deleted
3177
+ );
3178
+ zend_update_property_long (
3179
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3180
+ "seen" , strlen ("seen" ),
3181
+ elt -> seen
3182
+ );
3183
+ zend_update_property_long (
3184
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3185
+ "draft" , strlen ("draft" ),
3186
+ elt -> draft
3187
+ );
3188
+ zend_update_property_long (
3189
+ Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3190
+ "udate" , strlen ("udate" ),
3191
+ mail_longdate (elt )
3192
+ );
3193
+
3194
+ zend_hash_next_index_insert_new (Z_ARR_P (return_value ), & myoverview );
3186
3195
}
3187
3196
}
3188
3197
/* }}} */
0 commit comments