RETURN_THROWS();
}
- if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) {
- RETURN_THROWS();
- }
+ GET_IMAP_STREAM(imap_conn_struct, imap_conn_obj);
/* TODO Verify these are the only options available as they are pulled from the php.net documentation */
- if (options && ((options & ~(OP_READONLY | OP_ANONYMOUS | OP_HALFOPEN | OP_EXPUNGE | CL_EXPUNGE)) != 0)) {
+ /* Check for PHP_EXPUNGE and not CL_EXPUNGE as the user land facing CL_EXPUNGE constant is defined
+ * to something different to prevent clashes between CL_EXPUNGE and an OP_* constant allowing setting
+ * the CL_EXPUNGE flag which will expunge when the mailbox is closed (be that manually, or via the
+ * IMAPConnection object being destroyed naturally at the end of the PHP script */
+ if (options && ((options & ~(OP_READONLY | OP_ANONYMOUS | OP_HALFOPEN | OP_EXPUNGE | PHP_EXPUNGE)) != 0)) {
zend_argument_value_error(3, "must be a bitmask of OP_READONLY, OP_ANONYMOUS, OP_HALFOPEN, "
"OP_EXPUNGE, and CL_EXPUNGE");
RETURN_THROWS();