source: sipes/cord/modules/update/update.report.inc @ 8a8efa8

stableversion-3.0
Last change on this file since 8a8efa8 was b354002, checked in by José Gregorio Puentes <jpuentes@…>, 8 años ago

se agrego el directorio del cord

  • Propiedad mode establecida a 100755
File size: 9.5 KB
Línea 
1<?php
2
3/**
4 * @file
5 * Code required only when rendering the available updates report.
6 */
7
8/**
9 * Menu callback. Generate a page about the update status of projects.
10 */
11function update_status() {
12  if ($available = update_get_available(TRUE)) {
13    module_load_include('inc', 'update', 'update.compare');
14    $data = update_calculate_project_data($available);
15    return theme('update_report', $data);
16  }
17  else {
18    return theme('update_report', _update_no_data());
19  }
20}
21
22/**
23 * Theme project status report.
24 *
25 * @ingroup themeable
26 */
27function theme_update_report($data) {
28  $last = variable_get('update_last_check', 0);
29  $output = '<div class="update checked">'. ($last ? t('Last checked: @time ago', array('@time' => format_interval(time() - $last))) : t('Last checked: never'));
30  $output .= ' <span class="check-manually">('. l(t('Check manually'), 'admin/reports/updates/check') .')</span>';
31  $output .= "</div>\n";
32
33  if (!is_array($data)) {
34    $output .= '<p>'. $data .'</p>';
35    return $output;
36  }
37
38  $header = array();
39  $rows = array();
40
41  $notification_level = variable_get('update_notification_threshold', 'all');
42
43  foreach ($data as $project) {
44    switch ($project['status']) {
45      case UPDATE_CURRENT:
46        $class = 'ok';
47        $icon = theme('image', 'misc/watchdog-ok.png', t('ok'), t('ok'));
48        break;
49      case UPDATE_UNKNOWN:
50      case UPDATE_NOT_FETCHED:
51        $class = 'unknown';
52        $icon = theme('image', 'misc/watchdog-warning.png', t('warning'), t('warning'));
53        break;
54      case UPDATE_NOT_SECURE:
55      case UPDATE_REVOKED:
56      case UPDATE_NOT_SUPPORTED:
57        $class = 'error';
58        $icon = theme('image', 'misc/watchdog-error.png', t('error'), t('error'));
59        break;
60      case UPDATE_NOT_CHECKED:
61      case UPDATE_NOT_CURRENT:
62      default:
63        $class = 'warning';
64        $icon = theme('image', 'misc/watchdog-warning.png', t('warning'), t('warning'));
65        break;
66    }
67
68    $row = '<div class="version-status">';
69    switch ($project['status']) {
70      case UPDATE_NOT_SECURE:
71        $row .= '<span class="security-error">'. t('Security update required!') .'</span>';
72        break;
73      case UPDATE_REVOKED:
74        $row .= '<span class="revoked">'. t('Revoked!') .'</span>';
75        break;
76      case UPDATE_NOT_SUPPORTED:
77        $row .= '<span class="not-supported">'. t('Not supported!') .'</span>';
78        break;
79      case UPDATE_NOT_CURRENT:
80        $row .= '<span class="not-current">'. t('Update available') .'</span>';
81        break;
82      case UPDATE_CURRENT:
83        $row .= '<span class="current">'. t('Up to date') .'</span>';
84        break;
85      default:
86        $row .= check_plain($project['reason']);
87        break;
88    }
89    $row .= '<span class="icon">'. $icon .'</span>';
90    $row .= "</div>\n";
91
92    $row .= '<div class="project">';
93    if (isset($project['title'])) {
94      if (isset($project['link'])) {
95        $row .= l($project['title'], $project['link']);
96      }
97      else {
98        $row .= check_plain($project['title']);
99      }
100    }
101    else {
102      $row .= check_plain($project['name']);
103    }
104    $row .= ' '. check_plain($project['existing_version']);
105    if ($project['install_type'] == 'dev' && !empty($project['datestamp'])) {
106      $row .= ' <span class="version-date">('. format_date($project['datestamp'], 'custom', 'Y-M-d') .')</span>';
107    }
108    $row .= "</div>\n";
109
110    $row .= "<div class=\"versions\">\n";
111
112    if (isset($project['recommended'])) {
113      if ($project['status'] != UPDATE_CURRENT || $project['existing_version'] !== $project['recommended']) {
114
115        // First, figure out what to recommend.
116        // If there's only 1 security update and it has the same version we're
117        // recommending, give it the same CSS class as if it was recommended,
118        // but don't print out a separate "Recommended" line for this project.
119        if (!empty($project['security updates']) && count($project['security updates']) == 1 && $project['security updates'][0]['version'] === $project['recommended']) {
120          $security_class = ' version-recommended version-recommended-strong';
121        }
122        else {
123          $security_class = '';
124          $version_class = 'version-recommended';
125          // Apply an extra class if we're displaying both a recommended
126          // version and anything else for an extra visual hint.
127          if ($project['recommended'] !== $project['latest_version']
128              || !empty($project['also'])
129              || ($project['install_type'] == 'dev'
130                 && isset($project['dev_version'])
131                 && $project['latest_version'] !== $project['dev_version']
132                 && $project['recommended'] !== $project['dev_version'])
133              || (isset($project['security updates'][0])
134                 && $project['recommended'] !== $project['security updates'][0])
135              ) {
136            $version_class .= ' version-recommended-strong';
137          }
138          $row .= theme('update_version', $project['releases'][$project['recommended']], t('Recommended version:'), $version_class);
139        }
140
141        // Now, print any security updates.
142        if (!empty($project['security updates'])) {
143          foreach ($project['security updates'] as $security_update) {
144            $row .= theme('update_version', $security_update, t('Security update:'), 'version-security'. $security_class);
145          }
146        }
147      }
148
149      if ($project['recommended'] !== $project['latest_version']) {
150        $row .= theme('update_version', $project['releases'][$project['latest_version']], t('Latest version:'), 'version-latest');
151      }
152      if ($project['install_type'] == 'dev'
153          && $project['status'] != UPDATE_CURRENT
154          && isset($project['dev_version'])
155          && $project['recommended'] !== $project['dev_version']) {
156        $row .= theme('update_version', $project['releases'][$project['dev_version']], t('Development version:'), 'version-latest');
157      }
158    }
159
160    if (isset($project['also'])) {
161      foreach ($project['also'] as $also) {
162        $row .= theme('update_version', $project['releases'][$also], t('Also available:'), 'version-also-available');
163      }
164    }
165
166    $row .= "</div>\n"; // versions div.
167
168    $row .= "<div class=\"info\">\n";
169    if (!empty($project['extra'])) {
170      $row .= '<div class="extra">'."\n";
171      foreach ($project['extra'] as $key => $value) {
172        $row .= '<div class="'. $value['class'] .'">';
173        $row .= check_plain($value['label']) .': ';
174        $row .= theme('placeholder', $value['data']);
175        $row .= "</div>\n";
176      }
177      $row .= "</div>\n";  // extra div.
178    }
179
180    $row .= '<div class="includes">';
181    sort($project['includes']);
182    $row .= t('Includes: %includes', array('%includes' => implode(', ', $project['includes'])));
183    $row .= "</div>\n";
184
185    if (!empty($project['base_themes'])) {
186      $row .= '<div class="basethemes">';
187      sort($project['base_themes']);
188      // We use !dependencies and manually call theme('placeholder') here to
189      // avoid breakding the D6 string freeze. This identical string is
190      // already in modules/system/system.admin.inc.
191      $row .= t('Depends on: !dependencies', array('!dependencies' => theme('placeholder', implode(', ', $project['base_themes']))));
192      $row .= "</div>\n";
193    }
194
195    if (!empty($project['sub_themes'])) {
196      $row .= '<div class="subthemes">';
197      sort($project['sub_themes']);
198      // We use !required and manually call theme('placeholder') here to avoid
199      // breakding the D6 string freeze. This identical string is already in
200      // modules/system/system.admin.inc.
201      $row .= t('Required by: !required', array('!required' => theme('placeholder', implode(', ', $project['sub_themes']))));
202      $row .= "</div>\n";
203    }
204
205    $row .= "</div>\n"; // info div.
206
207    if (!isset($rows[$project['project_type']])) {
208      $rows[$project['project_type']] = array();
209    }
210    $row_key = isset($project['title']) ? drupal_strtolower($project['title']) : drupal_strtolower($project['name']);
211    $rows[$project['project_type']][$row_key] = array(
212      'class' => $class,
213      'data' => array($row),
214    );
215  }
216
217  $project_types = array(
218    'core' => t('Drupal core'),
219    'module' => t('Modules'),
220    'theme' => t('Themes'),
221    'disabled-module' => t('Disabled modules'),
222    'disabled-theme' => t('Disabled themes'),
223  );
224  foreach ($project_types as $type_name => $type_label) {
225    if (!empty($rows[$type_name])) {
226      ksort($rows[$type_name]);
227      $output .= "\n<h3>". $type_label ."</h3>\n";
228      $output .= theme('table', $header, $rows[$type_name], array('class' => 'update'));
229    }
230  }
231  drupal_add_css(drupal_get_path('module', 'update') .'/update.css');
232  return $output;
233}
234
235/**
236 * Theme the version display of a project.
237 *
238 * @ingroup themeable
239 */
240function theme_update_version($version, $tag, $class) {
241  $output = '';
242  $output .= '<table class="version '. $class .'">';
243  $output .= '<tr>';
244  $output .= '<td class="version-title">'. $tag ."</td>\n";
245  $output .= '<td class="version-details">';
246  $output .= l($version['version'], $version['release_link']);
247  $output .= ' <span class="version-date">('. format_date($version['date'], 'custom', 'Y-M-d') .')</span>';
248  $output .= "</td>\n";
249  $output .= '<td class="version-links">';
250  $links = array();
251  $links['update-download'] = array(
252    'title' => t('Download'),
253    'href' => $version['download_link'],
254  );
255  $links['update-release-notes'] = array(
256    'title' => t('Release notes'),
257    'href' => $version['release_link'],
258  );
259  $output .= theme('links', $links);
260  $output .= '</td>';
261  $output .= '</tr>';
262  $output .= "</table>\n";
263  return $output;
264}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.