Remove phan config - was replaced by Psalm
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
parent
f7c59ffdb5
commit
04a3580d19
25
.drone.yml
25
.drone.yml
|
@ -43,31 +43,6 @@ trigger:
|
|||
- pull_request
|
||||
- push
|
||||
|
||||
#---
|
||||
#kind: pipeline
|
||||
#name: syntax-and-phan
|
||||
#
|
||||
#steps:
|
||||
#- name: submodules
|
||||
# image: docker:git
|
||||
# commands:
|
||||
# - git submodule update --init
|
||||
#- name: phan
|
||||
# image: nextcloudci/php7.2:php7.2-13
|
||||
# commands:
|
||||
# - composer install
|
||||
# - composer require --dev "phan/phan:0.11.1"
|
||||
# - ./lib/composer/phan/phan/phan -k build/.phan/config.php
|
||||
# - php ./build/.phan/plugin-checker.php
|
||||
#
|
||||
#trigger:
|
||||
# branch:
|
||||
# - master
|
||||
# - stable*
|
||||
# event:
|
||||
# - pull_request
|
||||
# - push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: litmus
|
||||
|
|
|
@ -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){}
|
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']);
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue