public static function getActivitatsCercaHospici($CER) { $idText = $CER['TEXT']; $idPoble = $CER['POBLE']; $idCategoria = $CER['CATEGORIA']; $idSite = $CER['SITE']; $datai = myUser::revDate($CER['DATAI']); $dataf = myUser::revDate($CER['DATAF']); $p = $CER['P']; $idText = addslashes($idText); $text = !is_null($idText) && !empty($idText) ? " AND (a.tMig like '%{$idText}%' OR a.dMig like '%{$idText}%')" : ""; $poble = !is_null($idPoble) && $idPoble > 0 ? ' AND p.idPoblacio = ' . $idPoble : ''; $categoria = !is_null($idCategoria) && $idCategoria > 0 ? ' AND a.TipusActivitat_idTipusActivitat = ' . $idCategoria : ''; $data = " AND h.Dia >= '" . $datai . "' AND h.Dia <= '" . $dataf . "'"; $site = $idSite > 0 ? " AND s.site_id = {$idSite}" : ""; $connection = Propel::getConnection(); $query = " \r\n Select a.ActivitatID as idA\r\n from activitats a \r\n LEFT JOIN horaris h ON (a.ActivitatID = h.Activitats_ActivitatID )\r\n LEFT JOIN horarisespais he ON (h.HorarisID = he.Horaris_HorarisID)\r\n LEFT JOIN espais e ON (he.Espais_EspaiID = e.EspaiID)\r\n LEFT JOIN sites s ON (a.site_id = s.site_id)\r\n LEFT JOIN poblacions p ON (p.idPoblacio = s.poble) \r\n WHERE \r\n a.actiu = 1 AND h.actiu = 1 AND he.actiu = 1 AND e.actiu = 1 AND s.actiu = 1\r\n AND a.PublicaWEB = 1\r\n {$text}\r\n {$poble}\r\n {$categoria}\r\n {$data}\r\n {$site}\r\n GROUP BY idA\r\n \r\n UNION\r\n Select a.ActivitatID as idA\r\n from activitats a \r\n LEFT JOIN horaris h ON (a.ActivitatID = h.Activitats_ActivitatID )\r\n LEFT JOIN horarisespais he ON (h.HorarisID = he.Horaris_HorarisID)\r\n LEFT JOIN espais_externs ee ON (he.idEspaiextern = ee.idEspaiextern)\r\n LEFT JOIN sites s ON (a.site_id = s.site_id)\r\n LEFT JOIN poblacions p ON (p.idPoblacio = ee.Poble) \r\n WHERE \r\n a.actiu = 1 AND h.actiu = 1 AND he.actiu = 1 AND ee.actiu = 1 AND s.actiu = 1\r\n AND a.PublicaWEB = 1\r\n {$text}\r\n {$poble}\r\n {$categoria}\r\n {$data}\r\n {$site}\r\n GROUP BY idA \r\n "; $statement = $connection->prepare($query); $statement->execute(); $RET = array(); //Guardo els elements resultats i els passo a un format Criteria while ($result = $statement->fetch(PDO::FETCH_ASSOC)) { $RET[$result['idA']] = $result['idA']; } //Ara fem la select dels cursos amb el pager $C = new Criteria(); $C->add(self::ACTIVITATID, $RET, CRITERIA::IN); $C->addJoin(HorarisPeer::ACTIVITATS_ACTIVITATID, self::ACTIVITATID); $C->addAscendingOrderByColumn(self::TIPUSACTIVITAT_IDTIPUSACTIVITAT); $C->addAscendingOrderByColumn(HorarisPeer::DIA); $C->addGroupByColumn(self::ACTIVITATID); $pager = new sfPropelPager('Activitats', 20); $pager->setCriteria($C); $pager->setPage($p); $pager->init(); return array('PAGER' => $pager, 'LACTIVITATS' => $RET); }
/** * ActivitatsPeer::getActivitatsHospici() * * Ens mostra un pager amb les activitats seleccionades * * @param mixed $idText * @param mixed $idSite * @param mixed $idPoble * @param mixed $idCategoria * @param mixed $idData * @param mixed $aDates * @param integer $p * @return $aRET = array( 'ON' => array( 0 => array( 'QUANTS'=>0 , 'ELEMENT' => 'Escull una població...' ) ), 'QUI' => array( 0 => array( 'QUANTS'=>0 , 'ELEMENT' => 'Escull una entitat...' ) ) , 'QUE' => array( 0 => array( 'QUANTS'=>0 , 'ELEMENT' => 'Escull una categoria...' ) ) , 'A' => array( Activitats or Activitatsexternes ) ); */ public static function getActivitatsCercaHospici($CER) { $idText = $CER['TEXT']; $idPoble = $CER['POBLE']; $idCategoria = $CER['CATEGORIA']; $idSite = $CER['SITE']; $datai = myUser::revDate($CER['DATAI']); $dataf = myUser::revDate($CER['DATAF']); $p = $CER['P']; $idText = addslashes($idText); //*************************************** // CONSULTEM LES ACTIVITATS INTERNES //*************************************** $C = new Criteria(); $C1 = $C->getNewCriterion(ActivitatsPeer::TMIG, "%{$idText}%", Criteria::LIKE); $C2 = $C->getNewCriterion(ActivitatsPeer::DMIG, "%{$idText}%", Criteria::LIKE); $C1->addOr($C2); $C->add($C1); $C1 = $C->getNewCriterion(HorarisPeer::DIA, $datai, Criteria::GREATER_EQUAL); $C2 = $C->getNewCriterion(HorarisPeer::DIA, $dataf, Criteria::LESS_EQUAL); $C1->addAnd($C2); $C->add($C1); if ($idPoble > 0) { $C->add(PoblacionsPeer::IDPOBLACIO, $idPoble); } if (!empty($idCategoria) && $idCategoria != '0') { $C->add(ActivitatsPeer::TIPUSACTIVITAT_IDTIPUSACTIVITAT, $idCategoria); } if (!empty($idSite) && $idSite != '0') { $C->add(SitesPeer::SITE_ID, $idSite); } $C->addJoin(ActivitatsPeer::ACTIVITATID, HorarisPeer::ACTIVITATS_ACTIVITATID); $C->addJoin(HorarisPeer::HORARISID, HorarisespaisPeer::HORARIS_HORARISID); $C->addJoin(HorarisespaisPeer::ESPAIS_ESPAIID, EspaisPeer::ESPAIID); $C->addJoin(ActivitatsPeer::SITE_ID, SitesPeer::SITE_ID); $C->addJoin(PoblacionsPeer::IDPOBLACIO, SitesPeer::POBLE); $C->add(ActivitatsPeer::ACTIU, true); $C->add(HorarisPeer::ACTIU, true); $C->add(HorarisespaisPeer::ACTIU, true); $C->add(EspaisPeer::ACTIU, true); $C->add(SitesPeer::ACTIU, true); $C->add(ActivitatsPeer::PUBLICAWEB, true); $C->addGroupByColumn(ActivitatsPeer::ACTIVITATID); $C->addAscendingOrderByColumn(HorarisPeer::DIA); $C->addAscendingOrderByColumn(ActivitatsPeer::TIPUSACTIVITAT_IDTIPUSACTIVITAT); //*************************************** // CONSULTEM LES ACTIVITATS EXTERNES //*************************************** $CE = new Criteria(); $C1 = $CE->getNewCriterion(ActivitatsExternesPeer::TITOL, "%{$idText}%", Criteria::LIKE); $C2 = $CE->getNewCriterion(ActivitatsExternesPeer::DESCRIPCIO, "%{$idText}%", Criteria::LIKE); $C1->addOr($C2); $CE->add($C1); $C1 = $CE->getNewCriterion(ActivitatsExternesPeer::DATAINICIAL, $datai, Criteria::GREATER_EQUAL); $C2 = $CE->getNewCriterion(ActivitatsExternesPeer::DATAINICIAL, $dataf, Criteria::LESS_EQUAL); $C1->addAnd($C2); $CE->add($C1); if ($idPoble > 0) { $CE->add(ActivitatsExternesPeer::POBLACIO, $idPoble); } if (!empty($idCategoria) && $idCategoria != '0') { $CE->add(ActivitatsExternesPeer::CATEGORIA, $idCategoria); } if (!empty($idSite) && $idSite != '0') { $CE->add(ActivitatsExternesPeer::ENTITAT, $idSite); } $CE->addGroupByColumn(ActivitatsExternesPeer::IDACTIVITAT); $CE->addAscendingOrderByColumn(ActivitatsExternesPeer::DATAINICIAL); $CE->addAscendingOrderByColumn(ActivitatsExternesPeer::CATEGORIA); //*************************************** // CARREGUEM ELS ARRAYS //*************************************** $aRET = array('ON' => array('ELEMENT' => array(0 => 'Escull una població...'), 'QUANTS' => array(0 => 0)), 'QUI' => array('ELEMENT' => array(0 => 'Escull una entitat...'), 'QUANTS' => array(0 => 0)), 'QUE' => array('ELEMENT' => array(0 => 'Escull una categoria...'), 'QUANTS' => array(0 => 0)), 'A' => array()); foreach (ActivitatsPeer::doSelect($C) as $OA) { $OTA = TipusactivitatPeer::retrieveByPK($OA->getTipusactivitatIdtipusactivitat()); if ($OTA instanceof Tipusactivitat) { if (!isset($aRET['QUE']['QUANTS'][$OTA->getIdTipusactivitat()])) { $aRET['QUE']['QUANTS'][$OTA->getIdTipusactivitat()] = 0; } $aRET['QUE']['QUANTS'][$OTA->getIdTipusactivitat()]++; $aRET['QUE']['ELEMENT'][$OTA->getIdTipusactivitat()] = $OTA->getNom() . ' (' . $aRET['QUE']['QUANTS'][$OTA->getIdTipusactivitat()] . ')'; } $OS = SitesPeer::retrieveByPK($OA->getSiteId()); if ($OS instanceof Sites) { if (!isset($aRET['QUI']['QUANTS'][$OS->getSiteid()])) { $aRET['QUI']['QUANTS'][$OS->getSiteid()] = 0; } $aRET['QUI']['QUANTS'][$OS->getSiteid()]++; $aRET['QUI']['ELEMENT'][$OS->getSiteid()] = $OS->getNom() . ' (' . $aRET['QUI']['QUANTS'][$OS->getSiteid()] . ')'; } $OP = PoblacionsPeer::retrieveByPK($OS->getPoble()); if ($OP instanceof Poblacions) { if (!isset($aRET['ON']['QUANTS'][$OP->getIdpoblacio()])) { $aRET['ON']['QUANTS'][$OP->getIdpoblacio()] = 0; } $aRET['ON']['QUANTS'][$OP->getIdpoblacio()]++; $aRET['ON']['ELEMENT'][$OP->getIdpoblacio()] = $OP->getNom() . ' (' . $aRET['ON']['QUANTS'][$OP->getIdpoblacio()] . ')'; } $aRET['A'][$OA->getActivitatid()] = $OA; } foreach (ActivitatsExternesPeer::doSelect($CE) as $OAE) { if (!isset($aRET['QUE']['QUANTS'][$OAE->getCategoria()])) { $aRET['QUE']['QUANTS'][$OAE->getCategoria()] = 0; } $aRET['QUE']['QUANTS'][$OAE->getCategoria()]++; $aRET['QUE']['ELEMENT'][$OAE->getCategoria()] = $OAE->getCategoriaNom() . ' (' . $aRET['QUE']['QUANTS'][$OAE->getCategoria()] . ')'; $OS = SitesPeer::retrieveByPK($OAE->getEntitat()); if ($OS instanceof Sites && is_int($OAE->getEntitat())) { if (!isset($aRET['QUI']['QUANTS'][$OS->getSiteid()])) { $aRET['QUI']['QUANTS'][$OS->getSiteid()] = 0; } $aRET['QUI']['QUANTS'][$OS->getSiteid()]++; $aRET['QUI']['ELEMENT'][$OS->getSiteid()] = $OS->getNom() . ' (' . $aRET['QUI']['QUANTS'][$OS->getSiteid()] . ')'; } else { if (!isset($aRET['QUI']['QUANTS'][$OAE->getEntitat()])) { $aRET['QUI']['QUANTS'][$OAE->getEntitat()] = 0; } $aRET['QUI']['QUANTS'][$OAE->getEntitat()]++; $aRET['QUI']['ELEMENT'][$OAE->getEntitat()] = $OAE->getEntitat() . ' (' . $aRET['QUI']['QUANTS'][$OAE->getEntitat()] . ')'; } $OP = PoblacionsPeer::retrieveByPK($OAE->getPoblacio()); if ($OP instanceof Poblacions) { if (!isset($aRET['ON']['QUANTS'][$OP->getIdpoblacio()])) { $aRET['ON']['QUANTS'][$OP->getIdpoblacio()] = 0; } $aRET['ON']['QUANTS'][$OP->getIdpoblacio()]++; $aRET['ON']['ELEMENT'][$OP->getIdpoblacio()] = $OP->getNom() . ' (' . $aRET['ON']['QUANTS'][$OP->getIdpoblacio()] . ')'; } else { if (!isset($aRET['ON']['QUANTS'][$OAE->getgetPoblacio()])) { $aRET['ON']['QUANTS'][$OAE->getgetPoblacio()] = 0; } $aRET['ON']['QUANTS'][$OAE->getgetPoblacio()]++; $aRET['ON']['ELEMENT'][$OAE->getgetPoblacio()] = $OAE->getgetPoblacio() . ' (' . $aRET['ON']['QUANTS'][$OAE->getgetPoblacio()] . ')'; } $aRET['A']['E' . $OAE->getIdactivitat()] = $OAE; } $aRET['ON']['ELEMENT'][0] = 'Escull una població (' . sizeof($aRET['A']) . ')...'; $aRET['QUI']['ELEMENT'][0] = 'Escull una entitat (' . sizeof($aRET['A']) . ')...'; $aRET['QUE']['ELEMENT'][0] = 'Escull una categoria (' . sizeof($aRET['A']) . ')...'; return $aRET; }