SPOOFCHECKER_EXPOSE_CLASS_CONST(INVISIBLE)
SPOOFCHECKER_EXPOSE_CLASS_CONST(CHAR_LIMIT)
+#if U_ICU_VERSION_MAJOR_NUM >= 51
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(ASCII)
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(HIGHLY_RESTRICTIVE)
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(MODERATELY_RESTRICTIVE)
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(MINIMALLY_RESTRICTIVE)
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(UNRESTRICTIVE)
+#endif
+#if U_ICU_VERSION_MAJOR_NUM >= 53
+ SPOOFCHECKER_EXPOSE_CLASS_CONST(SINGLE_SCRIPT_RESTRICTIVE)
+#endif
#undef SPOOFCHECKER_EXPOSE_CLASS_CONST
}
ZEND_ARG_INFO(1, error)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(spoofchecker_set_restriction_level, 0, 0, 1)
+ ZEND_ARG_INFO(0, checks)
+ZEND_END_ARG_INFO()
+
/* }}} */
/* {{{ Spoofchecker_class_functions
PHP_ME(Spoofchecker, areConfusable, spoofchecker_are_confusable, ZEND_ACC_PUBLIC)
PHP_ME(Spoofchecker, setAllowedLocales, spoofchecker_set_allowed_locales, ZEND_ACC_PUBLIC)
PHP_ME(Spoofchecker, setChecks, spoofchecker_set_checks, ZEND_ACC_PUBLIC)
+ PHP_ME(Spoofchecker, setRestrictionLevel, spoofchecker_set_restriction_level, ZEND_ACC_PUBLIC)
PHP_FE_END
};
/* }}} */
}
/* }}} */
+/* {{{ proto void Spoofchecker::setRestrictionLevel( int $restriction_level )
+ * Set the loosest restriction level allowed for strings.
+ */
+PHP_METHOD(Spoofchecker, setRestrictionLevel)
+{
+ zend_long level;
+ SPOOFCHECKER_METHOD_INIT_VARS;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &level)) {
+ return;
+ }
+
+ SPOOFCHECKER_METHOD_FETCH_OBJECT;
+
+ if (USPOOF_ASCII != level &&
+ USPOOF_SINGLE_SCRIPT_RESTRICTIVE != level &&
+ USPOOF_HIGHLY_RESTRICTIVE != level &&
+ USPOOF_MODERATELY_RESTRICTIVE != level &&
+ USPOOF_MINIMALLY_RESTRICTIVE != level &&
+ USPOOF_UNRESTRICTIVE != level) {
+ php_error_docref(NULL, E_WARNING, "Invalid restriction level value");
+ return;
+ }
+
+ uspoof_setRestrictionLevel(co->uspoof, (URestrictionLevel)level);
+}
+/* }}} */
+
/*
* Local variables:
* tab-width: 4
PHP_METHOD(Spoofchecker, areConfusable);
PHP_METHOD(Spoofchecker, setAllowedLocales);
PHP_METHOD(Spoofchecker, setChecks);
+PHP_METHOD(Spoofchecker, setRestrictionLevel);
#endif // SPOOFCHECKER_MAIN_H
--- /dev/null
+--TEST--
+spoofchecker with restriction level
+--SKIPIF--
+<?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
+--FILE--
+<?php
+
+$x = new Spoofchecker();
+$x->setRestrictionLevel(Spoofchecker::HIGHLY_RESTRICTIVE);
+
+$mixed = "\u{91CE}\u{7403}\u{30FC}";
+var_dump($x->isSuspicious($mixed));
+
+$x->setRestrictionLevel(Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE);
+
+$mixed = "\u{91CE}\u{7403}\u{30FC} abc";
+var_dump($x->isSuspicious($mixed));
+?>
+--EXPECT--
+bool(false)
+bool(true)