name] = array( '#type' => 'select', '#title' => t('Expire iCal cache'), '#default_value' => variable_get('calendar_ical_expire_' . $view->name, 9676800), '#options' => $period, '#description' => t('iCal feeds are cached to improve performance. Set an expiration time for cached feeds.') ); $empty_feed = array(0 => array('name' => '', 'url' => '', 'type' => 'ical', 'stripe' => 0)); $form[$view->name] = array( '#type' => 'fieldset', '#title' => t('iCal Feeds'), '#description' => t('Use this section to set up iCal feeds that should be displayed in this calendar. They will be shown along with any internal items that match the calendar criteria.'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#tree' => TRUE, ); // One empty input form will be added after any existing items. $view_feeds = array_merge((array) variable_get('calendar_feeds_' . $view->name, $empty_feed), $empty_feed); foreach ($view_feeds as $delta => $feed) { $form[$view->name][$delta] = array( 'type' => array( '#title' => t('Feed type'), '#type' => 'hidden', '#value' => 'ical', ), 'name' => array( '#title' => t('Name'), '#type' => 'textfield', '#default_value' => $feed['name'], '#description' => t('The name of a feed to include in this calendar.'), ), 'url' => array( '#title' => t('Url'), '#type' => 'textarea', '#rows' => 2, '#default_value' => $feed['url'], '#description' => t("The external feed url or internal file path and name. Change 'webcal://' to 'http://'."), ), 'calendar_colorpicker' => array( '#type' => 'calendar_colorpicker', '#title' => t('Stripe color'), ), 'stripe' => array( '#type' => 'calendar_colorfield', '#default_value' => isset($feed['stripe']) ? $feed['stripe'] : '#ffffff', '#calendar_colorpicker' => $view_name . '-' . $delta . '-calendar-colorpicker', '#description' => t("The hex color value (like #ffffff) to use for this feed's calendar stripe."), ), ); } $form['view_name'] = array( '#type' => 'hidden', '#value' => $view->name, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Save requested values. */ function calendar_ical_setup_form_submit($form_id, $form_values) { $view_name = $form_values['view_name']; foreach ($form_values as $value_name => $value) { if ($value_name == 'calendar_ical_expire_' . $view_name) { variable_set('calendar_ical_expire_' . $view_name, $value); } elseif (is_array($value)) { foreach ($value as $delta => $item) { // Don't save empty values. if (trim($item['url']) == '' || trim($item['name']) == '') { unset($value[$delta]); } else { // Replace 'webcal' protocol with http protocol. $item['url'] = str_replace('webcal:', 'http:', $item['url']); // Don't save invalid urls. $events = date_ical_import($item['url']); if (!is_array($events)) { unset($value[$delta]); } else { $value[$delta]['url'] = $item['url']; } } } variable_set('calendar_feeds_' . $value_name, $value); } } cache_clear_all('calendar_feeds_' . $view->name, calendar_ical_cache(), TRUE); }