Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00015 class RedirectView extends CleanRedirectView
00016 {
00017 private $falseAsUnset = null;
00018 private $buildArrays = null;
00019
00023 public static function create($url)
00024 {
00025 return new self($url);
00026 }
00027
00028 public function isFalseAsUnset()
00029 {
00030 return $this->falseAsUnset;
00031 }
00032
00036 public function setFalseAsUnset($really)
00037 {
00038 Assert::isBoolean($really);
00039
00040 $this->falseAsUnset = $really;
00041
00042 return $this;
00043 }
00044
00045 public function isBuildArrays()
00046 {
00047 return $this->buildArrays;
00048 }
00049
00053 public function setBuildArrays($really)
00054 {
00055 Assert::isBoolean($really);
00056
00057 $this->buildArrays = $really;
00058
00059 return $this;
00060 }
00061
00062 protected function getLocationUrl($model = null)
00063 {
00064 $postfix = null;
00065
00066 if ($model && $model->getList()) {
00067 $qs = array();
00068
00069 foreach ($model->getList() as $key => $val) {
00070 if (
00071 (null === $val)
00072 || is_object($val)
00073 ) {
00074 continue;
00075 } elseif (is_array($val)) {
00076 if ($this->buildArrays) {
00077 $qs[] = http_build_query(
00078 array($key => $val), null, '&'
00079 );
00080 }
00081
00082 continue;
00083
00084 } elseif (is_bool($val)) {
00085 if ($this->isFalseAsUnset() && (false === $val))
00086 continue;
00087
00088 $val = (int) $val;
00089 }
00090
00091 $qs[] = $key.'='.urlencode($val);
00092 }
00093
00094 if (strpos($this->getUrl(), '?') === false)
00095 $first = '?';
00096 else
00097 $first = '&';
00098
00099 if ($qs)
00100 $postfix = $first.implode('&', $qs);
00101 }
00102
00103 return $this->getUrl().$postfix;
00104 }
00105 }
00106 ?>