/** * @param APPLICATION $context */ public function __construct($context) { parent::__construct($context); $cmd = $this->make_command(); $cmd->id = 'create'; $cmd->caption = 'New user'; $cmd->link = "create_user.php"; $cmd->icon = '{icons}buttons/create'; $cmd->executable = $this->login->is_allowed(Privilege_set_user, Privilege_create); $cmd->importance = Command_importance_high + Command_importance_increment; $this->append($cmd); $link_url = new URL($this->env->url(Url_part_no_host_path)); $link_url->replace_argument('show_anon', ''); $cmd = $this->make_command(); $cmd->id = 'show_registered'; $cmd->caption = 'Show registered users'; $cmd->link = $link_url->as_text(); $cmd->icon = '{icons}buttons/login'; $cmd->executable = read_var('show_anon'); $cmd->importance = Command_importance_high; $this->append($cmd); $link_url->replace_argument('show_anon', 1); $cmd = $this->make_command(); $cmd->id = 'show_anonymous'; $cmd->caption = 'Show anonymous users'; $cmd->link = $link_url->as_text(); $cmd->icon = '{icons}buttons/anonymous'; $cmd->executable = !read_var('show_anon'); $cmd->importance = Command_importance_high; $this->append($cmd); }
/** * Modify the query to navigate. * @param QUERY $query * @access private */ protected function _adjust_query($query) { $calendar = read_var('calendar'); $first_day = read_var('first_day'); $last_day = read_var('last_day'); $folder = $this->_entry->parent_folder(); if ($calendar) { $this->page->location->append("Calendar", "view_calendar.php?id={$folder->id}"); } if ($first_day) { $day = $this->app->make_date_time($first_day, Date_time_iso); $url = new URL($this->env->url(Url_part_no_host_path)); $url->replace_argument('id', $folder->id); $url->replace_name_and_extension('view_journals.php'); $this->page->location->append($folder->format_date($day), $url->as_text()); $query->set_days($first_day, $last_day); } $query->set_order('date ASC'); parent::_adjust_query($query); }
/** * Append a query string name and value to the url. * Should be formatted as 'name=value'. * @var string $arg */ public function add_arguments($args) { $url = new URL($this->location); $url->replace_arguments($args); $this->location = $url->as_text(); }
/** * URL of the base folder for pictures in this album. * @param boolean $root_override If set to {@link Force_root_on}, returns a fully * resolved URL. * @return string */ public function picture_folder_url($root_override = null) { $url = new URL($this->expanded_url_root($root_override)); $url->append('images'); return $url->as_text(); }
/** * @param APPLICATION $context */ public function __construct($context) { parent::__construct($context); $show_all = read_var('show_all', 1); $cmd = $this->make_command(); $cmd->id = 'show_releases'; if ($show_all) { $cmd->caption = 'Show Unreleased'; $cmd->icon = '{icons}indicators/question'; } else { $cmd->caption = 'Show Released'; $cmd->icon = '{app_icons}buttons/new_release'; } $url = new URL($this->env->url(Url_part_no_host_path)); $url->replace_argument('show_all', !$show_all); $cmd->link = $url->as_text(); $cmd->executable = true; $cmd->importance = Command_importance_low; $this->append($cmd); }
/** * Get the URL for the requested icon size. * Returns an icon 'size' which conforms to the WebCore naming conventions for icon sizes. Sized icons * have several files, all in the same folder. If a size is specified, it is appended to the file name * with a preceding underscore. e.g. get_icon_url ('logo', Sixteen_px) returns logo_16px. This algorithm is * subject to change. * @param string $base_url Location of the icon file. * @param string $size Size modifier to use to find the correct icon. * @return string */ public function get_icon_url($base_url, $size) { if ($base_url) { if ($size) { $url = new URL($base_url); $url->append_to_name('_' . $size); $Result = $url->as_text(); } else { $Result = $base_url; } return $this->resolve_file($Result); } return ''; }
public function display() { ?> <p>These are settings for <?php echo $this->_subscriber->title_as_html(); ?> .</p> <ul> <?php if (!$this->_subscriber->enabled()) { ?> <li>Messages are <span class="field">disabled</span>.</li> <?php } else { ?> <li>Send messages <span class="field"><?php switch ($this->_subscriber->min_hours_to_wait) { case Subscriptions_disabled: echo 'immediately'; break; case 0: echo 'immediately'; break; case 1: echo 'once an hour'; break; case 12: echo 'twice per day'; break; case 24: echo 'once per day'; break; case 48: echo 'every 2 days'; break; case 72: echo 'every 3 days'; break; case 168: echo 'once per week'; break; case 720: echo 'once per month'; break; default: echo 'every ' . $this->_subscriber->min_hours_to_wait . ' hours'; } ?> </span> in <span class="field"> <?php if ($this->_subscriber->send_as_html) { echo 'HTML'; } else { echo 'Plain text'; } ?> </span> format.</li> <li>Send <span class="field"><?php if (!$this->_subscriber->preferred_text_length) { echo 'all text'; } else { echo 'a ' . $this->_subscriber->preferred_text_length . ' character excerpt'; } ?> </span> from each message.</li> <li> <?php if ($this->_subscriber->max_individual_messages) { if ($this->_subscriber->max_items_per_message) { ?> If there are more than <span class="field"><?php echo $this->_subscriber->max_individual_messages; ?> </span> messages, send them in groups of <span class="field"><?php echo $this->_subscriber->max_items_per_message; ?> </span>. <?php } else { ?> If there are more than <span class="field"><?php echo $this->_subscriber->max_individual_messages; ?> </span> messages, send them <span class="field">in one message</span>. <?php } } else { ?> Send each message <span class="field">individually</span>. <?php } ?> </li> <li><span class="field"><?php if ($this->_subscriber->send_own_changes) { echo 'Send'; } else { echo 'Do not send'; } ?> </span> messages triggered by this subscriber.</li> <li><span class="field"><?php if ($this->_subscriber->show_history_item_as_subject) { echo 'Include'; } else { echo 'Do not include'; } ?> </span> history details in message subject.</li> <li> <?php if ($this->_subscriber->show_history_items) { ?> <span class="field">Show</span> history details and <?php if ($this->_subscriber->group_history_items) { ?> <span class="field">group</span> them with their object. <?php } else { ?> <span class="field">repeat</span> object details for each. <?php } } else { ?> <span class="field">Do not show</span> history details. <?php } ?> </li> </ul> <?php } $url = new URL($this->env->url(Url_part_no_host_path)); $url->replace_argument('panel', 'prefs'); $renderer = $this->context->make_controls_renderer(); $button = $renderer->button_as_html('Change...', $url->as_text(), '{icons}buttons/edit'); echo '<table class="basic columns">'; echo '<tr>'; echo '<td>Settings</td>'; echo '<td>' . $button . '</td>'; echo '</tr>'; $panels = $this->_panel_manager->ordered_panels(Panel_location); foreach ($panels as $panel) { if ($this->_is_summarizable($panel)) { $url->replace_argument('panel', $panel->id); $desc = 'Subscribed to <span class="field">' . $panel->num_objects() . '</span> ' . $panel->raw_title(); $button = $renderer->button_as_html('Change...', $url->as_text(), '{icons}buttons/edit'); echo '<tr>'; echo '<td>' . $desc . '</td>'; echo '<td>' . $button . '</td>'; echo '</tr>'; } } echo '</table>'; }
public function make_commands($context) { $Result = new COMMANDS($context); if ($this->enabled && $this->file_name) { $url = new URL($this->page->resolve_file($this->file_name, Force_root_on)); foreach ($this->formats as $format => $format_title) { foreach ($this->content_formats as $content => $content_texts) { $content_title = $content_texts[0]; $content_description = $content_texts[1]; $url->replace_argument('format', $format); $url->replace_argument('content', $content); $cmd = $Result->make_command(); $cmd->id = $format . '_' . $content; $cmd->caption = '<b>' . $content_title . '</b> (' . $format_title . ')'; if ($format == 'rss') { $cmd->icon = '{icons}indicators/newsfeed_rss'; } else { $cmd->icon = '{icons}indicators/newsfeed_atom'; $cmd->description = $content_description; } $cmd->link = $url->as_text(); $Result->append($cmd); } } } return $Result; }
/** * Redirect to a URL relative to the current one. * This feature makes use of HTTP headers, so if the page is not cached using * {@link set_buffered()}, it must be called before any content is emitted. * 'location' should not contain the protocol (e.g. HTTP://). * To redirect to a fully resolved URL, use {@link redirect_remote()}. * To redirect to a fully resolved URL on the same server, use (@link redirect_root()}. * @param string $location */ public function redirect_local($location) { $host_name = $this->host_name(); if (strpos($location, $host_name) !== 0) { $url_path = $this->url(Url_part_path); if (strpos($location, $url_path) === 0) { $url = new URL($location); } else { $url = new URL($url_path); $url->append($location); } $url->prepend($this->host_name()); $location = $url->as_text(); } $this->redirect_remote($location); }
/** * Return a {@link URL} prepared for the given value. * @param string $value * @return URL * @access private */ protected function _url_for_value($value) { $set_option_path = $this->context->resolve_file('{' . Folder_name_functions . '}set_option.php'); $Result = new URL($set_option_path); $Result->add_argument('opt_name', $this->name); $Result->add_argument('opt_value', $value); $Result->add_argument('opt_page_context', $this->context->is_page); $last_page = urlencode($this->env->url(Url_part_all)); if (isset($this->_args)) { $url = new URL($last_page); foreach ($this->_args as $key => $value) { $url->replace_argument($key, $value); } $last_page = $url->as_text(); } $Result->add_argument('last_page', $last_page); return $Result; }
/** * Rewrite the given url to point to this object. * @param string $page_url The url to modify. * @return string */ public function replace_page_arguments($page_url) { $args = $this->page_arguments(); if (!empty($args)) { $url = new URL($page_url); $url->replace_arguments($args); return $url->as_text(); } return $page_url; }
/** * Render any parent objects to the title and location. * @param PAGE $page * @param RENDERABLE $obj * @access private */ protected function _add_context($page, $obj) { parent::_add_context($page, $obj); $calendar = read_var('calendar'); $journal = read_var('journal'); $first_day = read_var('first_day'); $folder = $obj->parent_folder(); if ($calendar) { $this->page->location->append('Calendar', "view_calendar.php?id={$folder->id}"); } if ($journal) { $journal_query = $folder->entry_query(); $journal_entry = $journal_query->object_at_id($journal); if (isset($journal_entry)) { if ($calendar) { $args = 'calendar=1'; } else { $args = ''; } $this->page->location->add_object_link($journal_entry, $args); } } if (!$journal && $first_day) { $day = $this->app->make_date_time($first_day); $url = new URL($this->env->url(Url_part_no_host_path)); $url->replace_argument('id', $folder->id); $url->replace_name_and_extension('view_pictures.php'); $this->page->location->append($folder->format_date($day), $url->as_text()); } }
$Env->redirect_local("create_subscriber.php?email={$email}"); } else { $subscriber = $user->subscriber(); $subscriber->store(); } } if (!isset($user) || $App->login->is_allowed(Privilege_set_global, Privilege_subscribe, $user)) { $Page->title->add_object($subscriber); $Page->location->add_root_link(); if (isset($user)) { $Page->location->append('Users', 'view_users.php'); $Page->location->add_object_link($user); } else { $url = new URL($Env->url(Url_part_no_host_path)); $url->replace_argument('panel', 'summary'); $Page->location->append($email, $url->as_text()); } $Page->location->append($Page->title->subject, '', '{icons}buttons/subscriptions'); $class_name = $App->final_class_name('SUBSCRIPTION_PANEL_MANAGER', 'webcore/gui/subscription_panel.php'); /** @var $panel_manager PANEL_MANAGER */ $panel_manager = new $class_name($subscriber); /** @var $selected_panel FORM_PANEL */ $selected_panel = $panel_manager->selected_panel(); $selected_panel->check(); $Page->start_display(); ?> <div class="main-box"> <div class="columns text-flow"> <div class="left-sidebar text-flow"> <h2> Subscriptions
/** * Return the width to use for the tag. * @param MUNGER $munger The transformation context. * @param string[] $attributes List of attributes for the tag * (retrieved from the token). * @return string * @access private */ protected function _calculate_width($munger, $attributes) { /* Prefer scale over width, discarding invalid scale values. * Retrieve width from the image only if scale is set or * width is not set and an outer area was generated (we want * to constrain the caption to the width of the image). */ $scale = read_array_index($attributes, 'scale'); $Result = read_array_index($attributes, 'width'); if ($scale) { if (substr($scale, -1, 1) == '%') { $scale = substr($scale, 0, -1); } if (!is_numeric($scale)) { $scale = ''; } } if ($scale || !$Result && $this->_has_outer_area()) { $attachment_name = read_array_index($attributes, 'attachment'); if ($attachment_name) { $src = '{att_thumb}/' . $attachment_name; } else { $src = read_array_index($attributes, 'src'); } $url = new URL($munger->resolve_url($src, Force_root_on)); if (!$url->has_domain() || $url->has_local_domain()) { include_once 'webcore/util/image.php'; $metrics = new IMAGE_METRICS(); $metrics->set_url($url->as_text()); if ($metrics->loaded()) { if ($scale) { $Result = ceil($metrics->original_width * $scale / 100) . 'px'; } else { $Result = $metrics->original_width . 'px'; } } elseif ($scale) { $Result = $scale . '%'; } } } return $Result; }
/** * Render the time frame choices. */ public function display() { $this->assert(!empty($this->page_link), 'Page name cannot be empty.', 'display', 'TIME_FRAME_SELECTOR'); $menu = $this->context->make_menu(); $menu->renderer->separator_class = $this->context->display_options->menu_class; $menu->renderer->content_mode = Menu_show_as_buttons; $menu->renderer->set_size(Menu_size_compact); $menu->renderer->options |= Menu_options_show_as_select; $url = new URL($this->page_link); $url->replace_argument('time_frame', Time_frame_recent); $menu->append('Recent', $url->as_text(), '', $this->period == Time_frame_recent); $url->replace_argument('time_frame', Time_frame_all); $menu->append('All', $url->as_text(), '', $this->period == Time_frame_all); $url->replace_argument('time_frame', Time_frame_today); $menu->append('Today', $url->as_text(), '', $this->period == Time_frame_today); $url->replace_argument('time_frame', Time_frame_last_week); $menu->append('Last Week', $url->as_text(), '', $this->period == Time_frame_last_week); $url->replace_argument('time_frame', Time_frame_last_month); $menu->append('Last Month', $url->as_text(), '', $this->period == Time_frame_last_month); $menu->display(); }
/** @var $form ENTRY_FORM */ $form = new $class_name($folder); $entry = $folder->new_object($entry_type_info->id); include_once 'webcore/util/options.php'; $opt_stay_on_page = new STORED_OPTION($App, "stay_on_{$entry_type_info->id}_page"); $opt_stay_on_page->add_argument('id', $folder->id); $form->process_new($entry); if ($form->committed()) { if ($form->is_field('quick_save') && $form->value_for('quick_save')) { $Env->redirect_local($entry_type_info->edit_page . '?id=' . $entry->id); } else { if ($opt_stay_on_page->value()) { $url = new URL($folder->home_page()); $url->replace_name_and_extension($Env->url(Url_part_file_name)); $url->add_argument('last_id', $entry->id); $Env->redirect_local($url->as_text()); } else { $Env->redirect_local($entry->home_page()); } } } if ($entry_type_info->icon) { $icon = $App->resolve_file($entry_type_info->icon); } else { $icon = '{icons}buttons/create'; } $Page->title->add_object($folder); $Page->title->subject = "Create {$entry_type_info->singular_title}"; $Page->location->add_folder_link($folder); $Page->location->append($Page->title->subject, '', $icon); $Page->start_display();
/** * @param USER $obj * @access private */ protected function _draw_box($obj) { $this->_display_start_minimal_commands_block($obj); if ($obj->icon_url) { $this->context->start_icon_container($obj->icon_url, Thirty_two_px); } ?> <h3> <?php echo $this->obj_link($obj); ?> </h3> <?php if ($obj->icon_url) { $this->context->finish_icon_container(); } ?> <p><?php echo $obj->real_name(); ?> </p> <p>Registered on <?php $c = $obj->time_created; $f = $c->formatter(); $f->type = Date_time_format_short_date; echo $c->format($f); ?> </p> <?php $menu = $this->context->make_menu(); $entry_types = $this->app->entry_type_infos(); $url = new URL($obj->home_page()); foreach ($entry_types as $type_info) { $url->replace_argument('panel', $type_info->id); $menu->append($type_info->plural_title, $url->as_text()); } $url->replace_argument('panel', 'comments'); $menu->append('Comments', $url->as_text()); $menu->display(); ?> <div class="text-flow"> <?php $this->_echo_text_summary($obj); ?> </div> <?php $this->_display_finish_minimal_commands_block(); }
protected function _test_url_class() { $url_text = 'http://earthli.com/pages/page.php?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/'; $this->_log('original URL', Msg_type_info); $url = new URL($url_text); $this->_check_equal('http://earthli.com/pages/page.php?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('page.php', $url->name()); $this->_check_equal('php', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('page', $url->name_without_extension()); $this->_check_equal('page.php?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('replaced extension', Msg_type_info); $url->replace_extension('jpg'); $this->_check_equal('http://earthli.com/pages/page.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('page.jpg', $url->name()); $this->_check_equal('jpg', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('page', $url->name_without_extension()); $this->_check_equal('page.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('appended to name', Msg_type_info); $url->append_to_name('_tn'); $this->_check_equal('http://earthli.com/pages/page_tn.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('page_tn.jpg', $url->name()); $this->_check_equal('jpg', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('page_tn', $url->name_without_extension()); $this->_check_equal('page_tn.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('replaced name', Msg_type_info); $url->replace_name('picture'); $this->_check_equal('http://earthli.com/pages/picture.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture.jpg', $url->name()); $this->_check_equal('jpg', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('picture', $url->name_without_extension()); $this->_check_equal('picture.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('emptied name and extension', Msg_type_info); $url->replace_name_and_extension(''); $this->_check_equal('http://earthli.com/pages/?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $url->replace_name_and_extension('picture.jpg'); $this->_check_equal('http://earthli.com/pages/picture.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture.jpg', $url->name()); $this->_check_equal('jpg', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('picture', $url->name_without_extension()); $this->_check_equal('picture.jpg?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('replaced name and extension', Msg_type_info); $url->replace_name_and_extension('picture_ex.png'); $this->_check_equal('http://earthli.com/pages/picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture_ex.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->query_string()); $this->_check_equal('picture_ex', $url->name_without_extension()); $this->_check_equal('picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/', $url->name_with_query_string()); $this->_log('added argument', Msg_type_info); $url->add_argument('arg4', 'new'); $this->_check_equal('http://earthli.com/pages/picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture_ex.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->query_string()); $this->_check_equal('picture_ex', $url->name_without_extension()); $this->_check_equal('picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->name_with_query_string()); $this->_log('replaced argument', Msg_type_info); $url->replace_argument('arg2', 'not_2'); $this->_check_equal('http://earthli.com/pages/picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture_ex.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->query_string()); $this->_check_equal('picture_ex', $url->name_without_extension()); $this->_check_equal('picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->name_with_query_string()); $this->_log('moved back a folder', Msg_type_info); $url->go_back(1); $this->_check_equal('http://earthli.com/picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/', $url->path()); $this->_check_equal('/', $url->path_without_domain()); $this->_check_equal('picture_ex.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->query_string()); $this->_check_equal('picture_ex', $url->name_without_extension()); $this->_check_equal('picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->name_with_query_string()); $this->_log('appended folder', Msg_type_info); $url->append_folder('pages'); $this->_check_equal('http://earthli.com/pages/picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('picture_ex.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->query_string()); $this->_check_equal('picture_ex', $url->name_without_extension()); $this->_check_equal('picture_ex.png?arg1=http://earthli.com/pages/page.php&arg2=not_2&arg3=user|7d9c2dae9b5b69cbbbdea47f99574ba8/&arg4=new', $url->name_with_query_string()); $this->_log('removed the name', Msg_type_info); $url->strip_name(); $this->_check_equal('http://earthli.com/pages/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/', $url->path()); $this->_check_equal('/pages/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('', $url->name_with_query_string()); $this->_log('appended folders', Msg_type_info); $url->append('media/other/'); $this->_check_equal('http://earthli.com/pages/media/other/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/media/other/', $url->path()); $this->_check_equal('/pages/media/other/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('', $url->name_with_query_string()); $this->_log('appended folders (with backticks)', Msg_type_info); $url->append('../../images/new/'); $this->_check_equal('http://earthli.com/pages/images/new/', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/images/new/', $url->path()); $this->_check_equal('/pages/images/new/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('', $url->name_with_query_string()); $this->_log('appended a file name', Msg_type_info); $url->append('more/file.png'); $this->_check_equal('http://earthli.com/pages/images/new/more/file.png', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/images/new/more/', $url->path()); $this->_check_equal('/pages/images/new/more/', $url->path_without_domain()); $this->_check_equal('file.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('file', $url->name_without_extension()); $this->_check_equal('file.png', $url->name_with_query_string()); $this->_log('appended a query string', Msg_type_info); $url->replace_query_string('arg1=1&arg2=hello world&arg3=<span class="something">'); $this->_check_equal('http://earthli.com/pages/images/new/more/file.png?arg1=1&arg2=hello world&arg3=<span class="something">', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/images/new/more/', $url->path()); $this->_check_equal('/pages/images/new/more/', $url->path_without_domain()); $this->_check_equal('file.png', $url->name()); $this->_check_equal('png', $url->extension()); $this->_check_equal('arg1=1&arg2=hello world&arg3=<span class="something">', $url->query_string()); $this->_check_equal('file', $url->name_without_extension()); $this->_check_equal('file.png?arg1=1&arg2=hello world&arg3=<span class="something">', $url->name_with_query_string()); $this->_check_equal('http://earthli.com/pages/images/new/more/file.png?arg1=1&arg2=hello world&arg3=lt;span class=quot;something">', $url->as_text(true)); $this->_log('cleared the extension', Msg_type_info); $url->replace_extension(''); $this->_check_equal('http://earthli.com/pages/images/new/more/file?arg1=1&arg2=hello world&arg3=<span class="something">', $url->as_text()); $this->_check_equal('earthli.com', $url->domain()); $this->_check_equal('http://earthli.com/pages/images/new/more/', $url->path()); $this->_check_equal('/pages/images/new/more/', $url->path_without_domain()); $this->_check_equal('file', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('arg1=1&arg2=hello world&arg3=<span class="something">', $url->query_string()); $this->_check_equal('file', $url->name_without_extension()); $this->_check_equal('file?arg1=1&arg2=hello world&arg3=<span class="something">', $url->name_with_query_string()); $this->_check_equal('http://earthli.com/pages/images/new/more/file?arg1=1&arg2=hello world&arg3=lt;span class=quot;something">', $url->as_text(true)); $this->_log('stripped the domain', Msg_type_info); $url->strip_domain(); $this->_check_equal('/pages/images/new/more/file?arg1=1&arg2=hello world&arg3=<span class="something">', $url->as_text()); $this->_check_equal('', $url->domain()); $this->_check_equal('/pages/images/new/more/', $url->path()); $this->_check_equal('/pages/images/new/more/', $url->path_without_domain()); $this->_check_equal('file', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('arg1=1&arg2=hello world&arg3=<span class="something">', $url->query_string()); $this->_check_equal('file', $url->name_without_extension()); $this->_check_equal('file?arg1=1&arg2=hello world&arg3=<span class="something">', $url->name_with_query_string()); $this->_check_equal('/pages/images/new/more/file?arg1=1&arg2=hello world&arg3=lt;span class=quot;something">', $url->as_text(true)); $this->_log('set to root', Msg_type_info); $url->set_text('/'); $this->_check_equal('/', $url->as_text()); $this->_check_equal('', $url->domain()); $this->_check_equal('/', $url->path()); $this->_check_equal('/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('', $url->name_with_query_string()); $this->_check_equal('/', $url->as_text(true)); $this->_log('set to root with query', Msg_type_info); $url->set_text('/?arg1=1&arg2=hello world&arg3=<span class="something">'); $this->_check_equal('/?arg1=1&arg2=hello world&arg3=<span class="something">', $url->as_text()); $this->_check_equal('', $url->domain()); $this->_check_equal('/', $url->path()); $this->_check_equal('/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('arg1=1&arg2=hello world&arg3=<span class="something">', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('arg1=1&arg2=hello world&arg3=<span class="something">', $url->name_with_query_string()); $this->_check_equal('/?arg1=1&arg2=hello world&arg3=lt;span class=quot;something">', $url->as_text(true)); $this->_log('set to protocol and domain only', Msg_type_info); $url->set_text('http://earthli.org'); $this->_check_equal('http://earthli.org', $url->as_text()); $this->_check_equal('earthli.org', $url->domain()); $this->_check_equal('http://earthli.org/', $url->path()); $this->_check_equal('/', $url->path_without_domain()); $this->_check_equal('', $url->name()); $this->_check_equal('', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('', $url->name_without_extension()); $this->_check_equal('', $url->name_with_query_string()); $this->_check_equal('http://earthli.org', $url->as_text(true)); $this->_log('stripped the protocol', Msg_type_info); $url->strip_protocol(); $this->_check_equal('earthli.org', $url->as_text()); $this->_check_equal('earthli.org', $url->domain()); $this->_check_equal('', $url->path()); $this->_check_equal('', $url->path_without_domain()); $this->_check_equal('earthli.org', $url->name()); $this->_check_equal('org', $url->extension()); $this->_check_equal('', $url->query_string()); $this->_check_equal('earthli', $url->name_without_extension()); $this->_check_equal('earthli.org', $url->name_with_query_string()); $this->_check_equal('earthli.org', $url->as_text(true)); }