Changeset 933685
- Timestamp:
- 06/17/2014 01:22:56 PM (12 years ago)
- Location:
- wpnewsman-newsletters/trunk
- Files:
-
- 3 edited
-
api.php (modified) (2 diffs)
-
class.list.php (modified) (5 diffs)
-
views/welcome.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
wpnewsman-newsletters/trunk/api.php
r933680 r933685 232 232 $map = $this->param('map', ''); 233 233 234 $format = $this->param('format', 'csv'); 235 234 236 $nofile = $this->param('nofile', false); 235 237 … … 247 249 $newsman_export_fields_map[ $p[0] ] = $p[1]; 248 250 } 251 } 252 253 if ( $format ) { 254 define('newsman_export_format', $format); 249 255 } 250 256 -
wpnewsman-newsletters/trunk/class.list.php
r933680 r933685 590 590 } 591 591 592 private function subToJSON($sub, $fields, $map) { 593 global $newsman_current_subscriber; 594 global $newsman_current_list; 595 596 $row = $sub->toJSON(); 597 598 $newsman_current_list = $this; 599 $newsman_current_subscriber = $row; 600 601 $n = newsman::getInstance(); 602 603 $j = array(); 604 605 foreach ($fields as $field) { 606 if ( in_array($field, static::$linkFields) ) { 607 $row[$field] = $n->getActionLink(str_replace('-link', '', $field)); 608 } 609 if ( isset( $map[$field] ) ) { 610 $j[$map[$field]] = $row[$field]; 611 } else { 612 $j[$field] = $row[$field]; 613 } 614 } 615 return json_encode($j); 616 } 617 592 618 private function array_unique_merge() { 593 619 return array_unique(call_user_func_array('array_merge', func_get_args())); … … 627 653 $res = $this->getSubscribers($offset, $limit, $type, $query, 'RAW_SQL_QUERY'); 628 654 if ( is_array($res) && !empty($res) ) { 655 // csv 629 656 foreach ($res as $sub) { 630 657 fputs($file, $this->subToCSVRow($sub, $fields)."\n"); 631 } 658 } 659 632 660 $p += 1; 633 661 } … … 651 679 } 652 680 681 /** 682 * Fetches subscribers in batches and conver them to csv rows 683 */ 684 private function subsToJSON($file, $fields, $map, $type = 'all') { 685 686 if ( 687 defined('newsman_csv_export_limit') || 688 defined('newsman_csv_export_offset') || 689 defined('newsman_csv_export_query') 690 ) { 691 $offset = defined('newsman_csv_export_offset') ? newsman_csv_export_offset : 0; 692 $limit = defined('newsman_csv_export_limit') ? newsman_csv_export_limit : 100; 693 $query = defined('newsman_csv_export_query') ? newsman_csv_export_query : false; 694 695 $res = $this->getSubscribers($offset, $limit, $type, $query, 'RAW_SQL_QUERY'); 696 if ( is_array($res) && !empty($res) ) { 697 698 $delim = ''; 699 foreach ($res as $sub) { 700 fputs($file, $delim.$this->subToJSON($sub, $fields, $map)); 701 $delim = ', '; 702 } 703 704 $p += 1; 705 } 706 707 return; 708 } 709 710 $p = 1; 711 $done = false; 712 do { 713 $res = $this->getPage($p, 1000, $type); 714 if ( is_array($res) && !empty($res) ) { 715 $delim = ''; 716 foreach ($res as $sub) { 717 fputs($file, $delim.$this->subToJSON($sub, $fields, $map)); 718 $delim = ','; 719 } 720 $p += 1; 721 } else { 722 $done = true; 723 } 724 } while ( !$done ); 725 } 726 653 727 public function exportToCSV($filename, $type = 'all', $linksFields = array(), $forceFileOutput = true) { 654 728 global $newsman_export_fields_map; 729 730 if ( defined('newsman_export_format') ) { 731 switch (newsman_export_format) { 732 case 'json': 733 $ct = 'application/json'; 734 break; 735 736 case 'csv': 737 default: 738 $ct = 'text/json'; 739 break; 740 } 741 header( 'Content-Type: '.$ct ); 742 } 743 655 744 if ( $forceFileOutput ) { 656 header( 'Content-Type: text/csv' );657 745 header( 'Content-Disposition: attachment;filename='.$filename); 658 746 } … … 660 748 //var_dump($newsman_export_fields_map); 661 749 662 if ( isset($_REQUEST['debug']) ) {663 echo '<pre>'; // FOR DEBUG ONLY664 }665 666 750 $out = fopen('php://output', 'w'); 751 667 752 if ( $out ) { 753 if ( defined('newsman_export_format') && newsman_export_format === 'json' ) { 754 fwrite($out, '['); 755 } 756 668 757 $fields = $this->getAllFields(); 669 758 … … 671 760 $mappedFields = array(); 672 761 762 763 673 764 if ( isset($newsman_export_fields_map) ) { 765 $map = $newsman_export_fields_map; 674 766 foreach ($fields as &$field) { 675 767 $mappedFields[] = isset($newsman_export_fields_map[$field]) ? $newsman_export_fields_map[$field] : $field; 676 768 } 677 769 } else { 770 $map = array(); 678 771 $mappedFields = $fields; 679 772 } 680 773 681 fputcsv($out, $mappedFields, ',', '"'); 682 $this->subsToCSV($out, $fields, $type); 774 if ( defined('newsman_export_format') && newsman_export_format === 'json' ) { 775 $this->subsToJSON($out, $fields, $newsman_export_fields_map); 776 } else { 777 fputcsv($out, $mappedFields, ',', '"'); 778 $this->subsToCSV($out, $fields, $type); 779 } 780 781 if ( defined('newsman_export_format') && newsman_export_format === 'json' ) { 782 fwrite($out, ']'); 783 } 784 683 785 @fclose($out); 684 786 } 685 787 686 if ( isset($_REQUEST['debug']) ) { 687 echo '</pre>'; // FOR DEBUG ONLY 688 } 788 689 789 } 690 790 -
wpnewsman-newsletters/trunk/views/welcome.php
r933680 r933685 9 9 <div class="about-text">You updated and have better newsletter gadget!</div> 10 10 11 11 12 12 <?php endif; ?> 13 13
Note: See TracChangeset
for help on using the changeset viewer.