示例#1
0
 /**
  * Administrative settings.
  *
  * @return array
  *   An array containing form items to place on the module settings page.
  */
 public static function hookAdminSettings()
 {
     $form['handle_content_expiry'] = array('#type' => 'fieldset', '#title' => t('Handle content expiry'), '#collapsible' => TRUE, '#collapsed' => FALSE);
     $form['handle_content_expiry']['node_expire_handle_content_expiry'] = array('#type' => 'radios', '#title' => t('Handle content expiry'), '#default_value' => ConfigHandler::getHandleContentExpiry(), '#options' => array(0 => t('In legacy mode'), 1 => t('Trigger "Content Expired" event every cron run when the node is expired'), 2 => t('Trigger "Content Expired" event only once when the node is expired')), '#description' => t('In non-legacy mode node expiry is set for each node type separately and disabled by default.') . ' ' . t('Enable it at Structure -> Content types -> {Your content type} -> Edit -> Publishing options.') . '<br />' . t('"Trigger "Content Expired" event only once " option allows to ignore nodes, which already have been processed.') . '<br />' . t('Legacy mode means: not possible to allow expiry separately for each particular node type, trigger "Content Expired" event every cron run, legacy data saving'));
     // Visibility.
     $states = array('visible' => array(':input[name="node_expire_handle_content_expiry"]' => array(array('value' => '1'), array('value' => '2'))));
     // Variable node_expire_date_entry_elements is not used in legacy mode,
     // so in legacy mode it is safe to keep any of it's value.
     // It is necessary just to take care about proper validation
     // (see node_expire_admin_settings_validate below).
     $form['date_entry_elements'] = array('#type' => 'fieldset', '#title' => t('Date values entry elements'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#states' => $states);
     $form['date_entry_elements']['node_expire_date_entry_elements'] = array('#type' => 'radios', '#title' => t('Enter date values using'), '#default_value' => ConfigHandler::getDateEntryElements(), '#options' => array(0 => t('Text fields'), 1 => t('Date popups')), '#description' => t('"Date popups" option requires Date module to be installed') . ' ' . t('with Date Popup enabled. This option is not available in legacy mode.'), '#states' => $states);
     $form['date_format'] = array('#type' => 'fieldset', '#title' => t('Format of expiry date'), '#collapsible' => TRUE, '#collapsed' => FALSE);
     $form['date_format']['node_expire_date_format'] = array('#type' => 'textfield', '#maxlength' => 25, '#title' => t('Format of expiry date'), '#default_value' => ConfigHandler::getDateFormat(), '#description' => t('Format of expiry date.') . ' ' . t('Format: PHP <a href="http://www.php.net/strtotime" target="_blank">strtotime format</a>.'));
     $form['past_date_allowed'] = array('#type' => 'fieldset', '#title' => t('Expire date in the past'), '#collapsible' => TRUE, '#collapsed' => FALSE);
     $form['past_date_allowed']['node_expire_past_date_allowed'] = array('#type' => 'checkbox', '#title' => t('Allow expire date in the past'), '#default_value' => ConfigHandler::getPastDateAllowed(), '#description' => t('Checking this box will allow to save nodes with expire date in the past. This is helpful during site development and testing.'));
     // End of node_expire_admin_settings().
     return system_settings_form($form);
 }
示例#2
0
 /**
  * Implements hook_form_alter().
  *
  * Adds expiration options to the node entry forms.
  */
 private static function doFormAlter(&$ntype, &$form, &$form_state, $form_id)
 {
     // Check if the Node expire feature is enabled for the node type.
     $node = isset($form['#node']) ? $form['#node'] : NULL;
     $handle_content_expiry = ConfigHandler::getHandleContentExpiry();
     if ($handle_content_expiry != 0) {
         if (empty($ntype['enabled'])) {
             return;
         }
         // Replace not set to default string.
         if (!isset($node->expire)) {
             // $ntype = isset($ntypes[$node->type]) ? $ntypes[$node->type] : NULL;
             $node->expire = TimestampUtils::dateDbToStr('', $ntype);
         }
     } else {
         // Replace not set to empty string.
         if (!isset($node->expire)) {
             $node->expire = '';
         }
         // Convert the timestamp into a human readable date - legacy branch.
         if (is_numeric($node->expire)) {
             $node->expire = format_date($node->expire, 'custom', ConfigHandler::getDateFormat());
         }
     }
     // This supports node to never expire.
     if (empty($ntype['default']) && empty($node->expire)) {
         $ntype['required'] = FALSE;
     }
     if (user_access('edit node expire')) {
         if (ConfigHandler::getDateEntryElements()) {
             // Date popups.
             // TODO: Edit format description sting.
             $expire_field = array('#title' => t('Expiration date'), '#description' => t('Time date to consider the node expired. Format: %time (%format).', array('%time' => format_date(REQUEST_TIME, 'custom', ConfigHandler::getDateFormat()), '%format' => ConfigHandler::getDateFormat())), '#type' => 'date_popup', '#date_format' => ConfigHandler::getDateFormat(), '#required' => $ntype['required'], '#default_value' => $node->expire);
         } else {
             // Text fields.
             // TODO: Edit format description sting.
             $expire_field = array('#title' => t('Expiration date'), '#description' => t('Time date to consider the node expired. Format: %time (%format).', array('%time' => format_date(REQUEST_TIME, 'custom', ConfigHandler::getDateFormat()), '%format' => ConfigHandler::getDateFormat())), '#type' => 'textfield', '#maxlength' => 25, '#required' => $ntype['required'], '#default_value' => $node->expire);
         }
     } else {
         $expire_field = array('#type' => 'value', '#value' => $node->expire);
     }
     // If we use hidden value, do not create fieldset.
     if ($expire_field['#type'] == 'value') {
         $form['options1'] = array();
         $form['options1']['expire'] =& $expire_field;
     } elseif (!$form['options']['#access']) {
         $form['options1'] = array('#type' => 'fieldset', '#title' => t('Publishing options'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#weight' => 95);
         $form['options1']['expire'] =& $expire_field;
     } else {
         $form['options']['expire'] =& $expire_field;
     }
     if (isset($node->expired)) {
         $form['node_expire'] = array('#type' => 'value', '#value' => TRUE);
     }
 }