Skip to content
Snippets Groups Projects
CanCollectResults.php 1.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    
    
    namespace calderawp\CalderaFormsQuery;
    
    
    trait CanCollectResults
    {
    	/**
    	 * 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;
    	}
    
    	/**
    	 * Reset entry generator
    	 */
    	private function resetEntryGenerator()
    	{
    		$this->entryGenerator->resetQuery();
    	}
    
    	/**
    	 * Reset entry value generator
    	 */
    	private function resetEntryValueGenerator()
    	{
    		$this->entryValueGenerator->resetQuery();
    	}
    }