Skip to content
Snippets Groups Projects
HasFactories.php 2.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • Josh Pollock's avatar
    Josh Pollock committed
    <?php
    
    
    namespace calderawp\CalderaFormsQuery\Tests\Traits;
    
    
    use calderawp\CalderaContainers\Service\Container;
    
    Josh Pollock's avatar
    Josh Pollock committed
    use calderawp\CalderaFormsQuery\DeleteQueries;
    
    use calderawp\CalderaFormsQuery\Features\FeatureContainer;
    
    use calderawp\CalderaFormsQuery\SelectQueries;
    
    Josh Pollock's avatar
    Josh Pollock committed
    use calderawp\CalderaFormsQuery\Tests\Unit\Features\QueriesTest;
    
    Josh Pollock's avatar
    Josh Pollock committed
    
    trait HasFactories
    {
    
    	/**
    	 * @return \calderawp\CalderaFormsQuery\Select\Entry
    	 */
    	protected function entryGeneratorFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\Select\Entry(
    			$this->mySqlBuilderFactory(),
    			$this->entryTableName()
    		);
    	}
    
    	/**
    	 * @return \calderawp\CalderaFormsQuery\Delete\Entry
    	 */
    	protected function entryDeleteGeneratorFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\Delete\Entry(
    			$this->mySqlBuilderFactory(),
    			$this->entryTableName()
    		);
    	}
    
    
    	/**
    	 * @return \calderawp\CalderaFormsQuery\Select\EntryValues
    	 */
    	protected function entryValuesGeneratorFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\Select\EntryValues(
    			$this->mySqlBuilderFactory(),
    			$this->entryValueTableName()
    		);
    	}
    	/**
    	 * @return \calderawp\CalderaFormsQuery\Delete\EntryValues
    	 */
    	protected function entryValuesDeleteGeneratorFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\Delete\EntryValues(
    			$this->mySqlBuilderFactory(),
    			$this->entryValueTableName()
    		);
    	}
    
    
    
    	/**
    	 * @return \calderawp\CalderaFormsQuery\MySqlBuilder
    	 */
    	protected function mySqlBuilderFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\MySqlBuilder();
    	}
    
    
    	/**
    
    	 * @return SelectQueries
    
    Josh Pollock's avatar
    Josh Pollock committed
    	 */
    
    Josh Pollock's avatar
    Josh Pollock committed
    	protected function selectQueriesFactory()
    
    		return new SelectQueries(
    
    Josh Pollock's avatar
    Josh Pollock committed
    			$this->entryGeneratorFactory(),
    			$this->entryValuesGeneratorFactory(),
    			$this->getWPDB()
    		);
    	}
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    	/**
    	 * @return DeleteQueries
    	 */
    	protected function deleteQueriesFactory()
    	{
    
    		return new DeleteQueries(
    			$this->entryDeleteGeneratorFactory(),
    			$this->entryValuesDeleteGeneratorFactory(),
    			$this->getWPDB()
    		);
    	}
    
    	/**
    	 * @return \calderawp\CalderaFormsQuery\Features\Queries
    	 */
    	protected function featureQueriesFactory()
    	{
    		return new \calderawp\CalderaFormsQuery\Features\Queries(
    			$this->selectQueriesFactory(),
    			$this->deleteQueriesFactory()
    		);
    	}
    
    
    	/**
    	 * @return FeatureContainer
    	 */
    	protected function containerFactory()
    	{
    		return new FeatureContainer(
    			new Container(),
    			$this->getWPDB()
    		);
    	}
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    	/**
    	 * Gets a WPDB instance
    	 *
    	 * @return \wpdb
    	 */
    	protected function getWPDB()
    	{
    		global $wpdb;
    
    Josh Pollock's avatar
    Josh Pollock committed
    		if (! class_exists('\WP_User')) {
    
    Josh Pollock's avatar
    Josh Pollock committed
    			include_once dirname(dirname(__FILE__)) . '/Mock/wpdb.php';
    		}
    
    		if (! $wpdb) {
    			$wpdb = new \wpdb('', '', '', '');
    		}
    		return $wpdb;
    	}
    
    	/**
    	 * @return string
    	 */
    	protected function entryValueTableName(): string
    	{
    		return "{$this->getWPDB()->prefix}cf_form_entry_values";
    	}
    
    	/**
    	 * @return string
    	 */
    	protected function entryTableName(): string
    	{
    		return "{$this->getWPDB()->prefix}cf_form_entries";
    	}
    }