/** * Starts a transaction in the connection * * @return boolean */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, begin){ zval *pdo, *transaction_level, *events_manager; zval *event_name, *status; PHALCON_MM_GROW(); PHALCON_OBS_VAR(pdo); phalcon_read_property(&pdo, this_ptr, SL("_pdo"), PH_NOISY_CC); if (Z_TYPE_P(pdo) != IS_OBJECT) { RETURN_MM_FALSE; } /** * Check the transaction nesting level */ PHALCON_OBS_VAR(transaction_level); phalcon_read_property(&transaction_level, this_ptr, SL("_transactionLevel"), PH_NOISY_CC); if (zend_is_true(transaction_level)) { phalcon_property_incr(this_ptr, SL("_transactionLevel") TSRMLS_CC); RETURN_MM_FALSE; } phalcon_property_incr(this_ptr, SL("_transactionLevel") TSRMLS_CC); PHALCON_OBS_VAR(events_manager); phalcon_read_property(&events_manager, this_ptr, SL("_eventsManager"), PH_NOISY_CC); /** * Notify the events manager about the started transaction */ if (Z_TYPE_P(events_manager) == IS_OBJECT) { PHALCON_INIT_VAR(event_name); ZVAL_STRING(event_name, "db:beginTransaction", 1); PHALCON_CALL_METHOD_PARAMS_2_NORETURN(events_manager, "fire", event_name, this_ptr); } PHALCON_INIT_VAR(status); PHALCON_CALL_METHOD(status, pdo, "begintransaction"); RETURN_CCTOR(status); }
/** * Moves cursor to next row in the resultset * */ PHP_METHOD(Phalcon_Mvc_Model_Resultset, next){ phalcon_property_incr(this_ptr, SL("_pointer") TSRMLS_CC); }
/** * Moves the internal iteration pointer to the next position * */ PHP_METHOD(Phalcon_Validation_Message_Group, next){ phalcon_property_incr(this_ptr, SL("_position") TSRMLS_CC); }
/** * Starts a transaction in the connection * * @param boolean $nesting * @return boolean */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, begin){ zval *nesting = NULL, *pdo, *transaction_level, *events_manager = NULL; zval *event_name = NULL, *ntw_savepoint = NULL, *savepoint_name = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 1, &nesting); if (!nesting) { nesting = PHALCON_GLOBAL(z_true); } pdo = phalcon_fetch_nproperty_this(this_ptr, SL("_pdo"), PH_NOISY TSRMLS_CC); if (Z_TYPE_P(pdo) != IS_OBJECT) { RETURN_MM_FALSE; } /** * Increase the transaction nesting level */ phalcon_property_incr(this_ptr, SL("_transactionLevel") TSRMLS_CC); /** * Check the transaction nesting level */ transaction_level = phalcon_fetch_nproperty_this(this_ptr, SL("_transactionLevel"), PH_NOISY TSRMLS_CC); if (PHALCON_IS_LONG(transaction_level, 1)) { events_manager = phalcon_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY TSRMLS_CC); /** * Notify the events manager about the started transaction */ if (Z_TYPE_P(events_manager) == IS_OBJECT) { PHALCON_INIT_VAR(event_name); ZVAL_STRING(event_name, "db:beginTransaction", 1); PHALCON_CALL_METHOD(NULL, events_manager, "fire", event_name, this_ptr); } PHALCON_RETURN_CALL_METHOD(pdo, "begintransaction"); RETURN_MM(); } if (zend_is_true(transaction_level)) { if (zend_is_true(nesting)) { PHALCON_CALL_METHOD(&ntw_savepoint, this_ptr, "isnestedtransactionswithsavepoints"); if (zend_is_true(ntw_savepoint)) { events_manager = phalcon_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY TSRMLS_CC); PHALCON_CALL_METHOD(&savepoint_name, this_ptr, "getnestedtransactionsavepointname"); /** * Notify the events manager about the created savepoint */ if (Z_TYPE_P(events_manager) == IS_OBJECT) { PHALCON_INIT_NVAR(event_name); ZVAL_STRING(event_name, "db:createSavepoint", 1); PHALCON_CALL_METHOD(NULL, events_manager, "fire", event_name, this_ptr, savepoint_name); } PHALCON_RETURN_CALL_METHOD(this_ptr, "createsavepoint", savepoint_name); RETURN_MM(); } } } RETURN_MM_FALSE; }
/** * Starts a transaction in the connection * * @param boolean $nesting * @return boolean */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, begin){ zval *nesting = NULL, *pdo, *transaction_level, *events_manager = NULL; zval *event_name = NULL, *ntw_savepoint, *savepoint_name; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 1, &nesting); if (!nesting) { PHALCON_INIT_VAR(nesting); ZVAL_BOOL(nesting, 1); } PHALCON_OBS_VAR(pdo); phalcon_read_property_this(&pdo, this_ptr, SL("_pdo"), PH_NOISY_CC); if (Z_TYPE_P(pdo) != IS_OBJECT) { RETURN_MM_FALSE; } /** * Increase the transaction nesting level */ phalcon_property_incr(this_ptr, SL("_transactionLevel") TSRMLS_CC); /** * Check the transaction nesting level */ PHALCON_OBS_VAR(transaction_level); phalcon_read_property_this(&transaction_level, this_ptr, SL("_transactionLevel"), PH_NOISY_CC); if (PHALCON_IS_LONG(transaction_level, 1)) { PHALCON_OBS_VAR(events_manager); phalcon_read_property_this(&events_manager, this_ptr, SL("_eventsManager"), PH_NOISY_CC); /** * Notify the events manager about the started transaction */ if (Z_TYPE_P(events_manager) == IS_OBJECT) { PHALCON_INIT_VAR(event_name); ZVAL_STRING(event_name, "db:beginTransaction", 1); phalcon_call_method_p2_noret(events_manager, "fire", event_name, this_ptr); } phalcon_call_method(return_value, pdo, "begintransaction"); RETURN_MM(); } else { if (zend_is_true(transaction_level)) { if (zend_is_true(nesting)) { PHALCON_INIT_VAR(ntw_savepoint); phalcon_call_method(ntw_savepoint, this_ptr, "isnestedtransactionswithsavepoints"); if (zend_is_true(ntw_savepoint)) { PHALCON_OBS_NVAR(events_manager); phalcon_read_property_this(&events_manager, this_ptr, SL("_eventsManager"), PH_NOISY_CC); PHALCON_INIT_VAR(savepoint_name); phalcon_call_method(savepoint_name, this_ptr, "getnestedtransactionsavepointname"); /** * Notify the events manager about the created savepoint */ if (Z_TYPE_P(events_manager) == IS_OBJECT) { PHALCON_INIT_NVAR(event_name); ZVAL_STRING(event_name, "db:createSavepoint", 1); phalcon_call_method_p3_noret(events_manager, "fire", event_name, this_ptr, savepoint_name); } phalcon_call_method_p1(return_value, this_ptr, "createsavepoint", savepoint_name); RETURN_MM(); } } } } RETURN_MM_FALSE; }
/** * Moves the internal iteration pointer to the next position * */ PHP_METHOD(Phalcon_Assets_Collection, next){ phalcon_property_incr(getThis(), SL("_position")); }
/** * Create/Returns a new transaction or an existing one * * @param boolean $autoBegin * @return Phalcon\Mvc\Model\TransactionInterface */ PHP_METHOD(Phalcon_Mvc_Model_Transaction_Manager, getOrCreateTransaction){ zval *auto_begin = NULL, *dependency_injector, *number; zval *transactions, *transaction = NULL, *false_value = NULL; zval *service; HashTable *ah0; HashPosition hp0; zval **hd; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 1, &auto_begin); if (!auto_begin) { PHALCON_INIT_VAR(auto_begin); ZVAL_BOOL(auto_begin, 1); } PHALCON_OBS_VAR(dependency_injector); phalcon_read_property_this(&dependency_injector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); if (Z_TYPE_P(dependency_injector) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_transaction_exception_ce, "A dependency injector container is required to obtain the services related to the ORM"); return; } PHALCON_OBS_VAR(number); phalcon_read_property_this(&number, this_ptr, SL("_number"), PH_NOISY_CC); if (zend_is_true(number)) { PHALCON_OBS_VAR(transactions); phalcon_read_property_this(&transactions, this_ptr, SL("_transactions"), PH_NOISY_CC); if (Z_TYPE_P(transactions) == IS_ARRAY) { phalcon_is_iterable(transactions, &ah0, &hp0, 0, 1); while (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) == SUCCESS) { PHALCON_GET_HVALUE(transaction); if (Z_TYPE_P(transaction) == IS_OBJECT) { PHALCON_INIT_NVAR(false_value); ZVAL_BOOL(false_value, 0); phalcon_call_method_p1_noret(transaction, "setisnewtransaction", false_value); RETURN_CCTOR(transaction); } zend_hash_move_backwards_ex(ah0, &hp0); } } } PHALCON_OBS_VAR(service); phalcon_read_property_this(&service, this_ptr, SL("_service"), PH_NOISY_CC); PHALCON_INIT_VAR(transaction); object_init_ex(transaction, phalcon_mvc_model_transaction_ce); phalcon_call_method_p3_noret(transaction, "__construct", dependency_injector, auto_begin, service); phalcon_call_method_p1_noret(transaction, "settransactionmanager", this_ptr); phalcon_update_property_array_append(this_ptr, SL("_transactions"), transaction TSRMLS_CC); phalcon_property_incr(this_ptr, SL("_number") TSRMLS_CC); RETURN_CTOR(transaction); }
/** * Moves cursor to next row in the resultset * */ PHP_METHOD(Phalcon_Mvc_Model_Resultset, next){ phalcon_property_incr(getThis(), SL("_pointer")); }
/** * Moves the internal iteration pointer to the next position * */ PHP_METHOD(Phalcon_Forms_Form, next){ phalcon_property_incr(this_ptr, SL("_position") TSRMLS_CC); }