/** * Construye parámetros para filter query que excluye las bandas que * cuentan con un peso igual a cero. * * @return String parámetros de solr para la búsqueda. */ function getDisabledBands() { // recupera el usuario $user =& JFactory::getUser(); $fq = ""; // recupera ecualizador del usuario $result = $this->_ctrlEq->retrieveUserEqImpl($user->id); if (!is_null($result) && !empty($result)) { $eq = $result[0]; foreach ($eq->bands as $band) { if ($band->peso == 0) { //$fq .= " tags_values:$band->band_name^$band->peso"; $fq .= " -tags_values:{$band->band_name}"; } } } return $fq; }
/** * Genera el Ecualizador por defecto para el usuario. Este método también * reconstruye el ecualizador del usuario en caso de que haya si borrado. * * @param Array $user Arreglo con información del usuario. * @param Array $options Arreglo con opciones varias. * @return True En todos los casos. Si falla la creació del Ecualizador el * modulo correspondiente mostrará un mensaje de error. */ function onLoginUser($user, $options) { // No ejecutar si se accede al backend administrativo $app = JFactory::getApplication(); if ($app->isAdmin()) { return true; } // Recupera información del usuario jimport('joomla.user.helper'); $instance = new JUser(); $id = intval(JUserHelper::getUserId($user['username'])); if ($id) { $instance->load($id); } // Arreglo con datos del usuario relevantes $userTmp['id'] = intval($instance->get('id')); $userTmp['name'] = $instance->get('name'); // Si el usuario no cuenta con un ecualizador, se lo genera $userEq = $this->_ctrlEq->retrieveUserEqImpl($id); if (is_null($userEq) || empty($userEq)) { $this->_ctrlEq->_createNewDefaultEq($userTmp); } return true; }
/** * Recupera los valores del tag indicado * * @param int id identificador del tag * @return array Arreglo de objetos value */ function getMenuValues($id, $eq = false) { if (is_null($id)) { return null; } $dbo =& JFactory::getDBO(); $query = 'SELECT ' . $dbo->nameQuote('v.id') . ', ' . $dbo->nameQuote('v.name') . ', ' . $dbo->nameQuote('v.label') . ', ' . $dbo->nameQuote('jm.link') . ', ' . $dbo->nameQuote('zm.menu_id') . ($eq ? ', b.peso' : '') . ' FROM ' . $dbo->nameQuote('#__custom_properties_values') . ' v' . ' INNER JOIN ' . $dbo->nameQuote('#__zonales_menu') . ' zm' . ' ON ' . $dbo->nameQuote('zm.value_id') . ' = ' . $dbo->nameQuote('v.id') . ' INNER JOIN ' . $dbo->nameQuote('#__menu') . ' jm' . ' ON ' . $dbo->nameQuote('jm.id') . ' = ' . $dbo->nameQuote('zm.menu_id'); // ecualiza if ($eq) { require_once JPATH_BASE . DS . 'components' . DS . 'com_eqzonales' . DS . 'controllers' . DS . 'eq.php'; JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'tables'); $ctrlEq = new EqZonalesControllerEq(); $ctrlEq->addModelPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'models'); // recupera ecualizador del usuario $user =& JFactory::getUser(); $result = $ctrlEq->retrieveUserEqImpl($user->id); if (!is_null($result) && !empty($result)) { $eq = $result[0]; $query .= ' LEFT JOIN ' . $dbo->nameQuote('#__eqzonales_banda') . ' b' . ' ON ' . $dbo->nameQuote('v.id') . ' = ' . $dbo->nameQuote('b.cp_value_id') . ' AND ' . $dbo->nameQuote('b.eq_id') . ' = ' . $eq->eq->id; } } // where $query .= ' WHERE ' . $dbo->nameQuote('v.field_id') . ' = ' . $id; // ordena según ecualización if ($eq) { $query .= ' ORDER BY b.peso DESC'; } $dbo->setQuery($query); return $this->_cache->get(array($dbo, 'loadObjectList'), array()); }
$helper = new comEqZonalesHelper(); // controladores $ctrlEq = new EqZonalesControllerEq(); $ctrlEq->addModelPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'models'); $ctrlBand = new EqZonalesControllerBand(); $ctrlBand->addModelPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'models'); // template $app =& JFactory::getApplication(); $template = $app->getTemplate(); // parametros $menu_item = JFactory::getApplication()->getMenu()->getItem($params->get('menu_joomla')); // recupera el usuario $user =& JFactory::getUser(); $eq = null; // recupera ecualizador del usuario $result = $ctrlEq->retrieveUserEqImpl($user->id); if (!is_null($result) && !empty($result)) { $eqtmp = $result[0]; if (!empty($eqtmp)) { $eq->eq = $eqtmp->eq; // segmentamos por fields (grupos de bandas) foreach ($eqtmp->bands as $band) { if ($band->peso > 0) { //$band->link = $menu_joomla .'&banda='.$band->band_name; //$band->link = JRoute::_($menu_item->link . "&Itemid=" . $menu_item->id ."&banda=" . $band->band_name); $eq->fields[$band->field_id]->id = $band->field_id; $eq->fields[$band->field_id]->label = $band->group_label; $eq->fields[$band->field_id]->link = $band->link; $eq->fields[$band->field_id]->bands[] = $band; } }
<?php // no direct access defined('_JEXEC') or die('Restricted access'); require_once JPATH_BASE . DS . 'components' . DS . 'com_zonales' . DS . 'helper.php'; require JPATH_BASE . DS . 'components' . DS . 'com_eqzonales' . DS . 'helper.php'; require_once JPATH_BASE . DS . 'components' . DS . 'com_eqzonales' . DS . 'controllers' . DS . 'eq.php'; require_once JPATH_BASE . DS . 'components' . DS . 'com_eqzonales' . DS . 'controllers' . DS . 'band.php'; require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'helper' . DS . 'helper.php'; JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'tables'); setlocale(LC_ALL, 'es_AR.utf8'); setlocale(LC_ALL, "es_ES@america", "es_ES", "buenos_aires"); $eq_z_com = new EqZonalesControllerEq(); $eq_z_com->addModelPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'models'); $user =& JFactory::getUser(); $eq_actual = $eq_z_com->retrieveUserEqImpl($user->id); if (!$zonal) { $zonal_com = new comZonalesHelper(); $zonal_actual_label = $zonal_com->getZonalActualLabel(); } else { $zonal_actual_label = $zonal->label; } include 'nocache.php'; $mainframe = JFactory::getApplication(); ?> <!-- 26042011 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?> " lang="<?php
/** * * @param integer $userid * @param string $value * @return array */ static function getAncestors($userid, $value) { // recupero la informacion sobre el valor especificado $db = JFactory::getDBO(); $queryId = 'select cpv.id, cpv.parent_id from #__custom_properties_values cpv where cpv.name=' . $db->Quote($value); $db->setQuery($queryId); $valueDb = $db->loadObject(); $id = $valueDb->id; $valueId = $valueDb->parent_id; // recupero los ancestros del valor especificado $ancestors = array(); $query = 'select cpv.parent_id, cpv.name, cpv.id from #__custom_properties_values cpv where cpv.id='; do { $ancestors[$value] = $id; if ($valueId == 0) { break; } $currentQuery = $query . $valueId; $db->setQuery($currentQuery); $parentDB = $db->loadObject(); $valueId = $parentDB->parent_id; $value = $parentDB->name; $id = $parentDB->id; } while (true); // busco si los valores estan en las bandas del usuario especificado $engine = new EqZonalesControllerEq(); $aInfo = $engine->retrieveUserEqImpl($userid); $out = array(); foreach ($ancestors as $valueName => $value) { $out[$valueName] = 0; } foreach ($aInfo as $currentInfo) { $bands = $currentInfo->bands; foreach ($bands as $currentBand) { $vId = $currentBand->cp_value_id; $key = array_search($vId, $ancestors); $aux = isset($out[$key]) ? $out[$key] : 0; if ($key != '' && $key != 0 && $key === FALSE) { // si no, lo dejo como esta $out[$key] = $aux; } else { // si el valor tiene un peso asignado en el ecualizador // acumulo el peso a los anteriores (si correspondiere) $out[$key] = $aux + $currentBand->peso; } } } if (isset($out[0])) { unset($out[0]); } $outN = arsort($out, SORT_NUMERIC); // ordeno el arreglo de salida en base a su relevancia // y lo devuelvo return $out; }
/** * * @return <type> */ function getEqPreferences() { require_once JPATH_BASE . DS . 'components' . DS . 'com_eqzonales' . DS . 'controllers' . DS . 'eq.php'; JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'tables'); // controladores $ctrlEq = new EqZonalesControllerEq(); $ctrlEq->addModelPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_eqzonales' . DS . 'models'); // recupera el usuario $user =& JFactory::getUser(); $bq = ""; if (!$user->guest) { // recupera ecualizador del usuario $result = $ctrlEq->retrieveUserEqImpl($user->id); if (!is_null($result) && !empty($result)) { $eq = $result[0]; foreach ($eq->bands as $band) { $bq .= " tags_values:{$band->band_name}^{$band->peso}"; } } } else { $session =& JFactory::getSession(); if ($session->has('eq')) { $eq = $session->get('eq'); foreach ($eq->bands as $band) { $bq .= " tags_values:{$band->band_name}^{$band->peso}"; } } } return $bq; }