Signed-off-by: Morris Jobke <hey@morrisjobke.de>tags/v20.0.0RC1
@@ -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 |
@@ -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(); | |||
} | |||
@@ -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(), | |||
]; | |||
} |
@@ -1,226 +0,0 @@ | |||
<?php | |||
/** | |||
* This configuration will be read and overlaid on top of the | |||
* default configuration. Command line arguments will be applied | |||
* after this file is read. | |||
* | |||
* @see src/Phan/Config.php | |||
* See Config for all configurable options. | |||
*/ | |||
return [ | |||
// A list of directories that should be parsed for class and | |||
// method information. After excluding the directories | |||
// defined in exclude_analysis_directory_list, the remaining | |||
// files will be statically analyzed for errors. | |||
// | |||
// Thus, both first-party and third-party code being used by | |||
// your application should be included in this list. | |||
'directory_list' => [ | |||
'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', | |||
], | |||
]; |
@@ -1,44 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> | |||
* | |||
* @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 <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
$expected = <<<EOT | |||
build/.phan/tests/SqlInjectionCheckerTest.php:23 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:35 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:37 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:39 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:41 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:43 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:54 SqlInjectionChecker Potential SQL injection detected - neither a parameter nor a string | |||
build/.phan/tests/SqlInjectionCheckerTest.php:61 SqlInjectionChecker Potential SQL injection detected - method: no child method | |||
build/.phan/tests/SqlInjectionCheckerTest.php:62 SqlInjectionChecker Potential SQL injection detected - method: no child method | |||
build/.phan/tests/SqlInjectionCheckerTest.php:69 SqlInjectionChecker Potential SQL injection detected - method: no child method | |||
build/.phan/tests/SqlInjectionCheckerTest.php:70 SqlInjectionChecker Potential SQL injection detected - method: no child method | |||
EOT; | |||
$result = shell_exec('php '. __DIR__ . '/../../lib/composer/phan/phan/phan -k build/.phan/config.php --include-analysis-file-list build/.phan/tests/* --directory build/.phan/tests/'); | |||
if($result !== $expected) { | |||
echo("Output of phan doesn't match expectation\n"); | |||
echo("Expected: $expected\n"); | |||
echo("Result: $result\n"); | |||
exit(1); | |||
} |
@@ -1,136 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> | |||
* | |||
* @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 <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
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(); |
@@ -1,82 +0,0 @@ | |||
<?php | |||
/** | |||
* The APCIterator class | |||
* | |||
* The APCIterator class makes it easier to iterate over large APC caches. | |||
* This is helpful as it allows iterating over large caches in steps, while grabbing a defined number | |||
* of entries per lock instance, so it frees the cache locks for other activities rather than hold up | |||
* the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more | |||
* efficient as it's been moved to the C level. | |||
* | |||
* @link http://php.net/manual/en/class.apciterator.php | |||
*/ | |||
class APCIterator implements Iterator | |||
{ | |||
/** | |||
* Constructs an APCIterator iterator object | |||
* @link http://php.net/manual/en/apciterator.construct.php | |||
* @param string $cache The cache type, which will be 'user' or 'file'. | |||
* @param string|string[]|null $search A PCRE regular expression that matches against APC key names, | |||
* either as a string for a single regular expression, or as an array of regular expressions. | |||
* Or, optionally pass in NULL to skip the search. | |||
* @param int $format The desired format, as configured with one ore more of the APC_ITER_* constants. | |||
* @param int $chunk_size The chunk size. Must be a value greater than 0. The default value is 100. | |||
* @param int $list The type to list. Either pass in APC_LIST_ACTIVE or APC_LIST_INACTIVE. | |||
*/ | |||
public function __construct($cache, $search = null, $format = APC_ITER_ALL, $chunk_size = 100, $list = APC_LIST_ACTIVE){} | |||
/** | |||
* Rewinds back the iterator to the first element | |||
* @link http://php.net/manual/en/apciterator.rewind.php | |||
*/ | |||
public function rewind(){} | |||
/** | |||
* Checks if the current iterator position is valid | |||
* @link http://php.net/manual/en/apciterator.valid.php | |||
* @return bool Returns TRUE if the current iterator position is valid, otherwise FALSE. | |||
*/ | |||
public function valid(){} | |||
/** | |||
* Gets the current item from the APCIterator stack | |||
* @link http://php.net/manual/en/apciterator.current.php | |||
* @return mixed Returns the current item on success, or FALSE if no more items or exist, or on failure. | |||
*/ | |||
public function current(){} | |||
/** | |||
* Gets the current iterator key | |||
* @link http://php.net/manual/en/apciterator.key.php | |||
* @return string|int|bool Returns the key on success, or FALSE upon failure. | |||
*/ | |||
public function key(){} | |||
/** | |||
* Moves the iterator pointer to the next element | |||
* @link http://php.net/manual/en/apciterator.next.php | |||
* @return bool Returns TRUE on success or FALSE on failure. | |||
*/ | |||
public function next(){} | |||
/** | |||
* Gets the total number of cache hits | |||
* @link http://php.net/manual/en/apciterator.gettotalhits.php | |||
* @return int|bool The number of hits on success, or FALSE on failure. | |||
*/ | |||
public function getTotalHits(){} | |||
/** | |||
* Gets the total cache size | |||
* @link http://php.net/manual/en/apciterator.gettotalsize.php | |||
* @return int|bool The total cache size. | |||
*/ | |||
public function getTotalSize(){} | |||
/** | |||
* Get the total count | |||
* @link http://php.net/manual/en/apciterator.gettotalcount.php | |||
* @return int|bool The total count. | |||
*/ | |||
public function getTotalCount(){} | |||
} |
@@ -1,82 +0,0 @@ | |||
<?php | |||
/** | |||
* The APCUIterator class | |||
* | |||
* The APCUIterator class makes it easier to iterate over large APCu caches. | |||
* This is helpful as it allows iterating over large caches in steps, while grabbing a defined number | |||
* of entries per lock instance, so it frees the cache locks for other activities rather than hold up | |||
* the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more | |||
* efficient as it's been moved to the C level. | |||
* | |||
* @link http://php.net/manual/en/class.apcuiterator.php | |||
* @since APCu 5.0.0 | |||
*/ | |||
class APCUIterator implements Iterator { | |||
/** | |||
* Constructs an APCUIterator iterator object | |||
* @link http://php.net/manual/en/apcuiterator.construct.php | |||
* @param string|string[]|null $search A PCRE regular expression that matches against APCu key names, | |||
* either as a string for a single regular expression, or as an array of regular expressions. | |||
* Or, optionally pass in NULL to skip the search. | |||
* @param int $format The desired format, as configured with one ore more of the APC_ITER_* constants. | |||
* @param int $chunk_size The chunk size. Must be a value greater than 0. The default value is 100. | |||
* @param int $list The type to list. Either pass in APC_LIST_ACTIVE or APC_LIST_DELETED. | |||
*/ | |||
public function __construct($search = null, $format = APC_ITER_ALL, $chunk_size = 100, $list = APC_LIST_ACTIVE){} | |||
/** | |||
* Rewinds back the iterator to the first element | |||
* @link http://php.net/manual/en/apcuiterator.rewind.php | |||
*/ | |||
public function rewind(){} | |||
/** | |||
* Checks if the current iterator position is valid | |||
* @link http://php.net/manual/en/apcuiterator.valid.php | |||
* @return bool Returns TRUE if the current iterator position is valid, otherwise FALSE. | |||
*/ | |||
public function valid(){} | |||
/** | |||
* Gets the current item from the APCUIterator stack | |||
* @link http://php.net/manual/en/apcuiterator.current.php | |||
* @return mixed Returns the current item on success, or FALSE if no more items or exist, or on failure. | |||
*/ | |||
public function current(){} | |||
/** | |||
* Gets the current iterator key | |||
* @link http://php.net/manual/en/apcuiterator.key.php | |||
* @return string|int|bool Returns the key on success, or FALSE upon failure. | |||
*/ | |||
public function key(){} | |||
/** | |||
* Moves the iterator pointer to the next element | |||
* @link http://php.net/manual/en/apcuiterator.next.php | |||
* @return bool Returns TRUE on success or FALSE on failure. | |||
*/ | |||
public function next(){} | |||
/** | |||
* Gets the total number of cache hits | |||
* @link http://php.net/manual/en/apcuiterator.gettotalhits.php | |||
* @return int|bool The number of hits on success, or FALSE on failure. | |||
*/ | |||
public function getTotalHits(){} | |||
/** | |||
* Gets the total cache size | |||
* @link http://php.net/manual/en/apcuiterator.gettotalsize.php | |||
* @return int|bool The total cache size. | |||
*/ | |||
public function getTotalSize(){} | |||
/** | |||
* Get the total count | |||
* @link http://php.net/manual/en/apcuiterator.gettotalcount.php | |||
* @return int|bool The total count. | |||
*/ | |||
public function getTotalCount(){} | |||
} |
@@ -1,318 +0,0 @@ | |||
<? | |||
/** | |||
* Stubs for APC 3.1.4 | |||
* | |||
* Author: Johnny Woo | |||
* Date: Aug 9, 2010 | |||
* Time: 12:19:14 PM | |||
*/ | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_LIST_ACTIVE', 1); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_LIST_DELETED', 2); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_TYPE', 1); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_KEY', 2); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_FILENAME', 4); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_DEVICE', 8); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_INODE', 16); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_VALUE', 32); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_MD5', 64); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_NUM_HITS', 128); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_MTIME', 256); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_CTIME', 512); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_DTIME', 1024); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_ATIME', 2048); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_REFCOUNT', 4096); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_MEM_SIZE', 8192); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_TTL', 16384); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_NONE', 0); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_ITER_ALL', -1); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_BIN_VERIFY_MD5', 1); | |||
/** | |||
* @link http://php.net/manual/en/apc.constants.php | |||
*/ | |||
define('APC_BIN_VERIFY_CRC32', 2); | |||
/** | |||
* Retrieves cached information and meta-data from APC's data store | |||
* @link http://php.net/manual/en/function.apc-cache-info.php | |||
* @param string $type If cache_type is "user", information about the user cache will be returned. | |||
* If cache_type is "filehits", information about which files have been served from the bytecode | |||
* cache for the current request will be returned. This feature must be enabled at compile time | |||
* using --enable-filehits. If an invalid or no cache_type is specified, information about the | |||
* system cache (cached files) will be returned. | |||
* @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 apc_cache_info($type = '', $limited = false){} | |||
/** | |||
* Clears the APC cache | |||
* @link http://php.net/manual/en/function.apc-clear-cache.php | |||
* @param string $cache_type If cache_type is "user", the user cache will be cleared; | |||
* otherwise, the system cache (cached files) will be cleared. | |||
* @return bool Returns TRUE on success or FALSE on failure. | |||
*/ | |||
function apc_clear_cache($cache_type = ''){} | |||
/** | |||
* Retrieves APC's Shared Memory Allocation information | |||
* @link http://php.net/manual/en/function.apc-sma-info.php | |||
* @param bool $limited When set to FALSE (default) apc_sma_info() will | |||
* return a detailed information about each segment. | |||
* @return array|bool Array of Shared Memory Allocation data; FALSE on failure. | |||
*/ | |||
function apc_sma_info($limited = false){} | |||
/** | |||
* Cache a variable in the data store | |||
* @link http://php.net/manual/en/function.apc-store.php | |||
* @param string|array $key String: Store the variable using this name. Keys are cache-unique, | |||
* so storing a second value with the same key will overwrite the original value. | |||
* Array: Names in key, variables in value. | |||
* @param mixed $var [optional] The variable to store | |||
* @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 bool|array Returns TRUE on success or FALSE on failure | array with error keys. | |||
*/ | |||
function apc_store($key, $var, $ttl = 0){} | |||
/** | |||
* Fetch a stored variable from the cache | |||
* @link http://php.net/manual/en/function.apc-fetch.php | |||
* @param string|string[] $key The key used to store the value (with apc_store()). | |||
* If an array is passed then each element is fetched and returned. | |||
* @param bool $success Set to TRUE in success and FALSE in failure. | |||
* @return mixed The stored variable or array of variables on success; FALSE on failure. | |||
*/ | |||
function apc_fetch($key, &$success = null){} | |||
/** | |||
* Removes a stored variable from the cache | |||
* @link http://php.net/manual/en/function.apc-delete.php | |||
* @param string|string[]|APCIterator $key The key used to store the value (with apc_store()). | |||
* @return bool|string[] Returns TRUE on success or FALSE on failure. For array of keys returns list of failed keys. | |||
*/ | |||
function apc_delete($key){} | |||
/** | |||
* Defines a set of constants for retrieval and mass-definition | |||
* | |||
* define() is notoriously slow. Since the main benefit of APC is to increase | |||
* the performance of scripts/applications, this mechanism is provided to streamline | |||
* the process of mass constant definition. However, this function does not perform | |||
* as well as anticipated. For a better-performing solution, try the hidef extension from PECL. | |||
* | |||
* @link http://php.net/manual/en/function.apc-define-constants.php | |||
* @param string $key The key serves as the name of the constant set being stored. | |||
* This key is used to retrieve the stored constants in apc_load_constants(). | |||
* @param array $constants An associative array of constant_name => 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){} | |||
@@ -1,235 +0,0 @@ | |||
<?php | |||
/** | |||
* Stubs for APCu 5.0.0 | |||
*/ | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_LIST_ACTIVE', 1); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_LIST_DELETED', 2); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_TYPE', 1); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_KEY', 2); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_FILENAME', 4); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_DEVICE', 8); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_INODE', 16); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_VALUE', 32); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_MD5', 64); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_NUM_HITS', 128); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_MTIME', 256); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_CTIME', 512); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_DTIME', 1024); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_ATIME', 2048); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_REFCOUNT', 4096); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_MEM_SIZE', 8192); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_TTL', 16384); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_NONE', 0); | |||
/** | |||
* @link http://php.net/manual/en/apcu.constants.php | |||
*/ | |||
define('APC_ITER_ALL', -1); | |||
/** | |||
* Clears the APCu cache | |||
* @link http://php.net/manual/en/function.apcu-clear-cache.php | |||
* | |||
* @return bool Returns TRUE always. | |||
*/ | |||
function apcu_clear_cache(){} | |||
/** | |||
* Retrieves APCu Shared Memory Allocation information | |||
* @link http://php.net/manual/en/function.apcu-sma-info.php | |||
* @param bool $limited When set to FALSE (default) apcu_sma_info() will | |||
* return a detailed information about each segment. | |||
* | |||
* @return array|bool Array of Shared Memory Allocation data; FALSE on failure. | |||
*/ | |||
function apcu_sma_info($limited = false){} | |||
/** | |||
* Cache a variable in the data store | |||
* @link http://php.net/manual/en/function.apcu-store.php | |||
* @param string|array $key String: Store the variable using this name. Keys are cache-unique, | |||
* so storing a second value with the same key will overwrite the original value. | |||
* Array: Names in key, variables in value. | |||
* @param mixed $var [optional] The variable to store | |||
* @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 bool|array Returns TRUE on success or FALSE on failure | array with error keys. | |||
*/ | |||
function apcu_store($key, $var, $ttl = 0){} | |||
/** | |||
* Fetch a stored variable from the cache | |||
* @link http://php.net/manual/en/function.apcu-fetch.php | |||
* @param string|string[] $key The key used to store the value (with apcu_store()). | |||
* If an array is passed then each element is fetched and returned. | |||
* @param bool $success Set to TRUE in success and FALSE in failure. | |||
* @return mixed The stored variable or array of variables on success; FALSE on failure. | |||
*/ | |||
function apcu_fetch($key, &$success = null){} | |||
/** | |||
* Removes a stored variable from the cache | |||
* @link http://php.net/manual/en/function.apcu-delete.php | |||
* @param string|string[]|APCUIterator $key The key used to store the value (with apcu_store()). | |||
* @return bool|string[] Returns TRUE on success or FALSE on failure. For array of keys returns list of failed keys. | |||
*/ | |||
function apcu_delete($key){} | |||
/** | |||
* Caches a variable in the data store, only if it's not already stored | |||
* @link http://php.net/manual/en/function.apcu-add.php | |||
* @param string $key Store the variable using this name. Keys are cache-unique, | |||
* so attempting to use apcu_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 apcu_add() and apcu_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 apcu_add($key, $var, $ttl = 0){} | |||
/** | |||
* Checks if APCu key exists | |||
* @link http://php.net/manual/en/function.apcu-exists.php | |||
* @param string|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 apcu_exists($keys){} | |||
/** | |||
* Increase a stored number | |||
* @link http://php.net/manual/en/function.apcu-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 apcu_inc($key, $step = 1, &$success = null){} | |||
/** | |||
* Decrease a stored number | |||
* @link http://php.net/manual/en/function.apcu-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 apcu_dec($key, $step = 1, &$success = null){} | |||
/** | |||
* Updates an old value with a new value | |||
* | |||
* apcu_cas() updates an already existing integer value if the old parameter matches the currently stored value | |||
* with the value of the new parameter. | |||
* | |||
* @link http://php.net/manual/en/function.apcu-cas.php | |||
* @param string $key The key of the value being updated. | |||
* @param int $old The old value (the value currently stored). | |||
* @param int $new The new value to update to. | |||
* @return bool Returns TRUE on success or FALSE on failure. | |||
*/ | |||
function apcu_cas($key, $old, $new){} | |||
/** | |||
* Atomically fetch or generate a cache entry | |||
* | |||
* <p>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. | |||
* </p> | |||
* | |||
* <p>Note: When control enters <i>apcu_entry()</i> 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. | |||
* </p> | |||
* | |||
* @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. | |||
* <p>Warning | |||
* The only APCu function that can be called safely by generator is apcu_entry().</p> | |||
* @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){} |
@@ -1,217 +0,0 @@ | |||
<?php | |||
/** | |||
* Common Used Functions | |||
*/ | |||
/** | |||
* Get cached data by specified name | |||
* | |||
* @param string $name Key name | |||
* @return mixed | |||
*/ | |||
function xcache_get($name) {} | |||
/** | |||
* Store data to cache by specified name | |||
* | |||
* @param string $name Key name | |||
* @param mixed $value Value to store | |||
* @param int $ttl TTL in seconds | |||
* @return bool TRUE on success, FALSE otherwise | |||
*/ | |||
function xcache_set($name, $value, $ttl = 0) {} | |||
/** | |||
* Check if an entry exists in cache by specified name | |||
* | |||
* @param string $name Key name | |||
* @return bool TRUE if key exists, FALSE otherwise | |||
*/ | |||
function xcache_isset($name) {} | |||
/** | |||
* Unset existing data in cache by specified name | |||
* | |||
* @param string $name Key name | |||
* @return bool | |||
*/ | |||
function xcache_unset($name) {} | |||
/** | |||
* Unset existing data in cache by specified prefix | |||
* | |||
* @param string $prefix Keys' prefix | |||
* @return bool | |||
*/ | |||
function xcache_unset_by_prefix($prefix) {} | |||
/** | |||
* Increase an int counter in cache by specified name, create it if not exists | |||
* | |||
* @param string $name | |||
* @param mixed $value | |||
* @param int $ttl | |||
* @return int | |||
*/ | |||
function xcache_inc($name, $value = 1, $ttl = 0) {} | |||
/** | |||
* Decrease an int counter in cache by specified name, create it if not exists | |||
* | |||
* @param string $name | |||
* @param mixed $value | |||
* @param int $ttl | |||
* @return int | |||
*/ | |||
function xcache_dec($name, $value = 1, $ttl = 0) {} | |||
/** | |||
* Administrator Functions | |||
*/ | |||
/** | |||
* Return count of cache on specified cache type | |||
* | |||
* @param int $type | |||
* @return int | |||
*/ | |||
function xcache_count($type) {} | |||
/** | |||
* Get cache info by id on specified cache type | |||
* | |||
* @param int $type | |||
* @param int $id | |||
* @return array | |||
*/ | |||
function xcache_info($type, $id) {} | |||
/** | |||
* Get cache entries list by id on specified cache type | |||
* | |||
* @param int $type | |||
* @param int $id | |||
* @return array | |||
*/ | |||
function xcache_list($type, $id) {} | |||
/** | |||
* Clear cache by id on specified cache type | |||
* | |||
* @param int $type | |||
* @param int $id | |||
* @return void | |||
*/ | |||
function xcache_clear_cache($type, $id = -1) {} | |||
/** | |||
* @param int $op_type | |||
* @return string | |||
*/ | |||
function xcache_coredump($op_type) {} | |||
/** | |||
* Coverager Functions | |||
*/ | |||
/** | |||
* @param string $data | |||
* @return array | |||
*/ | |||
function xcache_coverager_decode($data) {} | |||
/** | |||
* @param bool $clean | |||
* @return void | |||
*/ | |||
function xcache_coverager_start($clean = true) {} | |||
/** | |||
* @param bool $clean | |||
* @return void | |||
*/ | |||
function xcache_coverager_stop($clean = false) {} | |||
/** | |||
* @param bool $clean | |||
* @return array | |||
*/ | |||
function xcache_coverager_get($clean = false) {} | |||
/** | |||
* Opcode Functions | |||
*/ | |||
/** | |||
* @param string $filename | |||
* @return string | |||
*/ | |||
function xcache_asm($filename) {} | |||
/** | |||
* Disassemble file into opcode array by filename | |||
* | |||
* @param string $filename | |||
* @return string | |||
*/ | |||
function xcache_dasm_file($filename) {} | |||
/** | |||
* Disassemble php code into opcode array | |||
* | |||
* @param string $code | |||
* @return string | |||
*/ | |||
function xcache_dasm_string($code) {} | |||
/** | |||
* Encode php file into XCache opcode encoded format | |||
* | |||
* @param string $filename | |||
* @return string | |||
*/ | |||
function xcache_encode($filename) {} | |||
/** | |||
* Decode(load) opcode from XCache encoded format file | |||
* | |||
* @param string $filename | |||
* @return bool | |||
*/ | |||
function xcache_decode($filename) {} | |||
/** | |||
* @param int $op_type | |||
* @return string | |||
*/ | |||
function xcache_get_op_type($op_type) {} | |||
/** | |||
* @param int $type | |||
* @return string | |||
*/ | |||
function xcache_get_data_type($type) {} | |||
/** | |||
* @param int $opcode | |||
* @return string | |||
*/ | |||
function xcache_get_opcode($opcode) {} | |||
/** | |||
* @param int $op_type | |||
* @return string | |||
*/ | |||
function xcache_get_op_spec($op_type) {} | |||
/** | |||
* @param int $opcode | |||
* @return string | |||
*/ | |||
function xcache_get_opcode_spec($opcode) {} | |||
/** | |||
* @param string $name | |||
* @return string | |||
*/ | |||
function xcache_is_autoglobal($name) {} |
@@ -1,72 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> | |||
* | |||
* @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 <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
$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']); | |||
} | |||
} |
@@ -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" | |||
} | |||
} |