Пример #1
0
 /**
  * Mapowanie parametrów w nawigacji
  * Jeśli dla parametru sposób mapowania nie jest określony,
  * to przyjmuje się, że mapowanie z obiektu ma pierwszeństwo
  * przed parametrem z linku, mapowany jest parametr id oraz
  * parametr jest hashowany
  *
  * @param Base_Db_Table_Row $row
  * @param Base_Paginator $paginator
  * @return Zend_Navigation
  */
 public function NavMap($row, $paginator)
 {
     $actions = null;
     if ($paginator->moreActions !== null && is_array($paginator->moreActions) && count($paginator->moreActions) > 0) {
         $actions = $paginator->moreActions;
     }
     $container = array();
     if ($row instanceof Base_Db_Table_Row or is_subclass_of($row, 'Base_Paginator_Adapter_Array_Row')) {
         $container = $row->getActions($actions, $paginator->getIgnoreActionsFlag());
     } else {
         $container = $paginator->getActions();
     }
     $request = Zend_Controller_Front::getInstance()->getRequest();
     foreach ($container as $key => $page) {
         if (isset($page['params']) && is_array($page['params'])) {
             foreach ($page['params'] as $k => $param) {
                 $source = isset($param['source']) ? $param['source'] : self::SOURCE_OBJECT;
                 $val = $param['param'] ? $param['param'] : null;
                 $tmp_req = $request->getParam(!is_null($val) ? $val : 'id');
                 $rowParam = isset($param['param']) ? $param['param'] : $k;
                 $tmp_obj = isset($row[$rowParam]) ? $row[$rowParam] : null;
                 switch ($source) {
                     case self::SOURCE_REQUEST:
                         $tmp = $tmp_req ? $tmp_req : $tmp_obj;
                         break;
                     case self::SOURCE_OBJECT:
                         $tmp = $tmp_obj ? $tmp_obj : $tmp_req;
                         break;
                     case self::SOURCE_STATIC:
                         $tmp = $val;
                         break;
                     default:
                         throw new Exception('Unknown data processing method');
                 }
                 $idConvert = Zend_Controller_Action_HelperBroker::getStaticHelper('IdConvert');
                 $container[$key]['params'][$k] = isset($param['hash']) ? $param['hash'] ? $idConvert->StrToHex($tmp) : $tmp : $idConvert->StrToHex($tmp);
             }
         }
     }
     return new Zend_Navigation($container);
 }