Remove phan config - was replaced by Psalm

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Morris Jobke 2020-09-16 14:46:29 +02:00
parent f7c59ffdb5
commit 04a3580d19
No known key found for this signature in database
GPG Key ID: FE03C3A163FEDE68
14 changed files with 1 additions and 2703 deletions

View File

@ -43,31 +43,6 @@ trigger:
- pull_request - pull_request
- push - 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 kind: pipeline
name: litmus name: litmus

View File

@ -381,9 +381,7 @@ class EmailProvider extends AbstractProvider {
$diff = $dtstartDt->diff($dtendDt); $diff = $dtstartDt->diff($dtendDt);
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$dtstartDt = new \DateTime($dtstartDt->format(\DateTime::ATOM)); $dtstartDt = new \DateTime($dtstartDt->format(\DateTime::ATOM));
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$dtendDt = new \DateTime($dtendDt->format(\DateTime::ATOM)); $dtendDt = new \DateTime($dtendDt->format(\DateTime::ATOM));
if ($isAllDay) { if ($isAllDay) {
@ -400,9 +398,7 @@ class EmailProvider extends AbstractProvider {
$startTimezone = $endTimezone = null; $startTimezone = $endTimezone = null;
if (!$vevent->DTSTART->isFloating()) { if (!$vevent->DTSTART->isFloating()) {
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$startTimezone = $vevent->DTSTART->getDateTime()->getTimezone()->getName(); $startTimezone = $vevent->DTSTART->getDateTime()->getTimezone()->getName();
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$endTimezone = $this->getDTEndFromEvent($vevent)->getDateTime()->getTimezone()->getName(); $endTimezone = $this->getDTEndFromEvent($vevent)->getDateTime()->getTimezone()->getName();
} }

View File

@ -138,15 +138,11 @@ class PushProvider extends AbstractProvider {
? ((string) $vevent->LOCATION) ? ((string) $vevent->LOCATION)
: null, : null,
'all_day' => $start instanceof Property\ICalendar\Date, 'all_day' => $start instanceof Property\ICalendar\Date,
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
'start_atom' => $start->getDateTime()->format(\DateTime::ATOM), 'start_atom' => $start->getDateTime()->format(\DateTime::ATOM),
'start_is_floating' => $start->isFloating(), 'start_is_floating' => $start->isFloating(),
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
'start_timezone' => $start->getDateTime()->getTimezone()->getName(), 'start_timezone' => $start->getDateTime()->getTimezone()->getName(),
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
'end_atom' => $end->getDateTime()->format(\DateTime::ATOM), 'end_atom' => $end->getDateTime()->format(\DateTime::ATOM),
'end_is_floating' => $end->isFloating(), 'end_is_floating' => $end->isFloating(),
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
'end_timezone' => $end->getDateTime()->getTimezone()->getName(), 'end_timezone' => $end->getDateTime()->getTimezone()->getName(),
]; ];
} }

View File

@ -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',
],
];

View File

@ -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);
}

View File

@ -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();

View File

@ -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(){}
}

View File

@ -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(){}
}

View File

@ -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){}

View File

@ -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

View File

@ -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) {}

View File

@ -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']);
}
}

View File

@ -22,6 +22,6 @@
"scripts": { "scripts": {
"cs:fix": "php-cs-fixer fix", "cs:fix": "php-cs-fixer fix",
"cs:check": "php-cs-fixer fix --dry-run --diff", "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"
} }
} }