Skip to content
Snippets Groups Projects
Commit 13509bcb authored by Josh Pollock's avatar Josh Pollock
Browse files

refactor entryValues to use new interfaces

parent 22fe41a8
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="calderawp\CalderaFormsQuery\" />
<sourceFolder url="file://$MODULE_DIR$/Tests" isTestSource="true" packagePrefix="calderawp\CalderaFormsQuery\Tests\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/calderawp/caldera-containers" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/jakub-onderka/php-parallel-lint" />
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
<excludeFolder url="file://$MODULE_DIR$/vendor/nilportugues/sql-query-builder" />
<excludeFolder url="file://$MODULE_DIR$/vendor/nilportugues/sql-query-formatter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-token-stream" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit-mock-objects" />
<excludeFolder url="file://$MODULE_DIR$/vendor/pimple/pimple" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
<excludeFolder url="file://$MODULE_DIR$/vendor/squizlabs/php_codesniffer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/caldera-forms-query.iml" filepath="$PROJECT_DIR$/.idea/caldera-forms-query.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/psr/container" />
<path value="$PROJECT_DIR$/vendor/pimple/pimple" />
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit-mock-objects" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/vendor/calderawp/caldera-containers" />
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/vendor/squizlabs/php_codesniffer" />
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
<path value="$PROJECT_DIR$/vendor/nilportugues/sql-query-builder" />
<path value="$PROJECT_DIR$/vendor/nilportugues/sql-query-formatter" />
<path value="$PROJECT_DIR$/vendor/jakub-onderka/php-parallel-lint" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
</include_path>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
This diff is collapsed.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"stopOnEntry": true,
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000,
"stopOnEntry": true,
}
]
}
\ No newline at end of file
......@@ -14,4 +14,5 @@ interface DoesSelectQuery
* @return Select
*/
public function getSelectQuery();
}
<?php
namespace calderawp\CalderaFormsQuery\Select;
/**
* Interface DoesSelectQueryByEntryId
*
* Interface that any class that selects by entry ID MUST implement.
*/
interface DoesSelectQueryByEntryId
{
/**
* Create query by entry ID
*
* @param $entryId
* @return $this
*/
public function queryByEntryId($entryId);
/**
* Get name of ID column
*
* @return string
*/
public function getEntryIdColumn();
}
<?php
namespace calderawp\CalderaFormsQuery\Select;
/**
* Interface DoesSelectQueryByValue
*
* Interface that select query classes that query by field value MUST Impliment
*/
interface DoesSelectQueryByValue
{
/**
* Create query for entry values with a field whose value equals, doesn't equal or is like (SQL LIKE) a value
*
* @param string $fieldSlug Field slug
* @param string $fieldValue Field value
* @param string $type Optional. Type of comparison. Values: equals|notEquals|like Default: 'equals'
* @param string $whereOperator Optional. Type of where. Default is 'AND'. Any valid WHERE operator is accepted
* @param array $columns Optional. Array of columns to select. Leave empty to select *
* @return $this
*/
public function queryByFieldValue($fieldSlug, $fieldValue, $type = 'equals', $whereOperator = 'AND', $columns = []);
/**
* Get column name for value lookups
*
* @return string
*/
public function getValueColumn();
}
......@@ -3,36 +3,22 @@
namespace calderawp\CalderaFormsQuery\Select;
class EntryValues extends SelectQueryBuilder
class EntryValues extends SelectQueryBuilder implements DoesSelectQueryByValue, DoesSelectQueryByEntryId
{
/**
* Create query by entry ID
*
* @param $entryId
* @return $this
*/
/** @inheritdoc */
public function queryByEntryId($entryId)
{
$this
->getSelectQuery()
->where()
->equals('entry_id', $entryId)
->equals($this->getEntryIdColumn(), $entryId)
;
return $this;
}
/**
* Create query for entry values with a field whose value equals, doesn't equal or is like (SQL LIKE) a value
*
* @param string $fieldSlug Field slug
* @param string $fieldValue Field value
* @param string $type Optional. Type of comparison. Values: equals|notEquals|like Default: 'equals'
* @param string $whereOperator Optional. Type of where. Default is 'AND'. Any valid WHERE operator is accepted
* @param array $columns Optional. Array of columns to select. Leave empty to select *
* @return $this
*/
/** @inheritdoc */
public function queryByFieldValue($fieldSlug, $fieldValue, $type = 'equals', $whereOperator = 'AND', $columns = [])
{
if (! empty($columns)) {
......@@ -45,20 +31,20 @@ class EntryValues extends SelectQueryBuilder
$this
->getSelectQuery()
->where($whereOperator)
->equals('value', $fieldValue)
->equals($this->getValueColumn(), $fieldValue)
;
break;
case 'notEquals':
$this->
getSelectQuery()
->where($whereOperator)
->notEquals('value', $fieldValue);
->notEquals($this->getValueColumn(), $fieldValue);
break;
case 'like':
$this->
getSelectQuery()
->where($whereOperator)
->like('value', $fieldValue);
->like($this->getValueColumn(), $fieldValue);
break;
}
......@@ -70,4 +56,16 @@ class EntryValues extends SelectQueryBuilder
return $this;
}
/** @inheritdoc */
public function getValueColumn()
{
return 'value';
}
/** @inheritdoc */
public function getEntryIdColumn()
{
return 'entry_id';
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment