setAnchor() 공개 메소드

Sets the URL anchor.
public setAnchor ( string $anchor ) : Horde_Url
$anchor string An anchor to add.
리턴 Horde_Url This (modified) object, to allow chaining.
예제 #1
0
 public function testRemoveEncoded()
 {
     $url = new Horde_Url('test?foo=1&bar=2');
     $this->assertEquals('test?bar=2', (string) $url->remove('foo'));
     $url = new Horde_Url('test?foo=1&bar=2');
     $this->assertEquals('test?foo=1', (string) $url->remove('bar'));
     $url = new Horde_Url('test?foo=1&bar=2');
     $this->assertEquals('test', (string) $url->remove(array('foo', 'bar')));
     $url = new Horde_Url('test?foo=1&bar=2&baz=3');
     $this->assertEquals('test?bar=2&baz=3', (string) $url->remove('foo'));
     $url = new Horde_Url('test?foo=1&bar=2#baz');
     $url->setAnchor('');
     $this->assertEquals('test?foo=1&bar=2', (string) $url);
 }
예제 #2
0
파일: Ansel.php 프로젝트: jubinpatel/horde
 /**
  * Return a properly formatted link depending on the global pretty url
  * configuration
  *
  * @param string $controller       The controller to generate a URL for.
  * @param array $data              The data needed to generate the URL.
  * @param boolean $full            Generate a full URL.
  * @param integer $append_session  0 = only if needed, 1 = always, -1 = never.
  *
  * @return Horde_Url The generated URL
  */
 public static function getUrlFor($controller, $data, $full = false, $append_session = 0)
 {
     global $prefs;
     $rewrite = isset($GLOBALS['conf']['urls']['pretty']) && $GLOBALS['conf']['urls']['pretty'] == 'rewrite';
     switch ($controller) {
         case 'view':
             if ($rewrite && empty($data['special'])) {
                 $url = '';
                 // Viewing a List
                 if ($data['view'] == 'List') {
                     $groupby = isset($data['groupby']) ? $data['groupby'] : $prefs->getValue('groupby');
                     if ($groupby == 'owner' && !empty($data['owner'])) {
                         $url = 'user/' . urlencode($data['owner']) . '/';
                     } elseif ($groupby == 'owner') {
                         $url = 'user/';
                     } elseif ($groupby == 'none') {
                         $url = 'all/';
                     }
                     $url = Horde::url($url, $full, $append_session);
                     //  don't append the page number if it's zero
                     if (!empty($data['page'])) {
                         $url->add('page', $data['page']);
                     }
                     return $url;
                 }
                 // Viewing a Gallery or Image
                 if ($data['view'] == 'Gallery' || $data['view'] == 'Image') {
                     // @TODO: This is needed to correctly generate URLs in
                     // places that are not specifically requested by the user,
                     // for instance, in a gallery block. Otherwise, the proper
                     // date variables would not be attached to the url, since we
                     // don't know them ahead of time.  This is a slight hack and
                     // needs to be corrected, probably by delegating at least
                     // some of the URL generation to the gallery/image/view
                     // object...most likely when we move to PHP5.
                     if (empty($data['year']) && $data['view'] == 'Image') {
                         // Getting these objects is not ideal, but at this point
                         // they should already be locally cached so the cost
                         // is minimized.
                         $i = $GLOBALS['injector']->getInstance('Ansel_Storage')->getImage($data['image']);
                         $g = $GLOBALS['injector']->getInstance('Ansel_Storage')->getGallery($data['gallery']);
                         if ($g->get('view_mode') == 'Date') {
                             $imgDate = new Horde_Date($i->originalDate);
                             $data['year'] = $imgDate->year;
                             $data['month'] = $imgDate->month;
                             $data['day'] = $imgDate->mday;
                         }
                     }
                     $url = 'gallery/' . (!empty($data['slug']) ? $data['slug'] : 'id/' . (int) $data['gallery']) . '/';
                     // See comments below about lightbox
                     if ($data['view'] == 'Image' && (empty($data['gallery_view']) || !empty($data['gallery_view']) && $data['gallery_view'] != 'GalleryLightbox')) {
                         $url .= (int) $data['image'] . '/';
                     }
                     $extras = array();
                     // We may have a value of zero here, but it's the default,
                     // so ignore it if it's empty.
                     if (!empty($data['havesearch'])) {
                         $extras['havesearch'] = $data['havesearch'];
                     }
                     // Block any auto navigation (for date views)
                     if (!empty($data['force_grouping'])) {
                         $extras['force_grouping'] = $data['force_grouping'];
                     }
                     $url = new Horde_Url($url);
                     if (count($extras)) {
                         $url->add($extras);
                     }
                     //Slight hack until we delegate at least some of the url
                     // generation to the gallery/image/view object.
                     if ($data['view'] == 'Image' && !empty($data['gallery_view']) && $data['gallery_view'] == 'GalleryLightbox') {
                         $url->setAnchor($data['image']);
                     }
                 } elseif ($data['view'] == 'Results') {
                     $url = new Horde_Url('tag/' . (!empty($data['tag']) ? urlencode($data['tag']) . '/' : ''));
                     if (!empty($data['actionID'])) {
                         $url->add(array('actionID' => $data['actionID']));
                     }
                     if (!empty($data['owner'])) {
                         $url->add('owner', $data['owner']);
                     }
                 }
                 // Keep the URL as clean as possible - don't append the page
                 // number if it's zero, which would be the default.
                 if (!empty($data['page'])) {
                     $url->add('page', $data['page']);
                 }
                 if (!empty($data['year'])) {
                     $url->add(array('year' => $data['year'], 'month' => empty($data['month']) ? 0 : $data['month'], 'day' => empty($data['day']) ? 0 : $data['day']));
                 }
                 return Horde::url($url, $full, $append_session);
             } else {
                 $url = Horde::url('view.php', $full, $append_session);
                 // See note above about delegating url generation to gallery/view
                 if ($data['view'] == 'Image' && !empty($data['gallery_view']) && $data['gallery_view'] == 'GalleryLightbox') {
                     $data['view'] = 'Gallery';
                     $url->setAnchor($data['image']);
                 }
                 return $url->add($data)->setRaw(true);
             }
         case 'group':
             if ($rewrite) {
                 if (empty($data['groupby'])) {
                     $data['groupby'] = $prefs->getValue('groupby');
                 }
                 if ($data['groupby'] == 'owner') {
                     $url = 'user/';
                 } elseif ($data['groupby'] == 'none') {
                     $url = 'all/';
                 }
                 unset($data['groupby']);
                 $url = Horde::url($url, $full, $append_session);
                 if (count($data)) {
                     $url->add($data);
                 }
                 return $url;
             } else {
                 return Horde::url('group.php', $full, $append_session)->add($data);
             }
         case 'rss_user':
             if ($rewrite) {
                 return Horde::url('user/' . urlencode($data['owner']) . '/rss', $full, $append_session);
             } else {
                 $url = Horde::url(new Horde_Url('rss.php'), $full, $append_session);
                 return $url->add(array('stream_type' => 'user', 'id' => $data['owner']));
             }
         case 'rss_gallery':
             if ($rewrite) {
                 $id = !empty($data['slug']) ? $data['slug'] : 'id/' . (int) $data['gallery'];
                 return Horde::url('gallery/' . $id . '/rss', $full, $append_session);
             } else {
                 return Horde::url('rss.php', $full, $append_session)->add(array('stream_type' => 'gallery', 'id' => (int) $data['gallery']));
             }
         case 'default_view':
             switch ($prefs->getValue('defaultview')) {
                 case 'browse':
                     return Horde::url(new Horde_Url('browse.php'), $full, $append_session);
                 case 'galleries':
                     $url = Ansel::getUrlFor('view', array('view' => 'List'), true);
                     break;
                 case 'mygalleries':
                 default:
                     $url = Ansel::getUrlFor('view', array('view' => 'List', 'owner' => $GLOBALS['registry']->getAuth(), 'groupby' => 'owner'), true);
                     break;
             }
             return $url;
     }
 }
예제 #3
0
 public function testEncodeAnchor()
 {
     $url = new Horde_Url('test');
     $url->setAnchor('*****@*****.**');
     $this->assertEquals('test#a%40b.com', (string) $url);
 }