/**
  * excel download page
  */
 function dispPurplebookExcelDownload()
 {
     $download_fields = Context::get('download_fields');
     if (!$download_fields) {
         $download_fields = "user_id,user_name,cellphone";
     }
     $download_fields_arr = explode(',', $download_fields);
     // check permission
     $allowed = false;
     $allow_group = Context::get('allow_group');
     $group_srls = explode(',', $allow_group);
     $logged_info = Context::get('logged_info');
     if (!$logged_info) {
         return new Object(-1, 'msg_invalid_request');
     }
     $oMemberModel =& getModel('member');
     foreach ($group_srls as $group_srl) {
         $group = $oMemberModel->getGroup($group_srl);
         if (in_array($group->title, $logged_info->group_list)) {
             $allowed = true;
         }
     }
     if (!$allowed && $logged_info->is_admin != 'Y') {
         return new Object(-1, 'msg_invalid_request');
     }
     header("Content-Type: Application/octet-stream;");
     header("Content-Disposition: attachment; filename=\"members-" . date('Ymd') . ".xls\"");
     echo '<html>';
     echo '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>';
     echo '<body>';
     echo '<table>';
     // header
     echo '<tr>';
     foreach ($download_fields_arr as $field) {
         echo "<th>{$field}</th>";
     }
     echo "</tr>\n";
     // arguments
     $args = new Object();
     $this->makeArgs($args);
     // include utility
     require_once 'purplebook.utility.php';
     // only mysql
     $db_info = Context::getDBInfo();
     if ($args->group_srl) {
         $query = "SELECT * FROM {$db_info->db_table_prefix}_member member" . " JOIN {$db_info->db_table_prefix}_member_group_member member_group" . " ON  member_group.member_srl = member.member_srl" . " WHERE member_group.group_srl = {$args->group_srl}";
         $oDB =& DB::getInstance();
         $result = $oDB->_query($query);
         require_once 'zMigration.class.php';
         $dbtool = new zMigration();
         $dbtool->setDBInfo($db_info);
         while ($row = $dbtool->fetch($result)) {
             $obj = $this->getResponseObject($row, $download_fields_arr);
             $obj->cellphone = CSUtility::getDashTel(str_replace('|@|', '', $obj->cellphone));
             // skip if no phone number.
             if (Context::get('nonphone_skip') && !$obj->cellphone) {
                 continue;
             }
             echo '<tr>';
             foreach ($download_fields_arr as $field) {
                 if (isset($obj->{$field})) {
                     echo '<td style="mso-number-format:\\@\\">' . $obj->{$field} . '</td>';
                 }
             }
             echo "</tr>\n";
             unset($obj);
             unset($row);
         }
     } else {
         // memory limit problem
         $query_id = 'purplebook.getMembers';
         $output = executeQueryArray($query_id, $args);
         foreach ($output->data as $no => $row) {
             $obj = $this->getResponseObject($row, $download_fields_arr);
             $obj->cellphone = CSUtility::getDashTel(str_replace('|@|', '', $obj->cellphone));
             // skip if no phone number.
             if (Context::get('nonphone_skip') && !$obj->cellphone) {
                 continue;
             }
             echo '<tr>';
             foreach ($download_fields_arr as $field) {
                 if (isset($obj->{$field})) {
                     echo '<td style="mso-number-format:\\@\\">' . $obj->{$field} . '</td>';
                 }
             }
             echo "</tr>\n";
             unset($obj);
             unset($row);
         }
     }
     // tail
     echo '</table>';
     echo '</body>';
     echo '</html>';
     exit(0);
 }