diff --git a/.drone.yml b/.drone.yml index 17486d8564..99e47e18e8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -43,31 +43,6 @@ trigger: - pull_request - push -#--- -#kind: pipeline -#name: syntax-and-phan -# -#steps: -#- name: submodules -# image: docker:git -# commands: -# - git submodule update --init -#- name: phan -# image: nextcloudci/php7.2:php7.2-13 -# commands: -# - composer install -# - composer require --dev "phan/phan:0.11.1" -# - ./lib/composer/phan/phan/phan -k build/.phan/config.php -# - php ./build/.phan/plugin-checker.php -# -#trigger: -# branch: -# - master -# - stable* -# event: -# - pull_request -# - push - --- kind: pipeline name: litmus diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php index d997e486c9..ef824821e3 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php @@ -381,9 +381,7 @@ class EmailProvider extends AbstractProvider { $diff = $dtstartDt->diff($dtendDt); - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ $dtstartDt = new \DateTime($dtstartDt->format(\DateTime::ATOM)); - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ $dtendDt = new \DateTime($dtendDt->format(\DateTime::ATOM)); if ($isAllDay) { @@ -400,9 +398,7 @@ class EmailProvider extends AbstractProvider { $startTimezone = $endTimezone = null; if (!$vevent->DTSTART->isFloating()) { - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ $startTimezone = $vevent->DTSTART->getDateTime()->getTimezone()->getName(); - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ $endTimezone = $this->getDTEndFromEvent($vevent)->getDateTime()->getTimezone()->getName(); } diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php index 688e5c3b10..769f9927e4 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php @@ -138,15 +138,11 @@ class PushProvider extends AbstractProvider { ? ((string) $vevent->LOCATION) : null, 'all_day' => $start instanceof Property\ICalendar\Date, - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ 'start_atom' => $start->getDateTime()->format(\DateTime::ATOM), 'start_is_floating' => $start->isFloating(), - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ 'start_timezone' => $start->getDateTime()->getTimezone()->getName(), - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ 'end_atom' => $end->getDateTime()->format(\DateTime::ATOM), 'end_is_floating' => $end->isFloating(), - /** @phan-suppress-next-line PhanUndeclaredClassMethod */ 'end_timezone' => $end->getDateTime()->getTimezone()->getName(), ]; } diff --git a/build/.phan/config.php b/build/.phan/config.php deleted file mode 100644 index 04722d5b06..0000000000 --- a/build/.phan/config.php +++ /dev/null @@ -1,226 +0,0 @@ - [ - '3rdparty', - 'apps/', - 'build/.phan/stubs', - 'core/', - 'lib/', - 'lib/composer', - 'ocs-provider/', - 'ocs/', - 'tests/lib/Util/User', - 'themes', - ], - 'file_list' => [ - 'index.php', - 'public.php', - 'remote.php', - 'status.php', - 'version.php', - ], - - // A directory list that defines files that will be excluded - // from static analysis, but whose class and method - // information should be included. - // - // Generally, you'll want to include the directories for - // third-party code (such as "vendor/") in this list. - // - // n.b.: If you'd like to parse but not analyze 3rd - // party code, directories containing that code - // should be added to the `directory_list` as - // to `exclude_analysis_directory_list`. - 'exclude_analysis_directory_list' => [ - '3rdparty', - 'apps/accessibility/composer', - 'apps/admin_audit/composer', - 'apps/admin_audit/tests', - 'apps/cloud_federation_api/composer', - 'apps/comments/composer', - 'apps/comments/tests', - 'apps/dav/composer', - 'apps/dav/tests', - 'apps/encryption/composer', - 'apps/encryption/tests', - 'apps/federatedfilesharing/composer', - 'apps/federatedfilesharing/tests', - 'apps/federation/composer', - 'apps/federation/tests', - 'apps/files/composer', - 'apps/files/tests', - 'apps/files_external/3rdparty', - 'apps/files_external/composer', - 'apps/files_external/tests', - 'apps/files_sharing/composer', - 'apps/files_sharing/tests', - 'apps/files_trashbin/composer', - 'apps/files_trashbin/tests', - 'apps/files_versions/composer', - 'apps/files_versions/tests', - 'apps/lookup_server_connector/composer', - 'apps/lookup_server_connector/tests', - 'apps/oauth2/composer', - 'apps/oauth2/tests', - 'apps/provisioning_api/composer', - 'apps/provisioning_api/tests', - 'apps/settings/composer', - 'apps/settings/tests', - 'apps/sharebymail/composer', - 'apps/sharebymail/tests', - 'apps/systemtags/composer', - 'apps/systemtags/tests', - 'apps/testing/composer', - 'apps/testing/tests', - 'apps/theming/composer', - 'apps/theming/tests', - 'apps/twofactor_backupcodes/composer', - 'apps/twofactor_backupcodes/tests', - 'apps/updatenotification/composer', - 'apps/updatenotification/tests', - 'apps/user_ldap/composer', - 'apps/user_ldap/tests', - 'apps/workflowengine/composer', - 'apps/workflowengine/tests', - 'build/.phan/', - 'lib/composer', - ], - - // A file list that defines files that will be excluded - // from parsing and analysis and will not be read at all. - // - // This is useful for excluding hopelessly unanalyzable - // files that can't be removed for whatever reason. - 'exclude_file_list' => [ - 'apps/encryption/appinfo/routes.php', - 'apps/federation/appinfo/routes.php', - 'apps/files/appinfo/routes.php', - 'apps/files_external/appinfo/routes.php', - 'apps/files_trashbin/appinfo/routes.php', - 'apps/files_versions/appinfo/routes.php', - 'apps/testing/appinfo/routes.php', - 'apps/user_ldap/appinfo/routes.php', - 'settings/routes.php', - 'settings/ajax/updateapp.php', - 'settings/ajax/uninstallapp.php', - 'settings/ajax/togglesubadmins.php', - 'settings/ajax/setquota.php', - 'settings/ajax/enableapp.php', - 'settings/ajax/disableapp.php', - 'core/register_command.php', - 'ocs/routes.php', - 'ocs/v1.php', - 'core/routes.php', - ], - - - // The number of processes to fork off during the analysis - // phase. - 'processes' => 5, - - // Backwards Compatibility Checking. This is slow - // and expensive, but you should consider running - // it before upgrading your version of PHP to a - // new version that has backward compatibility - // breaks. - 'backward_compatibility_checks' => false, - - // Run a quick version of checks that takes less - // time at the cost of not running as thorough - // an analysis. You should consider setting this - // to true only when you wish you had more issues - // to fix in your code base. - 'quick_mode' => false, - - // If true, check to make sure the return type declared - // in the doc-block (if any) matches the return type - // declared in the method signature. This process is - // slow. - 'check_docblock_signature_param_type_match' => true, - - // If enabled, check all methods that override a - // parent method to make sure its signature is - // compatible with the parent's. This check - // can add quite a bit of time to the analysis. - 'analyze_signature_compatibility' => true, - - // The minimum severity level to report on. This can be - // set to Issue::SEVERITY_LOW, Issue::SEVERITY_NORMAL or - // Issue::SEVERITY_CRITICAL. Setting it to only - // critical issues is a good place to start on a big - // sloppy mature code base. - 'minimum_severity' => \Phan\Issue::SEVERITY_CRITICAL, - - // If true, missing properties will be created when - // they are first seen. If false, we'll report an - // error message if there is an attempt to write - // to a class property that wasn't explicitly - // defined. - 'allow_missing_properties' => false, - - // Allow null to be cast as any type and for any - // type to be cast to null. Setting this to false - // will cut down on false positives. - 'null_casts_as_any_type' => false, - - // Allow null to be cast as any array-like type (Requires 0.9.3+) - // This is an incremental step in migrating away from null_casts_as_any_type. - // If null_casts_as_any_type is true, this has no effect. - 'null_casts_as_array' => false, - - // Allow any array-like type to be cast to null. (Requires 0.9.3+) - // This is an incremental step in migrating away from null_casts_as_any_type. - // If null_casts_as_any_type is true, this has no effect. - 'array_casts_as_null' => false, - - // If enabled, scalars (int, float, bool, true, false, string, null) - // are treated as if they can cast to each other. - 'scalar_implicit_cast' => true, - - // If this has entries, scalars (int, float, bool, true, false, string, null) - // are allowed to perform the casts listed. - // E.g. ['int' => ['float', 'string'], 'float' => ['int'], 'string' => ['int'], 'null' => ['string']] - // allows casting null to a string, but not vice versa. - // (subset of scalar_implicit_cast) - // (Requires 0.9.3+) - 'scalar_implicit_partial' => [], - - // If true, seemingly undeclared variables in the global - // scope will be ignored. This is useful for projects - // with complicated cross-file globals that you have no - // hope of fixing. - 'ignore_undeclared_variables_in_global_scope' => true, - - // Add any issue types (such as 'PhanUndeclaredMethod') - // to this black-list to inhibit them from being reported. - 'suppress_issue_types' => [ - // 'PhanUndeclaredMethod', - ], - - // If empty, no filter against issues types will be applied. - // If this white-list is non-empty, only issues within the list - // will be emitted by Phan. - 'whitelist_issue_types' => [ - // 'PhanAccessMethodPrivate', - ], - - // A list of plugin files to execute - 'plugins' => [ - 'build/.phan/plugins/SqlInjectionCheckerPlugin.php', - ], -]; diff --git a/build/.phan/plugin-checker.php b/build/.phan/plugin-checker.php deleted file mode 100644 index f7946fc2a4..0000000000 --- a/build/.phan/plugin-checker.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -$expected = << - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -declare(strict_types=1); - -use Phan\PluginV2; -use Phan\PluginV2\AnalyzeNodeCapability; -use Phan\PluginV2\PluginAwareAnalysisVisitor; - -class SqlInjectionCheckerPlugin extends PluginV2 implements AnalyzeNodeCapability{ - public static function getAnalyzeNodeVisitorClassName() : string { - return SqlInjectionCheckerVisitor::class; - } -} - -class SqlInjectionCheckerVisitor extends PluginAwareAnalysisVisitor { - - private function throwError(string $hint) { - $this->emit( - 'SqlInjectionChecker', - 'Potential SQL injection detected - ' . $hint, - [], - \Phan\Issue::SEVERITY_CRITICAL - ); - } - - /** - * Checks whether the query builder functions are using prepared statements - * - * @param \ast\Node $node - */ - private function checkQueryBuilderParameters(\ast\Node $node) { - $dangerousFunctions = [ - 'eq', - 'neq', - 'lt', - 'lte', - 'gt', - 'gte', - 'like', - 'iLike', - 'notLike', - ]; - - $safeFunctions = [ - 'createNamedParameter', - 'createPositionalParameter', - 'createParameter', - 'createFunction', - 'func', - ]; - - $functionsToSearch = [ - 'set', - 'setValue', - ]; - - $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $node); - $expandedNodeType = (string)$expandedNode->asExpandedTypes($this->code_base); - - if($expandedNodeType === '\OCP\DB\QueryBuilder\IQueryBuilder') { - /** @var \ast\Node $child */ - foreach($node->children as $child) { - if(isset($child->kind) && $child->kind === 128) { - if(isset($child->children)) { - /** @var \ast\Node $subChild */ - foreach ($child->children as $subChild) { - // For set actions - if(isset($node->children['method']) && in_array($node->children['method'], $functionsToSearch, true) && !is_string($subChild)) { - if(!isset($subChild->children['method']) || !in_array($subChild->children['method'], $safeFunctions, true)) { - $this->throwError('method: ' . ($subChild->children['method'] ?? 'no child method')); - } - } - - if(isset($subChild->children['method'])) { - // For all "eq" etc. actions - $method = $subChild->children['method']; - if(!in_array($method, $dangerousFunctions, true)) { - return; - } - - /** @var \ast\Node $functionNode */ - $functionNode = $subChild->children['args']; - - /** @var \ast\Node $secondParameterNode */ - $secondParameterNode = $functionNode->children[1]; - $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $secondParameterNode); - - // For literals with a plain string or integer inside - if(isset($secondParameterNode->children['method']) && $secondParameterNode->children['method'] === 'literal') { - /** @var \ast\Node $functionNode */ - $functionNode = $secondParameterNode->children['args']; - - $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $functionNode); - if(isset($functionNode->children[0]) && (is_string($functionNode->children[0]) || is_int($functionNode->children[0]))) { - return; - } - } - - // If it is an IParameter or a pure string no error is thrown - if((string)$expandedNode !== '\OCP\DB\QueryBuilder\IParameter' && !is_string($secondParameterNode)) { - $this->throwError('neither a parameter nor a string'); - } - } - } - } - } - } - } - } - - public function visitMethodCall(\ast\Node $node) { - $this->checkQueryBuilderParameters($node); - } - -} - -return new SqlInjectionCheckerPlugin(); diff --git a/build/.phan/stubs/APCIterator.php b/build/.phan/stubs/APCIterator.php deleted file mode 100644 index e837b3971a..0000000000 --- a/build/.phan/stubs/APCIterator.php +++ /dev/null @@ -1,82 +0,0 @@ - value pairs. - * The constant_name must follow the normal constant naming rules. Value must evaluate to a scalar value. - * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive; - * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE - * the constants will be declared as case-insensitive symbols. - * @return bool Returns TRUE on success or FALSE on failure. - */ -function apc_define_constants($key, array $constants, $case_sensitive = true){} - -/** - * Caches a variable in the data store, only if it's not already stored - * @link http://php.net/manual/en/function.apc-add.php - * @param string $key Store the variable using this name. Keys are cache-unique, - * so attempting to use apc_add() to store data with a key that already exists will not - * overwrite the existing data, and will instead return FALSE. (This is the only difference - * between apc_add() and apc_store().) - * @param mixed $var The variable to store - * @param int $ttl Time To Live; store var in the cache for ttl seconds. After the ttl has passed, - * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied - * (or if the ttl is 0), the value will persist until it is removed from the cache manually, - * or otherwise fails to exist in the cache (clear, restart, etc.). - * @return bool - */ -function apc_add($key, $var, $ttl = 0){} - -/** - * Stores a file in the bytecode cache, bypassing all filters - * @link http://php.net/manual/en/function.apc-compile-file.php - * @param string|string[] $filename Full or relative path to a PHP file that will be - * compiled and stored in the bytecode cache. - * @param bool $atomic - * @return bool Returns TRUE on success or FALSE on failure. - */ -function apc_compile_file($filename, $atomic = true){} - -/** - * Loads a set of constants from the cache - * @link http://php.net/manual/en/function.apc-load-constants.php - * @param string $key The name of the constant set (that was stored - * with apc_define_constants()) to be retrieved. - * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive; - * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE - * the constants will be declared as case-insensitive symbols. - * @return bool Returns TRUE on success or FALSE on failure. - */ -function apc_load_constants($key, $case_sensitive = true){} - -/** - * Checks if APC key exists - * @link http://php.net/manual/en/function.apc-exists.php - * @param bool|string[] $keys A string, or an array of strings, that contain keys. - * @return bool|string[] Returns TRUE if the key exists, otherwise FALSE - * Or if an array was passed to keys, then an array is returned that - * contains all existing keys, or an empty array if none exist. - */ -function apc_exists($keys){} - -/** - * Deletes the given files from the opcode cache - * - * Accepts a string, array of strings, or APCIterator object. - * Returns True/False, or for an Array an Array of failed files. - * - * @link http://php.net/manual/en/function.apc-delete-file.php - * @param string|string[]|APCIterator $keys - * @return bool|string[] - */ -function apc_delete_file($keys){} - -/** - * Increase a stored number - * @link http://php.net/manual/en/function.apc-inc.php - * @param string $key The key of the value being increased. - * @param int $step The step, or value to increase. - * @param bool $success Optionally pass the success or fail boolean value to this referenced variable. - * @return int|bool Returns the current value of key's value on success, or FALSE on failure. - */ -function apc_inc($key, $step = 1, &$success = null){} - -/** - * Decrease a stored number - * @link http://php.net/manual/en/function.apc-dec.php - * @param string $key The key of the value being decreased. - * @param int $step The step, or value to decrease. - * @param bool $success Optionally pass the success or fail boolean value to this referenced variable. - * @return int|bool Returns the current value of key's value on success, or FALSE on failure. - */ -function apc_dec($key, $step = 1, &$success = null){} - -/** - * @link http://php.net/manual/en/function.apc-cas.php - * @param string $key - * @param int $old - * @param int $new - * @return bool - */ -function apc_cas($key, $old, $new){} - -/** - * Returns a binary dump of the given files and user variables from the APC cache - * - * A NULL for files or user_vars signals a dump of every entry, while array() will dump nothing. - * - * @link http://php.net/manual/en/function.apc-bin-dump.php - * @param string[]|null $files The files. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing. - * @param string[]|null $user_vars The user vars. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing. - * @return string|bool|null Returns a binary dump of the given files and user variables from the APC cache, FALSE if APC is not enabled, or NULL if an unknown error is encountered. - */ -function apc_bin_dump($files = null, $user_vars = null){} - -/** - * Output a binary dump of the given files and user variables from the APC cache to the named file - * @link http://php.net/manual/en/function.apc-bin-dumpfile.php - * @param string[]|null $files The file names being dumped. - * @param string[]|null $user_vars The user variables being dumped. - * @param string $filename The filename where the dump is being saved. - * @param int $flags Flags passed to the filename stream. See the file_put_contents() documentation for details. - * @param resource $context The context passed to the filename stream. See the file_put_contents() documentation for details. - * @return int|bool The number of bytes written to the file, otherwise FALSE if APC - * is not enabled, filename is an invalid file name, filename can't be opened, - * the file dump can't be completed (e.g., the hard drive is out of disk space), - * or an unknown error was encountered. - */ -function apc_bin_dumpfile($files, $user_vars, $filename, $flags = 0, $context = null){} - -/** - * Load the given binary dump into the APC file/user cache - * @link http://php.net/manual/en/function.apc-bin-load.php - * @param string $data The binary dump being loaded, likely from apc_bin_dump(). - * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both. - * @return bool Returns TRUE if the binary dump data was loaded with success, otherwise FALSE is returned. - * FALSE is returned if APC is not enabled, or if the data is not a valid APC binary dump (e.g., unexpected size). - */ -function apc_bin_load($data, $flags = 0){} - -/** - * Load the given binary dump from the named file into the APC file/user cache - * @link http://php.net/manual/en/function.apc-bin-loadfile.php - * @param string $filename The file name containing the dump, likely from apc_bin_dumpfile(). - * @param resource $context The files context. - * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both. - * @return bool Returns TRUE on success, otherwise FALSE Reasons it may return FALSE include APC - * is not enabled, filename is an invalid file name or empty, filename can't be opened, - * the file dump can't be completed, or if the data is not a valid APC binary dump (e.g., unexpected size). - */ -function apc_bin_loadfile($filename, $context = null, $flags = 0){} - diff --git a/build/.phan/stubs/apcu.php b/build/.phan/stubs/apcu.php deleted file mode 100644 index f08f860d4f..0000000000 --- a/build/.phan/stubs/apcu.php +++ /dev/null @@ -1,235 +0,0 @@ -Atomically attempts to find key in the cache, if it cannot be found generator is called, - * passing key as the only argument. The return value of the call is then cached with the optionally - * specified ttl, and returned. - *

- * - *

Note: When control enters apcu_entry() the lock for the cache is acquired exclusively, it is released when - * control leaves apcu_entry(): In effect, this turns the body of generator into a critical section, - * disallowing two processes from executing the same code paths concurrently. - * In addition, it prohibits the concurrent execution of any other APCu functions, - * since they will acquire the same lock. - *

- * - * @link http://php.net/manual/en/function.apcu-entry.php - * - * @param string $key Identity of cache entry - * @param callable $generator A callable that accepts key as the only argument and returns the value to cache. - *

Warning - * The only APCu function that can be called safely by generator is apcu_entry().

- * @param int $ttl [optional] Time To Live; store var in the cache for ttl seconds. - * After the ttl has passed, the stored variable will be expunged from the cache (on the next request). - * If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, - * or otherwise fails to exist in the cache (clear, restart, etc.). - * @return mixed Returns the cached value - * @since APCu 5.1.0 - */ -function apcu_entry($key, callable $generator, $ttl = 0){} - -/** - * Retrieves cached information from APCu's data store - * - * @link http://php.net/manual/en/function.apcu-cache-info.php - * - * @param bool $limited If limited is TRUE, the return value will exclude the individual list of cache entries. - * This is useful when trying to optimize calls for statistics gathering. - * @return array|bool Array of cached data (and meta-data) or FALSE on failure - */ -function apcu_cache_info($limited = false){} diff --git a/build/.phan/stubs/memcached.php b/build/.phan/stubs/memcached.php deleted file mode 100644 index 2c8aced175..0000000000 --- a/build/.phan/stubs/memcached.php +++ /dev/null @@ -1,1257 +0,0 @@ -Enables or disables payload compression. When enabled, - * item values longer than a certain threshold (currently 100 bytes) will be - * compressed during storage and decompressed during retrieval - * transparently.

- *

Type: boolean, default: TRUE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_COMPRESSION = -1001; - const OPT_COMPRESSION_TYPE = -1004; - - /** - *

This can be used to create a "domain" for your item keys. The value - * specified here will be prefixed to each of the keys. It cannot be - * longer than 128 characters and will reduce the - * maximum available key size. The prefix is applied only to the item keys, - * not to the server keys.

- *

Type: string, default: "".

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_PREFIX_KEY = -1002; - - /** - *

- * Specifies the serializer to use for serializing non-scalar values. - * The valid serializers are Memcached::SERIALIZER_PHP - * or Memcached::SERIALIZER_IGBINARY. The latter is - * supported only when memcached is configured with - * --enable-memcached-igbinary option and the - * igbinary extension is loaded. - *

- *

Type: integer, default: Memcached::SERIALIZER_PHP.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_SERIALIZER = -1003; - - /** - *

Indicates whether igbinary serializer support is available.

- *

Type: boolean.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HAVE_IGBINARY = 0; - - /** - *

Indicates whether JSON serializer support is available.

- *

Type: boolean.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HAVE_JSON = 0; - const HAVE_SESSION = 1; - const HAVE_SASL = 0; - - /** - *

Specifies the hashing algorithm used for the item keys. The valid - * values are supplied via Memcached::HASH_* constants. - * Each hash algorithm has its advantages and its disadvantages. Go with the - * default if you don't know or don't care.

- *

Type: integer, default: Memcached::HASH_DEFAULT

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_HASH = 2; - - /** - *

The default (Jenkins one-at-a-time) item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_DEFAULT = 0; - - /** - *

MD5 item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_MD5 = 1; - - /** - *

CRC item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_CRC = 2; - - /** - *

FNV1_64 item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_FNV1_64 = 3; - - /** - *

FNV1_64A item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_FNV1A_64 = 4; - - /** - *

FNV1_32 item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_FNV1_32 = 5; - - /** - *

FNV1_32A item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_FNV1A_32 = 6; - - /** - *

Hsieh item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_HSIEH = 7; - - /** - *

Murmur item key hashing algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const HASH_MURMUR = 8; - - /** - *

Specifies the method of distributing item keys to the servers. - * Currently supported methods are modulo and consistent hashing. Consistent - * hashing delivers better distribution and allows servers to be added to - * the cluster with minimal cache losses.

- *

Type: integer, default: Memcached::DISTRIBUTION_MODULA.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_DISTRIBUTION = 9; - - /** - *

Modulo-based key distribution algorithm.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const DISTRIBUTION_MODULA = 0; - - /** - *

Consistent hashing key distribution algorithm (based on libketama).

- * @link http://php.net/manual/en/memcached.constants.php - */ - const DISTRIBUTION_CONSISTENT = 1; - const DISTRIBUTION_VIRTUAL_BUCKET = 6; - - /** - *

Enables or disables compatibility with libketama-like behavior. When - * enabled, the item key hashing algorithm is set to MD5 and distribution is - * set to be weighted consistent hashing distribution. This is useful - * because other libketama-based clients (Python, Ruby, etc.) with the same - * server configuration will be able to access the keys transparently. - *

- *

- * It is highly recommended to enable this option if you want to use - * consistent hashing, and it may be enabled by default in future - * releases. - *

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_LIBKETAMA_COMPATIBLE = 16; - const OPT_LIBKETAMA_HASH = 17; - const OPT_TCP_KEEPALIVE = 32; - - /** - *

Enables or disables buffered I/O. Enabling buffered I/O causes - * storage commands to "buffer" instead of being sent. Any action that - * retrieves data causes this buffer to be sent to the remote connection. - * Quitting the connection or closing down the connection will also cause - * the buffered data to be pushed to the remote connection.

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_BUFFER_WRITES = 10; - - /** - *

Enable the use of the binary protocol. Please note that you cannot - * toggle this option on an open connection.

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_BINARY_PROTOCOL = 18; - - /** - *

Enables or disables asynchronous I/O. This is the fastest transport - * available for storage functions.

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_NO_BLOCK = 0; - - /** - *

Enables or disables the no-delay feature for connecting sockets (may - * be faster in some environments).

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_TCP_NODELAY = 1; - - /** - *

The maximum socket send buffer in bytes.

- *

Type: integer, default: varies by platform/kernel - * configuration.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_SOCKET_SEND_SIZE = 4; - - /** - *

The maximum socket receive buffer in bytes.

- *

Type: integer, default: varies by platform/kernel - * configuration.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_SOCKET_RECV_SIZE = 5; - - /** - *

In non-blocking mode this set the value of the timeout during socket - * connection, in milliseconds.

- *

Type: integer, default: 1000.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_CONNECT_TIMEOUT = 14; - - /** - *

The amount of time, in seconds, to wait until retrying a failed - * connection attempt.

- *

Type: integer, default: 0.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_RETRY_TIMEOUT = 15; - - /** - *

Socket sending timeout, in microseconds. In cases where you cannot - * use non-blocking I/O this will allow you to still have timeouts on the - * sending of data.

- *

Type: integer, default: 0.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_SEND_TIMEOUT = 19; - - /** - *

Socket reading timeout, in microseconds. In cases where you cannot - * use non-blocking I/O this will allow you to still have timeouts on the - * reading of data.

- *

Type: integer, default: 0.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_RECV_TIMEOUT = 20; - - /** - *

Timeout for connection polling, in milliseconds.

- *

Type: integer, default: 1000.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_POLL_TIMEOUT = 8; - - /** - *

Enables or disables caching of DNS lookups.

- *

Type: boolean, default: FALSE.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_CACHE_LOOKUPS = 6; - - /** - *

Specifies the failure limit for server connection attempts. The - * server will be removed after this many continuous connection - * failures.

- *

Type: integer, default: 0.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const OPT_SERVER_FAILURE_LIMIT = 21; - const OPT_AUTO_EJECT_HOSTS = 28; - const OPT_HASH_WITH_PREFIX_KEY = 25; - const OPT_NOREPLY = 26; - const OPT_SORT_HOSTS = 12; - const OPT_VERIFY_KEY = 13; - const OPT_USE_UDP = 27; - const OPT_NUMBER_OF_REPLICAS = 29; - const OPT_RANDOMIZE_REPLICA_READ = 30; - const OPT_REMOVE_FAILED_SERVERS = 35; - - /** - *

The operation was successful.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_SUCCESS = 0; - - /** - *

The operation failed in some fashion.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_FAILURE = 1; - - /** - *

DNS lookup failed.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_HOST_LOOKUP_FAILURE = 2; - - /** - *

Failed to read network data.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_UNKNOWN_READ_FAILURE = 7; - - /** - *

Bad command in memcached protocol.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_PROTOCOL_ERROR = 8; - - /** - *

Error on the client side.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_CLIENT_ERROR = 9; - - /** - *

Error on the server side.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_SERVER_ERROR = 10; - - /** - *

Failed to write network data.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_WRITE_FAILURE = 5; - - /** - *

Failed to do compare-and-swap: item you are trying to store has been - * modified since you last fetched it.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_DATA_EXISTS = 12; - - /** - *

Item was not stored: but not because of an error. This normally - * means that either the condition for an "add" or a "replace" command - * wasn't met, or that the item is in a delete queue.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_NOTSTORED = 14; - - /** - *

Item with this key was not found (with "get" operation or "cas" - * operations).

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_NOTFOUND = 16; - - /** - *

Partial network data read error.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_PARTIAL_READ = 18; - - /** - *

Some errors occurred during multi-get.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_SOME_ERRORS = 19; - - /** - *

Server list is empty.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_NO_SERVERS = 20; - - /** - *

End of result set.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_END = 21; - - /** - *

System error.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_ERRNO = 26; - - /** - *

The operation was buffered.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_BUFFERED = 32; - - /** - *

The operation timed out.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_TIMEOUT = 31; - - /** - *

Bad key.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_BAD_KEY_PROVIDED = 33; - const RES_STORED = 15; - const RES_DELETED = 22; - const RES_STAT = 24; - const RES_ITEM = 25; - const RES_NOT_SUPPORTED = 28; - const RES_FETCH_NOTFINISHED = 30; - const RES_SERVER_MARKED_DEAD = 35; - const RES_UNKNOWN_STAT_KEY = 36; - const RES_INVALID_HOST_PROTOCOL = 34; - const RES_MEMORY_ALLOCATION_FAILURE = 17; - const RES_E2BIG = 37; - const RES_KEY_TOO_BIG = 39; - const RES_SERVER_TEMPORARILY_DISABLED = 47; - const RES_SERVER_MEMORY_ALLOCATION_FAILURE = 48; - const RES_AUTH_PROBLEM = 40; - const RES_AUTH_FAILURE = 41; - const RES_AUTH_CONTINUE = 42; - - - /** - *

Failed to create network socket.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_CONNECTION_SOCKET_CREATE_FAILURE = 11; - - /** - *

Payload failure: could not compress/decompress or serialize/unserialize the value.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const RES_PAYLOAD_FAILURE = -1001; - - /** - *

The default PHP serializer.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const SERIALIZER_PHP = 1; - - /** - *

The igbinary serializer. - * Instead of textual representation it stores PHP data structures in a - * compact binary form, resulting in space and time gains.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const SERIALIZER_IGBINARY = 2; - - /** - *

The JSON serializer. Requires PHP 5.2.10+.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const SERIALIZER_JSON = 3; - const SERIALIZER_JSON_ARRAY = 4; - const COMPRESSION_FASTLZ = 2; - const COMPRESSION_ZLIB = 1; - - /** - *

A flag for Memcached::getMulti and - * Memcached::getMultiByKey to ensure that the keys are - * returned in the same order as they were requested in. Non-existing keys - * get a default value of NULL.

- * @link http://php.net/manual/en/memcached.constants.php - */ - const GET_PRESERVE_ORDER = 1; - const GET_ERROR_RETURN_VALUE = false; - - - /** - * (PECL memcached >= 0.1.0)
- * Create a Memcached instance - * @link http://php.net/manual/en/memcached.construct.php - * @param $persistent_id [optional] - * @param $callback [optional] - */ - public function __construct ($persistent_id, $callback) {} - - /** - * (PECL memcached >= 0.1.0)
- * Return the result code of the last operation - * @link http://php.net/manual/en/memcached.getresultcode.php - * @return int Result code of the last Memcached operation. - */ - public function getResultCode () {} - - /** - * (PECL memcached >= 1.0.0)
- * Return the message describing the result of the last operation - * @link http://php.net/manual/en/memcached.getresultmessage.php - * @return string Message describing the result of the last Memcached operation. - */ - public function getResultMessage () {} - - /** - * (PECL memcached >= 0.1.0)
- * Retrieve an item - * @link http://php.net/manual/en/memcached.get.php - * @param string $key

- * The key of the item to retrieve. - *

- * @param callable $cache_cb [optional]

- * Read-through caching callback or NULL. - *

- * @param float $cas_token [optional]

- * The variable to store the CAS token in. - *

- * @return mixed the value stored in the cache or FALSE otherwise. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function get ($key, callable $cache_cb = null, &$cas_token = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Retrieve an item from a specific server - * @link http://php.net/manual/en/memcached.getbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key of the item to fetch. - *

- * @param callable $cache_cb [optional]

- * Read-through caching callback or NULL - *

- * @param float $cas_token [optional]

- * The variable to store the CAS token in. - *

- * @return mixed the value stored in the cache or FALSE otherwise. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function getByKey ($server_key, $key, callable $cache_cb = null, &$cas_token = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Retrieve multiple items - * @link http://php.net/manual/en/memcached.getmulti.php - * @param array $keys

- * Array of keys to retrieve. - *

- * @param array $cas_tokens [optional]

- * The variable to store the CAS tokens for the found items. - *

- * @param int $flags [optional]

- * The flags for the get operation. - *

- * @return mixed the array of found items or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function getMulti (array $keys, array &$cas_tokens = null, $flags = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Retrieve multiple items from a specific server - * @link http://php.net/manual/en/memcached.getmultibykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param array $keys

- * Array of keys to retrieve. - *

- * @param string $cas_tokens [optional]

- * The variable to store the CAS tokens for the found items. - *

- * @param int $flags [optional]

- * The flags for the get operation. - *

- * @return array the array of found items or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function getMultiByKey ($server_key, array $keys, &$cas_tokens = null, $flags = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Request multiple items - * @link http://php.net/manual/en/memcached.getdelayed.php - * @param array $keys

- * Array of keys to request. - *

- * @param bool $with_cas [optional]

- * Whether to request CAS token values also. - *

- * @param callable $value_cb [optional]

- * The result callback or NULL. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function getDelayed (array $keys, $with_cas = null, callable $value_cb = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Request multiple items from a specific server - * @link http://php.net/manual/en/memcached.getdelayedbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param array $keys

- * Array of keys to request. - *

- * @param bool $with_cas [optional]

- * Whether to request CAS token values also. - *

- * @param callable $value_cb [optional]

- * The result callback or NULL. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function getDelayedByKey ($server_key, array $keys, $with_cas = null, callable $value_cb = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Fetch the next result - * @link http://php.net/manual/en/memcached.fetch.php - * @return array the next result or FALSE otherwise. - * The Memcached::getResultCode will return - * Memcached::RES_END if result set is exhausted. - */ - public function fetch () {} - - /** - * (PECL memcached >= 0.1.0)
- * Fetch all the remaining results - * @link http://php.net/manual/en/memcached.fetchall.php - * @return array the results or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function fetchAll () {} - - /** - * (PECL memcached >= 0.1.0)
- * Store an item - * @link http://php.net/manual/en/memcached.set.php - * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function set ($key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Store an item on a specific server - * @link http://php.net/manual/en/memcached.setbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function setByKey ($server_key, $key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 2.0.0)
- * Set a new expiration on an item - * @link http://php.net/manual/en/memcached.touch.php - * @param string $key

- * The key under which to store the value. - *

- * @param int $expiration

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function touch ($key, $expiration) {} - - /** - * (PECL memcached >= 2.0.0)
- * Set a new expiration on an item on a specific server - * @link http://php.net/manual/en/memcached.touchbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param int $expiration

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function touchByKey ($server_key, $key, $expiration) {} - - /** - * (PECL memcached >= 0.1.0)
- * Store multiple items - * @link http://php.net/manual/en/memcached.setmulti.php - * @param array $items

- * An array of key/value pairs to store on the server. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function setMulti (array $items, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Store multiple items on a specific server - * @link http://php.net/manual/en/memcached.setmultibykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param array $items

- * An array of key/value pairs to store on the server. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function setMultiByKey ($server_key, array $items, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Compare and swap an item - * @link http://php.net/manual/en/memcached.cas.php - * @param float $cas_token

- * Unique value associated with the existing item. Generated by memcache. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_DATA_EXISTS if the item you are trying - * to store has been modified since you last fetched it. - */ - public function cas ($cas_token, $key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Compare and swap an item on a specific server - * @link http://php.net/manual/en/memcached.casbykey.php - * @param float $cas_token

- * Unique value associated with the existing item. Generated by memcache. - *

- * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_DATA_EXISTS if the item you are trying - * to store has been modified since you last fetched it. - */ - public function casByKey ($cas_token, $server_key, $key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Add an item under a new key - * @link http://php.net/manual/en/memcached.add.php - * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key already exists. - */ - public function add ($key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Add an item under a new key on a specific server - * @link http://php.net/manual/en/memcached.addbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key already exists. - */ - public function addByKey ($server_key, $key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Append data to an existing item - * @link http://php.net/manual/en/memcached.append.php - * @param string $key

- * The key under which to store the value. - *

- * @param string $value

- * The string to append. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function append ($key, $value) {} - - /** - * (PECL memcached >= 0.1.0)
- * Append data to an existing item on a specific server - * @link http://php.net/manual/en/memcached.appendbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param string $value

- * The string to append. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function appendByKey ($server_key, $key, $value) {} - - /** - * (PECL memcached >= 0.1.0)
- * Prepend data to an existing item - * @link http://php.net/manual/en/memcached.prepend.php - * @param string $key

- * The key of the item to prepend the data to. - *

- * @param string $value

- * The string to prepend. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function prepend ($key, $value) {} - - /** - * (PECL memcached >= 0.1.0)
- * Prepend data to an existing item on a specific server - * @link http://php.net/manual/en/memcached.prependbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key of the item to prepend the data to. - *

- * @param string $value

- * The string to prepend. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function prependByKey ($server_key, $key, $value) {} - - /** - * (PECL memcached >= 0.1.0)
- * Replace the item under an existing key - * @link http://php.net/manual/en/memcached.replace.php - * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function replace ($key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Replace the item under an existing key on a specific server - * @link http://php.net/manual/en/memcached.replacebykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key under which to store the value. - *

- * @param mixed $value

- * The value to store. - *

- * @param int $expiration [optional]

- * The expiration time, defaults to 0. See Expiration Times for more info. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTSTORED if the key does not exist. - */ - public function replaceByKey ($server_key, $key, $value, $expiration = null) {} - - /** - * (PECL memcached >= 0.1.0)
- * Delete an item - * @link http://php.net/manual/en/memcached.delete.php - * @param string $key

- * The key to be deleted. - *

- * @param int $time [optional]

- * The amount of time the server will wait to delete the item. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function delete ($key, $time = 0) {} - - /** - * (PECL memcached >= 2.0.0)
- * Delete multiple items - * @link http://php.net/manual/en/memcached.deletemulti.php - * @param array $keys

- * The keys to be deleted. - *

- * @param int $time [optional]

- * The amount of time the server will wait to delete the items. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function deleteMulti (array $keys, $time = 0) {} - - /** - * (PECL memcached >= 0.1.0)
- * Delete an item from a specific server - * @link http://php.net/manual/en/memcached.deletebykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key to be deleted. - *

- * @param int $time [optional]

- * The amount of time the server will wait to delete the item. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function deleteByKey ($server_key, $key, $time = 0) {} - - /** - * (PECL memcached >= 2.0.0)
- * Delete multiple items from a specific server - * @link http://php.net/manual/en/memcached.deletemultibykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param array $keys

- * The keys to be deleted. - *

- * @param int $time [optional]

- * The amount of time the server will wait to delete the items. - *

- * @return bool TRUE on success or FALSE on failure. - * The Memcached::getResultCode will return - * Memcached::RES_NOTFOUND if the key does not exist. - */ - public function deleteMultiByKey ($server_key, array $keys, $time = 0) {} - - /** - * (PECL memcached >= 0.1.0)
- * Increment numeric item's value - * @link http://php.net/manual/en/memcached.increment.php - * @param string $key

- * The key of the item to increment. - *

- * @param int $offset [optional]

- * The amount by which to increment the item's value. - *

- * @param int $initial_value [optional]

- * The value to set the item to if it doesn't currently exist. - *

- * @param int $expiry [optional]

- * The expiry time to set on the item. - *

- * @return int new item's value on success or FALSE on failure. - */ - public function increment ($key, $offset = 1, $initial_value = 0, $expiry = 0) {} - - /** - * (PECL memcached >= 0.1.0)
- * Decrement numeric item's value - * @link http://php.net/manual/en/memcached.decrement.php - * @param string $key

- * The key of the item to decrement. - *

- * @param int $offset [optional]

- * The amount by which to decrement the item's value. - *

- * @param int $initial_value [optional]

- * The value to set the item to if it doesn't currently exist. - *

- * @param int $expiry [optional]

- * The expiry time to set on the item. - *

- * @return int item's new value on success or FALSE on failure. - */ - public function decrement ($key, $offset = 1, $initial_value = 0, $expiry = 0) {} - - /** - * (PECL memcached >= 2.0.0)
- * Increment numeric item's value, stored on a specific server - * @link http://php.net/manual/en/memcached.incrementbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key of the item to increment. - *

- * @param int $offset [optional]

- * The amount by which to increment the item's value. - *

- * @param int $initial_value [optional]

- * The value to set the item to if it doesn't currently exist. - *

- * @param int $expiry [optional]

- * The expiry time to set on the item. - *

- * @return int new item's value on success or FALSE on failure. - */ - public function incrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {} - - /** - * (PECL memcached >= 2.0.0)
- * Decrement numeric item's value, stored on a specific server - * @link http://php.net/manual/en/memcached.decrementbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @param string $key

- * The key of the item to decrement. - *

- * @param int $offset [optional]

- * The amount by which to decrement the item's value. - *

- * @param int $initial_value [optional]

- * The value to set the item to if it doesn't currently exist. - *

- * @param int $expiry [optional]

- * The expiry time to set on the item. - *

- * @return int item's new value on success or FALSE on failure. - */ - public function decrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {} - - /** - * (PECL memcached >= 0.1.0)
- * Add a server to the server pool - * @link http://php.net/manual/en/memcached.addserver.php - * @param string $host

- * The hostname of the memcache server. If the hostname is invalid, data-related - * operations will set - * Memcached::RES_HOST_LOOKUP_FAILURE result code. - *

- * @param int $port

- * The port on which memcache is running. Usually, this is - * 11211. - *

- * @param int $weight [optional]

- * The weight of the server relative to the total weight of all the - * servers in the pool. This controls the probability of the server being - * selected for operations. This is used only with consistent distribution - * option and usually corresponds to the amount of memory available to - * memcache on that server. - *

- * @return bool TRUE on success or FALSE on failure. - */ - public function addServer ($host, $port, $weight = 0) {} - - /** - * (PECL memcached >= 0.1.1)
- * Add multiple servers to the server pool - * @link http://php.net/manual/en/memcached.addservers.php - * @param array $servers - * @return bool TRUE on success or FALSE on failure. - */ - public function addServers (array $servers) {} - - /** - * (PECL memcached >= 0.1.0)
- * Get the list of the servers in the pool - * @link http://php.net/manual/en/memcached.getserverlist.php - * @return array The list of all servers in the server pool. - */ - public function getServerList () {} - - /** - * (PECL memcached >= 0.1.0)
- * Map a key to a server - * @link http://php.net/manual/en/memcached.getserverbykey.php - * @param string $server_key

- * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. - *

- * @return array an array containing three keys of host, - * port, and weight on success or FALSE - * on failure. - * Use Memcached::getResultCode if necessary. - */ - public function getServerByKey ($server_key) {} - - /** - * (PECL memcached >= 2.0.0)
- * Clears all servers from the server list - * @link http://php.net/manual/en/memcached.resetserverlist.php - * @return bool TRUE on success or FALSE on failure. - */ - public function resetServerList () {} - - /** - * (PECL memcached >= 2.0.0)
- * Close any open connections - * @link http://php.net/manual/en/memcached.quit.php - * @return bool TRUE on success or FALSE on failure. - */ - public function quit () {} - - /** - * (PECL memcached >= 0.1.0)
- * Get server pool statistics - * @link http://php.net/manual/en/memcached.getstats.php - * @return array Array of server statistics, one entry per server. - */ - public function getStats () {} - - /** - * (PECL memcached >= 0.1.5)
- * Get server pool version info - * @link http://php.net/manual/en/memcached.getversion.php - * @return array Array of server versions, one entry per server. - */ - public function getVersion () {} - - /** - * (PECL memcached >= 2.0.0)
- * Gets the keys stored on all the servers - * @link http://php.net/manual/en/memcached.getallkeys.php - * @return array the keys stored on all the servers on success or FALSE on failure. - */ - public function getAllKeys () {} - - /** - * (PECL memcached >= 0.1.0)
- * Invalidate all items in the cache - * @link http://php.net/manual/en/memcached.flush.php - * @param int $delay [optional]

- * Numer of seconds to wait before invalidating the items. - *

- * @return bool TRUE on success or FALSE on failure. - * Use Memcached::getResultCode if necessary. - */ - public function flush ($delay = 0) {} - - /** - * (PECL memcached >= 0.1.0)
- * Retrieve a Memcached option value - * @link http://php.net/manual/en/memcached.getoption.php - * @param int $option

- * One of the Memcached::OPT_* constants. - *

- * @return mixed the value of the requested option, or FALSE on - * error. - */ - public function getOption ($option) {} - - /** - * (PECL memcached >= 0.1.0)
- * Set a Memcached option - * @link http://php.net/manual/en/memcached.setoption.php - * @param int $option - * @param mixed $value - * @return bool TRUE on success or FALSE on failure. - */ - public function setOption ($option, $value) {} - - /** - * (PECL memcached >= 2.0.0)
- * Set Memcached options - * @link http://php.net/manual/en/memcached.setoptions.php - * @param array $options

- * An associative array of options where the key is the option to set and - * the value is the new value for the option. - *

- * @return bool TRUE on success or FALSE on failure. - */ - public function setOptions (array $options) {} - - /** - * (PECL memcached >= 2.0.0)
- * Check if a persitent connection to memcache is being used - * @link http://php.net/manual/en/memcached.ispersistent.php - * @return bool true if Memcache instance uses a persistent connection, false otherwise. - */ - public function isPersistent () {} - - /** - * (PECL memcached >= 2.0.0)
- * Check if the instance was recently created - * @link http://php.net/manual/en/memcached.ispristine.php - * @return bool the true if instance is recently created, false otherwise. - */ - public function isPristine () {} - -} - -/** - * @link http://php.net/manual/en/class.memcachedexception.php - */ -class MemcachedException extends RuntimeException { - -} -// End of memcached v.2.1.0 diff --git a/build/.phan/stubs/xcache.php b/build/.phan/stubs/xcache.php deleted file mode 100644 index 22700b1b19..0000000000 --- a/build/.phan/stubs/xcache.php +++ /dev/null @@ -1,217 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -$builder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); -$builder->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf'])); - -class SqlInjectionCheckerTest { - private $qb; - - public function __construct(\OCP\IDBConnection $dbConnection) { - $this->qb = $dbConnection->getQueryBuilder(); - } - - public function testEqAndNeq() { - $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal('myString'))); - $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal(0))); - $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($_GET['bar']))); - $asdf = '123'; - $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($asdf))); - $asdf = 1; - $this->qb->select('*')->from('ado')->where($this->qb->expr()->neq('asdf', $asdf)); - $asdf = '123'; - $this->qb->select('*')->from('ado')->where($this->qb->expr()->lt('asdf', $asdf)); - $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('s.resourceid', 'a.id')); - $this->qb->select('*')->from('ado')->andWhere($this->qb->expr()->gte('asdf', $_GET['asdf'])); - $this->qb->select('*') - ->from('ado') - ->where($this->qb->expr()->eq('asdf', $this->qb->createNamedParameter('asdf'))); - $this->qb->select('*') - ->from('ado') - ->where($this->qb->expr()->eq('asdf', $this->qb->createPositionalParameter('asdf'))); - } - - public function testInstantiatingDatabaseConnection() { - $qb = \OC::$server->getDatabaseConnection(); - $qb->getQueryBuilder()->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf'])); - } - - public function testSet() { - $this->qb->update('file_locks')->set('lock', $this->qb->createNamedParameter('lukaslukaslukas')); - $this->qb->update('file_locks')->set('lock', '1234'); - $asdf = '1234'; - $this->qb->update('file_locks')->set('lock', $asdf); - $this->qb->update('file_locks')->set('lock', $_GET['asdf']); - } - - public function testSetValue() { - $this->qb->update('file_locks')->setValue('lock', $this->qb->createNamedParameter('lukaslukaslukas')); - $this->qb->update('file_locks')->setValue('lock', '1234'); - $asdf = '1234'; - $this->qb->update('file_locks')->setValue('lock', $asdf); - $this->qb->update('file_locks')->setValue('lock', $_GET['asdf']); - } -} \ No newline at end of file diff --git a/composer.json b/composer.json index 088ee20e10..64e4f3d835 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,6 @@ "scripts": { "cs:fix": "php-cs-fixer fix", "cs:check": "php-cs-fixer fix --dry-run --diff", - "lint": "find . -name \\*.php -not -path './lib/composer/*' -not -path './build/.phan/*' -not -path './build/stubs/*' -print0 | xargs -0 -n1 php -l" + "lint": "find . -name \\*.php -not -path './lib/composer/*' -not -path './build/stubs/*' -print0 | xargs -0 -n1 php -l" } }