/** * is a simple checksum formula used to validate a variety of identification numbers * @param string number * @return boolean */ PHP_METHOD(Phalcon_Validation_Validator_CreditCard, verifyByLuhnAlgorithm) { HashTable *_6; HashPosition _5; zval *digits = NULL, *_2 = NULL; int ZEPHIR_LAST_CALL_STATUS; zephir_fcall_cache_entry *_1 = NULL; zval *number, *_0 = NULL, *digit = NULL, *position = NULL, *hash = NULL, *_3 = NULL, *_4 = NULL, **_7, *result = NULL, *_9 = NULL, *_8$$3 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &number); ZEPHIR_CALL_FUNCTION(&_0, "str_split", &_1, 71, number); zephir_check_call_status(); zephir_get_arrval(_2, _0); ZEPHIR_CPY_WRT(digits, _2); ZEPHIR_INIT_VAR(hash); ZVAL_STRING(hash, "", 1); ZEPHIR_CALL_FUNCTION(&_4, "array_reverse", NULL, 439, digits); zephir_check_call_status(); zephir_is_iterable(_4, &_6, &_5, 0, 0, "phalcon/validation/validator/creditcard.zep", 87); for ( ; zephir_hash_get_current_data_ex(_6, (void**) &_7, &_5) == SUCCESS ; zephir_hash_move_forward_ex(_6, &_5) ) { ZEPHIR_GET_HMKEY(position, _6, _5); ZEPHIR_GET_HVALUE(digit, _7); ZEPHIR_INIT_LNVAR(_8$$3); if (zephir_safe_mod_zval_long(position, 2 TSRMLS_CC)) { ZEPHIR_INIT_NVAR(_8$$3); ZVAL_LONG(_8$$3, (zephir_get_numberval(digit) * 2)); } else { ZEPHIR_CPY_WRT(_8$$3, digit); } zephir_concat_self(&hash, _8$$3 TSRMLS_CC); } ZEPHIR_CALL_FUNCTION(&_9, "str_split", &_1, 71, hash); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&result, "array_sum", NULL, 440, _9); zephir_check_call_status(); RETURN_MM_BOOL((zephir_safe_mod_zval_long(result, 10 TSRMLS_CC) == 0)); }
PHP_METHOD(Test_Fasta, fastaRepeat) { zval *_2 = NULL, *_5 = NULL; int i, ZEPHIR_LAST_CALL_STATUS; zval *seq = NULL; zval *n, *seq_param = NULL, *len, *j = NULL, *k = NULL, *l, *block, *str, *lines = NULL, *_0, _1, *_3, _4, _6 = zval_used_for_init, _7 = zval_used_for_init, *_8 = NULL, *_9; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &n, &seq_param); zephir_get_strval(seq, seq_param); ZEPHIR_INIT_VAR(len); ZVAL_LONG(len, zephir_fast_strlen_ev(seq)); ZEPHIR_INIT_VAR(_0); ZEPHIR_SINIT_VAR(_1); ZVAL_LONG(&_1, ((zephir_get_numberval(len) * 60) + 1)); zephir_create_array(_0, zephir_get_intval(&_1), 1 TSRMLS_CC); zephir_get_arrval(_2, _0); ZEPHIR_INIT_VAR(str); zephir_fast_join(str, seq, _2 TSRMLS_CC); ZEPHIR_INIT_VAR(_3); ZEPHIR_SINIT_VAR(_4); mul_function(&_4, len, len TSRMLS_CC); zephir_create_array(_3, zephir_get_intval(&_4), 1 TSRMLS_CC); zephir_get_arrval(_5, _3); ZEPHIR_CPY_WRT(lines, _5); ZEPHIR_INIT_VAR(j); mul_function(j, len, len TSRMLS_CC); i = zephir_get_numberval(j); while (1) { if (ZEPHIR_LE_LONG(j, -1)) { break; } ZEPHIR_SEPARATE(j); zephir_decrement(j); ZEPHIR_SINIT_NVAR(_6); ZVAL_LONG(&_6, (60 * zephir_get_numberval(j))); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, 60); ZEPHIR_INIT_NVAR(_8); zephir_substr(_8, str, zephir_get_intval(&_6), 60 , 0); zephir_array_update_zval(&lines, j, &_8, PH_COPY | PH_SEPARATE); } ZEPHIR_INIT_NVAR(j); ZVAL_LONG(j, 0); ZEPHIR_SINIT_NVAR(_6); ZVAL_DOUBLE(&_6, zephir_safe_div_zval_long(n, 60 TSRMLS_CC)); ZEPHIR_INIT_VAR(l); ZVAL_DOUBLE(l, zephir_floor(&_6 TSRMLS_CC)); ZEPHIR_SINIT_NVAR(_7); ZVAL_DOUBLE(&_7, zephir_safe_div_zval_long(l, i TSRMLS_CC)); ZEPHIR_INIT_VAR(k); ZVAL_DOUBLE(k, zephir_floor(&_7 TSRMLS_CC)); ZEPHIR_INIT_VAR(block); zephir_fast_join_str(block, SL("\n"), lines TSRMLS_CC); while (1) { if (!(ZEPHIR_LT(j, k))) { break; } zend_print_zval(block, 0); ZEPHIR_SEPARATE(j); zephir_increment(j); } ZEPHIR_INIT_NVAR(j); ZVAL_LONG(j, 0); ZEPHIR_INIT_NVAR(k); ZVAL_DOUBLE(k, zephir_safe_mod_zval_long(l, i TSRMLS_CC)); while (1) { if (!(ZEPHIR_LT(j, k))) { break; } zephir_array_fetch(&_9, lines, j, PH_NOISY | PH_READONLY, "test/fasta.zep", 38 TSRMLS_CC); zend_print_zval(_9, 0); ZEPHIR_SEPARATE(j); zephir_increment(j); } if (zephir_safe_mod_zval_long(n, 60 TSRMLS_CC) > 0) { zephir_array_fetch(&_9, lines, k, PH_NOISY | PH_READONLY, "test/fasta.zep", 43 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_6); ZVAL_LONG(&_6, 0); ZEPHIR_SINIT_NVAR(_7); ZVAL_DOUBLE(&_7, zephir_safe_mod_zval_long(n, 60 TSRMLS_CC)); ZEPHIR_INIT_NVAR(_8); zephir_substr(_8, _9, 0 , zephir_get_intval(&_7), 0); zend_print_zval(_8, 0); } ZEPHIR_MM_RESTORE(); }