Пример #1
0
 /**
  * display_home
  * This display the module in home page
  */
 public function display_home()
 {
     if (@is_readable(AmpConfig::get('prefix') . '/config/motd.php')) {
         echo '<div id="motd">';
         UI::show_box_top(T_('Message of the Day'));
         require_once AmpConfig::get('prefix') . '/config/motd.php';
         UI::show_box_bottom();
         echo '</div>';
     }
 }
Пример #2
0
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
UI::show_box_top(T_('Shoutbox'));
?>
<div id="shoutbox">
<?php 
foreach ($shouts as $shout_id) {
    $shout = new Shoutbox($shout_id);
    $shout->format();
    ?>
<div id="shout<?php 
    echo $shout->id;
    ?>
" class="shout <?php 
    echo UI::flip_class();
    ?>
">
    <?php 
    echo $shout->get_display(true, true);
    ?>
</div>
<?php 
}
?>
</div>
<?php 
UI::show_box_bottom();
Пример #3
0
 /**
  * show_objects
  * This takes an array of objects
  * and requires the correct template based on the
  * type that we are currently browsing
  *
  * @param int[] $object_ids
  */
 public function show_objects($object_ids = null, $argument = null)
 {
     if ($this->is_simple() || !is_array($object_ids)) {
         $object_ids = $this->get_saved();
     } else {
         $this->save_objects($object_ids);
     }
     // Limit is based on the user's preferences if this is not a
     // simple browse because we've got too much here
     if ($this->get_start() >= 0 && count($object_ids) > $this->get_start() && !$this->is_simple()) {
         $object_ids = array_slice($object_ids, $this->get_start(), $this->get_offset(), true);
     } else {
         if (!count($object_ids)) {
             $this->set_total(0);
         }
     }
     // Load any additional object we need for this
     $extra_objects = $this->get_supplemental_objects();
     $browse = $this;
     foreach ($extra_objects as $class_name => $id) {
         ${$class_name} = new $class_name($id);
     }
     $match = '';
     // Format any matches we have so we can show them to the masses
     if ($filter_value = $this->get_filter('alpha_match')) {
         $match = ' (' . $filter_value . ')';
     } elseif ($filter_value = $this->get_filter('starts_with')) {
         $match = ' (' . $filter_value . ')';
         /*} elseif ($filter_value = $this->get_filter('regex_match')) {
               $match = ' (' . $filter_value . ')';
           } elseif ($filter_value = $this->get_filter('regex_not_match')) {
               $match = ' (' . $filter_value . ')';*/
     } elseif ($filter_value = $this->get_filter('catalog')) {
         // Get the catalog title
         $catalog = Catalog::create_from_id(intval($filter_value));
         $match = ' (' . $catalog->name . ')';
     }
     $type = $this->get_type();
     // Update the session value only if it's allowed on the current browser
     if ($this->get_update_session()) {
         $_SESSION['browse_current_' . $type]['start'] = $browse->get_start();
     }
     // Set the correct classes based on type
     $class = "box browse_" . $type;
     $argument_param = $argument ? '&argument=' . scrub_in($argument) : '';
     debug_event('browse', 'Show objects called for type {' . $type . '}', '5');
     $limit_threshold = $this->get_threshold();
     // Switch on the type of browsing we're doing
     switch ($type) {
         case 'song':
             $box_title = T_('Songs') . $match;
             Song::build_cache($object_ids, $limit_threshold);
             $box_req = AmpConfig::get('prefix') . '/templates/show_songs.inc.php';
             break;
         case 'album':
             Album::build_cache($object_ids);
             $box_title = T_('Albums') . $match;
             if (is_array($argument)) {
                 $allow_group_disks = $argument['group_disks'];
                 if ($argument['title']) {
                     $box_title = $argument['title'];
                 }
             } else {
                 $allow_group_disks = false;
             }
             $box_req = AmpConfig::get('prefix') . '/templates/show_albums.inc.php';
             break;
         case 'user':
             $box_title = T_('Users') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_users.inc.php';
             break;
         case 'artist':
             $box_title = T_('Artists') . $match;
             Artist::build_cache($object_ids, true, $limit_threshold);
             $box_req = AmpConfig::get('prefix') . '/templates/show_artists.inc.php';
             break;
         case 'live_stream':
             require_once AmpConfig::get('prefix') . '/templates/show_live_stream.inc.php';
             $box_title = T_('Radio Stations') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_live_streams.inc.php';
             break;
         case 'playlist':
             Playlist::build_cache($object_ids);
             $box_title = T_('Playlists') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_playlists.inc.php';
             break;
         case 'playlist_song':
             $box_title = T_('Playlist Songs') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_playlist_songs.inc.php';
             break;
         case 'playlist_localplay':
             $box_title = T_('Current Playlist');
             $box_req = AmpConfig::get('prefix') . '/templates/show_localplay_playlist.inc.php';
             UI::show_box_bottom();
             break;
         case 'smartplaylist':
             $box_title = T_('Smart Playlists') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_searches.inc.php';
             break;
         case 'catalog':
             $box_title = T_('Catalogs');
             $box_req = AmpConfig::get('prefix') . '/templates/show_catalogs.inc.php';
             break;
         case 'shoutbox':
             $box_title = T_('Shoutbox Records');
             $box_req = AmpConfig::get('prefix') . '/templates/show_manage_shoutbox.inc.php';
             break;
         case 'tag':
             Tag::build_cache($object_ids);
             $box_title = T_('Tag Cloud');
             $box_req = AmpConfig::get('prefix') . '/templates/show_tagcloud.inc.php';
             break;
         case 'video':
             Video::build_cache($object_ids);
             $video_type = 'video';
             $box_title = T_('Videos');
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'democratic':
             $box_title = T_('Democratic Playlist');
             $box_req = AmpConfig::get('prefix') . '/templates/show_democratic_playlist.inc.php';
             break;
         case 'wanted':
             $box_title = T_('Wanted Albums');
             $box_req = AmpConfig::get('prefix') . '/templates/show_wanted_albums.inc.php';
             break;
         case 'share':
             $box_title = T_('Shared Objects');
             $box_req = AmpConfig::get('prefix') . '/templates/show_shared_objects.inc.php';
             break;
         case 'song_preview':
             $box_title = T_('Songs');
             $box_req = AmpConfig::get('prefix') . '/templates/show_song_previews.inc.php';
             break;
         case 'channel':
             $box_title = T_('Channels');
             $box_req = AmpConfig::get('prefix') . '/templates/show_channels.inc.php';
             break;
         case 'broadcast':
             $box_title = T_('Broadcasts');
             $box_req = AmpConfig::get('prefix') . '/templates/show_broadcasts.inc.php';
             break;
         case 'license':
             $box_title = T_('Media Licenses');
             $box_req = AmpConfig::get('prefix') . '/templates/show_manage_license.inc.php';
             break;
         case 'tvshow':
             $box_title = T_('TV Shows');
             $box_req = AmpConfig::get('prefix') . '/templates/show_tvshows.inc.php';
             break;
         case 'tvshow_season':
             $box_title = T_('Seasons');
             $box_req = AmpConfig::get('prefix') . '/templates/show_tvshow_seasons.inc.php';
             break;
         case 'tvshow_episode':
             $box_title = T_('Episodes');
             $video_type = $type;
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'movie':
             $box_title = T_('Movies');
             $video_type = $type;
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'clip':
             $box_title = T_('Clips');
             $video_type = $type;
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'personal_video':
             $box_title = T_('Personal Videos');
             $video_type = $type;
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'label':
             $box_title = T_('Labels');
             $box_req = AmpConfig::get('prefix') . '/templates/show_labels.inc.php';
             break;
         case 'pvmsg':
             $box_title = T_('Private Messages');
             $box_req = AmpConfig::get('prefix') . '/templates/show_pvmsgs.inc.php';
             break;
         default:
             // Rien a faire
             break;
     }
     // end switch on type
     Ajax::start_container($this->get_content_div(), 'browse_content');
     if ($this->get_show_header()) {
         if (isset($box_req) && isset($box_title)) {
             UI::show_box_top($box_title, $class);
         }
     }
     if (isset($box_req)) {
         require $box_req;
     }
     if ($this->get_show_header()) {
         if (isset($box_req)) {
             UI::show_box_bottom();
         }
         echo '<script type="text/javascript">';
         echo Ajax::action('?page=browse&action=get_filters&browse_id=' . $this->id . $argument_param, '');
         echo ';</script>';
     } else {
         if (!$this->get_use_pages()) {
             $this->show_next_link($argument);
         }
     }
     Ajax::end_container();
 }
Пример #4
0
 /**
  * display_home
  * This display the module in home page
  */
 public function display_home()
 {
     $xmlstr = file_get_contents($this->feed_url);
     $xml = simplexml_load_string($xmlstr);
     if ($xml->channel) {
         UI::show_box_top($xml->channel->title);
         $i = 0;
         echo '<div class="home_plugin"><table class="tabledata">';
         foreach ($xml->channel->item as $item) {
             echo '<tr class="' . ($i % 2 == 0 ? 'even' : 'odd') . '"><td>';
             echo '<div>';
             echo '<div style="float: left; font-weight: bold;"><a href="' . $item->link . '" target="_blank">' . $item->title . '</a></div>';
             echo '<div style="float: right;">' . date("Y/m/d H:i:s", strtotime($item->pubDate)) . '</div>';
             echo '</div><br />';
             echo '<div style="margin-left: 30px;">';
             if (isset($item->image)) {
                 echo '<div style="float: left; margin-right: 20px;"><img src="' . $item->image . '" style="width: auto; max-height: 48px;" /></div>';
             }
             echo '<div>' . $item->description . '</div>';
             echo '</div>';
             echo '</td></tr>';
             $i++;
             if ($i >= $this->maxitems) {
                 break;
             }
         }
         echo '</table></div>';
         UI::show_box_bottom();
     }
 }
Пример #5
0
 /**
  * verify_catalog
  * This function verify the catalog
  */
 public function verify_catalog()
 {
     require AmpConfig::get('prefix') . '/templates/show_verify_catalog.inc.php';
     ob_flush();
     flush();
     $verified = $this->verify_catalog_proc();
     +UI::show_box_top();
     echo '<strong>';
     printf(T_('Catalog Verify Done. %d of %d files updated.'), $verified['updated'], $verified['total']);
     echo "</strong><br />\n";
     echo "<br />\n";
     UI::show_box_bottom();
     ob_flush();
     flush();
     return true;
 }
Пример #6
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     if ($options == null) {
         $options = array('gather_art' => true, 'parse_playlist' => false);
     }
     $this->count = 0;
     $this->added_songs_to_gather = array();
     $this->added_videos_to_gather = array();
     if (!defined('SSE_OUTPUT')) {
         require AmpConfig::get('prefix') . UI::find_template('show_adds_catalog.inc.php');
         flush();
     }
     /* Set the Start time */
     $start_time = time();
     // Make sure the path doesn't end in a / or \
     $this->path = rtrim($this->path, '/');
     $this->path = rtrim($this->path, '\\');
     // Prevent the script from timing out and flush what we've got
     set_time_limit(0);
     /* Get the songs and then insert them into the db */
     $this->add_files($this->path, $options);
     if ($options['parse_playlist'] && count($this->_playlists)) {
         // Foreach Playlists we found
         foreach ($this->_playlists as $full_file) {
             $result = $this->import_playlist($full_file);
             if ($result['success']) {
                 $file = basename($full_file);
             }
             // end if import worked
         }
         // end foreach playlist files
     }
     /* Do a little stats mojo here */
     $current_time = time();
     if ($options['gather_art']) {
         $catalog_id = $this->id;
         if (!defined('SSE_OUTPUT')) {
             require AmpConfig::get('prefix') . UI::find_template('show_gather_art.inc.php');
             flush();
         }
         $this->gather_art($this->added_songs_to_gather, $this->added_videos_to_gather);
     }
     /* Update the Catalog last_update */
     $this->update_last_add();
     $time_diff = $current_time - $start_time ?: 0;
     $rate = number_format($time_diff > 0 ? $this->count / $time_diff : 0, 2);
     if ($rate <= 0) {
         $rate = T_('N/A');
     }
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_top();
     }
     UI::update_text('', sprintf(T_('Catalog Update Finished.  Total Time: [%s] Total Media: [%s] Media Per Second: [%s]'), date('i:s', $time_diff), $this->count, $rate));
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_bottom();
     }
 }
Пример #7
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     // Prevent the script from timing out
     set_time_limit(0);
     if ($options != null) {
         $this->authcode = $options['authcode'];
     }
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_top(T_('Running SoundCloud Remote Update') . '. . .');
     }
     $this->update_remote_catalog();
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_bottom();
     }
     return true;
 }
Пример #8
0
 /**
  * verify_catalog
  * This function verify the catalog
  */
 public function verify_catalog()
 {
     if (!defined('SSE_OUTPUT')) {
         require AmpConfig::get('prefix') . UI::find_template('show_verify_catalog.inc.php');
         ob_flush();
         flush();
     }
     $verified = $this->verify_catalog_proc();
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_top();
     }
     UI::update_text('', sprintf(T_('Catalog Verify Done. %d of %d files updated.'), $verified['updated'], $verified['total']));
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_bottom();
     }
     return true;
 }
Пример #9
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     if ($options == null) {
         $options = array('gather_art' => true, 'parse_playlist' => true);
     }
     $this->count = 0;
     require AmpConfig::get('prefix') . '/templates/show_adds_catalog.inc.php';
     flush();
     /* Set the Start time */
     $start_time = time();
     // Make sure the path doesn't end in a / or \
     $this->path = rtrim($this->path, '/');
     $this->path = rtrim($this->path, '\\');
     // Prevent the script from timing out and flush what we've got
     set_time_limit(0);
     /* Get the songs and then insert them into the db */
     $this->add_files($this->path, $options);
     if ($options['parse_playlist'] && count($this->_playlists)) {
         // Foreach Playlists we found
         foreach ($this->_playlists as $full_file) {
             $result = $this->import_playlist($full_file);
             if ($result['success']) {
                 $file = basename($full_file);
             }
             // end if import worked
         }
         // end foreach playlist files
     }
     /* Do a little stats mojo here */
     $current_time = time();
     if ($options['gather_art']) {
         $catalog_id = $this->id;
         require AmpConfig::get('prefix') . '/templates/show_gather_art.inc.php';
         flush();
         $this->gather_art();
     }
     /* Update the Catalog last_update */
     $this->update_last_add();
     $time_diff = $current_time - $start_time ?: 0;
     $rate = intval($time_diff > 0 ? $this->count / $time_diff : false) ?: T_('N/A');
     UI::show_box_top();
     echo "\n<br />" . printf(T_('Catalog Update Finished.  Total Time: [%s] Total Songs: [%s] Songs Per Second: [%s]'), date('i:s', $time_diff), $this->count, $rate);
     echo '<br /><br />';
     UI::show_box_bottom();
 }
Пример #10
0
 /**
  * display_home
  * This display the module in home page
  */
 public function display_home()
 {
     if (AmpConfig::get('sociable')) {
         $user_id = $GLOBALS['user']->id;
         if ($user_id) {
             $activities = Useractivity::get_friends_activities($user_id, $this->maxitems);
             if (count($activities) > 0) {
                 UI::show_box_top(T_('Friends Timeline'));
                 Useractivity::build_cache($activities);
                 foreach ($activities as $aid) {
                     $activity = new Useractivity($aid);
                     $activity->show();
                 }
                 UI::show_box_bottom();
             }
         }
     }
 }
Пример #11
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     UI::show_box_top(T_('Running Remote Update') . '. . .');
     $this->update_remote_catalog();
     UI::show_box_bottom();
     return true;
 }
Пример #12
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_top(T_('Running Remote Update') . '. . .');
     }
     $this->update_remote_catalog();
     if (!defined('SSE_OUTPUT')) {
         UI::show_box_bottom();
     }
     return true;
 }
Пример #13
0
 /**
  * show_objects
  * This takes an array of objects
  * and requires the correct template based on the
  * type that we are currently browsing
  */
 public function show_objects($object_ids = null, $argument = null)
 {
     if ($this->is_simple() || !is_array($object_ids)) {
         $object_ids = $this->get_saved();
     } else {
         $this->save_objects($object_ids);
     }
     // Limit is based on the user's preferences if this is not a
     // simple browse because we've got too much here
     if (count($object_ids) > $this->get_start() && !$this->is_simple() && !$this->is_static_content()) {
         $object_ids = array_slice($object_ids, $this->get_start(), $this->get_offset(), true);
     } else {
         if (!count($object_ids)) {
             $this->set_total(0);
         }
     }
     // Load any additional object we need for this
     $extra_objects = $this->get_supplemental_objects();
     $browse = $this;
     foreach ($extra_objects as $class_name => $id) {
         ${$class_name} = new $class_name($id);
     }
     $match = '';
     // Format any matches we have so we can show them to the masses
     if ($filter_value = $this->get_filter('alpha_match')) {
         $match = ' (' . $filter_value . ')';
     } elseif ($filter_value = $this->get_filter('starts_with')) {
         $match = ' (' . $filter_value . ')';
         /*} elseif ($filter_value = $this->get_filter('regex_match')) {
               $match = ' (' . $filter_value . ')';
           } elseif ($filter_value = $this->get_filter('regex_not_match')) {
               $match = ' (' . $filter_value . ')';*/
     } elseif ($filter_value = $this->get_filter('catalog')) {
         // Get the catalog title
         $catalog = Catalog::create_from_id($filter_value);
         $match = ' (' . $catalog->name . ')';
     }
     $type = $this->get_type();
     // Set the correct classes based on type
     $class = "box browse_" . $type;
     debug_event('browse', 'Called for type {' . $type . '}', '5');
     // Switch on the type of browsing we're doing
     switch ($type) {
         case 'song':
             $box_title = T_('Songs') . $match;
             Song::build_cache($object_ids);
             $box_req = AmpConfig::get('prefix') . '/templates/show_songs.inc.php';
             break;
         case 'album':
             $box_title = T_('Albums') . $match;
             Album::build_cache($object_ids);
             $allow_group_disks = $argument;
             $box_req = AmpConfig::get('prefix') . '/templates/show_albums.inc.php';
             break;
         case 'user':
             $box_title = T_('Manage Users') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_users.inc.php';
             break;
         case 'artist':
             $box_title = T_('Artists') . $match;
             Artist::build_cache($object_ids, 'extra');
             $box_req = AmpConfig::get('prefix') . '/templates/show_artists.inc.php';
             break;
         case 'live_stream':
             require_once AmpConfig::get('prefix') . '/templates/show_live_stream.inc.php';
             $box_title = T_('Radio Stations') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_live_streams.inc.php';
             break;
         case 'playlist':
             Playlist::build_cache($object_ids);
             $box_title = T_('Playlists') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_playlists.inc.php';
             break;
         case 'playlist_song':
             $box_title = T_('Playlist Songs') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_playlist_songs.inc.php';
             break;
         case 'playlist_localplay':
             $box_title = T_('Current Playlist');
             $box_req = AmpConfig::get('prefix') . '/templates/show_localplay_playlist.inc.php';
             UI::show_box_bottom();
             break;
         case 'smartplaylist':
             $box_title = T_('Smart Playlists') . $match;
             $box_req = AmpConfig::get('prefix') . '/templates/show_smartplaylists.inc.php';
             break;
         case 'catalog':
             $box_title = T_('Catalogs');
             $box_req = AmpConfig::get('prefix') . '/templates/show_catalogs.inc.php';
             break;
         case 'shoutbox':
             $box_title = T_('Shoutbox Records');
             $box_req = AmpConfig::get('prefix') . '/templates/show_manage_shoutbox.inc.php';
             break;
         case 'tag':
             Tag::build_cache($object_ids);
             $box_title = T_('Tag Cloud');
             $box_req = AmpConfig::get('prefix') . '/templates/show_tagcloud.inc.php';
             break;
         case 'video':
             Video::build_cache($object_ids);
             $box_title = T_('Videos');
             $box_req = AmpConfig::get('prefix') . '/templates/show_videos.inc.php';
             break;
         case 'democratic':
             $box_title = T_('Democratic Playlist');
             $box_req = AmpConfig::get('prefix') . '/templates/show_democratic_playlist.inc.php';
             break;
         case 'wanted':
             $box_title = T_('Wanted Albums');
             $box_req = AmpConfig::get('prefix') . '/templates/show_wanted_albums.inc.php';
             break;
         case 'share':
             $box_title = T_('Shared Objects');
             $box_req = AmpConfig::get('prefix') . '/templates/show_shared_objects.inc.php';
             break;
         case 'song_preview':
             $box_title = T_('Songs');
             $box_req = AmpConfig::get('prefix') . '/templates/show_song_previews.inc.php';
             break;
         case 'channel':
             $box_title = T_('Channels');
             $box_req = AmpConfig::get('prefix') . '/templates/show_channels.inc.php';
             break;
         case 'broadcast':
             $box_title = T_('Broadcasts');
             $box_req = AmpConfig::get('prefix') . '/templates/show_broadcasts.inc.php';
             break;
         default:
             // Rien a faire
             break;
     }
     // end switch on type
     Ajax::start_container('browse_content_' . $type, 'browse_content');
     if ($this->get_show_header()) {
         if (isset($box_req) && isset($box_title)) {
             UI::show_box_top($box_title, $class);
         }
     }
     if (isset($box_req)) {
         require $box_req;
     }
     if ($this->get_show_header()) {
         if (isset($box_req)) {
             UI::show_box_bottom();
         }
         echo '<script type="text/javascript">';
         echo Ajax::action('?page=browse&action=get_filters&browse_id=' . $this->id, '');
         echo ';</script>';
     } else {
         if (!$this->get_use_pages()) {
             $this->show_next_link();
         }
     }
     Ajax::end_container();
 }
Пример #14
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     // Prevent the script from timing out
     set_time_limit(0);
     if ($options != null) {
         $this->authcode = $options['authcode'];
     }
     UI::show_box_top(T_('Running Dropbox Remote Update') . '. . .');
     $this->update_remote_catalog();
     UI::show_box_bottom();
     return true;
 }
Пример #15
0
 /**
  * add_to_catalog
  * this function adds new files to an
  * existing catalog
  */
 public function add_to_catalog($options = null)
 {
     // Prevent the script from timing out
     set_time_limit(0);
     UI::show_box_top(T_('Running Subsonic Remote Update') . '. . .');
     $this->update_remote_catalog();
     UI::show_box_bottom();
     return true;
 }