I continued thinking about this and came up with the idea of adding a new 
resource 'imap_searchpgm' to the imap extension, which would then have quite a 
good number of new functions: imap_searchprogram_new, 
imap_searchprogram_sentsince, imap_searchprogram_since, 
imap_searchprogram_before, imap_searchprogram_on etc. etc.

The functions could then be defined along the following lines (untested code 
...):

PHP_FUNCTION(imap_searchprogram_new)
{
        int myargc = ZEND_NUM_ARGS();

        if (myargc != 0) {
                ZEND_WRONG_PARAM_COUNT();
        }

        pgm = mail_newsearchpgm();
        searchpgm = emalloc(sizeof(php_imap_searchpgm));
        searchpgm->searchpgm = pgm;
        ZEND_REGISTER_RESOURCE(return_value, searchpgm, le_imap_searchpgm);
}

PHP_FUNCTION(imap_searchprogram_sentsince)
{
        zval *zpgm;
        php_imap_searchpgm *pgm;
        char *criterion = "";

        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &zpgm, 
&criterion) == FAILURE) {
                RETURN_FALSE;
        }

        ZEND_FETCH_RESOURCE(pgm, php_imap_search_pgm*, &zpgm, -1, "imapsearch", 
le_imap_searchpgm);

        mail_criteria_date(&pgm->searchpgm->sentsince, &criterion);

        RETURN_TRUE;
}

etc. etc.


And finally, the imap_search function could then accept either the criteria 
string OR an imap_searchpgm resource.

Ideas, comments ?

Thanks,
Dominik


On 2010-02-01, at 10:06 AM, Dominik Gehl wrote:

> Thanks a lot for your reply. I also found a second bug report related to 
> this: http://bugs.php.net/bug.php?id=21168
> 
> Now, how about adding an imap_newsearchpgm function to the PHP imap extension 
> which would do a call to mail_nsewsearchpgm inside c-client and return a 
> structure allowing to contruct IMAP4 search programs (SEARCHPGM inside 
> c-client) ?
> 
> Anyone interested in this ?
> 
> Dominik
> 
> On 2010-01-30, at 6:22 PM, Joey Smith wrote:
> 
>> There's an open bug on this, #15238 (http://bugs.php.net/bug.php?id=15238&;). 
>> I'm
>> sure patches would be welcomed.
>> 
>> On Fri, Jan 29, 2010 at 03:49:18PM -0500, Dominik Gehl wrote:
>>> Hi,
>>> 
>>> I noticed that the imap extension seems to support only IMAP2 search 
>>> criteria.
>>> 
>>> This is caused by the fact that in ext/imap/php_imap.c, the imap_search 
>>> function uses a call to mail_criteria. And
>>> the University of Washington IMAP toolkit mentions in docs/internal.txt:
>>> 
>>> SEARCHPGM *mail_criteria (char *criteria);
>>>      criteria IMAP2-format search criteria string
>>> 
>>>   This function accepts an IMAP2-format search criteria string and
>>> parses it.  If the parse is successful, it returns a search program
>>> suitable for use in mail_search_full().
>>>      WARNING: This function does not accept IMAP4 search criteria.
>>> 
>>> 
>>> Is there any specific reason why PHP uses this mail_criteria call ? It 
>>> really would be nice to be able to use IMAP4 search criteria !
>>> 
>>> Thanks,
>>> Dominik
>>> 
>>> --
>>> PHP Internals - PHP Runtime Development Mailing List
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>> 
> 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to