Exemplo n.º 1
0
PHP_METHOD(Test_Flow, testFor34) {

	zend_object_iterator *_0;
	zval *e = NULL, *v = NULL, *result;

	ZEPHIR_MM_GROW();
	zephir_fetch_params(1, 0, 1, &e);

	if (!e) {
		e = ZEPHIR_GLOBAL(global_null);
	}
	ZEPHIR_INIT_VAR(result);
	array_init(result);


	if (Z_TYPE_P(e) == IS_OBJECT) {
		_0 = zephir_get_iterator(e TSRMLS_CC);
		_0->funcs->rewind(_0 TSRMLS_CC);
		for (;_0->funcs->valid(_0 TSRMLS_CC) == SUCCESS && !EG(exception); _0->funcs->move_forward(_0 TSRMLS_CC)) {
			{
				zval **ZEPHIR_TMP_ITERATOR_PTR;
				_0->funcs->get_current_data(_0, &ZEPHIR_TMP_ITERATOR_PTR TSRMLS_CC);
				ZEPHIR_CPY_WRT(v, (*ZEPHIR_TMP_ITERATOR_PTR));
			}
			zephir_array_append(&result, v, PH_SEPARATE, "test/flow.zep", 720);
		}
		_0->funcs->dtor(_0 TSRMLS_CC);
		RETURN_CCTOR(result);
	}
	ZEPHIR_MM_RESTORE();

}
Exemplo n.º 2
0
/**
 * Appends an array of messages to the group
 *
 *<code>
 * $messages->appendMessages($messagesArray);
 *</code>
 *
 * @param Phalcon\Validation\MessageInterface[] messages
 */
PHP_METHOD(Phalcon_Validation_Message_Group, appendMessages) {

    zephir_fcall_cache_entry *_2 = NULL;
    int ZEPHIR_LAST_CALL_STATUS;
    zend_object_iterator *_1;
    zend_bool _0;
    zval *messages, *currentMessages, *finalMessages = NULL, *message = NULL;

    ZEPHIR_MM_GROW();
    zephir_fetch_params(1, 1, 0, &messages);



    _0 = Z_TYPE_P(messages) != IS_ARRAY;
    if (_0) {
        _0 = Z_TYPE_P(messages) != IS_OBJECT;
    }
    if (_0) {
        ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_validation_exception_ce, "The messages must be array or object", "phalcon/validation/message/group.zep", 146);
        return;
    }
    ZEPHIR_OBS_VAR(currentMessages);
    zephir_read_property_this(&currentMessages, this_ptr, SL("_messages"), PH_NOISY_CC);
    if (Z_TYPE_P(messages) == IS_ARRAY) {
        if (ZEPHIR_IS_STRING(currentMessages, "array")) {
            ZEPHIR_INIT_VAR(finalMessages);
            zephir_fast_array_merge(finalMessages, &(currentMessages), &(messages) TSRMLS_CC);
        } else {
            ZEPHIR_CPY_WRT(finalMessages, messages);
        }
        zephir_update_property_this(this_ptr, SL("_messages"), finalMessages TSRMLS_CC);
    } else {
        _1 = zephir_get_iterator(messages TSRMLS_CC);
        _1->funcs->rewind(_1 TSRMLS_CC);
        for (; _1->funcs->valid(_1 TSRMLS_CC) == SUCCESS && !EG(exception); _1->funcs->move_forward(_1 TSRMLS_CC)) {
            {
                zval **ZEPHIR_TMP_ITERATOR_PTR;
                _1->funcs->get_current_data(_1, &ZEPHIR_TMP_ITERATOR_PTR TSRMLS_CC);
                ZEPHIR_CPY_WRT(message, (*ZEPHIR_TMP_ITERATOR_PTR));
            }
            ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_2, 0, message);
            zephir_check_call_status();
        }
        _1->funcs->dtor(_1 TSRMLS_CC);
    }
    ZEPHIR_MM_RESTORE();

}
Exemplo n.º 3
0
/**
 * Serialize to an array representing the stack
 *
 * @return array
 */
PHP_METHOD(Zend_Stdlib_SplStack, toArray) {

	zend_object_iterator *_0;
	zval *item = NULL, *data;

	ZEPHIR_MM_GROW();
	ZEPHIR_INIT_VAR(data);
	array_init(data);

	_0 = zephir_get_iterator(this_ptr TSRMLS_CC);
	_0->funcs->rewind(_0 TSRMLS_CC);
	for (;_0->funcs->valid(_0 TSRMLS_CC) == SUCCESS && !EG(exception); _0->funcs->move_forward(_0 TSRMLS_CC)) {
		{ zval **tmp; 
		_0->funcs->get_current_data(_0, &tmp TSRMLS_CC);
		item = *tmp;
		}
		zephir_array_append(&data, item, PH_SEPARATE, "zend/stdlib/splstack.zep", 27);
	}
	_0->funcs->dtor(_0 TSRMLS_CC);
	RETURN_CCTOR(data);

}
Exemplo n.º 4
0
/**
 * Returns a complete resultset as an array, if the resultset has a big number of rows
 * it could consume more memory than currently it does.
 */
PHP_METHOD(Phalcon_Mvc_Model_Resultset_Complex, toArray) {

	zend_object_iterator *_0;
	zval *records, *current = NULL;

	ZEPHIR_MM_GROW();

	ZEPHIR_INIT_VAR(records);
	array_init(records);
	_0 = zephir_get_iterator(this_ptr TSRMLS_CC);
	_0->funcs->rewind(_0 TSRMLS_CC);
	for (;_0->funcs->valid(_0 TSRMLS_CC) == SUCCESS && !EG(exception); _0->funcs->move_forward(_0 TSRMLS_CC)) {
		{
			zval **ZEPHIR_TMP_ITERATOR_PTR;
			_0->funcs->get_current_data(_0, &ZEPHIR_TMP_ITERATOR_PTR TSRMLS_CC);
			ZEPHIR_CPY_WRT(current, (*ZEPHIR_TMP_ITERATOR_PTR));
		}
		zephir_array_append(&records, current, PH_SEPARATE, "phalcon/mvc/model/resultset/complex.zep", 248);
	}
	_0->funcs->dtor(_0 TSRMLS_CC);
	RETURN_CCTOR(records);

}
Exemplo n.º 5
0
/**
 * Validates the form
 *
 * @param array data
 * @param object entity
 */
PHP_METHOD(Phalcon_Forms_Form, isValid) {

	zend_object_iterator *_16$$15;
	HashTable *_7, *_11$$11;
	HashPosition _6, _10$$11;
	zend_bool validationStatus = 0, _4, _9$$11;
	zephir_fcall_cache_entry *_13 = NULL, *_14 = NULL, *_19 = NULL;
	zend_long ZEPHIR_LAST_CALL_STATUS;
	zval *data = NULL, *entity = NULL, *messages = NULL, *element = NULL, *validators = NULL, *name = NULL, *filters = NULL, *validator = NULL, *validation = NULL, *elementMessage = NULL, *_0, *_5, **_8, *_15 = NULL, *_1$$6, *_2$$7, *_3$$8 = NULL, **_12$$11, *_17$$16 = NULL, *_18$$16 = NULL;

	ZEPHIR_MM_GROW();
	zephir_fetch_params(1, 0, 2, &data, &entity);

	if (!data) {
		ZEPHIR_CPY_WRT(data, ZEPHIR_GLOBAL(global_null));
	} else {
		ZEPHIR_SEPARATE_PARAM(data);
	}
	if (!entity) {
		entity = ZEPHIR_GLOBAL(global_null);
	}


	_0 = zephir_fetch_nproperty_this(this_ptr, SL("_elements"), PH_NOISY_CC);
	if (ZEPHIR_IS_EMPTY(_0)) {
		RETURN_MM_BOOL(1);
	}
	if (Z_TYPE_P(data) != IS_ARRAY) {
		ZEPHIR_OBS_NVAR(data);
		zephir_read_property_this(&data, this_ptr, SL("_data"), PH_NOISY_CC);
	}
	if (Z_TYPE_P(entity) == IS_OBJECT) {
		ZEPHIR_CALL_METHOD(NULL, this_ptr, "bind", NULL, 0, data, entity);
		zephir_check_call_status();
	} else {
		ZEPHIR_OBS_VAR(_1$$6);
		zephir_read_property_this(&_1$$6, this_ptr, SL("_entity"), PH_NOISY_CC);
		if (Z_TYPE_P(_1$$6) == IS_OBJECT) {
			_2$$7 = zephir_fetch_nproperty_this(this_ptr, SL("_entity"), PH_NOISY_CC);
			ZEPHIR_CALL_METHOD(NULL, this_ptr, "bind", NULL, 0, data, _2$$7);
			zephir_check_call_status();
		}
	}
	if ((zephir_method_exists_ex(this_ptr, SS("beforevalidation") TSRMLS_CC) == SUCCESS)) {
		ZEPHIR_CALL_METHOD(&_3$$8, this_ptr, "beforevalidation", NULL, 0, data, entity);
		zephir_check_call_status();
		if (ZEPHIR_IS_FALSE_IDENTICAL(_3$$8)) {
			RETURN_MM_BOOL(0);
		}
	}
	validationStatus = 1;
	ZEPHIR_CALL_METHOD(&validation, this_ptr, "getvalidation", NULL, 0);
	zephir_check_call_status();
	_4 = Z_TYPE_P(validation) != IS_OBJECT;
	if (!(_4)) {
		_4 = !((zephir_instance_of_ev(validation, phalcon_validationinterface_ce TSRMLS_CC)));
	}
	if (_4) {
		ZEPHIR_INIT_NVAR(validation);
		object_init_ex(validation, phalcon_validation_ce);
		ZEPHIR_CALL_METHOD(NULL, validation, "__construct", NULL, 227);
		zephir_check_call_status();
	}
	_5 = zephir_fetch_nproperty_this(this_ptr, SL("_elements"), PH_NOISY_CC);
	zephir_is_iterable(_5, &_7, &_6, 0, 0, "phalcon/forms/form.zep", 338);
	for (
	  ; zend_hash_get_current_data_ex(_7, (void**) &_8, &_6) == SUCCESS
	  ; zend_hash_move_forward_ex(_7, &_6)
	) {
		ZEPHIR_GET_HVALUE(element, _8);
		ZEPHIR_CALL_METHOD(&validators, element, "getvalidators", NULL, 0);
		zephir_check_call_status();
		_9$$11 = Z_TYPE_P(validators) != IS_ARRAY;
		if (!(_9$$11)) {
			_9$$11 = zephir_fast_count_int(validators TSRMLS_CC) == 0;
		}
		if (_9$$11) {
			continue;
		}
		ZEPHIR_CALL_METHOD(&name, element, "getname", NULL, 0);
		zephir_check_call_status();
		zephir_is_iterable(validators, &_11$$11, &_10$$11, 0, 0, "phalcon/forms/form.zep", 325);
		for (
		  ; zend_hash_get_current_data_ex(_11$$11, (void**) &_12$$11, &_10$$11) == SUCCESS
		  ; zend_hash_move_forward_ex(_11$$11, &_10$$11)
		) {
			ZEPHIR_GET_HVALUE(validator, _12$$11);
			ZEPHIR_CALL_METHOD(NULL, validation, "add", &_13, 228, name, validator);
			zephir_check_call_status();
		}
		ZEPHIR_CALL_METHOD(&filters, element, "getfilters", NULL, 0);
		zephir_check_call_status();
		if (Z_TYPE_P(filters) == IS_ARRAY) {
			ZEPHIR_CALL_METHOD(NULL, validation, "setfilters", &_14, 229, name, filters);
			zephir_check_call_status();
		}
	}
	ZEPHIR_CALL_METHOD(&messages, validation, "validate", NULL, 230, data, entity);
	zephir_check_call_status();
	ZEPHIR_CALL_METHOD(&_15, messages, "count", NULL, 0);
	zephir_check_call_status();
	if (zephir_is_true(_15)) {
		_16$$15 = zephir_get_iterator(messages TSRMLS_CC);
		_16$$15->funcs->rewind(_16$$15 TSRMLS_CC);
		for (;_16$$15->funcs->valid(_16$$15 TSRMLS_CC) == SUCCESS && !EG(exception); _16$$15->funcs->move_forward(_16$$15 TSRMLS_CC)) {
			{
				zval **ZEPHIR_TMP_ITERATOR_PTR;
				_16$$15->funcs->get_current_data(_16$$15, &ZEPHIR_TMP_ITERATOR_PTR TSRMLS_CC);
				ZEPHIR_CPY_WRT(elementMessage, (*ZEPHIR_TMP_ITERATOR_PTR));
			}
			ZEPHIR_CALL_METHOD(&_18$$16, elementMessage, "getfield", NULL, 0);
			zephir_check_call_status();
			ZEPHIR_CALL_METHOD(&_17$$16, this_ptr, "get", &_19, 0, _18$$16);
			zephir_check_call_status();
			ZEPHIR_CALL_METHOD(NULL, _17$$16, "appendmessage", NULL, 0, elementMessage);
			zephir_check_call_status();
		}
		_16$$15->funcs->dtor(_16$$15 TSRMLS_CC);
		ZEPHIR_CALL_METHOD(NULL, messages, "rewind", NULL, 0);
		zephir_check_call_status();
		validationStatus = 0;
	}
	if (!(validationStatus)) {
		zephir_update_property_this(getThis(), SL("_messages"), messages TSRMLS_CC);
	}
	if ((zephir_method_exists_ex(this_ptr, SS("aftervalidation") TSRMLS_CC) == SUCCESS)) {
		ZEPHIR_CALL_METHOD(NULL, this_ptr, "aftervalidation", NULL, 0, messages);
		zephir_check_call_status();
	}
	RETURN_MM_BOOL(validationStatus);

}
Exemplo n.º 6
0
/**
 * Updates every record in the resultset
 *
 * @param array data
 * @param \Closure conditionCallback
 * @return boolean
 */
PHP_METHOD(Phalcon_Mvc_Model_Resultset, update) {

	zval *_2$$6 = NULL;
	zend_object_iterator *_0;
	zend_bool transaction = 0;
	int ZEPHIR_LAST_CALL_STATUS;
	zval *data, *conditionCallback = NULL, *record = NULL, *connection = NULL, *_1$$6 = NULL, *_3$$3 = NULL, *_4$$8 = NULL;

	ZEPHIR_MM_GROW();
	zephir_fetch_params(1, 1, 1, &data, &conditionCallback);

	if (!conditionCallback) {
		conditionCallback = ZEPHIR_GLOBAL(global_null);
	}


	ZEPHIR_INIT_VAR(connection);
	ZVAL_NULL(connection);
	transaction = 0;
	_0 = zephir_get_iterator(this_ptr TSRMLS_CC);
	_0->funcs->rewind(_0 TSRMLS_CC);
	for (;_0->funcs->valid(_0 TSRMLS_CC) == SUCCESS && !EG(exception); _0->funcs->move_forward(_0 TSRMLS_CC)) {
		{
			zval **ZEPHIR_TMP_ITERATOR_PTR;
			_0->funcs->get_current_data(_0, &ZEPHIR_TMP_ITERATOR_PTR TSRMLS_CC);
			ZEPHIR_CPY_WRT(record, (*ZEPHIR_TMP_ITERATOR_PTR));
		}
		if (transaction == 0) {
			if (!((zephir_method_exists_ex(record, SS("getwriteconnection") TSRMLS_CC) == SUCCESS))) {
				ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The returned record is not valid", "phalcon/mvc/model/resultset.zep", 414);
				return;
			}
			ZEPHIR_CALL_METHOD(&connection, record, "getwriteconnection", NULL, 0);
			zephir_check_call_status();
			transaction = 1;
			ZEPHIR_CALL_METHOD(NULL, connection, "begin", NULL, 0);
			zephir_check_call_status();
		}
		if (Z_TYPE_P(conditionCallback) == IS_OBJECT) {
			ZEPHIR_INIT_NVAR(_1$$6);
			ZEPHIR_INIT_NVAR(_2$$6);
			zephir_create_array(_2$$6, 1, 0 TSRMLS_CC);
			zephir_array_fast_append(_2$$6, record);
			ZEPHIR_CALL_USER_FUNC_ARRAY(_1$$6, conditionCallback, _2$$6);
			zephir_check_call_status();
			if (ZEPHIR_IS_FALSE_IDENTICAL(_1$$6)) {
				continue;
			}
		}
		ZEPHIR_CALL_METHOD(&_3$$3, record, "save", NULL, 0, data);
		zephir_check_call_status();
		if (!(zephir_is_true(_3$$3))) {
			ZEPHIR_CALL_METHOD(&_4$$8, record, "getmessages", NULL, 0);
			zephir_check_call_status();
			zephir_update_property_this(this_ptr, SL("_errorMessages"), _4$$8 TSRMLS_CC);
			ZEPHIR_CALL_METHOD(NULL, connection, "rollback", NULL, 0);
			zephir_check_call_status();
			transaction = 0;
			break;
		}
	}
	_0->funcs->dtor(_0 TSRMLS_CC);
	if (transaction == 1) {
		ZEPHIR_CALL_METHOD(NULL, connection, "commit", NULL, 0);
		zephir_check_call_status();
	}
	RETURN_MM_BOOL(1);

}