Exemplo n.º 1
0
 public function executeDcWidgetFormSelectDoubleListFinderPropel(sfWebRequest $request)
 {
     $widget = unserialize(base64_decode($request->getParameter('widget')));
     $values = unserialize(base64_decode($request->getParameter('values')));
     $values = is_null($values) ? array() : $values;
     $size = $request->getParameter('size');
     $letter = $request->getParameter('letter');
     $name = $request->getParameter('name');
     $method = $widget->getOption('method');
     $key_method = $widget->getOption('key_method');
     $column = strtoupper($widget->getOption('column'));
     $model = $widget->getOption('model') . 'Peer';
     $peer_method = $widget->getOption('peer_method');
     $connection = $widget->getOption('connection');
     if ($request->hasParameter('custom_handler')) {
         $handler = unserialize(base64_decode($request->getParameter('custom_handler')));
         @call_user_func($handler, $widget, $values);
     }
     $c = $widget->getOption('criteria');
     $c->add(constant($model . '::' . $column), $letter . '%', Criteria::LIKE);
     $choices = array();
     foreach (call_user_func(array($model, $peer_method), $c, $connection) as $choice) {
         if (!in_array($choice->getPrimaryKey(), $values)) {
             $choices[$choice->{$key_method}()] = $choice->{$method}();
         }
     }
     $widget = new sfWidgetFormSelect(array('multiple' => true, 'choices' => $choices), array('size' => $size, 'class' => $widget->getOption('class_select')));
     return $this->renderText($widget->render($name));
 }