本文整理汇总了PHP中Fisharebest\Webtrees\Functions\Functions::fetchLatestVersion方法的典型用法代码示例。如果您正苦于以下问题:PHP Functions::fetchLatestVersion方法的具体用法?PHP Functions::fetchLatestVersion怎么用?PHP Functions::fetchLatestVersion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fisharebest\Webtrees\Functions\Functions
的用法示例。
在下文中一共展示了Functions::fetchLatestVersion方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: executeSteps
/**
* {@inheritDoc}
* @see \MyArtJaub\Webtrees\Module\AdminTasks\Model\AbstractTask::executeSteps()
*/
protected function executeSteps()
{
$res = false;
// Get the number of days to take into account, either last 7 days or since last check
$interval_sincelast = 0;
if ($this->last_updated) {
$tmpInt = $this->last_updated->diff(new \DateTime('now'), true);
$interval_sincelast = ($tmpInt->days * 24 + $tmpInt->h) * 60 + $tmpInt->i;
}
$interval = max($this->frequency, $interval_sincelast);
$nbdays = ceil($interval / (24 * 60));
// Check for updates
$latest_version_txt = Functions::fetchLatestVersion();
if (preg_match('/^[0-9.]+\\|[0-9.]+\\|/', $latest_version_txt)) {
list($latest_version, , $download_url) = explode('|', $latest_version_txt);
} else {
// Cannot determine the latest version
list($latest_version, , $download_url) = explode('|', '||');
}
// Users statistics
$warnusers = 0;
$nverusers = 0;
$applusers = 0;
foreach (User::all() as $user) {
if (date("U") - (int) $user->getPreference('reg_timestamp') > 604800 && !$user->getPreference('verified')) {
$warnusers++;
}
if (!$user->getPreference('verified_by_admin') && $user->getPreference('verified')) {
$nverusers++;
}
if (!$user->getPreference('verified')) {
$applusers++;
}
}
// Tree specifics checks
$one_tree_done = false;
foreach (Tree::getAll() as $tree) {
$isTreeEnabled = $tree->getPreference('MAJ_AT_' . $this->getName() . '_ENABLED');
if ((is_null($isTreeEnabled) || $isTreeEnabled) && ($webmaster = User::find($tree->getPreference('WEBMASTER_USER_ID')))) {
I18N::init($webmaster->getPreference('language'));
$subject = I18N::translate('Health Check Report') . ' - ' . I18N::translate('Tree %s', $tree->getTitle());
$message = I18N::translate('Health Check Report for the last %d days', $nbdays) . Mail::EOL . Mail::EOL . I18N::translate('Tree %s', $tree->getTitle()) . Mail::EOL . '==========================================' . Mail::EOL . Mail::EOL;
// News
$message_version = '';
if ($latest_version && version_compare(WT_VERSION, $latest_version) < 0) {
$message_version = I18N::translate('News') . Mail::EOL . '-------------' . Mail::EOL . I18N::translate('A new version of *webtrees* is available: %s. Upgrade as soon as possible.', $latest_version) . Mail::EOL . I18N::translate('Download it here: %s.', $download_url) . Mail::EOL . Mail::EOL;
}
$message .= $message_version;
// Statistics users
$message_users = I18N::translate('Users') . Mail::EOL . '-------------' . Mail::EOL . WT_BASE_URL . 'admin_users.php' . Mail::EOL . I18N::translate('Total number of users') . "\t\t" . User::count() . Mail::EOL . I18N::translate('Not verified by the user') . "\t\t" . $applusers . Mail::EOL . I18N::translate('Not approved by an administrator') . "\t" . $nverusers . Mail::EOL . Mail::EOL;
$message .= $message_users;
// Statistics tree:
$stats = new Stats($tree);
$sql = 'SELECT ged_type AS type, COUNT(change_id) AS chgcount FROM wt_change' . ' JOIN (' . ' SELECT "indi" AS ged_type, i_id AS ged_id, i_file AS ged_file FROM wt_individuals' . ' UNION SELECT "fam" AS ged_type, f_id AS ged_id, f_file AS ged_file FROM wt_families' . ' UNION SELECT "sour" AS ged_type, s_id AS ged_id, s_file AS ged_file FROM wt_sources' . ' UNION SELECT "media" AS ged_type, m_id AS ged_id, m_file AS ged_file FROM wt_media' . ' UNION SELECT LOWER(o_type) AS ged_type, o_id AS ged_id, o_file AS ged_file FROM wt_other' . ') AS gedrecords ON (xref = ged_id AND gedcom_id = ged_file)' . ' WHERE change_time >= DATE_ADD( NOW(), INTERVAL - :nb_days DAY)' . ' AND status = :status AND gedcom_id = :gedcom_id' . ' GROUP BY ged_type';
$changes = Database::prepare($sql)->execute(array('status' => 'accepted', 'gedcom_id' => $tree->getTreeId(), 'nb_days' => $nbdays))->fetchAssoc();
$message_gedcom = I18N::translate('Tree statistics') . Mail::EOL . '-------------' . Mail::EOL . sprintf('%-25s', I18N::translate('Records')) . "\t" . sprintf('%15s', I18N::translate('Count')) . "\t" . sprintf('%15s', I18N::translate('Changes')) . Mail::EOL . sprintf('%-25s', I18N::translate('Individuals')) . "\t" . sprintf('%15s', $stats->totalIndividuals()) . "\t" . sprintf('%15s', isset($changes['indi']) ? $changes['indi'] : 0) . Mail::EOL . sprintf('%-25s', I18N::translate('Families')) . "\t" . sprintf('%15s', $stats->totalFamilies()) . "\t" . sprintf('%15s', isset($changes['fam']) ? $changes['fam'] : 0) . Mail::EOL . sprintf('%-25s', I18N::translate('Sources')) . "\t" . sprintf('%15s', $stats->totalSources()) . "\t" . sprintf('%15s', isset($changes['sour']) ? $changes['sour'] : 0) . Mail::EOL . sprintf('%-25s', I18N::translate('Repositories')) . "\t" . sprintf('%15s', $stats->totalRepositories()) . "\t" . sprintf('%15s', isset($changes['repo']) ? $changes['repo'] : 0) . Mail::EOL . sprintf('%-25s', I18N::translate('Media objects')) . "\t" . sprintf('%15s', $stats->totalMedia()) . "\t" . sprintf('%15s', isset($changes['media']) ? $changes['media'] : 0) . Mail::EOL . sprintf('%-25s', I18N::translate('Notes')) . "\t" . sprintf('%15s', $stats->totalNotes()) . "\t" . sprintf('%15s', isset($changes['note']) ? $changes['note'] : 0) . Mail::EOL . Mail::EOL;
$message .= $message_gedcom;
//Errors
$sql = 'SELECT SQL_CACHE log_message, gedcom_id, COUNT(log_id) as nblogs, MAX(log_time) as lastoccurred' . ' FROM `##log`' . ' WHERE log_type = :log_type AND (gedcom_id = :gedcom_id OR ISNULL(gedcom_id))' . ' AND log_time >= DATE_ADD( NOW(), INTERVAL - :nb_days DAY)' . ' GROUP BY log_message, gedcom_id' . ' ORDER BY lastoccurred DESC';
$errors = Database::prepare($sql)->execute(array('log_type' => Log::TYPE_ERROR, 'gedcom_id' => $tree->getTreeId(), 'nb_days' => $nbdays))->fetchAll();
$nb_errors = 0;
$tmp_message = '';
$nb_char_count_title = strlen(I18N::translate('Count'));
$nb_char_type = max(strlen(I18N::translate('Type')), strlen(I18N::translate('Site')), strlen(I18N::translate('Tree')));
foreach ($errors as $error) {
$tmp_message .= sprintf('%' . $nb_char_count_title . 'd', $error->nblogs) . "\t";
$tmp_message .= sprintf('%' . $nb_char_type . 's', is_null($error->gedcom_id) ? I18N::translate('Site') : I18N::translate('Tree'));
$tmp_message .= "\t" . sprintf('%20s', $error->lastoccurred) . "\t";
$tmp_message .= str_replace("\n", "\n\t\t\t\t\t\t", $error->log_message) . Mail::EOL;
$nb_errors += $error->nblogs;
}
if ($nb_errors > 0) {
$message .= I18N::translate('Errors [%d]', $nb_errors) . Mail::EOL . '-------------' . Mail::EOL . WT_BASE_URL . 'admin_site_logs.php' . Mail::EOL . I18N::translate('Count') . "\t" . sprintf('%-' . $nb_char_type . 's', I18N::translate('Type')) . "\t" . sprintf('%-20s', I18N::translate('Last occurrence')) . "\t" . I18N::translate('Error') . Mail::EOL . str_repeat('-', $nb_char_count_title) . "\t" . str_repeat('-', $nb_char_type) . "\t" . str_repeat('-', 20) . "\t" . str_repeat('-', strlen(I18N::translate('Error'))) . Mail::EOL . $tmp_message . Mail::EOL;
} else {
$message .= I18N::translate('No errors', $nb_errors) . Mail::EOL . Mail::EOL;
}
$tmpres = true;
if ($webmaster->getPreference('contactmethod') !== 'messaging' && $webmaster->getPreference('contactmethod') !== 'none') {
$tmpres = Mail::systemMessage($tree, $webmaster, $subject, $message);
}
$res = $tmpres && (!$one_tree_done || $one_tree_done && $res);
$one_tree_done = true;
}
}
return $res;
}
示例2: failed
Log::addAuthenticationLog('Login failed (not verified by user): ' . $username);
throw new \Exception(I18N::translate('This account has not been verified. Please check your email for a verification message.'));
}
if (!$user->getPreference('verified_by_admin')) {
Log::addAuthenticationLog('Login failed (not approved by admin): ' . $username);
throw new \Exception(I18N::translate('This account has not been approved. Please wait for an administrator to approve it.'));
}
Auth::login($user);
Log::addAuthenticationLog('Login: ' . Auth::user()->getUserName() . '/' . Auth::user()->getRealName());
Auth::user()->setPreference('sessiontime', WT_TIMESTAMP);
Session::put('locale', Auth::user()->getPreference('language'));
Session::put('theme_id', Auth::user()->getPreference('theme'));
// We're logging in as an administrator
if (Auth::isAdmin()) {
// Check for updates
$latest_version_txt = Functions::fetchLatestVersion();
if (preg_match('/^[0-9.]+\\|[0-9.]+\\|/', $latest_version_txt)) {
list($latest_version, $earliest_version, $download_url) = explode('|', $latest_version_txt);
if (version_compare(WT_VERSION, $latest_version) < 0) {
FlashMessages::addMessage(I18N::translate('A new version of webtrees is available.') . ' <a href="admin_site_upgrade.php"><b>' . I18N::translate('Upgrade to webtrees %s.', '<span dir="ltr">' . $latest_version . '</span>') . '</b></a>');
}
}
}
// If we were on a "home page", redirect to "my page"
if ($url === '' || strpos($url, 'index.php?ctype=gedcom') === 0) {
$url = 'index.php?ctype=user';
// Switch to a tree where we have a genealogy record (or keep to the current/default).
$tree = Database::prepare("SELECT gedcom_name FROM `##gedcom` JOIN `##user_gedcom_setting` USING (gedcom_id)" . " WHERE setting_name = 'gedcomid' AND user_id = :user_id")->execute(array('user_id' => Auth::user()->getUserId()))->fetchOne();
$url .= '&ged=' . Filter::escapeUrl($tree);
}
// Redirect to the target URL
示例3: AjaxController
$action = Filter::get('action');
// The default view depends on whether we are logged in
if (Auth::check()) {
$ctype = Filter::get('ctype', 'gedcom|user', 'user');
} else {
$ctype = 'gedcom';
}
// Get the blocks list
if ($ctype === 'user') {
$blocks = FunctionsDb::getUserBlocks(Auth::id());
} else {
$blocks = FunctionsDb::getTreeBlocks($WT_TREE->getTreeId());
}
$active_blocks = Module::getActiveBlocks($WT_TREE);
// The latest version is shown on the administration page. This updates it every day.
Functions::fetchLatestVersion();
// We generate individual blocks using AJAX
if ($action === 'ajax') {
$controller = new AjaxController();
$controller->pageHeader();
// Check we’re displaying an allowable block.
$block_id = Filter::getInteger('block_id');
if (array_key_exists($block_id, $blocks['main'])) {
$module_name = $blocks['main'][$block_id];
} elseif (array_key_exists($block_id, $blocks['side'])) {
$module_name = $blocks['side'][$block_id];
} else {
return;
}
if (array_key_exists($module_name, $active_blocks)) {
echo $active_blocks[$module_name]->getBlock($block_id);