@@ -3038,8 +3038,6 @@ PHP_FUNCTION(imap_fetch_overview)
30383038 zval * imap_conn_obj ;
30393039 zend_string * sequence ;
30403040 php_imap_object * imap_conn_struct ;
3041- zval myoverview ;
3042- zend_string * address ;
30433041 zend_long status , flags = 0L ;
30443042
30453043 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)
30533051 RETURN_THROWS ();
30543052 }
30553053
3056- array_init (return_value );
3057-
30583054 status = (flags & FT_UID )
30593055 ? mail_uid_sequence (imap_conn_struct -> imap_stream , (unsigned char * )ZSTR_VAL (sequence ))
30603056 : mail_sequence (imap_conn_struct -> imap_stream , (unsigned char * )ZSTR_VAL (sequence ));
30613057
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 ++ ) {
30633064 MESSAGECACHE * elt ;
30643065 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 (
31733094 Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3174- "draft " , strlen ("draft " ),
3175- elt -> draft
3095+ "from " , strlen ("from " ),
3096+ from_address
31763097 );
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 (
31783108 Z_OBJCE_P (& myoverview ), Z_OBJ_P (& myoverview ),
3179- "udate " , strlen ("udate " ),
3180- mail_longdate ( elt )
3109+ "to " , strlen ("to " ),
3110+ to_address
31813111 );
3182-
3183- zend_hash_next_index_insert_new (Z_ARR_P (return_value ), & myoverview );
3112+ zend_string_release (to_address );
31843113 }
31853114 }
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 );
31863195 }
31873196}
31883197/* }}} */
0 commit comments