Signed-off-by: Morris Jobke <hey@morrisjobke.de>pull/22883/head
parent
f7c59ffdb5
commit
04a3580d19
@ -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){} |
||||
File diff suppressed because it is too large
Load Diff
@ -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']); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue