ONPHP_METHOD(ExtractPart, toDialectString) { zval *dialect, *what, *from, *whatString, *fromString; smart_str string = {0}; ONPHP_GET_ARGS("O", &dialect, onphp_ce_Dialect); what = ONPHP_READ_PROPERTY(getThis(), "what"); from = ONPHP_READ_PROPERTY(getThis(), "from"); ONPHP_CALL_METHOD_0(what, "tostring", &whatString); ONPHP_CALL_METHOD_1_NORET(from, "todialectstring", &fromString, dialect); if (EG(exception)) { ZVAL_FREE(whatString); return; } smart_str_appendl(&string, "EXTRACT(", 8); onphp_append_zval_to_smart_string(&string, whatString); smart_str_appendl(&string, " FROM ", 6); onphp_append_zval_to_smart_string(&string, fromString); smart_str_appendc(&string, ')'); smart_str_0(&string); zval_ptr_dtor(&whatString); zval_ptr_dtor(&fromString); RETURN_STRINGL(string.c, string.len, 0); }
ONPHP_METHOD(DBField, setTable) { zval *table; if (Z_TYPE_P(ONPHP_READ_PROPERTY(getThis(), "table")) != IS_NULL) { ONPHP_THROW( WrongStateException, "you should not override setted table" ); } ONPHP_GET_ARGS("z", &table); if (!ONPHP_INSTANCEOF(table, DialectString)) { zval *from_table; ONPHP_MAKE_FOREIGN_OBJECT("FromTable", from_table); ONPHP_CALL_METHOD_1_NORET(from_table, "__construct", NULL, table); if (EG(exception)) { ZVAL_FREE(from_table); return; } ONPHP_UPDATE_PROPERTY(getThis(), "table", from_table); zval_ptr_dtor(&from_table); } else { ONPHP_UPDATE_PROPERTY(getThis(), "table", table); } RETURN_THIS; }
ONPHP_METHOD(QueryIdentification, toString) { zval *out, *imdi; ONPHP_CALL_STATIC_0(ImaginaryDialect, "me", &imdi); ONPHP_CALL_METHOD_1_NORET(getThis(), "todialectstring", &out, imdi); zval_ptr_dtor(&imdi); if (EG(exception)) { return; } RETURN_ZVAL(out, 1, 1); }
ONPHP_METHOD(PrimitiveNumber, import) { zval *scope, *result, *name, *value, *min, *max, *out; ONPHP_GET_ARGS("a", &scope); zend_call_method_with_1_params( &getThis(), onphp_ce_BasePrimitive, NULL, "import", &result, scope ); if (EG(exception)) { zval_ptr_dtor(&result); return; } if (!ONPHP_CHECK_EMPTY(result)) { zval_ptr_dtor(&result); RETURN_NULL(); } zval_ptr_dtor(&result); name = ONPHP_READ_PROPERTY(getThis(), "name"); ONPHP_ASSOC_GET(scope, Z_STRVAL_P(name), value); ONPHP_CALL_METHOD_1_NORET(getThis(), "checknumber", NULL, value); if (EG(exception)) { zend_clear_exception(TSRMLS_C); RETURN_FALSE; } ONPHP_CALL_METHOD_1(getThis(), "castnumber", &out, value); ONPHP_CALL_METHOD_0(getThis(), "selffilter", NULL); if ( (Z_TYPE_P(out) == IS_LONG) && (min = ONPHP_READ_PROPERTY(getThis(), "min")) && (max = ONPHP_READ_PROPERTY(getThis(), "max")) && !( (IS_NULL != Z_TYPE_P(min)) && (Z_LVAL_P(out) < Z_LVAL_P(min)) ) && !( (IS_NULL != Z_TYPE_P(max)) && (Z_LVAL_P(out) > Z_LVAL_P(max)) ) ) { ONPHP_UPDATE_PROPERTY_LONG(getThis(), "value", Z_LVAL_P(out)); RETVAL_TRUE; } else { RETVAL_FALSE; } zval_ptr_dtor(&out); }
ONPHP_METHOD(ExtractPart, __construct) { zval *what, *from, *fromField; zend_class_entry **cep; ONPHP_GET_ARGS("zz", &what, &from); if (ONPHP_INSTANCEOF(from, DialectString)) { if ( !( ONPHP_INSTANCEOF(from, DBValue) || ONPHP_INSTANCEOF(from, DBField) ) ) { ONPHP_THROW(WrongArgumentException, NULL); } } ONPHP_MAKE_OBJECT(DBField, fromField); ONPHP_CALL_METHOD_1_NORET(fromField, "__construct", NULL, from); if (EG(exception)) { ZVAL_FREE(fromField); return; } ONPHP_UPDATE_PROPERTY(getThis(), "from", fromField); zval_ptr_dtor(&fromField); ONPHP_FIND_FOREIGN_CLASS("DatePart", cep); if ( !( (Z_TYPE_P(what) == IS_OBJECT) && instanceof_function(Z_OBJCE_P(what), *cep TSRMLS_CC) ) ) { zval *whatPart; ALLOC_INIT_ZVAL(whatPart); object_init_ex(whatPart, *cep); Z_TYPE_P(whatPart) = IS_OBJECT; ONPHP_CALL_METHOD_1_NORET(whatPart, "__construct", NULL, what); if (EG(exception)) { ZVAL_FREE(whatPart); return; } ONPHP_UPDATE_PROPERTY(getThis(), "what", whatPart); zval_ptr_dtor(&whatPart); } else { ONPHP_UPDATE_PROPERTY(getThis(), "what", what); zval_ptr_dtor(&what); } }