source: sipes/modules_contrib/feeds/feeds.pages.inc @ 1e95969

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

se agrego el directorio de modulos contribuidos de drupal

  • Propiedad mode establecida a 100755
File size: 5.7 KB
Línea 
1<?php
2
3/**
4 * @file
5 * Menu callbacks, form callbacks and helpers.
6 */
7
8/**
9 * Render a page of available importers.
10 */
11function feeds_page() {
12  $rows = array();
13  if ($importers = feeds_importer_load_all()) {
14    foreach ($importers as $importer) {
15      if ($importer->disabled) {
16        continue;
17      }
18      if (!(user_access('import '. $importer->id .' feeds') || user_access('administer feeds'))) {
19        continue;
20      }
21      if (empty($importer->config['content_type'])) {
22        $link = 'import/'. $importer->id;
23        $title = $importer->config['name'];
24      }
25      elseif (node_access('create', $importer->config['content_type'])) {
26        $link = 'node/add/'. str_replace('_', '-', $importer->config['content_type']);
27        $title = node_get_types('name', $importer->config['content_type']);
28      }
29      else {
30        continue;
31      }
32      $rows[] = array(
33        l($title, $link),
34        check_plain($importer->config['description']),
35      );
36    }
37  }
38  if (empty($rows)) {
39    drupal_set_message(t('There are no importers, go to <a href="@importers">Feed importers</a> to create one or enable an existing one.', array('@importers' => url('admin/build/feeds'))));
40  }
41  $header = array(
42    t('Import'),
43    t('Description'),
44  );
45  return theme('table', $header, $rows);
46}
47
48/**
49 * Render a feeds import form on import/[config] pages.
50 */
51function feeds_import_form(&$form_state, $importer_id) {
52  $source = feeds_source($importer_id, empty($form['nid']['#value']) ? 0 : $form['nid']['#value']);
53
54  $form = array();
55  $form['#importer_id'] = $importer_id;
56  // @todo Move this into fetcher?
57  $form['#attributes']['enctype'] = 'multipart/form-data';
58  $form['feeds'] = array(
59    '#type' => 'fieldset',
60    '#tree' => TRUE,
61  );
62  $form['feeds'] += $source->configForm($form_state);
63  $form['submit'] = array(
64    '#type' => 'submit',
65    '#value' => t('Import'),
66  );
67  return $form;
68}
69
70/**
71 * Validation handler for node forms and feeds_import_form().
72 */
73function feeds_import_form_validate($form, &$form_state) {
74  // @todo This may be a problem here, as we don't have a feed_nid at this point.
75  feeds_source($form['#importer_id'])->configFormValidate($form_state['values']['feeds']);
76}
77
78/**
79 * Submit handler for feeds_import_form().
80 */
81function feeds_import_form_submit($form, &$form_state) {
82
83  // Save source and import.
84  $source = feeds_source($form['#importer_id']);
85  $source->addConfig($form_state['values']['feeds']);
86  $source->save();
87
88  // Refresh feed if import on create is selected.
89  if ($source->importer->config['import_on_create']) {
90    feeds_batch_set(t('Importing'), 'import', $form['#importer_id']);
91  }
92
93  // Add to schedule, make sure importer is scheduled, too.
94  $source->schedule();
95  $source->importer->schedule();
96}
97
98/**
99 * Render a feeds import form on node/id/import pages.
100 */
101function feeds_import_tab_form(&$form_state, $node) {
102  $importer_id = feeds_get_importer_id($node->type);
103
104  $form = array();
105  $form['#feed_nid'] = $node->nid;
106  $form['#importer_id'] = $importer_id;
107  $form['#redirect'] = 'node/'. $node->nid;
108  return confirm_form($form, t('Import all content from feed?'), 'node/'. $node->nid, '', t('Import'), t('Cancel'), 'confirm feeds update');
109}
110
111/**
112 * Submit handler for feeds_import_tab_form().
113 */
114function feeds_import_tab_form_submit($form, &$form_state) {
115  $form_state['redirect'] = $form['#redirect'];
116  feeds_batch_set(t('Importing'), 'import', $form['#importer_id'], $form['#feed_nid']);
117}
118
119/**
120 * Render a feeds delete form.
121 *
122 * Used on both node pages and configuration pages.
123 * Therefore $node may be missing.
124 */
125function feeds_delete_tab_form(&$form_state, $importer_id, $node = NULL) {
126  if (empty($node)) {
127    $form['#redirect'] = 'import/'. $importer_id;
128  }
129  else {
130    $importer_id = feeds_get_importer_id($node->type);
131    $form['#feed_nid'] = $node->nid;
132    $form['#redirect'] = 'node/'. $node->nid;
133  }
134  // Form cannot pass on feed object.
135  $form['#importer_id'] = $importer_id;
136  return confirm_form($form, t('Delete all items from feed?'), $form['#redirect'], '', t('Delete'), t('Cancel'), 'confirm feeds update');
137}
138
139/**
140 * Submit handler for feeds_delete_tab_form().
141 */
142function feeds_delete_tab_form_submit($form, &$form_state) {
143  $form_state['redirect'] = $form['#redirect'];
144  $feed_nid = empty($form['#feed_nid']) ? 0 : $form['#feed_nid'];
145  feeds_batch_set(t('Deleting'), 'clear', $form['#importer_id'], $feed_nid);
146}
147
148/**
149 * Handle a fetcher callback.
150 */
151function feeds_fetcher_callback($importer, $feed_nid = 0) {
152  if ($importer instanceof FeedsImporter) {
153    try {
154      return $importer->fetcher->request($feed_nid);
155    }
156    catch (Exception $e) {
157      // Do nothing.
158    }
159  }
160  drupal_access_denied();
161}
162
163/**
164 * Theme upload widget.
165 */
166function theme_feeds_upload($element) {
167  drupal_add_css(drupal_get_path('module', 'feeds') .'/feeds.css');
168  _form_set_class($element, array('form-file'));
169  $output = '';
170  if (!empty($element['#file_info'])) {
171    $info = $element['#file_info'];
172    $output .= '<div class="file-info">';
173    $output .= '<div class="file-name">';
174    $output .= l(basename($info['path']), $info['path']);
175    $output .= '</div>';
176    $output .= '<div class="file-size">';
177    $output .= format_size($info['size']);
178    $output .= '</div>';
179    if (isset($info['mime'])) {
180      $output .= '<div class="file-mime">';
181      $output .= check_plain($info['mime']);
182      $output .= '</div>';
183    }
184    $output .= '</div>';
185  }
186  $output .= '<div class="file-upload">';
187  $output .= '<input type="file" name="'. $element['#name'] .'"'. ($element['#attributes'] ? ' '. drupal_attributes($element['#attributes']) : '') .' id="'. $element['#id'] .'" size="'. $element['#size'] ."\" />\n";
188  $output .= '</div>';
189  return theme('form_element', $element, $output);
190}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.