Esempio n. 1
0
 /**
  * Adds a search parameter to the StatementBuilder, or other InputOutput-extending class instance, located at $this->build_args
  * @param string $target Column name
  * @param string $t_table Table name
  * @param mixed $value Primitive or scalar array. Condition or threshold records must meet in the search
  * @param string $operator ModelCaller const
  */
 protected function makeSearchRequest($target, $t_table, $value, $operator)
 {
     \Segment\utilities\Utilities::areArgumentsValid(__METHOD__, func_get_args(), $this);
     $clmn_n = $this->build_args->getClassName('Column');
     $tbl_n = $this->build_args->getClassName('Table');
     $descrip = $this->controller->getDescription();
     $search_func_n = $this->getRestSearch($operator);
     if (is_array($value)) {
         for ($i = count($value) - 1; $i > -1; $i--) {
             if (is_array($v) && $this->isModelCallerClassName(key($v))) {
                 $caller_name = key($v);
                 $new_caller = new $caller_name($v[$caller_name]);
                 $value[$i] = $new_caller->build_args->getStatement();
             }
             if (!is_scalar($value[$i]) && !is_a($value[$i], 'Statement')) {
                 $value[$i] = NULL;
             }
         }
     }
     switch (strtolower(trim($operator))) {
         case ModelCaller::EQUAL:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchEqual($clmn, new $value_class_n($temp_value));
             break;
         case ModelCaller::NEQUAL:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchNotEqual($clmn, $temp_value);
             break;
         case ModelCaller::EQUALANY:
             $temp_value = is_array($value) ? $value : [$value];
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             end($temp_value);
             for ($i = key($temp_value); $i > -1; $i--) {
                 settype($temp_value[$i], $type);
                 $temp_value[$i] = new $value_class_n($temp_value[$i]);
             }
             $temp_value = new AnyAllValues(...$temp_value);
             $this->build_args->addSearchNotEqual($clmn, $temp_value);
             break;
         case ModelCaller::GREATER:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchGreater($clmn, TRUE, $temp_value);
             break;
         case ModelCaller::GREATEQ:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchGreater($clmn, FALSE, $temp_value);
             break;
         case ModelCaller::GREATANY:
             $temp_value = is_array($value) ? $value : [$value];
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             end($temp_value);
             for ($i = key($temp_value); $i > -1; $i--) {
                 settype($temp_value[$i], $type);
                 $temp_value[$i] = new $value_class_n($temp_value[$i]);
             }
             $temp_value = new AnyAllValues(...$temp_value);
             $this->build_args->addSearchGreaterAny($clmn, $temp_value);
             break;
         case ModelCaller::GREATALL:
             $temp_value = is_array($value) ? $value : [$value];
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             end($temp_value);
             for ($i = key($temp_value); $i > -1; $i--) {
                 settype($temp_value[$i], $type);
                 $temp_value[$i] = new $value_class_n($temp_value[$i]);
             }
             $this->build_args->addSearchGreaterAll(new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target), new AnyAllValues(...$temp_value));
             break;
         case ModelCaller::LESSER:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchLesser($clmn, TRUE, new $value_class_n($temp_value));
             break;
         case ModelCaller::LESSEQ:
             $temp_value = is_array($value) ? $value[0] : $value;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp_value, $type);
             $this->build_args->addSearchLesser($clmn, FALSE, new $value_class_n($value));
             break;
         case ModelCaller::LESSANY:
             $temp_value = is_array($value) ? $value : [$value];
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             end($temp_value);
             for ($i = key($temp_value); $i > -1; $i--) {
                 settype($temp_value[$i], $type);
                 $temp_value[$i] = new $value_class_n($temp_value[$i]);
             }
             $this->build_args->addSearchLesserAny($clmn, new AnyAllValues(...$temp_value));
             break;
         case ModelCaller::LESSALL:
             $temp_value = is_array($value) ? $value : [$value];
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             end($temp_value);
             for ($i = key($temp_value); $i > -1; $i--) {
                 settype($temp_value[$i], $type);
                 $temp_value[$i] = new $value_class_n($temp_value[$i]);
             }
             $this->build_args->addSearchLesserAll($clmn, new AnyAllValues(...$temp_value));
             break;
         case ModelCaller::BETWEEN:
             $temp1 = is_array($value) && isset($value[0]) ? $value[0] : $value;
             $temp2 = is_array($value) && isset($value[1]) ? $value[1] : NULL;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp1, $type);
             settype($temp2, $type);
             $temp1 = new $value_class_n($temp1);
             $temp2 = new $value_class_n($temp2);
             $this->build_args->addSearchBetween($clmn, new BetweenValues($temp1, $temp2));
             break;
         case ModelCaller::NBETWEEN:
             $temp1 = is_array($value) && isset($value[0]) ? $value[0] : $value;
             $temp2 = is_array($value) && isset($value[1]) ? $value[1] : NULL;
             $clmn = new $clmn_n(new $tbl_n(Segment\Model\production\__DB_NAME__, $t_table), $target);
             $type = $descrip->getType($clmn);
             $value_class_n = ucfirst($type) . "Value";
             settype($temp1, $type);
             settype($temp2, $type);
             $temp1 = new $value_class_n($temp1);
             $temp2 = new $value_class_n($temp2);
             $this->build_args->addSearchNotBetween($clmn, new BetweenValues($temp1, $temp2));
             break;
         default:
             throw new \InvalidArgumentException(__CLASS__ . '::' . __METHOD__ . " expects fourth argument to" . " be a const of ModelCaller. Provided: " . print_r($operator, TRUE));
     }
 }
Esempio n. 2
0
 /**
  * Returns function getModelCallArgs()
  * @param string $rest_type the REST call for this operation
  * @param \Segment\utilities\Rest $rest
  * @return callable
  * @throws \InvalidArgumentException
  */
 private static function getMCArgsFunc($rest_type, \Segment\utilities\Rest $rest)
 {
     \Segment\utilities\Utilities::areArgumentsValid(__METHOD__, func_get_args(), $this);
     $answer;
     $temp = $rest->getValue('x');
     $temp = is_string($temp) ? json_decode($temp, TRUE) : $temp;
     $id = is_array($temp) ? key($temp) : '';
     switch (strtoupper(trim($rest_type))) {
         case 'GET':
             $id = $rest->getId();
             if (strpos($id, '_search') && strpos($id, '_search') + 7 === strlen($id) || strpos($id, '_field_set') && strpos($id, '_field_set') + 10 === strlen($id) || strpos($id, '_field_count') && strpos($id, '_field_count') + 12 === strlen($id) || strpos($id, '_field_avg') && strpos($id, '_field_avg') + 10 === strlen($id) || strpos($id, '_field_mode') && strpos($id, '_field_mode') + 11 === strlen($id) || strpos($id, '_field_median') && strpos($id, '_field_median') + 13 === strlen($id) || strpos($id, '_field_firstq') && strpos($id, '_field_firstq') + 10 === strlen($id) || strpos($id, '_field_thirdq') && strpos($id, '_field_thirdq') + 10 === strlen($id)) {
                 /**`
                  * @return \Segment\utilities\RestRequest
                  * @var \Segment\Controller\Controller $this
                  */
                 $answer = function () {
                     $answer = array();
                     if ($this->isAuthorizationNeeded()) {
                         return $answer;
                     }
                     $x = $this->getRest();
                     $answer = new \Segment\utilities\SearchHttpRequest($n = $x->hasKey('x') ? $x->getValue('x') : '');
                     return $answer;
                 };
             } else {
                 if (strpos($id, '_wild') && strpos($id, '_wild') + 6 === strlen($id)) {
                     /**
                      * @return \Segment\utilities\RestRequest
                      * @var \Segment\Controller\Controller $this
                      */
                     $answer = function () {
                         $answer = array();
                         if ($this->isAuthorizationNeeded()) {
                             return $answer;
                         }
                         $x = $this->getRest();
                         $answer = new \Segment\utilities\WildHttpRequest($n = $x->hasKey('x') ? $x->getValue('x') : '');
                         return $answer;
                     };
                 }
             }
             break;
         case 'POST':
             /**
              * @return \Segment\utilities\RestRequest
              * @var \Segment\Controller\Controller $this
              */
             $answer = function () {
                 $answer = array();
                 if ($this->isAuthorizationNeeded()) {
                     return $answer;
                 }
                 $x = $this->getRest();
                 $answer = new \Segment\utilities\PostHttpRequest($n = $x->hasKey('x') ? $x->getValue('x') : '');
                 return $answer;
             };
             break;
         case 'PUT':
             /**
              * @return \Segment\utilities\RestRequest
              * @var \Segment\Controller\Controller $this
              */
             $answer = function () {
                 $answer = array();
                 if ($this->isAuthorizationNeeded()) {
                     return $answer;
                 }
                 $x = $this->getRest();
                 $answer = new \Segment\utilities\PutHttpRequest($n = $x->hasKey('x') ? $x->getValue('x') : '');
                 return $answer;
             };
             break;
         case 'DELETE':
             /**
              * @return \Segment\utilities\RestRequest
              * @var \Segment\Controller\Controller $this
              */
             $answer = function () {
                 $answer = array();
                 if ($this->isAuthorizationNeeded()) {
                     return $answer;
                 }
                 $x = $this->getRest();
                 $answer = new \Segment\utilities\DeleteHttpRequest($n = $x->hasKey('x') ? $x->getValue('x') : '');
                 return $answer;
             };
             break;
             // assign $answer a function
             break;
     }
     return ['getModelCallArgument' => $answer];
 }
Esempio n. 3
0
 /**
  * Return (PHP) Database Object placeholder variable string
  * @param string $var_as_str
  * @return string
  */
 public function getPdoPlaceholder($var_as_str)
 {
     \Segment\utilities\Utilities::areArgumentsValid(__CLASS__, __METHOD__, func_get_args());
     return '?';
 }