Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function custom_form_alter(&$form, &$form_state, $form_id) {
- if($form_id == 'webform_client_form_6'){
- $form['actions']['submit']['#ajax'] = array(
- 'callback' => 'custom_form_webform_client_form_ajax_submit',
- 'wrapper' => $form['#id'],
- );
- $form['actions']['submit']['#attributes']['class'][] = 'ctools-modal-custom-modal-style';
- unset($form['actions']['submit']['#pre_render']);
- }
- }
- /**
- * Ajax submit.
- */
- function custom_form_webform_client_form_ajax_submit($form, &$form_state) {
- ctools_include('ajax');
- ctools_include('modal');
- ctools_modal_add_js();
- if (form_get_errors()) {
- return $form;
- }
- $submission = webform_get_submission($form_state['storage']['details']['nid'], $form_state['storage']['details']['sid']);
- $data_1 = custom_get_file_1($submission->data[1][0]);
- $data_2 = custom_get_file_2($submission->data[4][0]);
- $data_3 = custom_get_file_3($submission->data[2][0]);
- $data_4 = custom_get_file_4($submission->data[2][0]);
- $form_state = array(
- 'title' => t('Contact'), // Используется для заголовка модального окна.
- 'ajax' => TRUE,
- 'build_info' => array(
- 'args' => array(
- 'data_1' => $data_1,
- 'data_2' => $data_2,
- 'data_3' => $data_3,
- 'data_4' => $data_4,
- 'date' => $submission->data[3][0],
- 'nid' => $form_state['storage']['details']['nid'],
- ),
- ),
- );
- $form = drupal_get_form('custom_tabular_form', $form_state);
- ctools_modal_render('Validation', $form);
- drupal_exit();
- }
- /**
- * Form builder.
- */
- function custom_tabular_form($form, $form_state) {
- $form['items'] = array(
- '#tree' => TRUE,
- '#theme' => 'tabular_form',
- '#header' => array('Source', 'Page views', 'Revenue','RPM', 'Percent %'),
- );
- foreach ($form_state['build_info']['args'][0]['build_info']['args']['data_1']['items'] as $k=>$item) {
- $form['items'][$k]['source'] = array(
- '#markup' => $item[0],
- );
- $views = str_replace(',','',$form_state['build_info']['args'][0]['build_info']['args']['data_2'][$item[0]]);
- $form['items'][$k]['views'] = array(
- '#markup' => $views,
- );
- $total = $item[1];
- //dsm('total :'.$total);
- if(isset($form_state['build_info']['args'][0]['build_info']['args']['data_3'][$item[0]])){
- $total += str_replace(',','.',$form_state['build_info']['args'][0]['build_info']['args']['data_3'][$item[0]]);
- }
- if(isset($form_state['build_info']['args'][0]['build_info']['args']['data_4'][$item[0]])){
- $total += str_replace(',','.',$form_state['build_info']['args'][0]['build_info']['args']['data_4'][$item[0]]);
- }
- //dsm('total final :'.$total);
- $form['items'][$k]['revenue'] = array(
- '#type' => 'textfield',
- '#value' => number_format($total, 2, ',', ' '),
- '#attributes' => array('class'=>array('table_'.$k.'_revenue')),
- '#field_suffix' => '$',
- '#disabled' => TRUE,
- );
- $rpm = $item[1] / $views * 1000;
- $form['items'][$k]['rpm'] = array(
- '#type' => 'textfield',
- '#value' => number_format($rpm, 2, ',', ' '),
- '#attributes' => array('class'=>array('table_'.$k.'_rpm')),
- '#field_suffix' => '$',
- '#disabled' => TRUE,
- );
- $form['items'][$k]['percent'] = array(
- '#type' => 'textfield',
- '#required' => TRUE,
- '#default_value' => 100,
- '#ajax' => array(
- 'wrapper' => 'custom-tabular-form',
- 'callback' => 'custom_tabular_form_ajax_percent',
- ),
- );
- }
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => 'Сохранить',
- );
- return $form;
- }
- function custom_tabular_form_submit($form,$form_state){
- $date = $form_state['build_info']['args'][0]['build_info']['args']['date'];
- $formatted_date = format_date(strtotime($date), 'custom', 'Y-m-d H:i:s', 'UTC');
- $items = $form_state['values']['items'];
- foreach($form_state['input']['items'] as $k=>$v){
- $items[$k]['percent'] = $v['percent'];
- }
- foreach($form_state['build_info']['args'][0]['build_info']['args']['data_1']['items'] as $k=>$title){
- $items[$k]['title'] = $title[0];
- }
- foreach($items as $item){
- $percent = $item['percent'];
- $title = 'Daily reports for '. $item['title'] . ' - '. $date;
- $term = taxonomy_get_term_by_name($item['title']);
- $term = array_shift($term);
- $views = $form_state['build_info']['args'][0]['build_info']['args']['data_2'][$item['title']];
- $node = new StdClass();
- $node->type = 'daily_reports'; // machine name content type
- $node->title = '';
- $node->language = 'und';
- $node->status = 1;
- $node->uid = '1';
- $node->field_data['und'][0]['value'] = $formatted_date;
- $node->field_publishers['und'][0]['tid'] = $term->tid;
- $revenue = str_replace(',','.',$item['revenue']);
- $revenue = $percent / 100 * $revenue;
- $node->field_revenue['und'][0]['value'] = $revenue;
- $rpm = str_replace(',','.',$item['rpm']);
- $rpm = $percent / 100 * $rpm;
- $node->field_rpm['und'][0]['value'] = $rpm;
- $node->field_page_views['und'][0]['value'] = str_replace(',','.',$views);
- node_save($node);
- }
- ctools_include('ajax');
- ctools_add_js('ajax-responder');
- $path = 'node/'.$form_state['build_info']['args'][0]['build_info']['args']['nid'];
- $commands[] = ctools_ajax_command_redirect($path);
- drupal_set_message('Your reports has been created, thank you!');
- print ajax_render($commands);
- drupal_exit();
- }
- function custom_tabular_form_ajax_percent($form, $form_state){
- $commands = array();
- foreach($form_state['input']['items'] as $k=>$v){
- if(is_numeric($v['percent']) ){
- $percent = $v['percent'];
- $revenue = str_replace(',','.',$form_state['values']['items'][$k]['revenue']);
- $revenue = $percent / 100 * $revenue;
- $rpm = str_replace(',','.',$form_state['values']['items'][$k]['rpm']);
- $rpm = $percent / 100 * $rpm;
- $commands[] = ajax_command_invoke('.table_'.$k.'_revenue', 'val', array($revenue));
- $commands[] = ajax_command_invoke('.table_'.$k.'_rpm', 'val', array($rpm));
- }
- }
- return array('#type' => 'ajax', '#commands' => $commands);
- }
- function custom_theme() {
- return array(
- 'tabular_form' => array(
- 'render element' => 'form',
- ),
- );
- }
- /**
- * Format form as table.
- */
- function theme_tabular_form($vars) {
- $form = $vars['form'];
- $rows = array();
- foreach (element_children($form) as $key) {
- foreach (element_children($form[$key]) as $name) {
- $rows[$key][] = drupal_render($form[$key][$name]);
- }
- }
- return theme('table', array(
- 'rows' => $rows,
- 'header' => $form['#header'],
- ));
- }
- function custom_get_file_1($fid){
- $file = file_load($fid);
- if($file){
- $out = array();
- $url = drupal_realpath($file->uri);
- $data = file_get_contents($url);
- $data = preg_split('/\R/',$data);
- $data = array_slice($data, 7, count($data));
- $data = array_filter($data);
- foreach($data as $item){
- $item = str_getcsv($item);
- if(trim($item[0]) == FALSE){
- break;
- }
- if($term =taxonomy_get_term_by_name($item[0])){
- $title = array_shift($term)->name;
- } else {
- $title = "N/A";
- }
- $amount = ($item[1] == '<$0.01') ? '0' : preg_replace("/[^0-9,.]/", "",$item[1]);
- $out['items'][] = array($title,$amount);
- }
- $out['total'] = preg_replace("/[^0-9.]/", "",end($data));
- return $out;
- }
- }
- function custom_get_file_2($fid){
- $file = file_load($fid);
- if($file){
- $out = array();
- $url = drupal_realpath($file->uri);
- $data = file_get_contents($url);
- $data = preg_split('/\R/',$data);
- $data = array_slice($data, 7, count($data));
- $data = array_filter($data);
- foreach($data as $item){
- $item = str_getcsv($item);
- if(!trim($item[0]) || $item[0] == 'Day Index'){
- break;
- }
- if($term = taxonomy_get_term_by_name($item[0])){
- $title = array_shift($term)->name;
- } else {
- $title = "N/A";
- }
- $out[$title] = $item[1];
- }
- return $out;
- }
- }
- function custom_get_file_3($fid){
- $file = file_load($fid);
- if($file){
- $out = array();
- $url = drupal_realpath($file->uri);
- $data = file_get_contents($url);
- $data = preg_split('/\R/',$data);
- $data = array_slice($data, 1, count($data));
- $data = array_filter($data);
- foreach($data as $item){
- $item = str_getcsv($item);
- if($term = taxonomy_get_term_by_name($item[0])){
- $title = array_shift($term)->name;
- } else {
- $title = "N/A";
- }
- $out[$title] = $item[1];
- }
- return $out;
- }
- }
- function custom_get_file_4($fid){
- $file = file_load($fid);
- if($file){
- $out = array();
- $url = drupal_realpath($file->uri);
- $data = file_get_contents($url);
- $data = preg_split('/\R/',$data);
- $data = array_slice($data, 1, count($data));
- $data = array_filter($data);
- foreach($data as $item){
- $item = str_getcsv($item);
- if($term = taxonomy_get_term_by_name($item[0])){
- $title = array_shift($term)->name;
- } else {
- $title = "N/A";
- }
- $out[$title] = $item[1];
- }
- }
- }
- /**
- * Implements hook_init()
- */
- function custom_init() {
- //Customize modal window
- drupal_add_js(array(
- 'custom-modal-style' => array(
- 'modalSize' => array(
- 'type' => 'fixed',
- 'width' => 800,
- 'height' => 550,
- ),
- //Animation mode
- 'animation' => 'fadeIn',
- ),
- ), 'setting');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement