commerce_devel_generate.module in Commerce Devel 8.2
Same filename and directory in other branches
Contains Commerce Devel Generate module.
File
commerce_devel_generate/commerce_devel_generate.moduleView source
<?php
/**
* @file
* Contains Commerce Devel Generate module.
*/
/**
* Implements hook_menu().
*/
function commerce_devel_generate_menu() {
$items = array();
$items['admin/config/development/generate/product'] = array(
'title' => 'Generate products',
'description' => 'Generate a given number of products. Optionally delete current products.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'commerce_devel_generate_products_form',
),
'access arguments' => array(
'administer commerce_product entities',
),
);
$items['admin/config/development/generate/order'] = array(
'title' => 'Generate orders',
'description' => 'Generate a given number of orders.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'commerce_devel_generate_orders_form',
),
'access arguments' => array(
'administer orders',
),
);
return $items;
}
/**
* Creates product generation form.
*
* @return array
* Form API array
*/
function commerce_devel_generate_products_form() {
$options = array();
$types = commerce_product_types();
foreach ($types as $type => $type_array) {
$options[$type] = $type_array['name'];
}
if (empty($options)) {
drupal_set_message(t('You do not have any product types that can be generated. <a href="@create-type">Go create a new content type</a> already!</a>', array(
'@create-type' => url('admin/structure/types/add'),
)), 'error', FALSE);
return array();
}
// Loop over fields to get commerce_product_reference fields.
foreach (field_info_fields() as $field_name => $field) {
if ($field['type'] == 'commerce_product_reference' && $field['module'] == 'commerce_product_reference') {
if (isset($field['bundles']['node'])) {
foreach ($field['bundles']['node'] as $node_bundle) {
$bundle = node_type_load($node_bundle);
$node_bundles[$node_bundle] = $bundle->name;
}
}
}
}
$form['product_types'] = array(
'#type' => 'checkboxes',
'#title' => t('Product types'),
'#options' => $options,
'#default_value' => array_keys($options),
);
$form['kill_products'] = array(
'#type' => 'checkbox',
'#title' => t('<strong>Delete all products</strong> in these product types before generating new products.'),
'#default_value' => FALSE,
);
if (isset($node_bundle)) {
$form['generate_product_displays'] = array(
'#type' => 'checkbox',
'#title' => t('Generate product displays associated.'),
'#default_value' => FALSE,
);
$form['node_types'] = array(
'#type' => 'checkboxes',
'#title' => t('Content types'),
'#options' => $node_bundles,
'#states' => array(
'invisible' => array(
'input[name="generate_product_displays"]' => array(
'checked' => FALSE,
),
),
),
'#default_value' => array_keys($node_bundles),
);
}
$form['num_products'] = array(
'#type' => 'textfield',
'#title' => t('How many products would you like to generate?'),
'#default_value' => 50,
'#size' => 10,
);
// Build an options array of allowed currency values.
$options = array();
foreach (commerce_currencies(TRUE) as $currency_code => $currency) {
$options[$currency_code] = t('@code - @name', array(
'@code' => $currency['code'],
'@name' => $currency['name'],
));
}
$form['currency_code'] = array(
'#title' => t('Currency code'),
'#type' => 'select',
'#default_value' => commerce_default_currency(),
'#options' => $options,
);
$form['min_price'] = array(
'#title' => t('Minimum price'),
'#type' => 'textfield',
'#default_value' => 1,
'#element_validate' => array(
'_commerce_devel_generate_price_validate',
),
'#size' => 10,
);
$form['max_price'] = array(
'#title' => t('Maximum price'),
'#type' => 'textfield',
'#default_value' => 500,
'#element_validate' => array(
'_commerce_devel_generate_price_validate',
),
'#size' => 10,
);
$form['title_length'] = array(
'#type' => 'textfield',
'#title' => t('Max word length of titles'),
'#default_value' => 4,
'#size' => 10,
);
unset($options);
$options[LANGUAGE_NONE] = t('Language neutral');
if (module_exists('locale')) {
$options += locale_language_list();
}
$form['add_language'] = array(
'#type' => 'select',
'#title' => t('Set language on products'),
'#multiple' => TRUE,
'#disabled' => !module_exists('locale'),
'#description' => t('Requires locale.module'),
'#options' => $options,
'#default_value' => array(
LANGUAGE_NONE => LANGUAGE_NONE,
),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Generate'),
);
$form['#redirect'] = FALSE;
return $form;
}
/**
* Validate function for the integer fields.
*/
function _commerce_devel_generate_price_validate($element, &$form_state) {
if (!ctype_digit($element['#value'])) {
form_error($element, t('The "!name" field has to be numeric.', array(
'!name' => $element['#title'],
)));
}
}
/**
* Generate products submit callback.
*
* @param array $form
* The form.
* @param array $form_state
* The form state.
*/
function commerce_devel_generate_products_form_submit($form, &$form_state) {
module_load_include('inc', 'commerce_devel_generate', 'devel_generate');
$form_state['values']['product_types'] = array_filter($form_state['values']['product_types']);
if ($form_state['values']['num_products'] <= 50) {
commerce_devel_generate_products($form_state);
}
else {
module_load_include('inc', 'commerce_devel_generate', 'devel_generate_batch');
commerce_devel_generate_batch_products($form_state);
}
// Create product displays.
if (isset($form_state['values']['node_types']) && !empty($form_state['values']['generate_product_displays'])) {
module_load_include('inc', 'commerce_devel_generate', 'commerce_product_reference.devel_generate');
module_load_include('inc', 'devel_generate', 'devel_generate');
$form_state['values']['node_types'] = array_filter($form_state['values']['node_types']);
$form_state['values']['num_nodes'] = $form_state['values']['num_products'];
$form_state['values']['kill_content'] = 0;
if ($form_state['values']['num_nodes'] <= 50) {
module_load_include('inc', 'devel_generate');
devel_generate_content($form_state);
}
else {
module_load_include('inc', 'devel_generate', 'devel_generate_batch');
devel_generate_batch_content($form_state);
}
}
}
/**
* Pre-process the devel_generate_content_form request.
*
* @param array $results
* An array of options obtained from devel_generate_products_form.
*/
function commerce_devel_generate_products_pre_product(&$results) {
module_load_include('inc', 'devel_generate');
// Get user id.
$users = devel_get_users();
$users = array_merge($users, array(
'0',
));
$results['users'] = $users;
}
/**
* Order generation form.
*
* @return mixed
* Form API array
*/
function commerce_devel_generate_orders_form() {
$statuses = array();
foreach (commerce_order_statuses() as $order_status) {
$statuses[$order_status['name']] = $order_status['title'];
}
$methods = array();
foreach (commerce_payment_methods() as $method_id => $payment_method) {
$methods[$method_id] = $payment_method['title'];
}
$form['amount'] = array(
'#title' => t('How many orders would you like to generate?'),
'#type' => 'textfield',
'#default_value' => 10,
'#size' => 10,
);
$form['kill_orders'] = array(
'#title' => t('Delete all orders before batch creating new ones'),
'#type' => 'checkbox',
);
$form['kill_transactions'] = array(
'#title' => t('Delete all transactions associated with the deleted orders'),
'#type' => 'checkbox',
'#states' => array(
'invisible' => array(
':input[name="kill_orders"]' => array(
'checked' => FALSE,
),
),
),
);
$form['kill_customer_profiles'] = array(
'#title' => t('Delete all customer profiles associated with the deleted orders'),
'#type' => 'checkbox',
'#states' => array(
'invisible' => array(
':input[name="kill_orders"]' => array(
'checked' => FALSE,
),
),
),
);
$form['order_statuses'] = array(
'#type' => 'select',
'#title' => t('Which possible order statuses should the orders have?'),
'#default_value' => array(
'completed',
),
'#options' => $statuses,
'#multiple' => TRUE,
);
$form['min_products'] = array(
'#title' => t("What's the minimum amount of products contained in one order?"),
'#type' => 'textfield',
'#default_value' => 1,
'#size' => 10,
);
$form['max_products'] = array(
'#title' => t("What's the maximum amount of products contained in one order?"),
'#type' => 'textfield',
'#default_value' => 10,
'#size' => 10,
);
$form['period'] = array(
'#type' => 'fieldset',
'#title' => t('Time period'),
'#description' => t('The time period the generated orders should fall in.'),
);
$form['period']['start'] = array(
'#type' => 'date',
'#title' => 'Start',
'#default_value' => array(
'day' => format_date(REQUEST_TIME, 'custom', 'j'),
'month' => format_date(REQUEST_TIME, 'custom', 'n'),
'year' => format_date(REQUEST_TIME, 'custom', 'Y') - 1,
),
);
$form['period']['end'] = array(
'#type' => 'date',
'#title' => 'End',
);
$form['transactions'] = array(
'#type' => 'fieldset',
'#title' => t('Transactions'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['transactions']['create_transactions'] = array(
'#title' => t('Create transactions for the individual orders'),
'#type' => 'checkbox',
);
$form['transactions']['payment_method'] = array(
'#type' => 'select',
'#title' => t('Which possible payment methods should transactions have?'),
'#default_value' => array_keys($methods),
'#options' => $methods,
'#multiple' => TRUE,
);
$form['create_customer_profiles'] = array(
'#title' => t('Create customer profiles for the individual orders'),
'#type' => 'checkbox',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Generate'),
);
$form['#redirect'] = FALSE;
return $form;
}
/**
* Generate orders validate callback.
*
* @param array $form
* The form.
* @param array $form_state
* The form state.
*/
function commerce_devel_generate_orders_form_validate($form, &$form_state) {
$amount = intval($form_state['values']['amount']);
$upper = intval($form_state['values']['max_products']);
$lower = intval($form_state['values']['min_products']);
if ($amount < 1) {
form_set_error('amount', t('You have to generate at least one order.'));
}
if ($upper < 0) {
form_set_error('max_products', t('You must set a valid upperbound on the amount of products per order.'));
}
if ($lower < 0) {
form_set_error('min_products', t('You must set a valid lowerbound on the amount of products per order.'));
}
if ($lower > $upper && $upper != 0) {
form_set_error('min_products', t('The minimum amount should be less than the maximum amount.'));
}
if (!count($form_state['values']['order_statuses'])) {
form_set_error('order_statuses', t('At least one possible order status should be selected.'));
}
if ($form_state['values']['create_transactions'] && !count($form_state['values']['payment_method'])) {
form_set_error('payment_method', t('At least one possible payment method should be selected if you wish to create transaction for each order.'));
}
}
/**
* Generate orders submit callback.
*
* @param array $form
* The form.
* @param array $form_state
* The form state.
*/
function commerce_devel_generate_orders_form_submit($form, &$form_state) {
module_load_include('inc', 'commerce_devel_generate', 'devel_generate');
module_load_include('inc', 'commerce_devel_generate', 'devel_generate_batch');
commerce_devel_generate_batch_orders($form_state);
}
Functions
Name![]() |
Description |
---|---|
commerce_devel_generate_menu | Implements hook_menu(). |
commerce_devel_generate_orders_form | Order generation form. |
commerce_devel_generate_orders_form_submit | Generate orders submit callback. |
commerce_devel_generate_orders_form_validate | Generate orders validate callback. |
commerce_devel_generate_products_form | Creates product generation form. |
commerce_devel_generate_products_form_submit | Generate products submit callback. |
commerce_devel_generate_products_pre_product | Pre-process the devel_generate_content_form request. |
_commerce_devel_generate_price_validate | Validate function for the integer fields. |