UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

395 lines (388 loc) 13.5 kB
function get_defined_constants(categorize) { // From: http://phpjs.org/functions // + original by: Brett Zamir (http://brett-zamir.me) // % note 1: Could possibly substitute some others like M_PI with JavaScript's Math.PI, etc., but here // % note 1: sticking to PHP, except for changing: NULL to null, NAN to NaN, and INF to Number.POSITIVE_INFINITY // % note 2: TRUE, FALSE, and NULL capitalized constants (as in PHP) could work ok in some // % note 2: implementations, but not all, so they are commented out // % note 3: We used a PHP script to auto-convert these, so we can simply reuse it to add more below if we // % note 3: implement more extensions needing constants, assuming we have a PHP set-up which // % note 3: uses the extensions! // % note 4: If you do ini_set('phpjs.get_defined_constants.setConstants', 'this') then call this function, // % note 4: it will set the PHP constants as globals for you on the "this" object. In the namespaced version, this // % note 4: means the "constants" will be attached directly to the $P object: e.g., $P.PREG_OFFSET_CAPTURE // % note 4: In the non-namespaced version, this will act like the setting mentioned in note 6 // % note 4: If you do ini_set('phpjs.get_defined_constants.setConstants', 'thisExt') then call this function, // % note 4: it will set the PHP constants for you, but will first create a namespace on your object // % note 4: for each extension to which the "constants" will be added. For example, $P.pcre.PREG_OFFSET_CAPTURE // % note 4: For the non-namespaced version, this will be created on window: alert(pcre.PREG_OFFSET_CAPTURE); // % note 4: If you do ini_set('phpjs.get_defined_constants.setConstants', true) then call this function, // % note 4: it will set the PHP constants as window globals for you, even if you are using the php.js namespaced // % note 4: version. For example, you can just do: alert(PREG_OFFSET_CAPTURE); . Only the constants set directly // % note 4: at the level of window globals, will actually be immutable constants. // % note 5: Note that our functions might not have been designed yet to handle PHP-style constants if at all, as // % note 5: some of our extensions rely simply on the constant name being passed in to the function as a // % note 5: string to work as a flag // - depends on: define // * example 1: var cnsts = get_defined_constants(); // * example 1: cnsts.E_NOTICE; // * returns 1: 8 // * example 2: var cnsts = get_defined_constants(true); // passing false will produce the same value! (in PHP as well as here) // * example 2: cnsts.internal.E_NOTICE; // * returns 2: 8 var ext = '', cnst = '', constObj = {}, flatConstObj = {}, win, thisExt = false; constObj = { 'internal': { 'E_ERROR': 1, 'E_RECOVERABLE_ERROR': 4096, 'E_WARNING': 2, 'E_PARSE': 4, 'E_NOTICE': 8, 'E_STRICT': 2048, 'E_CORE_ERROR': 16, 'E_CORE_WARNING': 32, 'E_COMPILE_ERROR': 64, 'E_COMPILE_WARNING': 128, 'E_USER_ERROR': 256, 'E_USER_WARNING': 512, 'E_USER_NOTICE': 1024, 'E_ALL': 6143, /* // Could work ok in some implementations, but not all, so commenting out 'TRUE' : true, 'FALSE' : false, 'NULL' : null, */ 'ZEND_THREAD_SAFE': true, 'PHP_VERSION': '5.2.6', 'PHP_OS': 'WINNT', 'PHP_SAPI': 'apache2handler', 'DEFAULT_INCLUDE_PATH': '.;C:\\php5\\pear', 'PEAR_INSTALL_DIR': 'C:\\php5\\pear', 'PEAR_EXTENSION_DIR': 'C:\\php5', 'PHP_EXTENSION_DIR': 'C:\\php5', 'PHP_PREFIX': 'C:\\php5', 'PHP_BINDIR': 'C:\\php5', 'PHP_LIBDIR': 'C:\\php5', 'PHP_DATADIR': 'C:\\php5', 'PHP_SYSCONFDIR': 'C:\\php5', 'PHP_LOCALSTATEDIR': 'C:\\php5', 'PHP_CONFIG_FILE_PATH': 'C:\\Windows', 'PHP_CONFIG_FILE_SCAN_DIR': '', 'PHP_SHLIB_SUFFIX': 'dll', 'PHP_EOL': '\n', 'PHP_INT_MAX': 2147483647, 'PHP_INT_SIZE': 4, 'PHP_OUTPUT_HANDLER_START': 1, 'PHP_OUTPUT_HANDLER_CONT': 2, 'PHP_OUTPUT_HANDLER_END': 4, 'UPLOAD_ERR_OK': 0, 'UPLOAD_ERR_INI_SIZE': 1, 'UPLOAD_ERR_FORM_SIZE': 2, 'UPLOAD_ERR_PARTIAL': 3, 'UPLOAD_ERR_NO_FILE': 4, 'UPLOAD_ERR_NO_TMP_DIR': 6, 'UPLOAD_ERR_CANT_WRITE': 7, 'UPLOAD_ERR_EXTENSION': 8 }, 'pcre': { 'PREG_PATTERN_ORDER': 1, 'PREG_SET_ORDER': 2, 'PREG_OFFSET_CAPTURE': 256, 'PREG_SPLIT_NO_EMPTY': 1, 'PREG_SPLIT_DELIM_CAPTURE': 2, 'PREG_SPLIT_OFFSET_CAPTURE': 4, 'PREG_GREP_INVERT': 1, 'PREG_NO_ERROR': 0, 'PREG_INTERNAL_ERROR': 1, 'PREG_BACKTRACK_LIMIT_ERROR': 2, 'PREG_RECURSION_LIMIT_ERROR': 3, 'PREG_BAD_UTF8_ERROR': 4, 'PCRE_VERSION': '7.6 2008-01-28' }, 'session': { 'DATE_ATOM': 'Y-m-d\\TH:i:sP', 'DATE_COOKIE': 'l, d-M-y H:i:s T', 'DATE_ISO8601': 'Y-m-d\\TH:i:sO', 'DATE_RFC822': 'D, d M y H:i:s O', 'DATE_RFC850': 'l, d-M-y H:i:s T', 'DATE_RFC1036': 'D, d M y H:i:s O', 'DATE_RFC1123': 'D, d M Y H:i:s O', 'DATE_RFC2822': 'D, d M Y H:i:s O', 'DATE_RFC3339': 'Y-m-d\\TH:i:sP', 'DATE_RSS': 'D, d M Y H:i:s O', 'DATE_W3C': 'Y-m-d\\TH:i:sP', 'SUNFUNCS_RET_TIMESTAMP': 0, 'SUNFUNCS_RET_STRING': 1, 'SUNFUNCS_RET_DOUBLE': 2 }, 'standard': { 'CONNECTION_ABORTED': 1, 'CONNECTION_NORMAL': 0, 'CONNECTION_TIMEOUT': 2, 'INI_USER': 1, 'INI_PERDIR': 2, 'INI_SYSTEM': 4, 'INI_ALL': 7, 'PHP_URL_SCHEME': 0, 'PHP_URL_HOST': 1, 'PHP_URL_PORT': 2, 'PHP_URL_USER': 3, 'PHP_URL_PASS': 4, 'PHP_URL_PATH': 5, 'PHP_URL_QUERY': 6, 'PHP_URL_FRAGMENT': 7, 'M_E': 2.718281828459, 'M_LOG2E': 1.442695040889, 'M_LOG10E': 0.43429448190325, 'M_LN2': 0.69314718055995, 'M_LN10': 2.302585092994, 'M_PI': 3.1415926535898, 'M_PI_2': 1.5707963267949, 'M_PI_4': 0.78539816339745, 'M_1_PI': 0.31830988618379, 'M_2_PI': 0.63661977236758, 'M_SQRTPI': 1.7724538509055, 'M_2_SQRTPI': 1.1283791670955, 'M_LNPI': 1.1447298858494, 'M_EULER': 0.57721566490153, 'M_SQRT2': 1.4142135623731, 'M_SQRT1_2': 0.70710678118655, 'M_SQRT3': 1.7320508075689, 'INF': Number.POSITIVE_INFINITY, 'NAN': 0, 'INFO_GENERAL': 1, 'INFO_CREDITS': 2, 'INFO_CONFIGURATION': 4, 'INFO_MODULES': 8, 'INFO_ENVIRONMENT': 16, 'INFO_VARIABLES': 32, 'INFO_LICENSE': 64, 'INFO_ALL': -1, 'CREDITS_GROUP': 1, 'CREDITS_GENERAL': 2, 'CREDITS_SAPI': 4, 'CREDITS_MODULES': 8, 'CREDITS_DOCS': 16, 'CREDITS_FULLPAGE': 32, 'CREDITS_QA': 64, 'CREDITS_ALL': -1, 'HTML_SPECIALCHARS': 0, 'HTML_ENTITIES': 1, 'ENT_COMPAT': 2, 'ENT_QUOTES': 3, 'ENT_NOQUOTES': 0, 'STR_PAD_LEFT': 0, 'STR_PAD_RIGHT': 1, 'STR_PAD_BOTH': 2, 'PATHINFO_DIRNAME': 1, 'PATHINFO_BASENAME': 2, 'PATHINFO_EXTENSION': 4, 'PATHINFO_FILENAME': 8, 'CHAR_MAX': 127, 'LC_CTYPE': 2, 'LC_NUMERIC': 4, 'LC_TIME': 5, 'LC_COLLATE': 1, 'LC_MONETARY': 3, 'LC_ALL': 0, 'SEEK_SET': 0, 'SEEK_CUR': 1, 'SEEK_END': 2, 'LOCK_SH': 1, 'LOCK_EX': 2, 'LOCK_UN': 3, 'LOCK_NB': 4, 'STREAM_NOTIFY_CONNECT': 2, 'STREAM_NOTIFY_AUTH_REQUIRED': 3, 'STREAM_NOTIFY_AUTH_RESULT': 10, 'STREAM_NOTIFY_MIME_TYPE_IS': 4, 'STREAM_NOTIFY_FILE_SIZE_IS': 5, 'STREAM_NOTIFY_REDIRECTED': 6, 'STREAM_NOTIFY_PROGRESS': 7, 'STREAM_NOTIFY_FAILURE': 9, 'STREAM_NOTIFY_COMPLETED': 8, 'STREAM_NOTIFY_RESOLVE': 1, 'STREAM_NOTIFY_SEVERITY_INFO': 0, 'STREAM_NOTIFY_SEVERITY_WARN': 1, 'STREAM_NOTIFY_SEVERITY_ERR': 2, 'STREAM_FILTER_READ': 1, 'STREAM_FILTER_WRITE': 2, 'STREAM_FILTER_ALL': 3, 'STREAM_CLIENT_PERSISTENT': 1, 'STREAM_CLIENT_ASYNC_CONNECT': 2, 'STREAM_CLIENT_CONNECT': 4, 'STREAM_CRYPTO_METHOD_SSLv2_CLIENT': 0, 'STREAM_CRYPTO_METHOD_SSLv3_CLIENT': 1, 'STREAM_CRYPTO_METHOD_SSLv23_CLIENT': 2, 'STREAM_CRYPTO_METHOD_TLS_CLIENT': 3, 'STREAM_CRYPTO_METHOD_SSLv2_SERVER': 4, 'STREAM_CRYPTO_METHOD_SSLv3_SERVER': 5, 'STREAM_CRYPTO_METHOD_SSLv23_SERVER': 6, 'STREAM_CRYPTO_METHOD_TLS_SERVER': 7, 'STREAM_SHUT_RD': 0, 'STREAM_SHUT_WR': 1, 'STREAM_SHUT_RDWR': 2, 'STREAM_PF_INET': 2, 'STREAM_PF_INET6': 23, 'STREAM_PF_UNIX': 1, 'STREAM_IPPROTO_IP': 0, 'STREAM_IPPROTO_TCP': 6, 'STREAM_IPPROTO_UDP': 17, 'STREAM_IPPROTO_ICMP': 1, 'STREAM_IPPROTO_RAW': 255, 'STREAM_SOCK_STREAM': 1, 'STREAM_SOCK_DGRAM': 2, 'STREAM_SOCK_RAW': 3, 'STREAM_SOCK_SEQPACKET': 5, 'STREAM_SOCK_RDM': 4, 'STREAM_PEEK': 2, 'STREAM_OOB': 1, 'STREAM_SERVER_BIND': 4, 'STREAM_SERVER_LISTEN': 8, 'FILE_USE_INCLUDE_PATH': 1, 'FILE_IGNORE_NEW_LINES': 2, 'FILE_SKIP_EMPTY_LINES': 4, 'FILE_APPEND': 8, 'FILE_NO_DEFAULT_CONTEXT': 16, 'PSFS_PASS_ON': 2, 'PSFS_FEED_ME': 1, 'PSFS_ERR_FATAL': 0, 'PSFS_FLAG_NORMAL': 0, 'PSFS_FLAG_FLUSH_INC': 1, 'PSFS_FLAG_FLUSH_CLOSE': 2, 'CRYPT_SALT_LENGTH': 12, 'CRYPT_STD_DES': 1, 'CRYPT_EXT_DES': 0, 'CRYPT_MD5': 1, 'CRYPT_BLOWFISH': 0, 'DIRECTORY_SEPARATOR': '\\', 'PATH_SEPARATOR': ';', 'GLOB_BRACE': 128, 'GLOB_MARK': 8, 'GLOB_NOSORT': 32, 'GLOB_NOCHECK': 16, 'GLOB_NOESCAPE': 4096, 'GLOB_ERR': 4, 'GLOB_ONLYDIR': 1073741824, 'GLOB_AVAILABLE_FLAGS': 1073746108, 'LOG_EMERG': 1, 'LOG_ALERT': 1, 'LOG_CRIT': 1, 'LOG_ERR': 4, 'LOG_WARNING': 5, 'LOG_NOTICE': 6, 'LOG_INFO': 6, 'LOG_DEBUG': 6, 'LOG_KERN': 0, 'LOG_USER': 8, 'LOG_MAIL': 16, 'LOG_DAEMON': 24, 'LOG_AUTH': 32, 'LOG_SYSLOG': 40, 'LOG_LPR': 48, 'LOG_NEWS': 56, 'LOG_UUCP': 64, 'LOG_CRON': 72, 'LOG_AUTHPRIV': 80, 'LOG_PID': 1, 'LOG_CONS': 2, 'LOG_ODELAY': 4, 'LOG_NDELAY': 8, 'LOG_NOWAIT': 16, 'LOG_PERROR': 32, 'EXTR_OVERWRITE': 0, 'EXTR_SKIP': 1, 'EXTR_PREFIX_SAME': 2, 'EXTR_PREFIX_ALL': 3, 'EXTR_PREFIX_INVALID': 4, 'EXTR_PREFIX_IF_EXISTS': 5, 'EXTR_IF_EXISTS': 6, 'EXTR_REFS': 256, 'SORT_ASC': 4, 'SORT_DESC': 3, 'SORT_REGULAR': 0, 'SORT_NUMERIC': 1, 'SORT_STRING': 2, 'SORT_LOCALE_STRING': 5, 'CASE_LOWER': 0, 'CASE_UPPER': 1, 'COUNT_NORMAL': 0, 'COUNT_RECURSIVE': 1, 'ASSERT_ACTIVE': 1, 'ASSERT_CALLBACK': 2, 'ASSERT_BAIL': 3, 'ASSERT_WARNING': 4, 'ASSERT_QUIET_EVAL': 5, 'STREAM_USE_PATH': 1, 'STREAM_IGNORE_URL': 2, 'STREAM_ENFORCE_SAFE_MODE': 4, 'STREAM_REPORT_ERRORS': 8, 'STREAM_MUST_SEEK': 16, 'STREAM_URL_STAT_LINK': 1, 'STREAM_URL_STAT_QUIET': 2, 'STREAM_MKDIR_RECURSIVE': 1, 'STREAM_IS_URL': 1, 'IMAGETYPE_GIF': 1, 'IMAGETYPE_JPEG': 2, 'IMAGETYPE_PNG': 3, 'IMAGETYPE_SWF': 4, 'IMAGETYPE_PSD': 5, 'IMAGETYPE_BMP': 6, 'IMAGETYPE_TIFF_II': 7, 'IMAGETYPE_TIFF_MM': 8, 'IMAGETYPE_JPC': 9, 'IMAGETYPE_JP2': 10, 'IMAGETYPE_JPX': 11, 'IMAGETYPE_JB2': 12, 'IMAGETYPE_SWC': 13, 'IMAGETYPE_IFF': 14, 'IMAGETYPE_WBMP': 15, 'IMAGETYPE_JPEG2000': 9, 'IMAGETYPE_XBM': 16 } }; if (this.php_js && this.php_js.ini && this.php_js.ini['phpjs.get_defined_constants.setConstants'] && this.php_js.ini['phpjs.get_defined_constants.setConstants'].local_value) { // Allow us to set a configuration to let this function set global constants if (this.php_js.ini['phpjs.get_defined_constants.setConstants'].local_value === 'this') { win = this; } else if (this.php_js.ini['phpjs.get_defined_constants.setConstants'].local_value === 'thisExt') { win = this; thisExt = true; } else { win = this.window; } for (ext in constObj) { if (thisExt) { // Allows namespacing constants (e.g,. this.pcre.PREG_OFFSET_CAPTURE) for (cnst in constObj[ext]) { if (!win[ext]) { win[ext] = {}; } // These will not be real constants! win[ext][cnst] = constObj[ext][cnst]; } } else { for (cnst in constObj[ext]) { if (this === this.window) { // Take advantage of fact, in this case we can make real constants this.define(cnst, constObj[ext][cnst]); } else { // These will not be real constants! win[cnst] = constObj[ext][cnst]; } } } } } if (typeof categorize !== 'undefined') { // PHP will return if any argument is set, even false return constObj; } for (ext in constObj) { for (cnst in constObj[ext]) { flatConstObj[cnst] = constObj[ext][cnst]; } } return flatConstObj; }