root/ext/intl/spoofchecker/spoofchecker_main.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. PHP_METHOD
  2. PHP_METHOD
  3. PHP_METHOD
  4. PHP_METHOD

   1 /*
   2    +----------------------------------------------------------------------+
   3    | PHP Version 5                                                        |
   4    +----------------------------------------------------------------------+
   5    | This source file is subject to version 3.01 of the PHP license,      |
   6    | that is bundled with this package in the file LICENSE, and is        |
   7    | available through the world-wide-web at the following url:           |
   8    | http://www.php.net/license/3_01.txt                                  |
   9    | If you did not receive a copy of the PHP license and are unable to   |
  10    | obtain it through the world-wide-web, please send a note to          |
  11    | license@php.net so we can mail you a copy immediately.               |
  12    +----------------------------------------------------------------------+
  13    | Authors: Scott MacVicar <scottmac@php.net>                           |
  14    +----------------------------------------------------------------------+
  15  */
  16 
  17 #ifdef HAVE_CONFIG_H
  18 #include "config.h"
  19 #endif
  20 
  21 #include "php_intl.h"
  22 #include "spoofchecker_class.h"
  23 
  24 /* {{{ proto bool Spoofchecker::isSuspicious( string text[, int &error_code ] )
  25  * Checks if a given text contains any suspicious characters
  26  */
  27 PHP_METHOD(Spoofchecker, isSuspicious)
  28 {
  29         int ret;
  30         char *text;
  31         int text_len;
  32         zval *error_code = NULL;
  33         SPOOFCHECKER_METHOD_INIT_VARS;
  34         
  35         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &text, &text_len, &error_code)) {
  36                 return;
  37         }
  38         
  39         SPOOFCHECKER_METHOD_FETCH_OBJECT;
  40 
  41         ret = uspoof_checkUTF8(co->uspoof, text, text_len, NULL, SPOOFCHECKER_ERROR_CODE_P(co));
  42 
  43         if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
  44                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
  45                 RETURN_TRUE;
  46         }
  47         
  48         if (error_code) {
  49                 zval_dtor(error_code);
  50                 ZVAL_LONG(error_code, ret);
  51         }
  52         RETVAL_BOOL(ret != 0);
  53 }
  54 /* }}} */
  55 
  56 /* {{{ proto bool Spoofchecker::areConfusable( string str1, string str2[, int &error_code ] )
  57  * Checks if a given text contains any confusable characters
  58  */
  59 PHP_METHOD(Spoofchecker, areConfusable)
  60 {
  61         int ret;
  62         char *s1, *s2;
  63         int s1_len, s2_len;
  64         zval *error_code = NULL;
  65         SPOOFCHECKER_METHOD_INIT_VARS;
  66         
  67         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|z", &s1, &s1_len,
  68                                                                                  &s2, &s2_len, &error_code)) {
  69                 return;
  70         }
  71 
  72         SPOOFCHECKER_METHOD_FETCH_OBJECT;
  73 
  74         ret = uspoof_areConfusableUTF8(co->uspoof, s1, s1_len, s2, s2_len, SPOOFCHECKER_ERROR_CODE_P(co));
  75 
  76         if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
  77                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
  78                 RETURN_TRUE;
  79         }
  80         
  81         if (error_code) {
  82                 zval_dtor(error_code);
  83                 ZVAL_LONG(error_code, ret);
  84         }
  85         RETVAL_BOOL(ret != 0);
  86 }
  87 /* }}} */
  88 
  89 /* {{{ proto void Spoofchecker::setAllowedLocales( string locales )
  90  * Locales to use when running checks
  91  */
  92 PHP_METHOD(Spoofchecker, setAllowedLocales)
  93 {
  94         char *locales;
  95         int locales_len;
  96         SPOOFCHECKER_METHOD_INIT_VARS;
  97         
  98         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &locales, &locales_len)) {
  99                 return;
 100         }
 101 
 102         SPOOFCHECKER_METHOD_FETCH_OBJECT;
 103 
 104         uspoof_setAllowedLocales(co->uspoof, locales, SPOOFCHECKER_ERROR_CODE_P(co));
 105 
 106         if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
 107                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
 108                 return;
 109         }
 110 }
 111 /* }}} */
 112 
 113 /* {{{ proto void Spoofchecker::setChecks( int checks )
 114  * Set the checks to run
 115  */
 116 PHP_METHOD(Spoofchecker, setChecks)
 117 {
 118         long checks;
 119         SPOOFCHECKER_METHOD_INIT_VARS;
 120                 
 121         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &checks)) {
 122                 return;
 123         }
 124 
 125         SPOOFCHECKER_METHOD_FETCH_OBJECT;
 126 
 127         uspoof_setChecks(co->uspoof, checks, SPOOFCHECKER_ERROR_CODE_P(co));
 128 
 129         if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
 130                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
 131         }
 132 }
 133 /* }}} */
 134 
 135 /*
 136  * Local variables:
 137  * tab-width: 4
 138  * c-basic-offset: 4
 139  * End:
 140  * vim600: noet sw=4 ts=4 fdm=marker
 141  * vim<600: noet sw=4 ts=4
 142  */

/* [<][>][^][v][top][bottom][index][help] */