| 
<?php/**
 * *
 *  * please don't remove this comment block
 *  *
 *  * @author phptricks Team - Mohammad Anzawi
 *  * @author_uri https://phptricks.org
 *  * @uri https://github.com/anzawi/php-database-class
 *  * @version 5.0.0
 *  * @licence MIT -> https://opensource.org/licenses/MIT
 *  * @package PHPtricks\Orm
 *
 */
 
 namespace PHPtricks\Orm\Operations;
 
 /**
 * Trait parseWhere
 *
 * @package PHPtricks\Orm\Operations
 */
 trait parseWhere
 {
 
 /**
 * @var string[]
 */
 private $__whereTypes = ['AND', 'OR'];
 
 /**
 * How to use
 * $con = [
 *  [
 *      'sex', '=', 'female'
 *  ],
 * 'AND' => [
 *      'position', '=', 'manager'
 *  ]
 * ];
 * $db->table('table_name')->parseWhere($con)->select();
 */
 public function parseWhere(array $cons, $type = "AND")
 {
 $this->_query .= " {$type} (";
 
 foreach ($cons as $con => $st) {
 if (is_array($st)) {
 if ( ! is_numeric($st[2])) {
 $st[2] = "'$st[2]'";
 } else {
 $st[2] = "`$st[2]`";
 }
 
 if (strtolower($con) === 'none' || $con === 0) {
 $this->_query .= " `{$st[0]}` $st[1] $st[2] ";
 } else {
 if ($this->con($con)) {
 $this->_query .= " {$con} `{$st[0]}` $st[1] $st[2] ";
 }
 }
 } else {
 $this->_query .= " `{$cons[0]}` $cons[1] $cons[2] ";
 break;
 }
 }
 
 $this->_query .= ')';
 
 return $this;
 }
 
 /**
 * @param $con
 *
 * @return bool
 */
 private function con($con)
 {
 return in_array(strtoupper($con), $this->__whereTypes);
 }
 
 }
 
 |