/** * Phalcon\Db constructor * * @param stdClass $descriptor */ PHP_METHOD(Phalcon_Db, __construct){ zval *descriptor = NULL; zval *t0 = NULL, *t1 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &descriptor) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } phalcon_update_property_zval(this_ptr, SL("_descriptor"), descriptor TSRMLS_CC); PHALCON_OBSERVE_VAR(t0); phalcon_read_static_property(&t0, SL("phalcon\\db"), SL("_connectionConsecutive") TSRMLS_CC); PHALCON_SEPARATE_NMO(t0); PHALCON_ALLOC_ZVAL_MM(t1); ZVAL_ZVAL(t1, t0, 1, 0); increment_function(t0); phalcon_update_static_property(SL("phalcon\\db"), SL("_connectionConsecutive"), t0 TSRMLS_CC); phalcon_update_property_zval(this_ptr, SL("_connectionId"), t1 TSRMLS_CC); PHALCON_MM_RESTORE(); }
/** * Moves cursor to next row in the resultset * */ PHP_METHOD(Phalcon_Model_Resultset, next){ zval *t0 = NULL; PHALCON_MM_GROW(); PHALCON_ALLOC_ZVAL_MM(t0); phalcon_read_property(&t0, this_ptr, "_pointer", sizeof("_pointer")-1, PHALCON_NOISY TSRMLS_CC); PHALCON_SEPARATE_NMO(t0); increment_function(t0); phalcon_update_property_zval(this_ptr, "_pointer", strlen("_pointer"), t0 TSRMLS_CC); PHALCON_MM_RESTORE(); }
/** * Returns a slice of the resultset to show in the pagination * * @return stdClass */ PHP_METHOD(Phalcon_Paginator_Adapter_NativeArray, getPaginate){ zval *one, *config, *items, *show, *page_number = NULL, *page; zval *number, *rounded_total, *total_pages, *before_page_number; zval *start, *slice, *compare = NULL, *next = NULL, *before = NULL; PHALCON_MM_GROW(); /** * TODO: Rewrite the whole method! */ PHALCON_INIT_VAR(one); ZVAL_LONG(one, 1); PHALCON_OBS_VAR(config); phalcon_read_property_this(&config, this_ptr, SL("_config"), PH_NOISY_CC); PHALCON_OBS_VAR(items); phalcon_array_fetch_string(&items, config, SL("data"), PH_NOISY_CC); if (Z_TYPE_P(items) != IS_ARRAY) { PHALCON_THROW_EXCEPTION_STR(phalcon_paginator_exception_ce, "Invalid data for paginator"); return; } PHALCON_OBS_VAR(show); phalcon_read_property_this(&show, this_ptr, SL("_limitRows"), PH_NOISY_CC); PHALCON_OBS_VAR(page_number); phalcon_read_property_this(&page_number, this_ptr, SL("_page"), PH_NOISY_CC); if (!zend_is_true(page_number)) { PHALCON_CPY_WRT(page_number, one); } PHALCON_INIT_VAR(page); object_init(page); PHALCON_INIT_VAR(number); phalcon_fast_count(number, items TSRMLS_CC); PHALCON_INIT_VAR(rounded_total); div_function(rounded_total, number, show TSRMLS_CC); PHALCON_INIT_VAR(total_pages); PHALCON_CALL_FUNC_PARAMS_1(total_pages, "intval", rounded_total); /** * Increase total_pages if wasn't integer */ if (!PHALCON_IS_EQUAL(total_pages, rounded_total)) { PHALCON_SEPARATE_NMO(total_pages); increment_function(total_pages); } PHALCON_INIT_VAR(before_page_number); sub_function(before_page_number, page_number, one TSRMLS_CC); PHALCON_INIT_VAR(start); mul_function(start, show, before_page_number TSRMLS_CC); PHALCON_INIT_VAR(slice); PHALCON_CALL_FUNC_PARAMS_3(slice, "array_slice", items, start, show); phalcon_update_property_zval(page, SL("items"), slice TSRMLS_CC); PHALCON_INIT_VAR(compare); is_smaller_function(compare, page_number, total_pages TSRMLS_CC); if (PHALCON_IS_TRUE(compare)) { PHALCON_INIT_VAR(next); phalcon_add_function(next, page_number, one TSRMLS_CC); } else { PHALCON_CPY_WRT(next, total_pages); } phalcon_update_property_zval(page, SL("next"), next TSRMLS_CC); is_smaller_function(compare, one, page_number TSRMLS_CC); if (PHALCON_IS_TRUE(compare)) { PHALCON_INIT_VAR(before); sub_function(before, page_number, one TSRMLS_CC); } else { PHALCON_CPY_WRT(before, one); } phalcon_update_property_zval(page, SL("first"), one TSRMLS_CC); phalcon_update_property_zval(page, SL("before"), before TSRMLS_CC); phalcon_update_property_zval(page, SL("current"), page_number TSRMLS_CC); phalcon_update_property_zval(page, SL("last"), total_pages TSRMLS_CC); phalcon_update_property_zval(page, SL("total_pages"), total_pages TSRMLS_CC); phalcon_update_property_zval(page, SL("total_items"), number TSRMLS_CC); RETURN_CTOR(page); }
/** * Attaches Phalcon_Model_Base object to the active transaction * * @param int $pointer * @param Phalcon_Model_Base $object */ PHP_METHOD(Phalcon_Transaction, attachDependency){ zval *v0 = NULL, *v1 = NULL; zval *t0 = NULL, *t1 = NULL, *t2 = NULL, *t3 = NULL, *t4 = NULL, *t5 = NULL, *t6 = NULL; zval *r0 = NULL, *r1 = NULL; int eval_int; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &v0, &v1) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } PHALCON_SEPARATE_PARAM(v0); PHALCON_INIT_VAR(t0); ZVAL_NULL(t0); PHALCON_ALLOC_ZVAL_MM(r0); is_equal_function(r0, v0, t0 TSRMLS_CC); if (zend_is_true(r0)) { PHALCON_ALLOC_ZVAL_MM(t1); phalcon_read_property(&t1, this_ptr, "_pointer", sizeof("_pointer")-1, PHALCON_NOISY_FETCH TSRMLS_CC); PHALCON_SEPARATE_NMO(t1); increment_function(t1); phalcon_update_property_zval(this_ptr, "_pointer", strlen("_pointer"), t1 TSRMLS_CC); PHALCON_CPY_WRT(v0, t1); PHALCON_ALLOC_ZVAL_MM(t2); phalcon_read_property(&t2, this_ptr, "_dependencies", sizeof("_dependencies")-1, PHALCON_NOISY_FETCH TSRMLS_CC); Z_ADDREF_P(v1); phalcon_array_update(t2, v0, v1 TSRMLS_CC); phalcon_update_property_zval(this_ptr, "_dependencies", strlen("_dependencies"), t2 TSRMLS_CC); PHALCON_RETURN_CHECK_CTOR(v0); } else { PHALCON_ALLOC_ZVAL_MM(t3); phalcon_read_property(&t3, this_ptr, "_dependencies", sizeof("_dependencies")-1, PHALCON_NOISY_FETCH TSRMLS_CC); eval_int = phalcon_array_isset(t3, v0); PHALCON_INIT_VAR(r1); ZVAL_BOOL(r1, eval_int); if (!zend_is_true(r1)) { PHALCON_ALLOC_ZVAL_MM(t4); phalcon_read_property(&t4, this_ptr, "_dependencies", sizeof("_dependencies")-1, PHALCON_NOISY_FETCH TSRMLS_CC); Z_ADDREF_P(v1); phalcon_array_update(t4, v0, v1 TSRMLS_CC); phalcon_update_property_zval(this_ptr, "_dependencies", strlen("_dependencies"), t4 TSRMLS_CC); PHALCON_RETURN_CHECK_CTOR(v0); } else { PHALCON_ALLOC_ZVAL_MM(t5); phalcon_read_property(&t5, this_ptr, "_pointer", sizeof("_pointer")-1, PHALCON_NOISY_FETCH TSRMLS_CC); PHALCON_SEPARATE_NMO(t5); increment_function(t5); phalcon_update_property_zval(this_ptr, "_pointer", strlen("_pointer"), t5 TSRMLS_CC); PHALCON_CPY_WRT(v0, t5); PHALCON_ALLOC_ZVAL_MM(t6); phalcon_read_property(&t6, this_ptr, "_dependencies", sizeof("_dependencies")-1, PHALCON_NOISY_FETCH TSRMLS_CC); Z_ADDREF_P(v1); phalcon_array_update(t6, v0, v1 TSRMLS_CC); phalcon_update_property_zval(this_ptr, "_dependencies", strlen("_dependencies"), t6 TSRMLS_CC); PHALCON_RETURN_CHECK_CTOR(v0); } } PHALCON_MM_RESTORE(); RETURN_NULL(); }