diff options
Diffstat (limited to 'lib/plugins/popularity')
24 files changed, 513 insertions, 205 deletions
diff --git a/lib/plugins/popularity/action.php b/lib/plugins/popularity/action.php new file mode 100644 index 000000000..bf11efba6 --- /dev/null +++ b/lib/plugins/popularity/action.php @@ -0,0 +1,57 @@ +<?php +/** + * Popularity Feedback Plugin + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + */ + +require_once(DOKU_PLUGIN.'action.php'); +require_once(DOKU_PLUGIN.'popularity/admin.php'); + +class action_plugin_popularity extends Dokuwiki_Action_Plugin { + var $helper; + + function action_plugin_popularity(){ + $this->helper = $this->loadHelper('popularity', false); + } + + /** + * Register its handlers with the dokuwiki's event controller + */ + function register(&$controller) { + $controller->register_hook('INDEXER_TASKS_RUN', 'AFTER', $this, '_autosubmit', array()); + } + + function _autosubmit(&$event, $param){ + //Do we have to send the data now + if ( !$this->helper->isAutosubmitEnabled() || $this->_isTooEarlyToSubmit() ){ + return; + } + + //Actually send it + $status = $this->helper->sendData( $this->helper->gatherAsString() ); + + + if ( $status !== '' ){ + //If an error occured, log it + io_saveFile( $this->helper->autosubmitErrorFile, $status ); + } else { + //If the data has been sent successfully, previous log of errors are useless + @unlink($this->helper->autosubmitErrorFile); + //Update the last time we sent data + touch ( $this->helper->autosubmitFile ); + } + + $event->stopPropagation(); + $event->preventDefault(); + } + + /** + * Check if it's time to send autosubmit data + * (we should have check if autosubmit is enabled first) + */ + function _isTooEarlyToSubmit(){ + $lastSubmit = $this->helper->lastSentTime(); + return $lastSubmit + 24*60*60*30 > time(); + } +} diff --git a/lib/plugins/popularity/admin.php b/lib/plugins/popularity/admin.php index 71ea40799..40c3f5452 100644 --- a/lib/plugins/popularity/admin.php +++ b/lib/plugins/popularity/admin.php @@ -13,21 +13,15 @@ if(!defined('DOKU_INC')) die(); * need to inherit from this class */ class admin_plugin_popularity extends DokuWiki_Admin_Plugin { - var $version = '2010-09-17'; + var $version; + var $helper; + var $sentStatus = null; + function admin_plugin_popularity(){ + $this->helper = $this->loadHelper('popularity', false); - /** - * return some info - */ - function getInfo(){ - return array( - 'author' => 'Andreas Gohr', - 'email' => 'andi@splitbrain.org', - 'date' => $this->version, - 'name' => 'Popularity Feedback Plugin', - 'desc' => 'Send anonymous data about your wiki to the developers.', - 'url' => 'http://www.dokuwiki.org/plugin:popularity', - ); + $pluginInfo = $this->getInfo(); + $this->version = $pluginInfo['date']; } /** @@ -56,204 +50,99 @@ class admin_plugin_popularity extends DokuWiki_Admin_Plugin { * handle user request */ function handle() { + //Send the data + if ( isset($_REQUEST['data']) ){ + $this->sentStatus = $this->helper->sendData( $_REQUEST['data'] ); + if ( $this->sentStatus === '' ){ + //Update the last time we sent the data + touch ( $this->helper->popularityLastSubmitFile ); + } + //Deal with the autosubmit option + $this->_enableAutosubmit( isset($_REQUEST['autosubmit']) ); + } } /** - * Output HTML form + * Enable or disable autosubmit + * @param bool $enable If TRUE, it will enable autosubmit. Else, it will disable it. */ - function html() { - echo $this->locale_xhtml('intro'); - - flush(); - $data = $this->_gather(); - echo '<form method="post" action="http://update.dokuwiki.org/popularity.php" accept-charset="utf-8">'; - echo '<fieldset style="width: 60%;">'; - echo '<textarea class="edit" rows="10" cols="80" readonly="readonly" name="data">'; - foreach($data as $key => $val){ - if(is_array($val)) foreach($val as $v){ - echo hsc($key)."\t".hsc($v)."\n"; - }else{ - echo hsc($key)."\t".hsc($val)."\n"; - } + function _enableAutosubmit( $enable ){ + if ( $enable ){ + io_saveFile( $this->helper->autosubmitFile, ' '); + } else { + @unlink($this->helper->autosubmitFile); } - echo '</textarea><br />'; - echo '<input type="submit" class="button" value="'.$this->getLang('submit').'"/>'; - echo '</fieldset>'; - echo '</form>'; - -// dbg($data); } - /** - * Gather all information + * Output HTML form */ - function _gather(){ - global $conf; - global $auth; - $data = array(); - $phptime = ini_get('max_execution_time'); - @set_time_limit(0); - - // version - $data['anon_id'] = md5(auth_cookiesalt()); - $data['version'] = getVersion(); - $data['popversion'] = $this->version; - $data['language'] = $conf['lang']; - $data['now'] = time(); - - // some config values - $data['conf_useacl'] = $conf['useacl']; - $data['conf_authtype'] = $conf['authtype']; - $data['conf_template'] = $conf['template']; - - // number and size of pages - $list = array(); - search($list,$conf['datadir'],array($this,'_search_count'),'',''); - $data['page_count'] = $list['file_count']; - $data['page_size'] = $list['file_size']; - $data['page_biggest'] = $list['file_max']; - $data['page_smallest'] = $list['file_min']; - $data['page_nscount'] = $list['dir_count']; - $data['page_nsnest'] = $list['dir_nest']; - if($list['file_count']) $data['page_avg'] = $list['file_size'] / $list['file_count']; - $data['page_oldest'] = $list['file_oldest']; - unset($list); - - // number and size of media - $list = array(); - search($list,$conf['mediadir'],array($this,'_search_count'),array('all'=>true)); - $data['media_count'] = $list['file_count']; - $data['media_size'] = $list['file_size']; - $data['media_biggest'] = $list['file_max']; - $data['media_smallest'] = $list['file_min']; - $data['media_nscount'] = $list['dir_count']; - $data['media_nsnest'] = $list['dir_nest']; - if($list['file_count']) $data['media_avg'] = $list['file_size'] / $list['file_count']; - unset($list); - - // number and size of cache - $list = array(); - search($list,$conf['cachedir'],array($this,'_search_count'),array('all'=>true)); - $data['cache_count'] = $list['file_count']; - $data['cache_size'] = $list['file_size']; - $data['cache_biggest'] = $list['file_max']; - $data['cache_smallest'] = $list['file_min']; - if($list['file_count']) $data['cache_avg'] = $list['file_size'] / $list['file_count']; - unset($list); - - // number and size of index - $list = array(); - search($list,$conf['indexdir'],array($this,'_search_count'),array('all'=>true)); - $data['index_count'] = $list['file_count']; - $data['index_size'] = $list['file_size']; - $data['index_biggest'] = $list['file_max']; - $data['index_smallest'] = $list['file_min']; - if($list['file_count']) $data['index_avg'] = $list['file_size'] / $list['file_count']; - unset($list); - - // number and size of meta - $list = array(); - search($list,$conf['metadir'],array($this,'_search_count'),array('all'=>true)); - $data['meta_count'] = $list['file_count']; - $data['meta_size'] = $list['file_size']; - $data['meta_biggest'] = $list['file_max']; - $data['meta_smallest'] = $list['file_min']; - if($list['file_count']) $data['meta_avg'] = $list['file_size'] / $list['file_count']; - unset($list); - - // number and size of attic - $list = array(); - search($list,$conf['olddir'],array($this,'_search_count'),array('all'=>true)); - $data['attic_count'] = $list['file_count']; - $data['attic_size'] = $list['file_size']; - $data['attic_biggest'] = $list['file_max']; - $data['attic_smallest'] = $list['file_min']; - if($list['file_count']) $data['attic_avg'] = $list['file_size'] / $list['file_count']; - $data['attic_oldest'] = $list['file_oldest']; - unset($list); + function html() { + if ( ! isset($_REQUEST['data']) ){ + echo $this->locale_xhtml('intro'); + + //If there was an error the last time we tried to autosubmit, warn the user + if ( $this->helper->isAutoSubmitEnabled() ){ + if ( @file_exists($this->helper->autosubmitErrorFile) ){ + echo $this->getLang('autosubmitError'); + echo io_readFile( $this->helper->autosubmitErrorFile ); + } + } - // user count - if($auth && $auth->canDo('getUserCount')){ - $data['user_count'] = $auth->getUserCount(); - } + flush(); + echo $this->buildForm('server'); - // calculate edits per day - $list = @file($conf['metadir'].'/_dokuwiki.changes'); - $count = count($list); - if($count > 2){ - $first = (int) substr(array_shift($list),0,10); - $last = (int) substr(array_pop($list),0,10); - $dur = ($last - $first)/(60*60*24); // number of days in the changelog - $data['edits_per_day'] = $count/$dur; + //Print the last time the data was sent + $lastSent = $this->helper->lastSentTime(); + if ( $lastSent !== 0 ){ + echo $this->getLang('lastSent') . datetime_h($lastSent); + } + } else { + //If we just submitted the form + if ( $this->sentStatus === '' ){ + //If we successfully sent the data + echo $this->locale_xhtml('submitted'); + } else { + //If we failed to submit the data, try directly with the browser + echo $this->getLang('submissionFailed') . $this->sentStatus . '<br />'; + echo $this->getLang('submitDirectly'); + echo $this->buildForm('browser', $_REQUEST['data']); + } } - unset($list); - - // plugins - $data['plugin'] = plugin_list(); - - // pcre info - if(defined('PCRE_VERSION')) $data['pcre_version'] = PCRE_VERSION; - $data['pcre_backtrack'] = ini_get('pcre.backtrack_limit'); - $data['pcre_recursion'] = ini_get('pcre.recursion_limit'); - - // php info - $data['os'] = PHP_OS; - $data['webserver'] = $_SERVER['SERVER_SOFTWARE']; - $data['php_version'] = phpversion(); - $data['php_sapi'] = php_sapi_name(); - $data['php_memory'] = $this->_to_byte(ini_get('memory_limit')); - $data['php_exectime'] = $phptime; - $data['php_extension'] = get_loaded_extensions(); - - return $data; } - function _search_count(&$data,$base,$file,$type,$lvl,$opts){ - // traverse - if($type == 'd'){ - if($data['dir_nest'] < $lvl) $data['dir_nest'] = $lvl; - $data['dir_count']++; - return true; - } - - //only search txt files if 'all' option not set - if($opts['all'] || substr($file,-4) == '.txt'){ - $size = filesize($base.'/'.$file); - $date = filemtime($base.'/'.$file); - $data['file_count']++; - $data['file_size'] += $size; - if(!isset($data['file_min']) || $data['file_min'] > $size) $data['file_min'] = $size; - if($data['file_max'] < $size) $data['file_max'] = $size; - if(!isset($data['file_oldest']) || $data['file_oldest'] > $date) $data['file_oldest'] = $date; - } - - return false; - } - /** - * Convert php.ini shorthands to byte - * - * @author <gilthans dot NO dot SPAM at gmail dot com> - * @link http://de3.php.net/manual/en/ini.core.php#79564 + * Build the form which presents the data to be sent + * @param string $submit How is the data supposed to be sent? (may be: 'browser' or 'server') + * @param string $data The popularity data, if it has already been computed. NULL otherwise. + * @return The form, as an html string */ - function _to_byte($v){ - $l = substr($v, -1); - $ret = substr($v, 0, -1); - switch(strtoupper($l)){ - case 'P': - $ret *= 1024; - case 'T': - $ret *= 1024; - case 'G': - $ret *= 1024; - case 'M': - $ret *= 1024; - case 'K': - $ret *= 1024; - break; + function buildForm($submissionMode, $data = null){ + $url = ($submissionMode === 'browser' ? $this->helper->submitUrl : script()); + if ( is_null($data) ){ + $data = $this->helper->gatherAsString(); + } + + $form = '<form method="post" action="'. $url .'" accept-charset="utf-8">' + .'<fieldset style="width: 60%;">' + .'<textarea class="edit" rows="10" cols="80" readonly="readonly" name="data">' + .$data + .'</textarea><br />'; + + //If we submit via the server, we give the opportunity to suscribe to the autosubmission option + if ( $submissionMode !== 'browser' ){ + $form .= '<label for="autosubmit">' + .'<input type="checkbox" name="autosubmit" id="autosubmit" ' + .($this->helper->isAutosubmitEnabled() ? 'checked' : '' ) + .'/>' . $this->getLang('autosubmit') .'<br />' + .'</label>' + .'<input type="hidden" name="do" value="admin">' + .'<input type="hidden" name="page" value="popularity">'; } - return $ret; + $form .= '<input type="submit" class="button" value="'.$this->getLang('submit').'"/>' + .'</fieldset>' + .'</form>'; + return $form; } } diff --git a/lib/plugins/popularity/helper.php b/lib/plugins/popularity/helper.php new file mode 100644 index 000000000..629d0bd67 --- /dev/null +++ b/lib/plugins/popularity/helper.php @@ -0,0 +1,291 @@ +<?php +/** + * Popularity Feedback Plugin + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + */ + +class helper_plugin_popularity extends Dokuwiki_Plugin { + /** + * The url where the data should be sent + */ + var $submitUrl = 'http://update.dokuwiki.org/popularity.php'; + + /** + * Name of the file which determine if the the autosubmit is enabled, + * and when it was submited for the last time + */ + var $autosubmitFile; + + /** + * File where the last error which happened when we tried to autosubmit, will be log + */ + var $autosubmitErrorFile; + + /** + * Name of the file which determine when the popularity data was manually + * submitted for the last time + * (If this file doesn't exist, the data has never been sent) + */ + var $popularityLastSubmitFile; + + + function helper_plugin_popularity(){ + global $conf; + $this->autosubmitFile = $conf['cachedir'].'/autosubmit.txt'; + $this->autosubmitErrorFile = $conf['cachedir'].'/autosubmitError.txt'; + $this->popularityLastSubmitFile = $conf['cachedir'].'/lastSubmitTime.txt'; + } + + function getMethods(){ + $result = array(); + $result[] = array( + 'name' => 'isAutoSubmitEnabled', + 'desc' => 'Check if autosubmit is enabled', + 'params' => array(), + 'return' => array('result' => 'bool') + ); + $result[] = array( + 'name' => 'sendData', + 'desc' => 'Send the popularity data', + 'params' => array('data' => 'string'), + 'return' => array() + ); + $result[] = array( + 'name' => 'gatherAsString', + 'desc' => 'Gather the popularity data', + 'params' => array(), + 'return' => array('data' => 'string') + ); + $result[] = array( + 'name' => 'lastSentTime', + 'desc' => 'Compute the last time popularity data was sent', + 'params' => 'array()', + 'return' => array('data' => 'int') + ); + return $result; + + } + + /** + * Check if autosubmit is enabled + * @return TRUE if we should send data once a month, FALSE otherwise + */ + function isAutoSubmitEnabled(){ + return @file_exists($this->autosubmitFile); + } + + /** + * Send the data, to the submit url + * @param string $data The popularity data + * @return An empty string if everything worked fine, a string describing the error otherwise + */ + function sendData($data){ + $error = ''; + $httpClient = new DokuHTTPClient(); + $status = $httpClient->sendRequest($this->submitUrl, $data, 'POST'); + if ( ! $status ){ + $error = $httpClient->error; + } + return $error; + } + + /** + * Compute the last time the data was sent. If it has never been sent, we return 0. + */ + function lastSentTime(){ + $manualSubmission = @filemtime($this->popularityLastSubmitFile); + $autoSubmission = @filemtime($this->autosubmitFile); + + return max((int) $manualSubmission, (int) $autoSubmission); + } + + /** + * Gather all information + * @return The popularity data as a string + */ + function gatherAsString(){ + $data = $this->_gather(); + $string = ''; + foreach($data as $key => $val){ + if(is_array($val)) foreach($val as $v){ + $string .= hsc($key)."\t".hsc($v)."\n"; + }else{ + $string .= hsc($key)."\t".hsc($val)."\n"; + } + } + return $string; + } + + /** + * Gather all information + * @return The popularity data as an array + */ + function _gather(){ + global $conf; + global $auth; + $data = array(); + $phptime = ini_get('max_execution_time'); + @set_time_limit(0); + + // version + $data['anon_id'] = md5(auth_cookiesalt()); + $data['version'] = getVersion(); + $data['popversion'] = $this->version; + $data['language'] = $conf['lang']; + $data['now'] = time(); + + // some config values + $data['conf_useacl'] = $conf['useacl']; + $data['conf_authtype'] = $conf['authtype']; + $data['conf_template'] = $conf['template']; + + // number and size of pages + $list = array(); + search($list,$conf['datadir'],array($this,'_search_count'),'',''); + $data['page_count'] = $list['file_count']; + $data['page_size'] = $list['file_size']; + $data['page_biggest'] = $list['file_max']; + $data['page_smallest'] = $list['file_min']; + $data['page_nscount'] = $list['dir_count']; + $data['page_nsnest'] = $list['dir_nest']; + if($list['file_count']) $data['page_avg'] = $list['file_size'] / $list['file_count']; + $data['page_oldest'] = $list['file_oldest']; + unset($list); + + // number and size of media + $list = array(); + search($list,$conf['mediadir'],array($this,'_search_count'),array('all'=>true)); + $data['media_count'] = $list['file_count']; + $data['media_size'] = $list['file_size']; + $data['media_biggest'] = $list['file_max']; + $data['media_smallest'] = $list['file_min']; + $data['media_nscount'] = $list['dir_count']; + $data['media_nsnest'] = $list['dir_nest']; + if($list['file_count']) $data['media_avg'] = $list['file_size'] / $list['file_count']; + unset($list); + + // number and size of cache + $list = array(); + search($list,$conf['cachedir'],array($this,'_search_count'),array('all'=>true)); + $data['cache_count'] = $list['file_count']; + $data['cache_size'] = $list['file_size']; + $data['cache_biggest'] = $list['file_max']; + $data['cache_smallest'] = $list['file_min']; + if($list['file_count']) $data['cache_avg'] = $list['file_size'] / $list['file_count']; + unset($list); + + // number and size of index + $list = array(); + search($list,$conf['indexdir'],array($this,'_search_count'),array('all'=>true)); + $data['index_count'] = $list['file_count']; + $data['index_size'] = $list['file_size']; + $data['index_biggest'] = $list['file_max']; + $data['index_smallest'] = $list['file_min']; + if($list['file_count']) $data['index_avg'] = $list['file_size'] / $list['file_count']; + unset($list); + + // number and size of meta + $list = array(); + search($list,$conf['metadir'],array($this,'_search_count'),array('all'=>true)); + $data['meta_count'] = $list['file_count']; + $data['meta_size'] = $list['file_size']; + $data['meta_biggest'] = $list['file_max']; + $data['meta_smallest'] = $list['file_min']; + if($list['file_count']) $data['meta_avg'] = $list['file_size'] / $list['file_count']; + unset($list); + + // number and size of attic + $list = array(); + search($list,$conf['olddir'],array($this,'_search_count'),array('all'=>true)); + $data['attic_count'] = $list['file_count']; + $data['attic_size'] = $list['file_size']; + $data['attic_biggest'] = $list['file_max']; + $data['attic_smallest'] = $list['file_min']; + if($list['file_count']) $data['attic_avg'] = $list['file_size'] / $list['file_count']; + $data['attic_oldest'] = $list['file_oldest']; + unset($list); + + // user count + if($auth && $auth->canDo('getUserCount')){ + $data['user_count'] = $auth->getUserCount(); + } + + // calculate edits per day + $list = @file($conf['metadir'].'/_dokuwiki.changes'); + $count = count($list); + if($count > 2){ + $first = (int) substr(array_shift($list),0,10); + $last = (int) substr(array_pop($list),0,10); + $dur = ($last - $first)/(60*60*24); // number of days in the changelog + $data['edits_per_day'] = $count/$dur; + } + unset($list); + + // plugins + $data['plugin'] = plugin_list(); + + // pcre info + if(defined('PCRE_VERSION')) $data['pcre_version'] = PCRE_VERSION; + $data['pcre_backtrack'] = ini_get('pcre.backtrack_limit'); + $data['pcre_recursion'] = ini_get('pcre.recursion_limit'); + + // php info + $data['os'] = PHP_OS; + $data['webserver'] = $_SERVER['SERVER_SOFTWARE']; + $data['php_version'] = phpversion(); + $data['php_sapi'] = php_sapi_name(); + $data['php_memory'] = $this->_to_byte(ini_get('memory_limit')); + $data['php_exectime'] = $phptime; + $data['php_extension'] = get_loaded_extensions(); + + return $data; + } + + function _search_count(&$data,$base,$file,$type,$lvl,$opts){ + // traverse + if($type == 'd'){ + if($data['dir_nest'] < $lvl) $data['dir_nest'] = $lvl; + $data['dir_count']++; + return true; + } + + //only search txt files if 'all' option not set + if($opts['all'] || substr($file,-4) == '.txt'){ + $size = filesize($base.'/'.$file); + $date = filemtime($base.'/'.$file); + $data['file_count']++; + $data['file_size'] += $size; + if(!isset($data['file_min']) || $data['file_min'] > $size) $data['file_min'] = $size; + if($data['file_max'] < $size) $data['file_max'] = $size; + if(!isset($data['file_oldest']) || $data['file_oldest'] > $date) $data['file_oldest'] = $date; + } + + return false; + } + + /** + * Convert php.ini shorthands to byte + * + * @author <gilthans dot NO dot SPAM at gmail dot com> + * @link http://de3.php.net/manual/en/ini.core.php#79564 + */ + function _to_byte($v){ + $l = substr($v, -1); + $ret = substr($v, 0, -1); + switch(strtoupper($l)){ + case 'P': + $ret *= 1024; + case 'T': + $ret *= 1024; + case 'G': + $ret *= 1024; + case 'M': + $ret *= 1024; + case 'K': + $ret *= 1024; + break; + } + return $ret; + } +} diff --git a/lib/plugins/popularity/lang/ar/lang.php b/lib/plugins/popularity/lang/ar/lang.php index c0e7dc6af..b2581294a 100644 --- a/lib/plugins/popularity/lang/ar/lang.php +++ b/lib/plugins/popularity/lang/ar/lang.php @@ -7,3 +7,8 @@ */ $lang['name'] = 'رد الشعبية (قد يأخذ بعض الوقت ليحمل)'; $lang['submit'] = 'أرسل البيانات'; +$lang['autosubmit'] = 'ارسل البيانات آليا كل شهر'; +$lang['submissionFailed'] = 'تعذر إرسال البيانات بسبب الخطأ التالي:'; +$lang['submitDirectly'] = 'يمكنك إرسال البيانات يدويا بارسال النموذج التالي.'; +$lang['autosubmitError'] = 'فشلت آخر محاولة للإرسال، بسبب الخطأ التالي:'; +$lang['lastSent'] = 'أرسلت البيانات'; diff --git a/lib/plugins/popularity/lang/ar/submitted.txt b/lib/plugins/popularity/lang/ar/submitted.txt new file mode 100644 index 000000000..085e3bd98 --- /dev/null +++ b/lib/plugins/popularity/lang/ar/submitted.txt @@ -0,0 +1,3 @@ +====== رد الشعبية ====== + +أرسلت البيانات بنجاح.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/cs/intro.txt b/lib/plugins/popularity/lang/cs/intro.txt index 70cf1a42c..4b386568a 100644 --- a/lib/plugins/popularity/lang/cs/intro.txt +++ b/lib/plugins/popularity/lang/cs/intro.txt @@ -1,6 +1,6 @@ ===== Průzkum používání ===== -Tento nástroj jednorázově shromáží anonymní data o vaší wiki a umožní vám odeslat je vývojářům DokuWiki. To jim pomůže lépe porozumět, jak uživatelé DokuWiki používají, a jejich rozhodnutí při dalším vývoji budou založena na statistikách z reálného používání DokuWiki. +Tento nástroj jednorázově shromáždí anonymní data o vaší wiki a umožní vám odeslat je vývojářům DokuWiki. To jim pomůže lépe porozumět, jak uživatelé DokuWiki používají, a jejich rozhodnutí při dalším vývoji budou založena na statistikách z reálného používání DokuWiki. Chcete-li pomoci vývojářům, čas od času, jak vaše wiki poroste, použijte tento nástroj. Vaše data budou pokaždé označena stejným anonymním identifikátorem. diff --git a/lib/plugins/popularity/lang/de-informal/lang.php b/lib/plugins/popularity/lang/de-informal/lang.php index 076b37115..f884ed690 100644 --- a/lib/plugins/popularity/lang/de-informal/lang.php +++ b/lib/plugins/popularity/lang/de-informal/lang.php @@ -6,6 +6,12 @@ * @author Juergen Schwarzer <jschwarzer@freenet.de> * @author Marcel Metz <marcel_metz@gmx.de> * @author Matthias Schulte <post@lupo49.de> + * @author Christian Wichmann <nospam@zone0.de> */ $lang['name'] = 'Popularitätsrückmeldung (kann eine Weile dauern, bis es fertig geladen wurde)'; $lang['submit'] = 'Sende Daten'; +$lang['autosubmit'] = 'Daten einmal im Monat automatisch senden'; +$lang['submissionFailed'] = 'Die Daten konnten aufgrund des folgenden Fehlers nicht gesendet werden: '; +$lang['submitDirectly'] = 'Du kannst die Daten durch Betätigung des Buttons manuell versenden.'; +$lang['autosubmitError'] = 'Beim letzten automatischen Versuch die Daten zu senden, ist folgender Fehler aufgetreten: '; +$lang['lastSent'] = 'Die Daten wurden gesendet'; diff --git a/lib/plugins/popularity/lang/de-informal/submitted.txt b/lib/plugins/popularity/lang/de-informal/submitted.txt new file mode 100644 index 000000000..e7b45b5b7 --- /dev/null +++ b/lib/plugins/popularity/lang/de-informal/submitted.txt @@ -0,0 +1,3 @@ +====== Popularitäts-Feedback ====== + +Die Daten wurden erfolgreich versandt.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/de/lang.php b/lib/plugins/popularity/lang/de/lang.php index 1372e9d8a..4649062f7 100644 --- a/lib/plugins/popularity/lang/de/lang.php +++ b/lib/plugins/popularity/lang/de/lang.php @@ -11,6 +11,13 @@ * @author Blitzi94@gmx.de * @author Robert Bogenschneider <robog@GMX.de> * @author Robert Bogenschneider <robog@gmx.de> + * @author Niels Lange <niels@boldencursief.nl> + * @author Christian Wichmann <nospam@zone0.de> */ $lang['name'] = 'Popularitäts-Feedback (Eventuell längere Ladezeit)'; $lang['submit'] = 'Daten senden'; +$lang['autosubmit'] = 'Daten einmal im Monat automatisch senden'; +$lang['submissionFailed'] = 'Die Daten konnten aufgrund des folgenden Fehlers nicht gesendet werden: '; +$lang['submitDirectly'] = 'Sie können die Daten durch Betätigung des Buttons manuell versenden.'; +$lang['autosubmitError'] = 'Beim letzten automatischen Versuch die Daten zu senden, ist folgender Fehler aufgetreten: '; +$lang['lastSent'] = 'Die Daten wurden gesendet'; diff --git a/lib/plugins/popularity/lang/de/submitted.txt b/lib/plugins/popularity/lang/de/submitted.txt new file mode 100644 index 000000000..e7b45b5b7 --- /dev/null +++ b/lib/plugins/popularity/lang/de/submitted.txt @@ -0,0 +1,3 @@ +====== Popularitäts-Feedback ====== + +Die Daten wurden erfolgreich versandt.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/en/lang.php b/lib/plugins/popularity/lang/en/lang.php index c9912b7ad..78a5e862c 100644 --- a/lib/plugins/popularity/lang/en/lang.php +++ b/lib/plugins/popularity/lang/en/lang.php @@ -1,4 +1,9 @@ <?php -$lang['name'] = 'Popularity Feedback (may take some time to load)'; -$lang['submit'] = 'Send Data'; +$lang['name'] = 'Popularity Feedback (may take some time to load)'; +$lang['submit'] = 'Send Data'; +$lang['autosubmit'] = 'Automatically send data once a month'; +$lang['submissionFailed'] = 'The data couldn\'t be sent due to the following error:'; +$lang['submitDirectly'] = 'You can send the data manually by submitting the following form.'; +$lang['autosubmitError'] = 'The last autosubmit failed, because of the following error: '; +$lang['lastSent'] = 'The data has been sent '; diff --git a/lib/plugins/popularity/lang/en/submitted.txt b/lib/plugins/popularity/lang/en/submitted.txt new file mode 100644 index 000000000..30f2784aa --- /dev/null +++ b/lib/plugins/popularity/lang/en/submitted.txt @@ -0,0 +1,3 @@ +====== Popularity Feedback ====== + +The data has been sent succesfully. diff --git a/lib/plugins/popularity/lang/es/lang.php b/lib/plugins/popularity/lang/es/lang.php index c76190c2c..6aa9a823d 100644 --- a/lib/plugins/popularity/lang/es/lang.php +++ b/lib/plugins/popularity/lang/es/lang.php @@ -19,3 +19,8 @@ */ $lang['name'] = 'Retroinformación (Feedback) plugin Popularity'; $lang['submit'] = 'Enviar datos'; +$lang['autosubmit'] = 'Enviar automáticamente datos una vez al mes'; +$lang['submissionFailed'] = 'Los datos no se pudo enviar debido al error siguiente:'; +$lang['submitDirectly'] = 'Puede enviar los datos de forma manual mediante la presentación de la siguiente forma.'; +$lang['autosubmitError'] = 'El último auto no pudo presentar, debido al error siguiente:'; +$lang['lastSent'] = 'Los datos se han enviado'; diff --git a/lib/plugins/popularity/lang/es/submitted.txt b/lib/plugins/popularity/lang/es/submitted.txt new file mode 100644 index 000000000..bb1754cdd --- /dev/null +++ b/lib/plugins/popularity/lang/es/submitted.txt @@ -0,0 +1,3 @@ +====== Retroinformación Popularity ====== + +Los datos se han enviado con éxito.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/he/lang.php b/lib/plugins/popularity/lang/he/lang.php index 024f94ae8..f619127cd 100644 --- a/lib/plugins/popularity/lang/he/lang.php +++ b/lib/plugins/popularity/lang/he/lang.php @@ -5,6 +5,7 @@ * @author Dotan Kamber <kamberd@yahoo.com> * @author Moshe Kaplan <mokplan@gmail.com> * @author Yaron Yogev <yaronyogev@gmail.com> + * @author Yaron Shahrabani <sh.yaron@gmail.com> */ $lang['name'] = 'משוב פופולריות (יתכן זמן טעינה ארוך)'; $lang['submit'] = 'שלח מידע'; diff --git a/lib/plugins/popularity/lang/ko/lang.php b/lib/plugins/popularity/lang/ko/lang.php index 3a28b1b0e..91d798a5f 100644 --- a/lib/plugins/popularity/lang/ko/lang.php +++ b/lib/plugins/popularity/lang/ko/lang.php @@ -6,6 +6,7 @@ * @author dongnak@gmail.com * @author Song Younghwan <purluno@gmail.com> * @author SONG Younghwan <purluno@gmail.com> + * @author Seung-Chul Yoo <dryoo@live.com> */ $lang['name'] = '인기도 조사 (불러오는데 시간이 걸릴 수 있습니다.)'; $lang['submit'] = '자료 보내기'; diff --git a/lib/plugins/popularity/lang/la/intro.txt b/lib/plugins/popularity/lang/la/intro.txt index 6f4ce8488..c3029caf4 100644 --- a/lib/plugins/popularity/lang/la/intro.txt +++ b/lib/plugins/popularity/lang/la/intro.txt @@ -1,5 +1,10 @@ ====== Index Fauoris Popularis ====== -Haec machina fauorem popularem mittis sic ut creatores uicis meliorem illum facere possint. +Haoc instrumentum fauorem popularem mittis sic ut creatores uicis meliorem illum facere possint. + +Rursum te fauorem mittere experamus sic ut si mutationes meliores uel peiores esse uidere possimus. + +Res mittendae tua forma in usu, numerus et pondus paginarum et aliarum rerum, addenda in usu et de PHP. + +Res rudes mittendae subter ostenduntur. "Res mittere" premas ut eas transferas. -Rursum te fauorem mittere experamus sic ut si mutationes meliores uel peiores esse uidere possimus.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/la/lang.php b/lib/plugins/popularity/lang/la/lang.php index e634f9d41..c7f307c29 100644 --- a/lib/plugins/popularity/lang/la/lang.php +++ b/lib/plugins/popularity/lang/la/lang.php @@ -2,6 +2,12 @@ /** * Latin language file * + * @author Massimiliano Vassalli <vassalli.max@gmail.com> */ $lang['name'] = 'Index fauoris popularis (multum tempus quaerere potest)'; $lang['submit'] = 'Missum die'; +$lang['autosubmit'] = 'Constanter res omni mense mittuntur'; +$lang['submissionFailed'] = 'Res non mittuntur ea causa:'; +$lang['submitDirectly'] = 'Res tu mittere potes cum hoc exemplar compleas.'; +$lang['autosubmitError'] = 'Extrema missio lapsa est ea causa:'; +$lang['lastSent'] = 'Res missae sunt'; diff --git a/lib/plugins/popularity/lang/la/submitted.txt b/lib/plugins/popularity/lang/la/submitted.txt new file mode 100644 index 000000000..2b2faf439 --- /dev/null +++ b/lib/plugins/popularity/lang/la/submitted.txt @@ -0,0 +1,3 @@ +====== Index fauoris popularis ====== + +Res feliciter missae sunt.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/ru/intro.txt b/lib/plugins/popularity/lang/ru/intro.txt index 587a7ae85..e8118e4eb 100644 --- a/lib/plugins/popularity/lang/ru/intro.txt +++ b/lib/plugins/popularity/lang/ru/intro.txt @@ -1,10 +1,10 @@ ====== Сбор информации о популярности ====== -Этот инструмент собирает анонимные данные о вашей вики и позволяет вам отправить их разработчикам «ДокуВики». Эти данные помогут им понять то, как именно используется «ДокуВики», и удостовериться, что принимаемые проектные решения соответствуют жизненным реалиям. +Этот инструмент собирает анонимные данные о вашей вики и позволяет вам отправить их разработчикам «ДокуВики». Эти данные помогут им понять, как именно используется «ДокуВики», и удостовериться, что принимаемые проектные решения соответствуют жизненным реалиям. -Отправляйте данные время от времени для того, чтобы сообщить разработчикам о том, что ваша вики «подросла». Отправленные вами данные будут идентифицированы по анонимному ID. +Отправляйте данные время от времени для того, чтобы сообщать разработчикам о том, что ваша вики «подросла». Отправленные вами данные будут идентифицированы по анонимному ID. Собранные данные содержат такую информацию, как: версия «ДокуВики», количество и размер ваших страниц и файлов, установленные плагины, информацию об установленном PHP. -Данные, которые будут посланы, представлены ниже. Пожалуйста, используйте кнопку «Отправить данные», чтобы передать информацию. +Данные, которые будут отосланы, представлены ниже. Пожалуйста, используйте кнопку «Отправить данные», чтобы передать информацию. diff --git a/lib/plugins/popularity/lang/ru/lang.php b/lib/plugins/popularity/lang/ru/lang.php index df89c7022..b63558134 100644 --- a/lib/plugins/popularity/lang/ru/lang.php +++ b/lib/plugins/popularity/lang/ru/lang.php @@ -14,3 +14,8 @@ */ $lang['name'] = 'Сбор информации о популярности (для загрузки может потребоваться некоторое время)'; $lang['submit'] = 'Отправить данные'; +$lang['autosubmit'] = 'Автоматически отправлять данные один раз в месяц'; +$lang['submissionFailed'] = 'Данные не могут быть отправлены из-за ошибки:'; +$lang['submitDirectly'] = 'Вы можете отправлять данные вручную, заполнив форму:'; +$lang['autosubmitError'] = 'Последнее автоотправление данных не удалось из-за ошибки:'; +$lang['lastSent'] = 'Данные отправлены'; diff --git a/lib/plugins/popularity/lang/sl/lang.php b/lib/plugins/popularity/lang/sl/lang.php index befb1eec0..dc81ec060 100644 --- a/lib/plugins/popularity/lang/sl/lang.php +++ b/lib/plugins/popularity/lang/sl/lang.php @@ -4,5 +4,6 @@ * * @author Dejan Levec <webphp@gmail.com> * @author Boštjan Seničar <senicar@gmail.com> + * @author Gregor Skumavc (grega.skumavc@gmail.com) */ $lang['submit'] = 'Pošlji'; diff --git a/lib/plugins/popularity/lang/tr/lang.php b/lib/plugins/popularity/lang/tr/lang.php index 682b51218..fe87d1548 100644 --- a/lib/plugins/popularity/lang/tr/lang.php +++ b/lib/plugins/popularity/lang/tr/lang.php @@ -2,11 +2,10 @@ /** * Turkish language file * - * @author Aydın Coşkuner aydinweb@gmail.com * @author Aydın Coşkuner <aydinweb@gmail.com> - * @author yavuzselim@gmail.com - * @author Cihan Kahveci kahvecicihan@gmail.com + * @author Cihan Kahveci <kahvecicihan@gmail.com> * @author Yavuz Selim <yavuzselim@gmail.com> + * @author Caleb Maclennan <caleb@alerque.com> */ $lang['name'] = 'Popülerlik Geribeslemesi (yüklemesi uzun sürebilir)'; $lang['submit'] = 'Verileri Gönder'; diff --git a/lib/plugins/popularity/plugin.info.txt b/lib/plugins/popularity/plugin.info.txt new file mode 100644 index 000000000..2652bd669 --- /dev/null +++ b/lib/plugins/popularity/plugin.info.txt @@ -0,0 +1,7 @@ +base popularity +author Andreas Gohr +email andi@splitbrain.org +date 2010-12-09 +name Popularity Feedback Plugin +desc Send anonymous data about your wiki to the developers. +url http://www.dokuwiki.org/plugin:popularity |