<?php
/*****************************************************************************
 * The contents of this file are subject to the RECIPROCAL PUBLIC LICENSE
 * Version 1.1 ("License"); You may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * http://opensource.org/licenses/rpl.php. Software distributed under the
 * License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
 * either express or implied.
 *
 * You may:
 * a) Use and distribute this code exactly as you received without payment or
 *    a royalty or other fee.
 * b) Create extensions for this code, provided that you make the extensions
 *    publicly available and document your modifications clearly.
 * c) Charge for a fee for warranty or support or for accepting liability
 *    obligations for your customers.
 *
 * You may NOT:
 * a) Charge for the use of the original code or extensions, including in
 *    electronic distribution models, such as ASP (Application Service
 *    Provider).
 * b) Charge for the original source code or your extensions other than a
 *    nominal fee to cover distribution costs where such distribution
 *    involves PHYSICAL media.
 * c) Modify or delete any pre-existing copyright notices, change notices,
 *    or License text in the Licensed Software
 * d) Assert any patent claims against the Licensor or Contributors, or
 *    which would in any way restrict the ability of any third party to use the
 *    Licensed Software.
 *
 * You must:
 * a) Document any modifications you make to this code including the nature of
 *    the change, the authors of the change, and the date of the change.
 * b) Make the source code for any extensions you deploy available via an
 *    Electronic Distribution Mechanism such as FTP or HTTP download.
 * c) Notify the licensor of the availability of source code to your extensions
 *    and include instructions on how to acquire the source code and updates.
 * d) Grant Licensor a world-wide, non-exclusive, royalty-free license to use,
 *    reproduce, perform, modify, sublicense, and distribute your extensions.
 *
 * The Original Code is: CommuniCore
 *                       Olavo Farias
 *                       2006-04-7 olavo.farias@gmail.com
 *
 * The Initial Developer of the Original Code is CommuniCore.
 * Portions created by CommuniCore are Copyright (C) 2005 CommuniCore Ltda
 * All Rights Reserved.
 ********************************************************************************/
if(!defined('sugarEntry') || !sugarEntry)	die('Not A Valid Entry Point');

require_once ('XTemplate/xtpl.php');
require_once ("data/Tracker.php");
require_once ('modules/EcmReminders/EcmReminder.php');
require_once ('themes/'.$theme.'/layout_utils.php');
require_once ('log4php/LoggerManager.php');
require_once('include/ListView/ListViewSmarty.php');

require_once('modules/Currencies/Currency.php');

   if(file_exists('custom/modules/EcmReminders/metadata/listviewdefs.php')){
   	require_once('custom/modules/EcmReminders/metadata/listviewdefs.php');	
   }else{
   	require_once('modules/EcmReminders/metadata/listviewdefs.php');
   }
   require_once('modules/SavedSearch/SavedSearch.php');
   require_once('include/SearchForm/SearchForm.php');
   
   $header_text = '';
   
   global $app_strings; 
   global $mod_strings;
   global $app_list_strings;
   global $current_language;
   $current_module_strings = return_module_language($current_language, 'EcmReminders');
   
   global $urlPrefix;
   global $currentModule;
   
   global $theme;
   global $current_user;
// FOCUS_LIST IS THE MEANS OF PASSING DATA TO A LISTVIEW.
   global $focus_list;
   
// SETUP QUICKSEARCH
   require_once('include/QuickSearchDefaults.php');
   $qsd = new QuickSearchDefaults();
   
   // CLEAR THE DISPLAY COLUMNS BACK TO DEFAULT WHEN CLEAR QUERY IS CALLED
   if(!empty($_REQUEST['clear_query']) && $_REQUEST['clear_query'] == 'true')  
       $current_user->setPreference('ListViewDisplayColumns', array(), 0, $currentModule);
   
   $savedDisplayColumns = $current_user->getPreference('ListViewDisplayColumns', $currentModule); // GET USER DEFINED DISPLAY COLUMNS
   
   $json = getJSONobj();
      
   $seedEcmReminder = new EcmReminder();                                   // SEED BEAN
   $searchForm          = new SearchForm('EcmReminders', $seedEcmReminder); // NEW SEARCHFORM INSTANCE
// SETUP LISTVIEW SMARTY
   $lv = new ListViewSmarty();
   
   $displayColumns = array();
// CHECK $_REQUEST IF NEW DISPLAY COLUMNS FROM POST
   if (!empty($_REQUEST['displayColumns'])) {
    foreach (explode('|', $_REQUEST['displayColumns']) as $num => $col) {
     if (!empty($listViewDefs['EcmReminders'][$col])) 
      $displayColumns[$col] = $listViewDefs['EcmReminders'][$col];
    }    
   }elseif(!empty($savedDisplayColumns)) { // USE USER DEFINED DISPLAY COLUMNS FROM PREFERENCES 
    $displayColumns = $savedDisplayColumns;
   }else { // USE COLUMNS DEFINED IN LISTVIEWDEFS FOR DEFAULT DISPLAY COLUMNS
    foreach($listViewDefs['EcmReminders'] as $col => $params) {
     if(!empty($params['default']) && $params['default'])
      $displayColumns[$col] = $params;
    }
   } 
   $params = array('massupdate' => true);        // SETUP LISTVIEWSMARTY PARAMS
   if(!empty($_REQUEST['orderBy'])) {     // ORDER BY COMING FROM $_REQUEST
    $params['orderBy'] = $_REQUEST['orderBy'];
    $params['overrideOrder'] = true;
    if(!empty($_REQUEST['sortOrder'])) $params['sortOrder'] = $_REQUEST['sortOrder'];
   }
   $lv->displayColumns = $displayColumns;
   if(!empty($_REQUEST['search_form_only']) && $_REQUEST['search_form_only']) { // HANDLE AJAX REQUESTS FOR SEARCH FORMS ONLY
       switch($_REQUEST['search_form_view']) {
           case 'basic_search':
               $searchForm->setup();
               $searchForm->displayBasic(false);
               break;
           case 'advanced_search':
               $searchForm->setup();
               $searchForm->displayAdvanced(false);
               break;
           case 'saved_views':
               echo $searchForm->displaySavedViews($listViewDefs, $lv, false);
               break;
       }
       return;
   }
   
// USE THE STORED QUERY IF THERE IS ONE
   if (!isset($where)) $where = "";
   require_once('modules/MySettings/StoreQuery.php');
   $storeQuery = new StoreQuery();

   if(!isset($_REQUEST['query'])){
    $storeQuery->loadQuery($currentModule);
    $storeQuery->populateRequest();
   }else{
    $storeQuery->saveFromGet($currentModule);   
   }
   if(isset($_REQUEST['query'])){
    // WE HAVE A QUERY
    // FIRST SAVE COLUMNS 
    $current_user->setPreference('ListViewDisplayColumns', $displayColumns, 0, $currentModule); 
    $searchForm->populateFromRequest();                                         // GATHERS SEARCH FIELD INPUTS FROM $_REQUEST
    $where_clauses = $searchForm->generateSearchWhere(true, "EcmReminder"); // BUILDS THE WHERE CLAUSE FROM SEARCH FIELD INPUTS
    if (count($where_clauses) > 0 )$where = implode(' and ', $where_clauses);
    $GLOBALS['log']->info("Here is the where clause for the list view: $where");
   }
   
   // START DISPLAY
   // WHICH TAB OF SEARCH FORM TO DISPLAY
   if(!isset($_REQUEST['search_form']) || $_REQUEST['search_form'] != 'false') {
    $searchForm->setup();
    if(isset($_REQUEST['searchFormTab'])      && $_REQUEST['searchFormTab'] == 'advanced_search') {
     $searchForm->displayAdvanced();
    }elseif(isset($_REQUEST['searchFormTab']) && $_REQUEST['searchFormTab'] == 'saved_views'){
     $searchForm->displaySavedViews($listViewDefs, $lv);
    }else {
     $searchForm->displayBasic();
    }
   }
   echo $qsd->GetQSScripts();
   //echo $where;
   $lv->setup($seedEcmReminder, 'include/ListView/ListViewGeneric.tpl', $where, $params);
   $savedSearchName = empty($_REQUEST['saved_search_select_name']) ? '' : (' - ' . $_REQUEST['saved_search_select_name']);
   echo get_form_header($current_module_strings['LBL_LIST_FORM_TITLE'] . $savedSearchName, '', false);
   echo $lv->display();
   //print mysql_error();
   $savedSearch = new SavedSearch();
   $json        = getJSONobj();
   // FILLS IN SAVED VIEWS SELECT BOX ON SHORTCUT MENU
   $savedSearchSelects = $json->encode(array($GLOBALS['app_strings']['LBL_SAVED_SEARCH_SHORTCUT'] . '<br>' . $savedSearch->getSelect('EcmReminders')));
   $str                = "<script>
   YAHOO.util.Event.addListener(window, 'load', SUGAR.util.fillShortcuts, $savedSearchSelects);
   </script>";
   echo $str;
?>
