Lançado Adianti Framework 7.6!
Clique aqui para saber mais
menu

Adianti Solutions

API

Adianti, Framework, PHP, MVC, Active record, Front controller, IDE, RAD, Web, multiplataforma, geração de código, desenvolvimento rápido, relatórios, formulários, listagens, datagrids, gráficos, banco de dados, padrões de projeto, design patterns API do Adianti Framework.
API Docs
code
Selecione a classe

Source for file AdiantiMultiSearchService.php

Documentation is available at AdiantiMultiSearchService.php

  1. <?php
  2. namespace Adianti\Service;
  3.  
  4. use Adianti\Core\AdiantiApplicationConfig;
  5. use Adianti\Util\AdiantiStringConversion;
  6. use Adianti\Database\TTransaction;
  7. use Adianti\Database\TRepository;
  8. use Adianti\Database\TCriteria;
  9. use Adianti\Database\TFilter;
  10. use Adianti\Database\TExpression;
  11.  
  12. use StdClass;
  13. use Exception;
  14.  
  15. /**
  16.  * MultiSearch backend
  17.  *
  18.  * @version    7.4
  19.  * @package    service
  20.  * @author     Pablo Dall'Oglio
  21.  * @author     Matheus Agnes Dias
  22.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  23.  * @license    http://www.adianti.com.br/framework-license
  24.  */
  25. {
  26.     /**
  27.      * Search by the given word inside a model
  28.      */
  29.     public static function onSearch($param null)
  30.     {
  31.         $key  $param['key'];
  32.         $ini  AdiantiApplicationConfig::get();
  33.         $seed APPLICATION_NAME !empty($ini['general']['seed']$ini['general']['seed''s8dkld83kf73kf094' );
  34.         $hash md5("{$seed}{$param['database']}{$param['key']}{$param['column']}{$param['model']}");
  35.         $mask $param['mask'];
  36.         
  37.         if ($hash == $param['hash'])
  38.         {
  39.             try
  40.             {
  41.                 TTransaction::openFake($param['database']);
  42.                 $info TTransaction::getDatabaseInfo();
  43.                 $default_op $info['type'== 'pgsql' 'ilike' 'like';
  44.                 $operator   !empty($param['operator']$param['operator'$default_op;
  45.                 
  46.                 $repository new TRepository($param['model']);
  47.                 $criteria new TCriteria;
  48.                 if ($param['criteria'])
  49.                 {
  50.                     $criteria unserializebase64_decode(str_replace(array('-''_')array('+''/')$param['criteria'])) );
  51.                 }
  52.     
  53.                 $columns explode(','$param['column']);
  54.                 
  55.                 if (!isset($param['value']))
  56.                 {
  57.                     $param['value''';
  58.                 }
  59.                 
  60.                 if ($columns)
  61.                 {
  62.                     $dynamic_criteria new TCriteria;
  63.                     
  64.                     if (empty($param['onlyidsearch']))
  65.                     {
  66.                         foreach ($columns as $column)
  67.                         {
  68.                             if (stristr(strtolower($operator),'like'!== FALSE)
  69.                             {
  70.                                 $param['value'str_replace(' ''%'$param['value']);
  71.                                 
  72.                                 if (in_array($info['type']['mysql''oracle''mssql''dblib''sqlsrv']))
  73.                                 {
  74.                                     $filter new TFilter("lower({$column})"$operatorstrtolower("%{$param['value']}%"));
  75.                                 }
  76.                                 else
  77.                                 {
  78.                                     $filter new TFilter($column$operator"%{$param['value']}%");
  79.                                 }
  80.                             }
  81.                             else
  82.                             {
  83.                                 $filter new TFilter($column$operator$param['value']);
  84.                             }
  85.         
  86.                             $dynamic_criteria->add($filterTExpression::OR_OPERATOR);
  87.                         }
  88.                     }
  89.                     
  90.                     $id_search_value ((!empty($param['idtextsearch']&& $param['idtextsearch'== '1'|| ((defined("{$param['model']}::IDPOLICY")) AND (constant("{$param['model']}::IDPOLICY"== 'uuid'))) $param['value': (int) $param['value'];
  91.                     
  92.                     if ($param['idsearch'== '1' and !empty$id_search_value ))
  93.                     {
  94.                         $dynamic_criteria->addnew TFilter($key'='$id_search_value)TExpression::OR_OPERATOR);
  95.                     }
  96.                 }
  97.                 
  98.                 if (!$dynamic_criteria->isEmpty())
  99.                 {
  100.                     $criteria->add($dynamic_criteriaTExpression::AND_OPERATOR);
  101.                 }
  102.                 $criteria->setProperty('order'$param['orderColumn']);
  103.                 $criteria->setProperty('limit'1000);
  104.                 
  105.                 $items array();
  106.                 
  107.                 if (!empty($param['value']|| $param['minlength'== '0')
  108.                 {
  109.                     $collection $repository->load($criteriaFALSE);
  110.                     
  111.                     foreach ($collection as $object)
  112.                     {
  113.                         $k $object->$key;
  114.                         $maskvalues $mask;
  115.                         
  116.                         $maskvalues $object->render($maskvalues);
  117.                         
  118.                         // replace methods
  119.                         $methods get_class_methods($object);
  120.                         if ($methods)
  121.                         {
  122.                             foreach ($methods as $method)
  123.                             {
  124.                                 if (stristr($maskvalues"{$method}()"!== FALSE)
  125.                                 {
  126.                                     $maskvalues str_replace('{'.$method.'()}'$object->$method()$maskvalues);
  127.                                 }
  128.                             }
  129.                         }
  130.                         
  131.                         $c $maskvalues;
  132.                         if $k != null && $c != null )
  133.                         {
  134.                             $c AdiantiStringConversion::assureUnicode($c);
  135.                             
  136.                             if (!empty($k&& !empty($c))
  137.                             {
  138.                                 $items["{$k}::{$c}";
  139.                             }
  140.                         }
  141.                     }
  142.                 }
  143.                 
  144.                 $ret array();
  145.                 $ret['result'$items;
  146.                 echo json_encode($ret);
  147.                 TTransaction::close();
  148.             }
  149.             catch (Exception $e)
  150.             {
  151.                 $ret array();
  152.                 $ret['result'array("1::".$e->getMessage());
  153.                 
  154.                 echo json_encode($ret);
  155.             }
  156.         }
  157.     }
  158. }