blog->settings->addNamespace('dcLatestVersions'); $core->addBehavior( 'initWidgets', array('dcLatestVersionsWidget', 'adminWidget') ); /** * @ingroup DC_PLUGIN_DCLATESTVERSIONS * @brief Display latest versions of Dotclear - widget methods. * @since 2.6 */ class dcLatestVersionsWidget { public static function adminWidget($w) { $w->create( 'dclatestversionswidget', __("Dotclear's latest versions"), array('dcLatestVersionsWidget','publicWidget'), null, __("Show the latest available versions of Dotclear") ); $w->dclatestversionswidget->setting( 'title', __('Title:'), __("Dotclear's latest versions"), 'text' ); $w->dclatestversionswidget->setting( 'text', __('Text (%r = release, %v = version, %u = url):'), __('%r: %v'), 'text' ); $w->dclatestversionswidget->setting( 'homeonly', __('Display on:'), 0, 'combo', array( __('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2 ) ); $w->dclatestversionswidget->setting( 'content_only', __('Content only'), 0, 'check' ); $w->dclatestversionswidget->setting( 'class', __('CSS class:'), '' ); $w->dclatestversionswidget->setting('offline',__('Offline'),0,'check'); } public static function publicWidget($w) { global $core; $core->blog->settings->addNamespace('dcLatestVersions'); if ($w->offline) return; # Nothing to display if ($w->homeonly == 1 && $core->url->type != 'default' || $w->homeonly == 2 && $core->url->type == 'default' || $w->text == '' ) { return null; } # Builds to check $builds = (string) $core->blog->settings->dcLatestVersions->builds; $builds = explode(',', $builds); if (empty($builds)) { return null; } $li = array(); foreach($builds as $build) { $build = strtolower(trim($build)); if (empty($build)) { continue; } $updater = new dcUpdate( DC_UPDATE_URL, 'dotclear', $build, DC_TPL_CACHE.'/versions' ); if (false === $updater->check('0')) { continue; } $li[] = '
  • '.str_replace( array( '%r', '%v', '%u' ), array( $build, $updater->getVersion(), $updater->getFileURL() ), $w->text ).'
  • '; } if (empty($li)) { return null; } # Display $res = ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : ''). ''; return $w->renderDiv($w->content_only,'dclatestversionswidget '.$w->class,'',$res); } }