コード例 #1
0
 /**
  * Call when click on Export to csv (client info)
  * @param  sfWebRequest $request
  */
 public function executeExport($request)
 {
     $sf_user = $this->getUser();
     $sf_guard_user = $sf_user->getGuardUser();
     $sf_guard_userid = $sf_guard_user->getId();
     $branch_id = $sf_user->getUserBranch()->getId();
     // retrieve value of form post
     $form_data = $request->getParameter('field_name');
     $search = $request->getParameter('search');
     $search_type = $search['type'];
     $search_value = $search[$search_type];
     if ($search_value == '') {
         $search_value = $search['keyword'];
     }
     $csv_output = '';
     $header = array();
     $data_row = array();
     $column_names = sfConfig::get('mod_client_csvcolumns_options');
     // set client criteria
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addJoin(sfGuardUserPeer::ID, sfGuardUserGroupPeer::USER_ID);
     $c->addJoin(sfGuardGroupPeer::ID, sfGuardUserGroupPeer::GROUP_ID);
     $c->addJoin(sfGuardUserPeer::ID, ProfilePeer::USER_ID);
     $c->addJoin(sfGuardUserPeer::ID, BranchUsersPeer::USER_ID);
     $c->add(sfGuardGroupPeer::NAME, sfGuardGroupPeer::CLIENT);
     $c->add(BranchUsersPeer::BRANCH_ID, $branch_id);
     $c->addJoin(ProfilePeer::RANK, clientRankPeer::RANK_ID, Criteria::LEFT_JOIN);
     $c->add(clientRankPeer::BRANCH_ID, $branch_id, Criteria::EQUAL);
     //In case of opportunity is selected, also check user is selected all or any particular opportunity client, 0 is for all
     if ($search_type == 'krank' && $search_value != 0) {
         $c->add(ProfilePeer::RANK, $search_value, Criteria::EQUAL);
     }
     if ($search_type == 'ksales') {
         $c->add(ProfilePeer::SALES_ID, $search_value, Criteria::EQUAL);
     }
     foreach ($form_data as $key => $value) {
         if ($value != "") {
             $header[$value] = $column_names[$value];
             if ($value == 'sales_id') {
                 $c->addAlias('p1', ProfilePeer::TABLE_NAME);
                 $c->addJoin(ProfilePeer::SALES_ID, 'p1.user_id', Criteria::LEFT_JOIN);
                 $c->addSelectColumn('concat(p1.fname," ", p1.lname) as salesperson');
             } elseif ($value == 'rank') {
                 $c->addSelectColumn('if(length(RANK_DETAILS)>0, concat(RANK_NAME,"-",RANK_DETAILS), RANK_NAME)');
             } else {
                 $c->addSelectColumn('replace(' . ProfilePeer::translateFieldName($value, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME) . ',",","#")');
             }
         }
     }
     $rs = ProfilePeer::doSelectRs($c);
     if ($rs) {
         $csv_output = implode(',', $header) . "\n";
         while ($rs->next()) {
             $data_row = array_values($rs->getRow());
             $csv_output .= implode(',', $data_row) . "\n";
         }
     }
     $this->downloadCSV($csv_output);
 }