WordPress.org

Plugin Directory

Changeset 1553950


Ignore:
Timestamp:
12/13/16 19:38:18 (7 months ago)
Author:
Elvin.Haci
Message:

2.0 uploaded

Location:
sql-chart-builder/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • sql-chart-builder/trunk/functions.php

    r1548875 r1553950  
    44function guaven_sqlcharts_load_defaults() 
    55{ 
    6     if (get_option("guaven_sqlcharts_already_installed") === false) { 
    7         update_option("guaven_sqlcharts_already_installed", "1"); 
     6    if (get_option("guaven_sqlcharts_already_installed_2") === false) { 
     7        update_option("guaven_sqlcharts_already_installed_2", "1"); 
    88        guaven_sqlcharts_install_first_data(); 
     9         
    910    } 
    1011} 
     
    4647 
    4748 
    48  
     49function guaven_sqlcharts_enqueue_chart() 
     50{ 
     51    wp_enqueue_script('guaven_sqlcharts_chartjs', plugins_url('assets/bundle.min.js', __FILE__)); 
     52    wp_enqueue_script('guaven_sqlcharts_googlechart', 'https://www.gstatic.com/charts/loader.js'); 
     53     
     54} 
     55add_action('wp_enqueue_scripts', 'guaven_sqlcharts_enqueue_chart'); 
     56add_action('admin_enqueue_scripts', 'guaven_sqlcharts_enqueue_chart'); 
    4957 
    5058function guaven_sqlcharts_enqueue_main_style() 
    5159{ 
    52     wp_enqueue_style('guaven_sqlcharts_main_style', plugins_url('guaven_sqlcharts.css', __FILE__)); 
    53 } 
    54  
     60    wp_enqueue_style('guaven_sqlcharts_main_style', plugins_url('assets/guaven_sqlcharts.css', __FILE__)); 
     61} 
    5562add_action('admin_enqueue_scripts', 'guaven_sqlcharts_enqueue_main_style'); 
     63 
    5664 
    5765function guaven_sqlcharts_isJson($string) 
     
    99107function guaven_sqlcharts_metabox_area() 
    100108{ 
    101     add_meta_box('gvn_schart_metabox', 'Configure your graph chart', 'gvn_schart_metabox', 'gvn_schart', 'advanced', 'default'); 
    102 } 
    103  
    104 function gvn_schart_metabox() 
    105 { 
    106     global $post; 
    107     wp_nonce_field('meta_box_nonce_action', 'meta_box_nonce_field'); 
    108      
    109      
    110 ?> 
    111 <h4>Choose your graph</h4> 
    112 <p> 
    113 <select name="guaven_sqlcharts_graphtype"> 
    114 <option value="pie" <?php 
    115     $guaven_sqlcharts_graphtype = get_post_meta($post->ID, 'guaven_sqlcharts_graphtype', true); 
    116     echo ($guaven_sqlcharts_graphtype == 'pie' ? 'selected' : ''); 
    117 ?>>Pie Chart</option> 
    118  
    119     <option value="3dpie" <?php 
    120     echo ($guaven_sqlcharts_graphtype == '3dpie' ? 'selected' : ''); 
    121 ?>>3D Pie Chart</option> 
    122  
    123 <option value="column" <?php 
    124     echo ($guaven_sqlcharts_graphtype == 'column' ? 'selected' : ''); 
    125 ?>>Column Chart</option> 
    126  
    127 <option value="bar" <?php 
    128     echo ($guaven_sqlcharts_graphtype == 'bar' ? 'selected' : ''); 
    129 ?>>Bar Chart</option> 
    130  
    131     <option value="area" <?php 
    132     echo ($guaven_sqlcharts_graphtype == 'area' ? 'selected' : ''); 
    133 ?>>Area Chart</option> 
    134      
    135  
    136 </select> 
    137 </p> 
    138 <hr> 
    139  
    140  
    141  
    142  
    143 <h4>Your SQL code  </h4> 
    144 <span>(Use double " " quotes instead of single ' ' ones)</span> 
    145 <p> 
    146 <textarea name="guaven_sqlcharts_code" id="guaven_sqlcharts_code" style="width:100%" rows="6"><?php 
    147     echo (get_post_meta($post->ID, 'guaven_sqlcharts_code', true) != '' ? get_post_meta($post->ID, 'guaven_sqlcharts_code', true) : ''); 
    148 ?> 
    149 </textarea>  
    150 </p> 
    151 <p style="text-align: right;">Need help with custom SQL reports? <a href="http://guaven.com/contact">Contact us.</a></p> 
    152 <hr> 
    153  
    154  
    155  
    156  
    157 <h4>Arguments</h4> 
    158 <p> 
    159 Label for X axis: <br><input type="text" name="guaven_sqlcharts_xarg_l" id="guaven_sqlcharts_xarg_l" value="<?php 
    160     echo get_post_meta($post->ID, 'guaven_sqlcharts_xarg_l', true); 
    161 ?>"></p> 
    162     <p> 
    163 SQL field name of X axis (Write corresponding SQL field name here. f.e. diplay_name):  
    164 <br> 
    165 <input type="text" name="guaven_sqlcharts_xarg_s" id="guaven_sqlcharts_xarg_s" value="<?php 
    166     echo get_post_meta($post->ID, 'guaven_sqlcharts_xarg_s', true); 
    167 ?>"> 
    168 </p> 
    169  
    170 <p> 
    171 Label for Y axis: <br><input type="text" name="guaven_sqlcharts_yarg_l" id="guaven_sqlcharts_yarg_l" value="<?php 
    172     echo get_post_meta($post->ID, 'guaven_sqlcharts_yarg_l', true); 
    173 ?>"></p><p> 
    174 SQL field name of Y axis (Write corresponding SQL field name here. f.e. post_count):  
    175 <br> 
    176 <input type="text" name="guaven_sqlcharts_yarg_s" id="guaven_sqlcharts_yarg_s" value="<?php 
    177     echo get_post_meta($post->ID, 'guaven_sqlcharts_yarg_s', true); 
    178 ?>"> 
    179 </p> 
    180  
    181 <hr> 
    182  
    183  
    184 <h4>Width and height (with px. don't type px itself, just numbers)</h4> 
    185 <p> 
    186  
    187 <input type="number" name="guaven_sqlcharts_chartwidth" id="guaven_sqlcharts_chartwidth" value="<?php 
    188     echo get_post_meta($post->ID, 'guaven_sqlcharts_chartwidth', true); 
    189 ?>"> 
    190  
    191 <input type="number" name="guaven_sqlcharts_chartheight" id="guaven_sqlcharts_chartheight" value="<?php 
    192     echo get_post_meta($post->ID, 'guaven_sqlcharts_chartheight', true); 
    193 ?>"> 
    194 </p> 
    195  
    196 <hr> 
    197  
    198  
    199  
    200  
    201 <?php 
    202     if (get_post_meta($post->ID, 'guaven_sqlcharts_graphtype', true) != '') { 
    203 ?> 
    204 <div class="gf-alert-success gf-alert"> 
    205 <h4> 
    206 Text shortcode: [gvn_schart id="<?php 
    207         echo $post->ID; 
    208 ?>"] 
    209 <br> 
    210 <br> 
    211 PHP shorcode: &lt;?php echo do_shortcode(' [gvn_schart id="<?php 
    212         echo $post->ID; 
    213 ?>"]'); ?&gt; 
    214 </h4> 
    215 <p>Note: Shortcodes supports width and height attributes. F.e. [gvn_schart id="1" width="500" height="400"]. If no attributes, default width, height (which you enter in this page above) will be used. 
    216 </div> 
    217 <h4>Demo</h4> 
    218 <?php 
    219         echo do_shortcode(' [gvn_schart id="' . $post->ID . '"]'); 
    220          
    221     } 
    222      
    223 } 
    224  
    225  
    226  
    227 function gvn_schart_save_metabox_area($post_id, $post) 
    228 { 
    229      
     109    add_meta_box('guaven_sqlcharts_metabox', 'Configure your graph chart', 'guaven_sqlcharts_metabox', 'gvn_schart', 'advanced', 'default'); 
     110} 
     111 
     112function guaven_sqlcharts_metabox() 
     113{ 
     114    require_once(dirname(__FILE__) . "/admin_metabox.php"); 
     115     
     116} 
     117 
     118 
     119 
     120function guaven_sqlcharts_save_metabox_area($post_id, $post) 
     121{ 
    230122    if (!isset($_POST['meta_box_nonce_field']) or !wp_verify_nonce($_POST['meta_box_nonce_field'], 'meta_box_nonce_action')) { 
    231123        return $post->ID; 
     
    245137    } 
    246138} 
    247 add_action('save_post', 'gvn_schart_save_metabox_area', 1, 2); 
     139add_action('save_post', 'guaven_sqlcharts_save_metabox_area', 1, 2); 
    248140// save the custom fields 
    249141 
     
    251143 
    252144 
    253 function gvn_schart_libloads($type, $step) 
     145function guaven_sqlcharts_libloads($type, $step) 
    254146{ 
    255147    $stty = array( 
     
    278170    return $stty[$type][$step]; 
    279171} 
    280  
    281  
    282  
    283  
    284  
    285  
    286 function gvn_schart_shortcode($atts) 
    287 { 
    288      
    289      
    290     global $wpdb; 
    291     $sql = html_entity_decode(get_post_meta($atts['id'], 'guaven_sqlcharts_code', true)); 
    292      
    293      
     172function gvn_chart_check_sql_query($sql) 
     173{ 
    294174    $blacklister   = array( 
    295175        "delete", 
     
    297177        "insert", 
    298178        "drop", 
    299         "truncate" 
     179        "truncate", 
     180        "alter" 
    300181    ); //add all 
    301182    $blacklister_f = 0; 
     
    304185            $blacklister_f = 1; 
    305186    } 
    306      
     187    return $blacklister_f; 
     188} 
     189 
     190function guaven_get_labels_and_values($id, $fvs) 
     191{ 
     192    $values   = array(); 
     193    $labels   = array(); 
     194    $xarg_s   = get_post_meta($id, 'guaven_sqlcharts_xarg_s', true); 
     195    $xarg_l   = get_post_meta($id, 'guaven_sqlcharts_xarg_l', true); 
     196    $yarg_s   = get_post_meta($id, 'guaven_sqlcharts_yarg_s', true); 
     197    $yarg_l   = get_post_meta($id, 'guaven_sqlcharts_yarg_l', true); 
     198    $chartype = array( 
     199        'line_l' => 'Line', 
     200        'pie_l' => 'Pie', 
     201        'donut_l' => 'Pie', 
     202        'bar_l' => 'Bar', 
     203        'horizontalbar_l' => 'Horizontal Bar', 
     204        'area_l' => 'Line' 
     205    ); 
     206    foreach ($fvs as $key => $value) { 
     207        $values[] = $value->$yarg_s; 
     208        $labels[] = '"' . $value->$xarg_s . '"'; 
     209    } 
     210    return array( 
     211        $labels, 
     212        $values, 
     213        explode(";", $yarg_l) 
     214    ); 
     215} 
     216 
     217function guaven_sqlcharts_print_chart_js($tip_g, $title, $labels, $values, $ylabel) 
     218{ 
     219    if ($tip_g == 'line_l') { 
     220        guaven_sqlcharts_linedata($title, $labels, $values, $ylabel); 
     221    } 
     222    if ($tip_g == 'area_l') { 
     223        guaven_sqlcharts_linedata($title, $labels, $values, $ylabel, 'true'); 
     224    } elseif ($tip_g == 'pie_l') { 
     225        guaven_sqlcharts_piedata($title, $labels, $values, $ylabel); 
     226    } elseif ($tip_g == 'donut_l') { 
     227        guaven_sqlcharts_piedata($title, $labels, $values, $ylabel, 'doughnut'); 
     228    } elseif ($tip_g == 'bar_l') { 
     229        guaven_sqlcharts_bardata($title, $labels, $values, $ylabel); 
     230    } elseif ($tip_g == 'horizontalbar_l') { 
     231        guaven_sqlcharts_bardata($title, $labels, $values, $ylabel, 'horizontalBar'); 
     232    } 
     233} 
     234 
     235function guaven_sqlcharts_local_shortcode($atts) 
     236{ 
     237    global $wpdb; 
     238    $sql           = html_entity_decode(get_post_meta($atts['id'], 'guaven_sqlcharts_code', true)); 
     239    $blacklister_f = gvn_chart_check_sql_query($sql); 
     240    if ($blacklister_f == 1) 
     241        return 'You given SQL code contains forbidden commands. Remember that you should only use SELECT queries'; 
     242    $tip_g = get_post_meta($atts['id'], 'guaven_sqlcharts_graphtype', true); 
     243     
     244    $sql_split         = explode(';', $sql); 
     245    $labels_and_values = array(); 
     246    $post_g            = get_post($atts['id']); 
     247     
     248     
     249    for ($i = 0; $i < count($sql_split); $i++) { 
     250        if (!empty($sql_split[$i])) { 
     251            $fvs = $wpdb->get_results($sql_split[$i]); 
     252            $wpdb->show_errors(); 
     253            ob_start(); 
     254            $wpdb->print_error(); 
     255            $printerror = ob_get_clean(); 
     256            if ($printerror != '' and strpos($printerror, "[]") === false) 
     257                return $printerror; 
     258            elseif (empty($fvs)) 
     259                return 'Your SQL returnes empty date, please recheck your SQL query above'; 
     260             
     261            ob_start(); 
     262            global $sqlcharts_inserted_script; 
     263            if (empty($sqlcharts_inserted_script)) 
     264                $sqlcharts_inserted_script = 1; 
     265            $labels_and_values[$i] = guaven_get_labels_and_values($atts['id'], $fvs); 
     266            $labels[$i]            = $labels_and_values[$i][0]; 
     267            $values[$i]            = $labels_and_values[$i][1]; 
     268            $ylabel[$i]            = !empty($labels_and_values[$i][2][$i]) ? $labels_and_values[$i][2][$i] : ''; 
     269        } 
     270    } 
     271     
     272?> 
     273 <canvas id="ct-chart_<?php 
     274    echo $sqlcharts_inserted_script; 
     275?>" width="400" height="400"></canvas> 
     276 
     277     <script type="text/javascript"> 
     278     var ctx = jQuery("#ct-chart_<?php 
     279    echo $sqlcharts_inserted_script; 
     280?>"); 
     281 
     282<?php 
     283    guaven_sqlcharts_print_chart_js($tip_g, $post_g->post_title, $labels, $values, $ylabel); 
     284?> 
     285 
     286</script> 
     287 
     288<?php 
     289    $sqlcharts_inserted_script++; 
     290    return ob_get_clean(); 
     291} 
     292 
     293add_shortcode('gvn_schart_2', 'guaven_sqlcharts_local_shortcode'); 
     294 
     295 
     296 
     297function guaven_sqlcharts_bardata($title, $labels, $values, $ylabel, $type = 'bar') 
     298{ 
     299?> 
     300    var data = { 
     301    labels: [<?php 
     302    echo implode(",", $labels[0]); 
     303?>], 
     304    datasets: [ 
     305    <?php 
     306    for ($i = 0; $i < count($values); $i++) { 
     307?> 
     308        { 
     309            label: "<?php 
     310        echo esc_attr($ylabel[$i]); 
     311?>", 
     312            backgroundColor: [ 
     313                <?php 
     314        echo guaven_sqlcharts_colorgenerator(count($values[$i]), 0, 0, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     315?> 
     316            ], 
     317            borderColor: [ 
     318                <?php 
     319        echo guaven_sqlcharts_colorgenerator(count($values[$i]), 0, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     320?> 
     321            ], 
     322            borderWidth: 1, 
     323            data: [<?php 
     324        echo implode(",", $values[$i]); 
     325?>], 
     326        }, 
     327        <?php 
     328    } 
     329?> 
     330    ] 
     331}; 
     332var options=[]; 
     333var myBarChart = new Chart(ctx, { 
     334    type: '<?php 
     335    echo $type; 
     336?>', 
     337    data: data, 
     338    options: options 
     339}); 
     340    <?php 
     341} 
     342 
     343 
     344 
     345function guaven_sqlcharts_linedata($title, $labels, $values, $ylabel, $type = 'false') 
     346{ 
     347?> 
     348var data = { 
     349    labels: [<?php 
     350    echo implode(",", $labels[0]); 
     351?>], 
     352    datasets: [ 
     353    <?php 
     354    for ($i = 0; $i < count($values); $i++) { 
     355?> 
     356        { 
     357            label: "<?php 
     358        echo esc_attr($ylabel[$i]); 
     359?>", 
     360            fill: <?php 
     361        echo $type; 
     362?>, 
     363            lineTension: 0.1, 
     364            backgroundColor:  <?php 
     365        echo guaven_sqlcharts_colorgenerator(1, 1, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     366?> 
     367            borderColor:  <?php 
     368        echo guaven_sqlcharts_colorgenerator(1, 1, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     369?> 
     370            pointBorderColor: <?php 
     371        echo guaven_sqlcharts_colorgenerator(1, 1, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     372?> 
     373            pointHoverBackgroundColor: <?php 
     374        echo guaven_sqlcharts_colorgenerator(1, 1, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     375?> 
     376            pointHoverBorderColor:  <?php 
     377        echo guaven_sqlcharts_colorgenerator(1, 1, 0.2, rand(0, 255) . ',' . rand(0, 255) . ',' . rand(0, 255)); 
     378?> 
     379            data: [<?php 
     380        echo implode(",", $values[$i]); 
     381?>], 
     382            spanGaps: false, 
     383        }, 
     384        <?php 
     385    } 
     386?> 
     387    ] 
     388}; 
     389var myLineChart = new Chart(ctx, { 
     390    type: 'line', 
     391    data: data, 
     392   options: { 
     393        scales: { 
     394            xAxes: [{ 
     395                display: false 
     396            }] 
     397        } 
     398    } 
     399}); 
     400    <?php 
     401} 
     402 
     403 
     404function guaven_sqlcharts_piedata($title, $labels, $values, $ylabel, $type = 'pie') 
     405{ 
     406?> 
     407    var options=[]; 
     408    var data = { 
     409    labels: [<?php 
     410    echo implode(",", $labels[0]); 
     411?>], 
     412    datasets: [ 
     413    <?php 
     414    for ($i = 0; $i < count($values); $i++) { 
     415?> 
     416        { 
     417            data: [<?php 
     418        echo implode(",", $values[$i]); 
     419?>], 
     420            backgroundColor: [ 
     421                <?php 
     422        echo guaven_sqlcharts_colorgenerator(count($labels[$i]), 1); 
     423?> 
     424            ], 
     425            hoverBackgroundColor: [ 
     426               <?php 
     427        echo guaven_sqlcharts_colorgenerator(count($labels[$i]), 1); 
     428?> 
     429            ] 
     430        }, 
     431<?php 
     432    } 
     433?> 
     434        ] 
     435}; 
     436var myPieChart = new Chart(ctx,{ 
     437    type: '<?php 
     438    echo $type; 
     439?>', 
     440    data: data, 
     441    options: options 
     442}); 
     443    <?php 
     444} 
     445 
     446 
     447 
     448 
     449function guaven_sqlcharts_colorgenerator($count, $indic, $darkness = 0, $initcolor = '255,0,0') 
     450{ 
     451    $initial_colors = array( 
     452        'linebg' => 'red', 
     453        'linebr' => 'yellow', 
     454        'linebc' => 'green', 
     455        'linehbg' => 'white', 
     456        'linehbc' => 'black' 
     457    ); 
     458    if (!empty($initial_colors[$count])) 
     459        return '"' . $initial_colors[$count] . '", 
     460        '; 
     461    $ret = ''; 
     462    for ($i = 0; $i < $count; $i++) { 
     463        $ret .= "'rgba(" . $initcolor . "," . ($darkness + 0.8 - $indic * $i * 0.8 / ($count)) . ")', 
     464        "; 
     465    } 
     466    return $ret; 
     467} 
     468 
     469 
     470 
     471 
     472 
     473 
     474 
     475 
     476 
     477 
     478 
     479 
     480 
     481/*********************************Google Charts section**************************************/ 
     482 
     483function guaven_sqlcharts_google_shortcode($atts) 
     484{ 
     485    global $wpdb; 
     486     
     487    $sql           = html_entity_decode(get_post_meta($atts['id'], 'guaven_sqlcharts_code', true)); 
     488    $blacklister_f = gvn_chart_check_sql_query($sql); 
    307489    if ($blacklister_f == 1) 
    308490        return 'You given SQL code contains forbidden commands. Remember that you should only use SELECT queries'; 
     
    322504        ob_start(); 
    323505        global $sqlcharts_inserted_script; 
    324     if (empty($sqlcharts_inserted_script)) $sqlcharts_inserted_script=1;        
    325  
    326        if ($sqlcharts_inserted_script==1) { 
    327           
    328 ?> 
    329 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
    330   <?php } ?> 
     506        if (empty($sqlcharts_inserted_script)) 
     507            $sqlcharts_inserted_script = 1; 
     508         
     509?> 
    331510     <script type="text/javascript">; 
    332511       google.charts.load('current', {'packages':[<?php 
    333512        $tip_g = get_post_meta($atts['id'], 'guaven_sqlcharts_graphtype', true); 
    334513         
    335         echo gvn_schart_libloads($tip_g, 'packages'); 
     514        echo guaven_sqlcharts_libloads($tip_g, 'packages'); 
    336515?>]}); 
    337       google.charts.setOnLoadCallback(drawChart_<?php echo $sqlcharts_inserted_script;?>); 
     516      google.charts.setOnLoadCallback(drawChart_<?php 
     517        echo $sqlcharts_inserted_script; 
     518?>); 
    338519      csv_data='';csv_title=''; 
    339       function drawChart_<?php echo $sqlcharts_inserted_script;?>() { 
     520      function drawChart_<?php 
     521        echo $sqlcharts_inserted_script; 
     522?>() { 
    340523    <?php 
    341524        $html_temp = ''; 
    342         $csv_temp =''; 
    343         $post_g = get_post($atts['id']); 
    344         $xarg_s = get_post_meta($atts['id'], 'guaven_sqlcharts_xarg_s', true); 
    345         $xarg_l = get_post_meta($atts['id'], 'guaven_sqlcharts_xarg_l', true); 
    346         $yarg_s = get_post_meta($atts['id'], 'guaven_sqlcharts_yarg_s', true); 
    347         $yarg_l = get_post_meta($atts['id'], 'guaven_sqlcharts_yarg_l', true); 
     525        $csv_temp  = ''; 
     526        $post_g    = get_post($atts['id']); 
     527        $xarg_s    = get_post_meta($atts['id'], 'guaven_sqlcharts_xarg_s', true); 
     528        $xarg_l    = get_post_meta($atts['id'], 'guaven_sqlcharts_xarg_l', true); 
     529        $yarg_s    = get_post_meta($atts['id'], 'guaven_sqlcharts_yarg_s', true); 
     530        $yarg_l    = get_post_meta($atts['id'], 'guaven_sqlcharts_yarg_l', true); 
    348531         
    349532        $graph_width  = get_post_meta($atts['id'], 'guaven_sqlcharts_chartwidth', true); 
     
    358541         
    359542        foreach ($fvs as $fv) { 
    360             $html_temp .= "['{$fv->$yarg_s}', {$fv->$xarg_s}, '#b87333'],"; 
    361             $csv_temp .= addslashes($fv->$yarg_s).",".addslashes($fv->$xarg_s)."<br>"; 
     543            $html_temp .= "['{$fv->$xarg_s}', {$fv->$yarg_s}, '#b87333'],"; 
     544            $csv_temp .= addslashes($fv->$xarg_s) . "," . addslashes($fv->$yarg_s) . "<br>"; 
    362545             
    363546        } 
    364         ?> 
    365         csv_data='<?php echo $csv_temp;?>'; 
    366         csv_title='<?php echo ''.$yarg_l.','.$xarg_l.'';  ?><br>'; 
     547?> 
     548        csv_data='<?php 
     549        echo $csv_temp; 
     550?>'; 
     551        csv_title='<?php 
     552        echo '' . $xarg_l . ',' . $yarg_l . ''; 
     553?><br>'; 
    367554      var data = google.visualization.arrayToDataTable([ 
    368555         ['<?php 
     556        echo $xarg_l; 
     557?>', '<?php 
    369558        echo $yarg_l; 
    370 ?>', '<?php 
    371         echo $xarg_l; 
    372559?>', { role: 'style' }], 
    373560        <?php 
     
    380567        echo $tip_g == '3dpie' ? "is3D: true," : ''; 
    381568?> 
    382           chart_<?php echo $sqlcharts_inserted_script;?>: { 
     569          chart_<?php 
     570        echo $sqlcharts_inserted_script; 
     571?>: { 
    383572            title: '<?php 
    384573        echo $post_g->post_title; 
     
    387576        }; 
    388577 
    389 var chart_<?php echo $sqlcharts_inserted_script;?> = new google.visualization.<?php 
    390         echo gvn_schart_libloads(get_post_meta($atts['id'], 'guaven_sqlcharts_graphtype', true), 'charts'); 
    391 ?>(document.getElementById('columnchart_material_<?php echo $sqlcharts_inserted_script;?>')); 
    392  
    393  
    394       var my_div = document.getElementById('chart_div_<?php echo $sqlcharts_inserted_script;?>'); 
    395        google.visualization.events.addListener(chart_<?php echo $sqlcharts_inserted_script;?>, 'ready', function () { 
    396       my_div.innerHTML = '<img src="' + chart_<?php echo $sqlcharts_inserted_script;?>.getImageURI() + '">'; 
     578var chart_<?php 
     579        echo $sqlcharts_inserted_script; 
     580?> = new google.visualization.<?php 
     581        echo guaven_sqlcharts_libloads(get_post_meta($atts['id'], 'guaven_sqlcharts_graphtype', true), 'charts'); 
     582?>(document.getElementById('columnchart_material_<?php 
     583        echo $sqlcharts_inserted_script; 
     584?>')); 
     585 
     586 
     587      var my_div = document.getElementById('chart_div_<?php 
     588        echo $sqlcharts_inserted_script; 
     589?>'); 
     590       google.visualization.events.addListener(chart_<?php 
     591        echo $sqlcharts_inserted_script; 
     592?>, 'ready', function () { 
     593      my_div.innerHTML = '<img src="' + chart_<?php 
     594        echo $sqlcharts_inserted_script; 
     595?>.getImageURI() + '">'; 
    397596    }); 
    398597 
    399         chart_<?php echo $sqlcharts_inserted_script;?>.draw(data, options); 
     598        chart_<?php 
     599        echo $sqlcharts_inserted_script; 
     600?>.draw(data, options); 
    400601      } 
    401602 
    402  
    403  
    404   function saveaspng(id){ 
    405 window.open(jQuery("#"+id+" img").attr('src')); 
    406   } 
    407  
    408    function exportcsv(){ 
    409 var csvFile=csv_title+csv_data; 
    410 csvFile=csvFile.replaceAll("<br>","\n"); 
    411 filename="mycsv.csv"; 
    412 var blob = new Blob([csvFile], { type: 'text/csv;charset=utf-8;' }); 
    413         if (navigator.msSaveBlob) { // IE 10+ 
    414             navigator.msSaveBlob(blob, filename); 
    415         } else { 
    416             var link = document.createElement("a"); 
    417             if (link.download !== undefined) { // feature detection 
    418                 // Browsers that support HTML5 download attribute 
    419                 var url = URL.createObjectURL(blob); 
    420                 link.setAttribute("href", url); 
    421                 link.setAttribute("download", filename); 
    422                 link.style.visibility = 'hidden'; 
    423                 document.body.appendChild(link); 
    424                 link.click(); 
    425                 document.body.removeChild(link); 
    426             } 
    427         } 
    428  
    429 //window.open().document.write(csv_title+csv_data); 
    430   } 
    431  
    432 String.prototype.replaceAll = function(search, replacement) { 
    433     var target = this; 
    434     return target.replace(new RegExp(search, 'g'), replacement); 
    435 }; 
    436603    </script> 
    437 <div id="chart_div_<?php echo $sqlcharts_inserted_script;?>" style="display:none"></div> <a href="javascript://" onclick="saveaspng('chart_div_<?php echo $sqlcharts_inserted_script;?>')">Save as PNG</a> 
     604<div id="chart_div_<?php 
     605        echo $sqlcharts_inserted_script; 
     606?>" style="display:none"></div>  
     607<a href="javascript://" onclick="saveaspng('chart_div_<?php 
     608        echo $sqlcharts_inserted_script; 
     609?>')">Save as PNG</a> 
    438610<a href="javascript://" onclick="exportcsv()">Export CSV</a> 
    439 <div id="columnchart_material_<?php echo $sqlcharts_inserted_script;?>" style="width:<?php 
     611<div id="columnchart_material_<?php 
     612        echo $sqlcharts_inserted_script; 
     613?>" style="width:<?php 
    440614        echo $graph_width > 0 ? intval($graph_width) : '500'; 
    441615?>px; 
     
    444618?>px"></div> 
    445619<?php 
    446 $sqlcharts_inserted_script++; 
    447  
     620        $sqlcharts_inserted_script++; 
     621         
    448622        return ob_get_clean(); 
    449623    } 
    450624} 
    451 add_shortcode('gvn_schart', 'gvn_schart_shortcode'); 
    452  
    453  
    454  
    455  
    456 function gvn_schart_wp_tags() 
     625add_shortcode('gvn_schart', 'guaven_sqlcharts_google_shortcode'); 
     626 
     627 
     628 
     629 
     630function guaven_sqlcharts_wp_tags() 
    457631{ 
    458632    $tags   = get_tags(array( 
     
    477651 
    478652        var options = { 
    479           chart_<?php echo $sqlcharts_inserted_script;?>: { 
     653          chart_<?php 
     654    echo $sqlcharts_inserted_script; 
     655?>: { 
    480656            title: 'Company Performance', 
    481657            subtitle: 'Sales, Expenses, and Profit: 2014-2017', 
     
    489665function guaven_sqlcharts_install_first_data() 
    490666{ 
    491      
    492667    require_once(dirname(__FILE__) . "/initial_data.php"); 
    493668    gvn_chart_sample_nonxml_data(); 
  • sql-chart-builder/trunk/guaven_sqlcharts.php

    r1548875 r1553950  
    44 * Plugin URI:        http://guaven.com/updatepusher 
    55 * Description:       Turn your SQL queries to Google Charts 
    6  * Version:           1.0.5 
     6 * Version:           2.0.0 
    77 * Author:            Guaven Labs 
    88 * Author URI:        http://guaven.com/ 
  • sql-chart-builder/trunk/initial_data.php

    r1548875 r1553950  
    11<?php 
    2 function gvn_chart_sample_nonxml_data(){ 
    3 $data['titles']=array( 
    4   'Posts by month', 
    5   'Posts by year', 
    6   'Popular users/publishers', 
    7   ); 
    8  
    9 $data['sql_queries']=array( 
    10   'select count(*) pcount,SUBSTRING(`post_date`,6,2) aysay,SUBSTRING(`post_date`,1,4) ilsay,SUBSTRING(`post_date`,1,7) ayilsay from wp_posts  group by aysay,ilsay  order by aysay ', 
    11  
    12   'select count(*) pcount, SUBSTR(`post_date`,1,4) il from wp_posts  group by il order by il asc limit 10 ', 
    13  
    14   'select count(*) as pcount,a.post_author,b.display_name as dname 
    15 from wp_posts a  
    16 inner join wp_users b ON a.post_author=b.ID 
    17 where a.post_status="publish" 
    18 group by a.post_author order by pcount desc limit 10', 
    19   ); 
    20  
    21 $data['others']=array( 
    22  
    23 array('Post count','pcount','Monthes','ayilsay',500,400,'column'), 
    24  
    25 array('Post count','pcount','Years','il',500,400,'pie'), 
    26  
    27 array('Post count','pcount','Display name','dname',500,400,'3dpie'), 
    28  
    29  
    30     ); 
    31  
    32 $existence= get_page_by_title( 'Posts by month', OBJECT, 'gvn_schart' ); 
    33  
    34 if (empty($existence)){ 
    35 foreach ($data['titles'] as $key => $value) { 
    36     $newid=wp_insert_post( 
    37         array('post_title'    => $value, 
    38             'post_type'=>'gvn_schart', 
    39             'post_status'=>'private' 
    40             ) 
    41         ); 
    42  
    43  
    44     add_post_meta($newid,'guaven_sqlcharts_code',$data["sql_queries"][$key]); 
    45  
    46     add_post_meta($newid,'guaven_sqlcharts_chartwidth',$data["others"][$key][4]); 
    47     add_post_meta($newid,'guaven_sqlcharts_chartheight',$data["others"][$key][5]); 
    48     add_post_meta($newid,'guaven_sqlcharts_xarg_s',$data["others"][$key][1]); 
    49     add_post_meta($newid,'guaven_sqlcharts_xarg_l',$data["others"][$key][0]); 
    50     add_post_meta($newid,'guaven_sqlcharts_yarg_s',$data["others"][$key][3]); 
    51     add_post_meta($newid,'guaven_sqlcharts_yarg_l',$data["others"][$key][2]); 
    52     add_post_meta($newid,'guaven_sqlcharts_graphtype',$data["others"][$key][6]); 
    53 } 
    54 } 
    55  
    56  
     2function gvn_chart_sample_nonxml_data() 
     3{ 
     4    $data['titles'] = array( 
     5        'Posts by month', 
     6        'Posts and non-Posts by month', 
     7        'Posts by year', 
     8        'Popular users/publishers' 
     9    ); 
     10    global $wpdb; 
     11    $data['sql_queries'] = array( 
     12        "select count(*) postcount,SUBSTRING(`post_date`,6,2) monthnum,SUBSTRING(`post_date`,1,4) yearnum,SUBSTRING(`post_date`,1,7) monthandyear from $wpdb->posts  group by monthnum,yearnum  order by monthnum ", 
     13         
     14        "select count(*) postcount,SUBSTRING(`post_date`,6,2) monthnum,SUBSTRING(`post_date`,1,4) yearnum,SUBSTRING(`post_date`,1,7) monthandyear from $wpdb->posts where post_type='post'  group by monthnum,yearnum  order by monthnum ; 
     15  select count(*) postcount,SUBSTRING(`post_date`,6,2) monthnum,SUBSTRING(`post_date`,1,4) yearnum,SUBSTRING(`post_date`,1,7) monthandyear from $wpdb->posts where post_type!='post' group by monthnum,yearnum  order by monthnum", 
     16         
     17        "select count(*) postcount, SUBSTR(`post_date`,1,4) il from $wpdb->posts  group by il order by il asc limit 10 ", 
     18         
     19        "select count(*) as postcount,a.post_author,b.display_name as dname 
     20from $wpdb->posts a  
     21inner join $wpdb->users b ON a.post_author=b.ID 
     22where a.post_status='publish' 
     23group by a.post_author order by postcount desc limit 10" 
     24    ); 
     25     
     26    $data['others'] = array( 
     27         
     28        array( 
     29            'Post count', 
     30            'postcount', 
     31            'Monthes', 
     32            'monthandyear', 
     33            500, 
     34            400, 
     35            'bar_l' 
     36        ), 
     37         
     38        array( 
     39            'Posts;non-Posts', 
     40            'postcount', 
     41            'Monthes', 
     42            'monthandyear', 
     43            500, 
     44            400, 
     45            'line_l' 
     46        ), 
     47         
     48        array( 
     49            'Post count', 
     50            'postcount', 
     51            'Years', 
     52            'il', 
     53            500, 
     54            400, 
     55            'pie_l' 
     56        ), 
     57         
     58        array( 
     59            'Post count', 
     60            'postcount', 
     61            'Display name', 
     62            'dname', 
     63            500, 
     64            400, 
     65            'donut_l' 
     66        ) 
     67         
     68         
     69    ); 
     70     
     71     
     72     
     73     
     74     
     75    foreach ($data['titles'] as $key => $value) { 
     76        $existence = get_page_by_title($value, OBJECT, 'gvn_schart'); 
     77         
     78        if (empty($existence)) { 
     79            $newid = wp_insert_post(array( 
     80                'post_title' => $value, 
     81                'post_type' => 'gvn_schart', 
     82                'post_status' => 'private' 
     83            )); 
     84            add_post_meta($newid, 'guaven_sqlcharts_code', $data["sql_queries"][$key]); 
     85            add_post_meta($newid, 'guaven_sqlcharts_chartwidth', $data["others"][$key][4]); 
     86            add_post_meta($newid, 'guaven_sqlcharts_chartheight', $data["others"][$key][5]); 
     87            add_post_meta($newid, 'guaven_sqlcharts_xarg_s', $data["others"][$key][3]); 
     88            add_post_meta($newid, 'guaven_sqlcharts_xarg_l', $data["others"][$key][1]); 
     89            add_post_meta($newid, 'guaven_sqlcharts_yarg_s', $data["others"][$key][1]); 
     90            add_post_meta($newid, 'guaven_sqlcharts_yarg_l', $data["others"][$key][0]); 
     91            add_post_meta($newid, 'guaven_sqlcharts_graphtype', $data["others"][$key][6]); 
     92             
     93        } 
     94    } 
     95     
     96     
     97     
    5798} 
    5899?> 
  • sql-chart-builder/trunk/readme.txt

    r1549132 r1553950  
    11=== SQL Chart Builder === 
    22Contributors: elvinhaci 
    3 Tags: graph,charts,sql charts,mysql charts,visualizer,sql visualizer,sql reports,mysql reports,google charts,google chart,mysql to chart,mysql to graph 
     3Tags: graph,charts,sql charts,mysql charts,visualizer,sql visualizer,sql reports,mysql reports,google charts,google chart,mysql to chart,mysql to graph,dynamic chart,dynamic graph 
    44Requires at least: 3.9.0 
    55Tested up to: 4.7.0 
    6 Stable tag: 1.0.5 
     6Stable tag: 2.0.0 
    77Donate link: http://guaven.com/donate 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
    1010 
    11 Turn your SQL queries to Google Charts 
     11Turn your SQL queries to Beautiful Dynamic Charts 
    1212 
    1313== Description == 
    14 The plugin can create beautiful Google Charts based on your SQL queries, then you can use those charts in any part of your website. 
     14The plugin can create beautiful Local and Google Charts based on your SQL queries, then you can use those charts in any part of your website. 
    1515You can use both native wp and non-wp mysql tables in your queries.  
    1616 
     
    6161== Changelog == 
    6262 
     63= 2.0.0= 
     64* New non-Google Local Charts added. 
     65* Use multiple mysql queries in one graph. 
    6366= 1.0.0= 
    6467* Uploaded to Wordpress.org 
Note: See TracChangeset for help on using the changeset viewer.