public function filterAction() { $tarifModel = new Application_Model_Tarif(); $this->view->layout()->disableLayout(); $this->view->assign('selectedTarife', explode('|', $this->getRequest()->getParam('selected', array()))); $unsortedElements = $tarifModel->getByParams($this->getRequest()->getParams()); switch ($this->getRequest()->getParam('sorting')) { default: case '': $sortedElements = $unsortedElements; break; case 'sort-startpaket-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { $kostenAktionenSumme = $element->getAktionenAmount(array(Application_Model_Aktion::TYP_GUTHABEN, Application_Model_Aktion::TYP_RUFNUMMER)) - $element->preis_start; $sortHelperArray[] = $kostenAktionenSumme; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; case 'sort-startpaket-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { $kostenAktionenSumme = $element->getAktionenAmount(array(Application_Model_Aktion::TYP_GUTHABEN, Application_Model_Aktion::TYP_RUFNUMMER)) - $element->preis_start; $sortHelperArray[] = $kostenAktionenSumme; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-anruf-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $min = min(array($element->preis_intern, $element->preis_festnetz, $element->preis_tmobile, $element->preis_vodafone, $element->preis_eplus, $element->preis_o2)); $max = max(array($element->preis_intern, $element->preis_festnetz, $element->preis_tmobile, $element->preis_vodafone, $element->preis_eplus, $element->preis_o2)); if ($min != $max) { $add = 0.0001; } else { $add = 0; } $sortHelperArray[] = ($element->preis_intern + $element->preis_festnetz + $element->preis_tmobile + $element->preis_vodafone + $element->preis_eplus + $element->preis_o2) / 6 + $add; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-anruf-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $min = min(array($element->preis_intern, $element->preis_festnetz, $element->preis_tmobile, $element->preis_vodafone, $element->preis_eplus, $element->preis_o2)); $max = max(array($element->preis_intern, $element->preis_festnetz, $element->preis_tmobile, $element->preis_vodafone, $element->preis_eplus, $element->preis_o2)); if ($min != $max) { $add = 0.0001; } else { $add = 0; } $sortHelperArray[] = ($element->preis_intern + $element->preis_festnetz + $element->preis_tmobile + $element->preis_vodafone + $element->preis_eplus + $element->preis_o2) / 6 + $add; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; case 'sort-sms-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = (double) $element->preis_sms; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-sms-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = (double) $element->preis_sms; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; case 'sort-internet-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ if ($element->abrechnung_internet == 'MB') { $sortHelperArray[] = (double) $element->preis_internet; } elseif ($element->abrechnung_internet == 'KB') { $sortHelperArray[] = (double) $element->preis_internet * 1024; } elseif ($element->abrechnung_internet == 'Min') { $sortHelperArray[] = (double) $element->preis_internet; } else { $sortHelperArray[] = (double) $element->preis_internet; } } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-internet-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ if ($element->abrechnung_internet == 'MB') { $sortHelperArray[] = (double) $element->preis_internet; } elseif ($element->abrechnung_internet == 'KB') { $sortHelperArray[] = (double) $element->preis_internet * 1024; } elseif ($element->abrechnung_internet == 'Min') { $sortHelperArray[] = (double) $element->preis_internet; } else { $sortHelperArray[] = (double) $element->preis_internet; } } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; case 'sort-netz-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = $element->netz; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; case 'sort-netz-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = $element->netz; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-anbieter-up': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = strtolower(trim($element->anbieter)); } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = $unsortedElements; break; case 'sort-anbieter-down': $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = strtolower(trim($element->anbieter)); } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; default: $sortHelperArray = array(); foreach ($unsortedElements as $element) { /* @var $element Application_Model_Row_Tarif */ $sortHelperArray[] = $element->sterne; } array_multisort($sortHelperArray, $unsortedElements); $sortedElements = array_reverse($unsortedElements); break; } $this->view->assign('tarife', $sortedElements); }