menu();
}
$task = V::get('task', 'cyfrowe', $_GET);
if ($task == 'analog') {
$programy = TvOfertaHelper::getProgramyAnalogowe();
$groups = array();
foreach ($programy as $r) {
$groups[$r->TV_PROGRAM_PROFILE] = true;
}
$orderby = V::get('orderby', '', $_GET);
$TvOfertaView->analogowe($programy, $groups, $orderby);
}
else {
$pakiety_cyfrowe = TvOfertaHelper::getPakietyCyfrowe();
$programy = TvOfertaHelper::getProgramyCyfrowe();
$groups = array();
foreach ($programy as $r) {
$groups[$r->TV_PROGRAM_PROFILE] = true;
}
$orderby = V::get('orderby', '', $_GET);
$view_type = V::get('view_type', '', $_GET);
$TvOfertaView->cyfrowe($programy, $pakiety_cyfrowe, $groups, $orderby, $view_type);
}
}
class TvOfertaView {
// TODO: function link()
function menu() {
// TODO: MENU_INIT na FUNCTION_INIT i HEADER NOT INIT
?>
$group) {
$groups[$name] = next($colors);
}
if ($orderby == 'pakiety') {
$group_sorter = new GroupSorterCallback();
$group_sorter->setType('pakiety');
$group_sorter->_pakiety_cyfrowe = $pakiety_cyfrowe;
$group_sorter->addGroup('Biały');
$group_sorter->addGroup('Brązowy');
$group_sorter->addGroup('Srebrny');
$group_sorter->addGroup('Złoty');
$group_sorter->addGroup('Platynowy');
$group_sorter->addGroup('Pakiet Premium: CANAL+');
$group_sorter->addGroup('Pakiet Premium: CANAL+ HD');
$pakiety_cyfrowe_names = array();
foreach ($pakiety_cyfrowe as $pakiet) {
$pakiety_cyfrowe_names[] = $pakiet->WWW_NAZWA;
}
$group_sorter->addGroups($pakiety_cyfrowe_names);
uasort($programy, array($group_sorter, 'sort'));
}
else if ($orderby == 'name') {
$group_sorter = new GroupSorterCallback();
$group_sorter->setType('name');
uasort($programy, array($group_sorter, 'sort'));
}
else {
$group_sorter = new GroupSorterCallback();
$group_sorter->setType('group');
$group_sorter->addGroup('ogólnotematyczny');
$group_sorter->addGroup('sport');
$group_sorter->addGroup('filmowy');
$group_sorter->addGroup('kobiecy');
$group_sorter->addGroup('dla dzieci');
$group_sorter->addGroup('informacyjny');
$group_sorter->addGroups(array_keys($groups));
uasort($programy, array($group_sorter, 'sort'));
}
$pakiety_cyfrowe_count = array();
foreach ($pakiety_cyfrowe as $pakiet) {
$pakiety_cyfrowe_count[$pakiet->ID] = 0;
}
$pakiety_cyfrowe_count['HD'] = 0;
foreach ($programy as $program) {
foreach ($pakiety_cyfrowe as $pakiet) {
if (in_array($pakiet->ID, $program->pakiety)) {
$pakiety_cyfrowe_count[$pakiet->ID] += 1;
}
}
if ($program->TV_SIGAL_DELIVERY == 'DVB-HD') {
$pakiety_cyfrowe_count['HD'] += 1;
}
}
if ($view_type == 'csv') {
$this->csv_cyfrowe($programy, $pakiety_cyfrowe, $groups, $orderby = '');
return;
}
$this->css();
?>
Oferta programowa
- Drukuj
porównanie pakietów telewizji cyfrowej
|
|
HD |
WWW_NAZWA; ?> |
| Liczba programów |
|
ID]; ?> |
| TV_DVBC_EPG_CHANNEL_NUMBER; ?> |
TV_NAZWA_PROGRAMU; ?> |
TV_PROGRAM_PROFILE; ?> |
TV_SIGAL_DELIVERY == 'DVB-HD') : ?>
HD |
|
ID, $program->pakiety)) : ?>
♦ |
|
';
foreach ($programy as $program) {
$csv_line = array();
$csv_line []= '"' . $program->TV_DVBC_EPG_CHANNEL_NUMBER . '"';
$csv_line []= '"' . $program->TV_NAZWA_PROGRAMU . '"';
$csv_line []= '"' . $program->TV_PROGRAM_PROFILE . '"';
$csv_line []= '"' . (($program->TV_SIGAL_DELIVERY == 'DVB-HD')? 'HD' : '') . '"';
foreach ($pakiety_cyfrowe as $pakiet) {
if (in_array($pakiet->ID, $program->pakiety)) {
$csv_line []= '"1"';
} else {
$csv_line []= '"0"';
}
}
echo implode(';', $csv_line) . "\n";
}
echo'';
}
function analogowe($programy, $groups, $orderby = '') {
$colors = array();
$colors []= '#FFB3B3';
$colors []= '#FFD9B3';
$colors []= '#FFFFB3';
$colors []= '#D9FFB3';
$colors []= '#B3FFB3';
$colors []= '#B3FFD9';
$colors []= '#B3FFFF';
$colors []= '#B3D9FF';
$colors []= '#B3B3FF';
$colors []= '#D9B3FF';
$colors []= '#FFB3FF';
$colors []= '#FFB3D9';
$colors []= '#FFC6B3';
$colors []= '#FFECB3';
$colors []= '#ECFFB3';
$colors []= '#C6FFB3';
$colors []= '#B3FFC6';
$colors []= '#B3FFEC';
reset($colors);
foreach ($groups as $name => $group) {
$groups[$name] = next($colors);
}
if ($orderby == 'name') {
$group_sorter = new GroupSorterCallback();
$group_sorter->setType('name');
uasort($programy, array($group_sorter, 'sort'));
}
else {
$group_sorter = new GroupSorterCallback();
$group_sorter->setType('group');
$group_sorter->addGroup('ogólnotematyczny');
$group_sorter->addGroup('sport');
$group_sorter->addGroup('filmowy');
$group_sorter->addGroup('kobiecy');
$group_sorter->addGroup('dla dzieci');
$group_sorter->addGroup('informacyjny');
$group_sorter->addGroups(array_keys($groups));
uasort($programy, array($group_sorter, 'sort'));
}
$this->css();
?>
Oferta programowa - telewizja analogowa
- Drukuj
| Lp. |
Nazwa |
Grupa |
Czętotliwość |
|
TV_NAZWA_PROGRAMU; ?> |
TV_PROGRAM_PROFILE; ?> |
TV_ANALOG_FREQUENCY; ?> |
query($sql);
while ($r = $db->fetch($res)) {
$pakiety_cyfrowe[$r->ID] = $r;
}
return $pakiety_cyfrowe;
}
function getProgramyCyfrowe() {
$db = DB::getDB();
$programy = array();
$sql = "select c.ID as c_ID
, c.ID_PROJECT as c_ID_PROJECT
, p.ID, p.TV_NAZWA_PROGRAMU, p.TV_LANGUAGE, p.TV_SIGAL_DELIVERY, p.TV_PROGRAM_PROFILE, p.TV_DVBC_EPG_CHANNEL_NUMBER, p.M_DIST_INVENTOR
, CAST(p.`TV_DVBC_EPG_CHANNEL_NUMBER` AS SIGNED) as order_by_lp
, GROUP_CONCAT(cg.ID) as cost_group_ids
from `USERS2_OFFERS_COSTS_GROUPS` as cg
left join `USERS2_OFFERS_COSTS` as c on(c.`ID_COSTS_GROUPS`=cg.`ID`)
left join `IN7_MK_BAZA_DYSTRYBUCJI` as p on(p.`ID`=c.`ID_PROJECT` and p.`M_DIST_TYPE`='TV__UMOWA ZAKUPU KANALU')
where
p.`M_DIST_TYPE`='TV__UMOWA ZAKUPU KANALU'
and c.`S_OFFER_STATUS`='IN_OFFER'
and cg.`ID_MAIN_COSTS_GROUP`=47
and p.`ID` is not NULL
and cg.`A_STATUS` in('WAITING', 'NORMAL')
and c.`A_STATUS` in('WAITING', 'NORMAL')
and p.`A_STATUS` in('WAITING', 'NORMAL')
and p.`TV_SIGAL_DELIVERY` in ('DVB-SD', 'DVB-HD')
and cg.`POKAZ_NA_WWW`='TAK'
group by p.ID
order by order_by_lp ASC
limit 1000;
";
$res = $db->query($sql);
while ($r = $db->fetch($res)) {
$r->pakiety = explode(',', $r->cost_group_ids);
$programy []= $r;
}
return $programy;
}
function getProgramyAnalogowe() {
$db = DB::getDB();
$programy = array();
$sql = "select c.ID as c_ID
, c.ID_PROJECT as c_ID_PROJECT
, p.ID, p.TV_NAZWA_PROGRAMU, p.TV_LANGUAGE, p.TV_SIGAL_DELIVERY
, p.TV_PROGRAM_PROFILE
-- , p.TV_DVBC_EPG_CHANNEL_NUMBER
, p.M_DIST_INVENTOR
, p.TV_ANALOG_FREQUENCY
, CAST(p.`TV_DVBC_EPG_CHANNEL_NUMBER` AS SIGNED) as order_by_lp
, GROUP_CONCAT(cg.ID) as cost_group_ids
from `USERS2_OFFERS_COSTS_GROUPS` as cg
left join `USERS2_OFFERS_COSTS` as c on(c.`ID_COSTS_GROUPS`=cg.`ID`)
left join `IN7_MK_BAZA_DYSTRYBUCJI` as p on(p.`ID`=c.`ID_PROJECT` and p.`M_DIST_TYPE`='TV__UMOWA ZAKUPU KANALU')
where
p.`M_DIST_TYPE`='TV__UMOWA ZAKUPU KANALU'
and c.`S_OFFER_STATUS`='IN_OFFER'
and cg.`ID`=2
and p.`ID` is not NULL
and cg.`A_STATUS` in('WAITING', 'NORMAL')
and c.`A_STATUS` in('WAITING', 'NORMAL')
and p.`A_STATUS` in('WAITING', 'NORMAL')
and p.`TV_SIGAL_DELIVERY` in ('ANALOG')
-- and cg.`POKAZ_NA_WWW`='TAK'
group by p.ID
order by order_by_lp ASC
limit 1000;
";
$res = $db->query($sql);
while ($r = $db->fetch($res)) {
$r->pakiety = explode(',', $r->cost_group_ids);
$programy []= $r;
}
return $programy;
}
}
class GroupSorterCallback {
var $groups_order;
var $_type = '';// group, pakiety
var $_pakiety_cyfrowe = '';
function setType($type) {
$this->_type = $type;
}
function setOrder($group_name, $order) {
$this->groups_order[$group_name] = $order;
}
function getOrder($item) {
if ($this->_type == 'name') {
return 0;
} else if ($this->_type == 'pakiety') {
$min_order = 999;
foreach ($this->_pakiety_cyfrowe as $pakiet) {
if (in_array($pakiet->ID, $item->pakiety)) {
$cur_order = 999;
if (array_key_exists($pakiet->WWW_NAZWA, $this->groups_order)) {
$cur_order = $this->groups_order[$pakiet->WWW_NAZWA];
}
$min_order = min($min_order, $cur_order);
}
}
return $min_order;
} else {
$group_name = $item->TV_PROGRAM_PROFILE;
if (array_key_exists($group_name, $this->groups_order)) {
return $this->groups_order[$group_name];
}
}
return count($this->groups_order) + 1;
}
function addGroup($group_name) {
$this->groups_order[$group_name] = count($this->groups_order) + 1;
}
function addGroups($groups) {
foreach ($groups as $group_name) {
if (!array_key_exists($group_name, $this->groups_order)) {
$this->addGroup($group_name);
}
}
}
function sort($a, $b) {
$oa = $this->getOrder($a);
$ob = $this->getOrder($b);
// sortuj w kolejności malejącej
if ($oa < $ob) {
return -1;
} else if ($oa > $ob) {
return 1;
} else {
// sortuj rosnąco alfabetycznie
if ($a->TV_NAZWA_PROGRAMU < $b->TV_NAZWA_PROGRAMU) {
return -1;
} else if ($a->TV_NAZWA_PROGRAMU > $b->TV_NAZWA_PROGRAMU) {
return 1;
} else {
return 0;
}
}
}
}