Preenche a entidade a partir de um array
492195
public function exchangeArray($array)
    {
        if (!empty($array['id'])) {
            $this->setId($array['id']);
        }
        $this->setTitulo($array['titulo']);
        if (isset($array['imagem']['tmp_name']) && !empty($array['imagem']['tmp_name'])) {
            $this->setImagem(basename($array['imagem']['tmp_name']));
        } elseif(isset($array['imagemAntiga'])) {
            $this->setImagem($array['imagemAntiga']);
        } else {
            $this->setImagem($array['imagem']);
        }
        unset($array['imagemAntiga']);
        $this->setDescricao($array['descricao']);
        $this->setPreco($array['preco']);
        return $this;
    }
412983
public function populateSelect($params, $arrayDepend = null, $populateValues = null) {

        $db = \Cityware\Db\Factory::factory('zend');

        /* Verifica o schema se está setado ou não */
        $schema = (isset($params['schema']) and $params['schema'] != "") ? $params['schema'] : null;

        /* Verifica foi setado um alias para a tabela de FROM */
        $aliasFromFk = (isset($params['tableAliasFk']) and ! empty($params['tableAliasFk'])) ? $params['tableAliasFk'] : 'fk';


        /* Define os campos */
        $db->select("{$aliasFromFk}.{$params['fieldfk']}", 'ID');
        $db->select("{$aliasFromFk}.{$params['fieldshow']}", 'NOME');

        /* Verifica se existe algum campo concatenado */
        if (isset($params['tableconc']) and ! empty($params['tableconc'])) {
            $db->select("{$params['tableconc']}.{$params['fieldconc']}", 'CONCAT');
        }

        /* Define a ordem de exibição dos dados */
        
        if (isset($params['order']) and $params['order'] == 'ID') {
            $db->orderBy("ID ASC");
        } else {
            $db->orderBy("NOME ASC");
        }


        /* Define a tabela */
        $db->from("{$params['tablefk']}", $aliasFromFk, $schema);

        /* Monta a condição do SELECT em caso de dependência */
        if (!empty($arrayDepend)) {
            if (isset($params['dependfk']) and ! empty($params['dependfk'])) {
                $db->where("{$params['dependfk']} = '{$arrayDepend[$params['dependfk']]}'");
            }
            if (isset($params['where']) and ! empty($params['where'])) {
                foreach ($params['where'] as $keyWhere => $valueWhere) {
                    $db->where($this->prepareWherePhpTag($valueWhere));
                }
            }
        } else
        /* Monta a condição do SELECT em caso de populate */
        if (!empty($populateValues)) {
            if (isset($params['fieldpk']) and ! empty($params['fieldpk'])) {
                $db->where("{$params['fieldpk']} = '{$populateValues[$params['fieldpk']]}'");
            }
            if (isset($params['where']) and ! empty($params['where'])) {
                foreach ($params['where'] as $keyWhere => $valueWhere) {
                    $db->where($this->prepareWherePhpTag($valueWhere));
                }
            }
        } else {
            /* Define as condições do select caso houver */
            if (isset($params['where']) and ! empty($params['where'])) {
                foreach ($params['where'] as $keyWhere => $valueWhere) {
                    $db->where($this->prepareWherePhpTag($valueWhere));
                }
            }
        }

        /* Define o JOIN da tabela caso houver */
        if (isset($params['join']) and $params['join'] == "true") {
            for ($idxJoin = 0; $idxJoin < count($params['jointype']); $idxJoin++) {
                $joinAlias = (isset($params['joinalias'][$idxJoin]) and ! empty($params['joinalias'][$idxJoin])) ? $params['joinalias'][$idxJoin] : null;
                $db->join($params['joinfrom'][$idxJoin], $joinAlias, $params['joincond'][$idxJoin], $params['jointype'][$idxJoin], $params['joinschema'][$idxJoin]);
            }
        }

        if (isset($params['debug']) and $params['debug'] == "true") {
            $db->setDebug(true);
        }

        return $db->executeSelectQuery();
    }
674034
private function setSystemConfigsCurrentApplication(){
		//verifica use_https
		if($this->getUseHttps()!='On' && $this->getUseHttps()!='Off'){
			$this->setUseHttps('Off');
		}
		//verifica use_www
		if($this->getUseWww()!='On' && $this->getUseWww()!='Off'){
			$this->setUseWww('Off');
		}
		//verifica address_uri
		if($this->getAddressUri()=='' || preg_match('/^http/', $this->getAddressUri()) || preg_match('/^www/', $this->getAddressUri())){
			throw new \Exception("setSystemConfigsCurrentApplication() Valor de address_uri deve conter a url da aplicação sem http e sem www. ex: google.com");
		}
		//define url padrão da aplicação
		$this->setPathBaseHref(($this->getUseHttps()=='On'?'https://':'http://').($this->getUseWww()=='On'?'www.':'').$this->getAddressUri());

		$tmp=explode('/', preg_replace('/^[\/]*(.*?)[\/]*$/', '\\1', $_SERVER['REQUEST_URI']));

		$k=array_search('public', $tmp);
		if($k!=''){
			unset($tmp[$k]);
		}


        if($this->getUseHttps()=='On' || (preg_match('/^www/', $this->getAddressUri()) && $this->getUseWww()=='Off') || (!preg_match('/^www/', $this->getAddressUri()) && $this->getUseWww()=='On') || $k!=''){
            if(
            	(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on") || 
            	(preg_match('/^www/', $_SERVER["HTTP_HOST"])===1 && $this->getUseWww()=='Off') || 
            	(preg_match('/^www/', $_SERVER["HTTP_HOST"])===0 && $this->getUseWww()=='On')
            ){
               header('Location: '.($this->getUseHttps()=='On'?'https://':'http://').($this->getUseWww()=='On'?'www.':'').$this->getAddressUri()); exit;
            }
        }


	}
1088069
function ajouter($elem){
		echo "ajouter";
		
		if(is_array($elem)){
			foreach ($elem as $e){
				$array_messages[] =$e;
			}
		}
		else
		{
			$array_messages[]   = $elem;
		}
		
	}
1264579
protected function getCampoLivre()
    {
        if ($this->campoLivre) {
            return $this->campoLivre;
        }
        $length = strlen($this->getConvenio());
        $nossoNumero = $this->gerarNossoNumero();
        if (strlen($this->getNumero()) > 10) {
            if ($length == 6 && in_array($this->getCarteira(), ['16', '18']) && Util::numberFormatGeral($this->getVariacaoCarteira(), 3) == '017') {
                return $this->campoLivre = Util::numberFormatGeral($this->getConvenio(), 6) . $nossoNumero . '21';
            } else {
                throw new \Exception('Só é possível criar um boleto com mais de 10 dígitos no nosso número quando a carteira é 21 e o convênio possuir 6 dígitos.');
            }
        }
        switch ($length) {
        case 4:
        case 6:
            return $this->campoLivre = $nossoNumero . Util::numberFormatGeral($this->getAgencia(), 4) . Util::numberFormatGeral($this->getConta(), 8) . Util::numberFormatGeral($this->getCarteira(), 2);
        case 7:
            return $this->campoLivre = '000000' . $nossoNumero . Util::numberFormatGeral($this->getCarteira(), 2);
        }
        throw new \Exception('O código do convênio precisa ter 4, 6 ou 7 dígitos!');
    }
951662
protected function setDadosBoleto(array $data = [])
    {
        $data['Parcela'] = $this->getParcela();
        $data['Modalidade'] = $this->convenio->getCarteira()->getModalidade();

        return parent::setDadosBoleto($data);
    }
372418
public function create()
    {
        $fs = new Filesystem();

        if (!$this->sourceDir) {
            throw new \Exception('O diretório de código fonte "singular.directory.src" da aplicação não foi definido!');
        }

        $migrationDir = $this->getMigrationDir();

        if (!$fs->exists($migrationDir)) {
            throw new \Exception(sprintf('O diretório de migration não existe!'));
        }

        $timestamp = time();

        $aplicacoes = $this->getAplicacoesToMigration();

        if (count($aplicacoes) > 0) {
            $template = file_get_contents(
                __DIR__.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR."app_migration.tpl"
            );

            $template = str_replace('$TIMESTAMP',$timestamp, $template);
            $template = str_replace('$APLICACOES', $this->arrayToString($aplicacoes, $timestamp) , $template);

            $dt = new \DateTime('now', new \DateTimeZone('UTC'));
            $date = $dt->format('YmdHis');

            file_put_contents($migrationDir.DIRECTORY_SEPARATOR.$date.'_insere_registros_aplicacoes_'.$timestamp.'.php', $template);
        }

        $modulos = $this->getModulosToMigration();

        if (count($modulos) > 0) {
            $template = file_get_contents(
                __DIR__.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR."mod_migration.tpl"
            );

            $template = str_replace('$TIMESTAMP',$timestamp, $template);
            $template = str_replace('$MODULOS', $this->arrayToString($modulos, $timestamp) , $template);

            sleep(1);

            $dt = new \DateTime('now', new \DateTimeZone('UTC'));
            $date = $dt->format('YmdHis');

            file_put_contents($migrationDir.DIRECTORY_SEPARATOR.$date.'_insere_registros_modulos_'.$timestamp.'.php', $template);
        }

        $this->clearMigrations();

        return count($modulos) + count($aplicacoes);
    }
576994
private function createModuleFolders()
    {
        // Criação de pasta de CONFIG do módulo
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'config');

        // Criação de pasta de TRANSLATE do módulo
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'language');

        // Criação de pastas do SRC do módulo
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'Controller');
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'Models');
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'View' . DS . 'Helper');
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'ini');
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'translate' . DS . 'pt_BR');

        // Criação de pastas de VIEW do módulo
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()));
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . 'error');
        FileFolder::createFolder(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . 'layout');

        // Criação de pastas no PUBLIC
        FileFolder::createFolder(PUBLIC_PATH . 'css' . DS . strtolower($this->getModule()));
        FileFolder::createFolder(PUBLIC_PATH . 'js' . DS . strtolower($this->getModule()));
        FileFolder::createFolder(PUBLIC_PATH . 'img' . DS . strtolower($this->getModule()));
    }
82396
public function gerarCampoLivre(ArrayObject $data)
    {
        $this->alterarTamanho('NossoNumero', 7);
        $this->alterarTamanho('Carteira', 1);
        $this->alterarTamanho('Modalidade', 2);
        $this->alterarTamanho('Conta', 7);
        $this->alterarTamanho('Parcela', 3);
        $this->alterarTamanho('Modalidade', 2);

        $this->layout = ':Banco:Moeda:FatorVencimento:Valor:Carteira:Agencia:Modalidade:Conta:NossoNumero:Parcela';

        return $data;
    }
514830
static public function create(array $tokens, $nGramSize = self::BIGRAM, $separator = ' ') : array
    {
        $separatorLength = strlen($separator);
        $length = count($tokens) - $nGramSize + 1;
        if($length < 1) {
            return [];
        }
        $ngrams = array_fill(0, $length, ''); // initialize the array

        for($index = 0; $index < $length; $index++)
        {
            for($jindex = 0; $jindex < $nGramSize; $jindex++)
            {
                $ngrams[$index] .= $tokens[$index + $jindex];
                //alterado a condição, pois não considera-se o tamanho do separador e sim a posição do ponteiro em relação ao tamanho do Ngram
                if($jindex < $nGramSize - 1) {
                    $ngrams[$index] .= $separator;
                }
            }
        }
       return $ngrams;
    }
789940
public static function merge($table1, $table2, $pk = [])
    {

        // join de 1 - n
          $false = 0;
          foreach($table1 as $key => $field) {
              foreach($table2 as $k => $f) {
                  if($field[$pk[0]] == $f[$pk[1]]) {
                      $array[] = array_merge($field, $f);
                      $false = 0;
                      break; // para quando achar
                  }else{
                    $false = 1;
                  }
              }
              // Verificar se tem resultado
              if($false == 1){
                $array[] = $field;
                $false = 0;
              }
          }

          if(!$array){$array = [];}

        return $array;
    }
1019853
function filter (arrayToFilter, options) {
  // conditions
  const nameFilter = (senador, nombre) => {
    assert(typeof nombre === 'string' || nombre instanceof RegExp, 'El nombre solo se puede filtrar por string o expresion regular')

    return typeof nombre === 'string' ? wrapString(senador.nombre).indexOf(wrapString(nombre)) > -1 : nombre.test(senador.nombre)
  }
  const rutFilter = (senador, rut) => {
    assert(validate(rut), 'el rut de busqueda ingresado no es valido')

    return wrapString(senador.rut) === wrapString(rut)
  }
  const defualtRutFilter = (senador, rut) => {
    rut = rut.toString()

    return senador.rut.split('-')[0] === rut
  }
  const regionFilter = (senador, region) => {
    assert(typeof region === 'string' || region instanceof RegExp, 'La region solo se puede filtrar por string o expresion regular')

    return typeof region === 'string' ? wrapString(senador.region).indexOf(wrapString(region)) > -1 : region.test(senador.region)
  }
  const circunscripcionFilter = (senador, circunscripcion) => {
    assert.equal(typeof circunscripcion, 'number', 'La circunscripción ingresada para buscar debe ser un número')

    return senador.circunscripcion === circunscripcion
  }
  const telefonoFilter = (senador, telefono) => {
    assert(typeof telefono === 'string' || telefono instanceof RegExp, 'El telefono solo se puede filtrar por string o expresion regular')

    return typeof telefono === 'string' ? wrapString(senador.telefono).indexOf(wrapString(telefono)) > -1 : telefono.test(senador.telefono)
  }
  const mailFilter = (senador, mail) => {
    assert(typeof mail === 'string' || mail instanceof RegExp, 'El telefono solo se puede filtrar por string o expresion regular')

    return typeof mail === 'string' ? wrapString(senador.mail).indexOf(wrapString(mail)) > -1 : mail.test(senador.mail)
  }
  const partidoFilter = (senador, partido) => {
    assert(typeof partido === 'string' || partido instanceof RegExp, 'El telefono solo se puede filtrar por string o expresion regular')

    return typeof partido === 'string' ? wrapString(senador.partido).indexOf(wrapString(partido)) > -1 : partido.test(senador.partido)
  }

  const _filter = elem => {
    if (elem.hasOwnProperty('senador')) elem = elem.senador
    // default queries
    if (typeof options === 'string' && elem) return nameFilter(elem, options)
    if (typeof options === 'number' && elem) return defualtRutFilter(elem, options)

    return (options.nombre ? nameFilter(elem, options.nombre) : true) &&
           (options.rut ? rutFilter(elem, options.rut) : true) &&
           (options.region ? regionFilter(elem, options.region) : true) &&
           (options.circunscripcion ? circunscripcionFilter(elem, options.circunscripcion) : true) &&
           (options.telefono ? telefonoFilter(elem, options.telefono) : true) &&
           (options.mail ? mailFilter(elem, options.mail) : true) &&
           (options.partido ? partidoFilter(elem, options.partido) : true)
  }
  return arrayToFilter.filter(_filter)
}
355351
public function validate($value, array $arguments = [])
    {
        $isNumeric = is_numeric($value);
        $min = Arr::get($arguments, 'min', false);
        $max = Arr::get($arguments, 'max', false);
        $float = Arr::get($arguments, 'float', false);
        $inArray = Arr::get($arguments, 'in_array', false);
        $filter = Arr::get($arguments, 'filter', false);

        if (!$isNumeric) {
            throw new Exception("O atributo '{$this->getAttribute()}' não é um número!");
        }

        if ($float) {
            $value = $value + 0;
            $value = (float)$value;
        } else {
            $value = (int)$value;
        }

        if ($min) {
            $min = $min + 0;
        } else {
            $min = false;
        }

        if ($max) {
            $max = $max + 0;
        } else {
            $max = false;
        }

        if ($min) {

            if ($value < $min) {
                throw new Exception("O atributo '{$this->getAttribute()}' deve ser maior ou igual a '{$min}'!");
            } elseif ($max && $value > $max) {
                throw new Exception("O atributo '{$this->getAttribute()}' deve ser menor ou igual a '{$max}'!");
            }
        }

        if ($inArray && !in_array($value, $inArray)) {
            throw new Exception("O atributo '{$this->getAttribute()}' não pertence ao conjunto de dados!");
        }

        if ($filter && $filter instanceof \Closure) {
            $value = $filter($value);
        } elseif ($filter) {
            $value = call_user_func($filter, $value);
        }

        return $value;
    }
381587
public function index() {
        $this->layout = 'Stats.default';
        $this->elementMenu = 'Stats.menu';
        
        // por default ordenar por sumatoria de dinero vendido
        $conditions['order'] = array('ventas DESC',"cant DESC");
        if ( !empty( $this->request->query ) && $this->request->query['cant_o_tot'] == 1 ) {
            // ordenado por cantidad de unidades vendidas            
            $conditions['order'] = array("cant DESC", 'ventas DESC');
        }

        

        $this->Prg->commonProcess();
        $conds = $this->DetalleComanda->parseCriteria( $this->Prg->parsedParams() );
        $conditions['conditions'] = $conds;
        $conditions['conditions']['Mesa.deleted'] = 0;


		$this->DetalleComanda->Producto->recursive = -1;        
        $conditions['group'] = array('Producto.id', 'Producto.name');        
        $conditions['joins'] = array(
            array(
                'table' => 'detalle_comandas',
                'alias' => 'DetalleComanda',
                'type' => 'left',
                'conditions' => 'Producto.id = DetalleComanda.producto_id',
            ),
            array(
                'table' => 'comandas',
                'alias' => 'Comanda',
                'type' => 'left',
                'conditions' => 'Comanda.id = DetalleComanda.comanda_id',
            ),
            array(
                'table' => 'mesas',
                'alias' => 'Mesa',
                'type' => 'left',
                'conditions' => 'Mesa.id = Comanda.mesa_id',
            ), 
        );
        $conditions['fields'] = array(
            'Producto.name', 
            'sum(DetalleComanda.cant-DetalleComanda.cant_eliminada)*Producto.precio as "ventas"',
            'Producto.precio', 
            'sum(DetalleComanda.cant-DetalleComanda.cant_eliminada) as "cant"',
            );


        if ( empty($this->request->query['desde']) ) {
            $desde = $this->DetalleComanda->find('first', array(
                'order' => array('DetalleComanda.created' => 'ASC')
                ));
            $desde = $desde['DetalleComanda']['created'];
        } else {
            $desde = $this->request->query['desde'];
        }

        if ( empty($this->request->query['hasta']) ) {
            $hasta = $this->DetalleComanda->find('first', array(
                'order' => array('DetalleComanda.created' => 'DESC')
                ));
            $hasta = $hasta['DetalleComanda']['created'];
        } else {
            $hasta = $this->request->query['hasta'];
        }
                                

        $comandas  = $this->DetalleComanda->Producto->find('all', $conditions);
        $cantTotal = 0;
        $ventasTotal = 0;
        foreach ($comandas as $c) {
            $cantTotal += $c[0]['cant'];
            $ventasTotal += $c[0]['ventas'];
        }

        if ( !empty( $this->request->query ) && $this->request->query['cant_o_tot'] == 1 ) {
            $this->request->data['DetalleComanda']['cant_o_tot']  = 1;
        }

        $this->set('categorias', $this->DetalleComanda->Producto->Categoria->generateTreeList());
        $this->set('productos', $this->DetalleComanda->Producto->find('list', array('order' => 'name')));
        $this->set('tags', $this->DetalleComanda->Producto->Tag->find('list', array('order' => 'name')));
		$this->set(compact('comandas', 'cantTotal', 'ventasTotal','tags', 'desde', 'hasta'));
	}
545543
public static function pre()
    {
        $nbArgs = func_num_args();
        
        $content = '';
        for ($i = 0; $i < $nbArgs; $i++) {
            $mixed = func_get_arg($i);
            
            $content .= print_r($mixed, 1);
        }
        
        if (php_sapi_name() == 'cli') {
            $output = $content;
        }
        else {
            $output = '<pre class="debug">' . $content . '</pre>';
        }
        
        return $output;
    }
817730
public function gerar()
    {
        if (!$this->isValid($messages)) {
            throw new \Exception('Campos requeridos pelo banco, aparentam estar ausentes ' . $messages);
        }

        $stringRemessa = '';
        if ($this->iRegistros < 1) {
            throw new \Exception('Nenhuma linha detalhe foi adicionada');
        }

        $this->header();
        $stringRemessa .= $this->valida($this->getHeader()) . $this->fimLinha;

        $this->headerLote();
        $stringRemessa .= $this->valida($this->getHeaderLote()) . $this->fimLinha;

        foreach ($this->getDetalhes() as $i => $detalhe) {
            $stringRemessa .= $this->valida($detalhe) . $this->fimLinha;
        }

        $this->trailerLote();
        $stringRemessa .= $this->valida($this->getTrailerLote()) . $this->fimLinha;

        $this->trailer();
        $stringRemessa .= $this->valida($this->getTrailer()) . $this->fimArquivo;

        return Encoding::toUTF8($stringRemessa);
    }
579802
protected function valida(array $a)
    {
        if ($this->tamanho_linha === false) {
            throw new \Exception('Classe remessa deve informar o tamanho da linha');
        }

        $a = array_filter($a, 'mb_strlen');
        if (count($a) != $this->tamanho_linha) {
            throw new \Exception(sprintf('$a não possui %s posições, possui: %s', $this->tamanho_linha, count($a)));
        }

        return implode('', $a);
    }