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

select by user id on main class

parent 75906515
No related branches found
No related tags found
No related merge requests found
<?php
namespace calderawp\CalderaFormsQuery\Tests\Integration\Features;
use calderawp\CalderaFormsQuery\QueriesEntries;
use calderawp\CalderaFormsQuery\Tests\Integration\IntegrationTestCase;
use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField;
class QueryByUserIdTest extends IntegrationTestCase
{
use CanCreateEntryWithEmailField;
/**
* Test selecting by entry ID
*
* @covers QueriesEntries::selectByUserId()
*/
public function testByUserId()
{
$email = 'nom@noms.noms';
//Create an entry for a known user.
$userId = $this->factory()->user->create(
[ 'user_email' => $email ]
);
wp_set_current_user( $userId );
$entryId = $this->createEntryWithEmail( $email );
$queries = $this->entryQueriesFactory();
$results = $queries->selectByUserId( $userId );
$this->assertEquals( $entryId, $results[0]['entry']->id);
$this->assertEquals( $entryId, $results[0]['entry']->id);
$found = false;
foreach ( $results[0]['values'] as $entryValue )
{
if( $entryValue->slug === $this->getEmailFieldSlug() ){
$this->assertSame( $email, $entryValue->value );
$found = true;
}
}
$this->assertTrue( $found );
}
}
\ No newline at end of file
......@@ -61,4 +61,89 @@ class EntryQueries implements QueriesEntries
{
return $this->entryGenerator;
}
/**
* Get all data for a user by Id
*
* @param $userId
* @return array
*/
public function selectByUserId($userId)
{
$this->resetEntryGenerator();
$this
->getEntryGenerator()
->queryByUserId($userId);
$entries = $this->getResults($this->getEntryGenerator()->getPreparedSql());
return $this->collectResults($entries);
}
/**
* Reset entry generator
*/
private function resetEntryGenerator()
{
$this->entryGenerator->resetQuery();
}
/**
* Reset entry value generator
*/
private function resetEntryValueGenerator()
{
$this->entryValueGenerator->resetQuery();
}
/**
* Collect results using Caldera_Forms_Entry_Entry and Caldera_Forms_Entry_Field to represent values
*
* @param \stdClass[] $entriesValues
* @return array
*/
private function collectResults($entriesValues)
{
$results = [];
foreach ($entriesValues as $entry) {
$this->resetEntryValueGenerator();
$entry = new \Caldera_Forms_Entry_Entry($entry);
$this
->getEntryValueGenerator()
->queryByEntryId($entry->id);
$entriesValues =$this->getResults(
$this->getEntryValueGenerator()
->getPreparedSql()
);
$entryValuesPrepared = $this->collectEntryValues($entriesValues);
$results[] = [
'entry' => $entry,
'values' => $entryValuesPrepared
];
}
return $results;
}
/**
* Collect entry values as Caldera_Forms_Entry_Field objects
*
* @param \stdClass[] $entriesValues
* @return array
*/
private function collectEntryValues($entriesValues): array
{
$entryValuesPrepared = [];
if (!empty($entriesValues)) {
foreach ($entriesValues as $entryValue) {
$entryValuesPrepared[] = new \Caldera_Forms_Entry_Field($entryValue);
}
}
return $entryValuesPrepared;
}
}
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