Example #1
0
 function process(Mobile_API_Request $request)
 {
     $mode = $request->get('mode');
     $module = $this->cachedModule($request->get('module'));
     $searchIn = $this->cachedSearchFields($module->name());
     if ($mode == 'update') {
         $searchIn = array();
         foreach ($_REQUEST as $k => $v) {
             if (preg_match("/field_(.*)/i", $k, $m)) {
                 $searchIn[] = vtlib_purify($m[1]);
             }
         }
         $this->cacheSearchFields($module->name(), $searchIn);
         header("Location: index.php?_operation=listModuleRecords&module={$module->name()}&mode=search");
         exit;
     }
     $request->setDefault('record', "{$module->id()}x0");
     $wsResponse = parent::process($request);
     $wsResponseResult = $wsResponse->getResult();
     $templateRecord = Mobile_UI_ModuleRecordModel::buildModelFromResponse($wsResponseResult['record']);
     $viewer = new Mobile_UI_Viewer();
     $viewer->assign('_MODULE', $module);
     $viewer->assign('_RECORD', $templateRecord);
     $viewer->assign('_SEARCHIN', $searchIn);
     $viewer->assign('_SEARCHIN_ALL', empty($searchIn));
     $response = $viewer->process('generic/SearchConfig.tpl');
     return $response;
 }
 function process(Mobile_API_Request $request)
 {
     $wsResponse = parent::process($request);
     $response = false;
     if ($wsResponse->hasError()) {
         $response = $wsResponse;
     } else {
         $wsResponseResult = $wsResponse->getResult();
         $module = $this->cachedModuleLookupWithRecordId($wsResponseResult['record']['id']);
         $record = Mobile_UI_ModuleRecordModel::buildModelFromResponse($wsResponseResult['record']);
         $record->setId($wsResponseResult['record']['id']);
         $viewer = new Mobile_UI_Viewer();
         $viewer->assign('_MODULE', $module);
         $viewer->assign('_RECORD', $record);
         $response = $viewer->process('generic/Detail.tpl');
     }
     return $response;
 }
 /** END */
 function process(Mobile_API_Request $request)
 {
     $wsResponse = parent::process($request);
     $response = false;
     if ($wsResponse->hasError()) {
         $response = $wsResponse;
     } else {
         $wsResponseResult = $wsResponse->getResult();
         $viewer = new Mobile_UI_Viewer();
         $viewer->assign('_MODULE', $this->cachedModule($wsResponseResult['module']));
         $viewer->assign('_RECORDS', Mobile_UI_ModuleRecordModel::buildModelsFromResponse($wsResponseResult['records']));
         $viewer->assign('_MODE', $request->get('mode'));
         $viewer->assign('_PAGER', $this->getPagingModel($request));
         $viewer->assign('_SEARCH', $request->get('search'));
         $response = $viewer->process('generic/List.tpl');
     }
     return $response;
 }
 function process(Mobile_API_Request $request)
 {
     global $modules_with_comments;
     $wsResponse = parent::process($request);
     $current_user = $this->getActiveUser();
     $current_language = $this->sessionGet('language');
     include_once dirname(__FILE__) . '/../language/' . $current_language . '.lang.php';
     //generate dateformat for Smarty
     $target_date_format = $current_user->date_format;
     $target_date_format = str_replace("yyyy", "%Y", $target_date_format);
     $target_date_format = str_replace("mm", "%m", $target_date_format);
     $target_date_format = str_replace("dd", "%d", $target_date_format);
     $response = false;
     if ($wsResponse->hasError()) {
         $response = $wsResponse;
     } else {
         $wsResponseResult = $wsResponse->getResult();
         $moduleObj = $this->cachedModuleLookupWithRecordId($wsResponseResult['record']['id']);
         $record = Mobile_UI_ModuleRecordModel::buildModelFromResponse($wsResponseResult['record']);
         $record->setId($wsResponseResult['record']['id']);
         $viewer = new Mobile_UI_Viewer();
         //display comments? $modules_with_comments comes from MobileSettings.config.php
         if (in_array($moduleObj->name(), $modules_with_comments)) {
             $viewer->assign('COMMENTDISPLAY', true);
         } else {
             $viewer->assign('COMMENTDISPLAY', false);
         }
         $viewer->assign('_MODULE', $moduleObj);
         $viewer->assign('_RECORD', $record);
         $viewer->assign('MOD', $mod_strings);
         $viewer->assign('DATEFORMAT', $target_date_format);
         $viewer->assign('HOURFORMAT', $current_user->hour_format);
         $viewer->assign('LANGUAGE', $current_language);
         if (isset($wsResponseResult['comments'])) {
             $viewer->assign('_COMMENTS', $wsResponseResult['comments']);
         }
         $response = $viewer->process('generic/Detail.tpl');
     }
     return $response;
 }
Example #5
0
 function process(Mobile_API_Request $request)
 {
     global $currentModule;
     if ($request->getOperation() != 'create') {
         $wsResponse = parent::process($request);
     } else {
         $wsResponse = Mobile_WS_Describe::process($request);
     }
     $response = false;
     if ($wsResponse->hasError()) {
         $response = $wsResponse;
     } else {
         $wsResponseResult = $wsResponse->getResult();
         $currentModule = vtlib_purify($_REQUEST['module']);
         $origmodule = $currentModule;
         if ($currentModule == 'Events') {
             $targetModule = 'Calendar';
         } else {
             $targetModule = $currentModule;
         }
         if ($request->getOperation() != 'create') {
             $moduleObj = $this->cachedModuleLookupWithRecordId($wsResponseResult['record']['id']);
             $record = Mobile_UI_ModuleRecordModel::buildModelFromResponse($wsResponseResult['record']);
             $record->setId($wsResponseResult['record']['id']);
         } else {
             $moduleObj = $this->cachedModuleLookup($targetModule);
             $record = Mobile_UI_ModuleRecordModel::buildModel($wsResponseResult['record']);
             $record->setId('');
         }
         $current_user = $this->getActiveUser();
         //for compatibility to CRM versions 5.2.1 and 5.3.0 ff.
         $current_language = $this->sessionGet('language');
         include_once dirname(__FILE__) . '/../language/' . $current_language . '.lang.php';
         //generate dateformat for Smarty
         $target_date_format = $current_user->date_format;
         $target_date_format = str_replace("yyyy", "%Y", $target_date_format);
         $target_date_format = str_replace("mm", "%m", $target_date_format);
         $target_date_format = str_replace("dd", "%d", $target_date_format);
         //generate language for Smarty date (like 'de')
         $target_lang_format = substr($current_language, 3, 2);
         // change variance for split record id
         $recordIdComponents = explode('x', $wsResponseResult['record']['id']);
         //this is a temporary fix for invitees for events, must get modified later
         $invited_users = array();
         if ($currentModule == 'Events') {
             global $adb;
             $sql = 'select vtiger_users.user_name,vtiger_invitees.* from vtiger_invitees left join vtiger_users on vtiger_invitees.inviteeid=vtiger_users.id where activityid=?';
             $result = $adb->pquery($sql, array($recordIdComponents[1]));
             $num_rows = $adb->num_rows($result);
             for ($i = 0; $i < $num_rows; $i++) {
                 $userid = $adb->query_result($result, $i, 'inviteeid');
                 $username = $adb->query_result($result, $i, 'user_name');
                 $invited_users[$userid] = $username;
             }
         }
         //hour format for wheel
         if ($current_user->hour_format == '24') {
             $timewheelformat = 'HHii';
         } else {
             $timewheelformat = '';
         }
         $viewer = new Mobile_UI_Viewer();
         $viewer->assign('_MODULE', $moduleObj);
         $viewer->assign('CURRENTMODUL', $currentModule);
         $viewer->assign('_RECORD', $record);
         $viewer->assign('id', $wsResponseResult['record']['id']);
         $viewer->assign('mode', $request->getOperation());
         $viewer->assign('mobilerecordid', $wsResponseResult['record']['id']);
         $viewer->assign('MOD', $mod_strings);
         $viewer->assign('DATEFORMAT', $current_user->date_format);
         $viewer->assign('SMARTYDATEFORMAT', $target_date_format);
         $viewer->assign('HOURFORMATFORMAT', $current_user->hour_format);
         $viewer->assign('LANGFORMATFORMAT', $target_lang_format);
         $viewer->assign('INVITEES', implode(",", array_keys($invited_users)));
         $viewer->assign('LANGUAGE', $current_language);
         $viewer->assign('ORIGMODULE', $origmodule);
         $viewer->assign('TIMEWHEEL', $timewheelformat);
         $response = $viewer->process('generic/edit.tpl');
     }
     return $response;
 }
Example #6
0
 /** END */
 function process(Mobile_API_Request $request)
 {
     $wsResponse = parent::process($request);
     $response = false;
     if ($wsResponse->hasError()) {
         $response = $wsResponse;
     } else {
         $wsResponseResult = $wsResponse->getResult();
         $tabid = getTabid($wsResponseResult['module']);
         $CATEGORY = getParentTabFromModule($wsResponseResult['module']);
         //serch
         $total_record_count = 0;
         $query_string = trim($_REQUEST['query_string']);
         $curModule = 'Home';
         $search_tag = vtlib_purify($_REQUEST['search_tag']);
         function getSearchModules($filter = array())
         {
             global $adb;
             // vtlib customization: Ignore disabled modules.
             //$sql = 'select distinct vtiger_field.tabid,name from vtiger_field inner join vtiger_tab on vtiger_tab.tabid=vtiger_field.tabid where vtiger_tab.tabid not in (16,29)';
             $sql = 'select distinct vtiger_field.tabid,name from vtiger_field inner join vtiger_tab on vtiger_tab.tabid=vtiger_field.tabid where vtiger_tab.tabid not in (16,29) and vtiger_tab.presence != 1 and vtiger_field.presence in (0,2)';
             // END
             $result = $adb->pquery($sql, array());
             while ($module_result = $adb->fetch_array($result)) {
                 $modulename = $module_result['name'];
                 // Do we need to filter the module selection?
                 if (!empty($filter) && is_array($filter) && !in_array($modulename, $filter)) {
                     continue;
                 }
                 // END
                 if ($modulename != 'Calendar') {
                     $return_arr[$modulename] = $modulename;
                 } else {
                     $return_arr[$modulename] = 'Activity';
                 }
             }
             return $return_arr;
         }
         if (isset($query_string) && $query_string != '') {
             // Was the search limited by user for specific modules?
             $search_onlyin = $_REQUEST['search_onlyin'];
             if (!empty($search_onlyin) && $search_onlyin != '--USESELECTED--') {
                 $search_onlyin = explode(',', $search_onlyin);
             } else {
                 if ($search_onlyin == '--USESELECTED--') {
                     $search_onlyin = $_SESSION['__UnifiedSearch_SelectedModules__'];
                 } else {
                     $search_onlyin = array();
                 }
             }
             // Save the selection for futur use (UnifiedSearchModules.php)
             $_SESSION['__UnifiedSearch_SelectedModules__'] = $search_onlyin;
             // END
             $object_array = getSearchModules($search_onlyin);
             global $adb;
             global $current_user;
             global $theme;
             $theme_path = "themes/" . $theme . "/";
             $image_path = $theme_path . "images/";
             $search_val = $query_string;
             $search_module = $_REQUEST['search_module'];
             $i = 0;
             $moduleRecordCount = array();
             foreach ($object_array as $module => $object_name) {
                 if ($curModule == 'Home' || $curModule == $module && !empty($_REQUEST['ajax'])) {
                     $focus = CRMEntity::getInstance($module);
                     if (isPermitted($module, "index") == "yes") {
                         $smarty = new vtigerCRM_Smarty();
                         global $mod_strings;
                         global $app_strings;
                         $smarty->assign("MOD", $mod_strings);
                         $smarty->assign("APP", $app_strings);
                         $smarty->assign("THEME", $theme);
                         $smarty->assign("IMAGE_PATH", $image_path);
                         $smarty->assign("MODULE", $module);
                         $smarty->assign("TAG_SEARCH", $search_tag);
                         $smarty->assign("SEARCH_MODULE", vtlib_purify($_REQUEST['search_module']));
                         $smarty->assign("SINGLE_MOD", $module);
                         $smarty->assign("SEARCH_STRING", htmlentities($search_val, ENT_QUOTES, $default_charset));
                         $listquery = getListQuery($module);
                         $oCustomView = '';
                         $oCustomView = new CustomView($module);
                         //Instead of getting current customview id, use cvid of All so that all entities will be found
                         //$viewid = $oCustomView->getViewId($module);
                         $cv_res = $adb->pquery("select cvid from vtiger_customview where viewname='All' and entitytype=?", array($module));
                         $viewid = $adb->query_result($cv_res, 0, 'cvid');
                         $listquery = $oCustomView->getModifiedCvListQuery($viewid, $listquery, $module);
                         if ($module == "Calendar") {
                             if (!isset($oCustomView->list_fields['Close'])) {
                                 $oCustomView->list_fields['Close'] = array('activity' => 'status');
                             }
                             if (!isset($oCustomView->list_fields_name['Close'])) {
                                 $oCustomView->list_fields_name['Close'] = 'status';
                             }
                         }
                         if ($search_module != '' || $search_tag != '') {
                             //This is for Tag search
                             $where = getTagWhere($search_val, $current_user->id);
                             $search_msg = $app_strings['LBL_TAG_SEARCH'];
                             $search_msg .= "<b>" . to_html($search_val) . "</b>";
                         } else {
                             //This is for Global search
                             $where = getUnifiedWhere($listquery, $module, $search_val);
                             $search_msg = $app_strings['LBL_SEARCH_RESULTS_FOR'];
                             $search_msg .= "<b>" . htmlentities($search_val, ENT_QUOTES, $default_charset) . "</b>";
                         }
                         if ($where != '') {
                             $listquery .= ' and (' . $where . ')';
                         }
                         if (!(isset($_REQUEST['ajax']) && $_REQUEST['ajax'] != '')) {
                             $count_result = $adb->query($listquery);
                             $noofrows = $adb->num_rows($count_result);
                         } else {
                             $noofrows = vtlib_purify($_REQUEST['recordCount']);
                         }
                         $moduleRecordCount[$module]['count'] = $noofrows;
                         global $list_max_entries_per_page;
                         if (!empty($_REQUEST['start'])) {
                             $start = $_REQUEST['start'];
                             if ($start == 'last') {
                                 $count_result = $adb->query(mkCountQuery($listquery));
                                 $noofrows = $adb->query_result($count_result, 0, "count");
                                 if ($noofrows > 0) {
                                     $start = ceil($noofrows / $list_max_entries_per_page);
                                 }
                             }
                             if (!is_numeric($start)) {
                                 $start = 1;
                             } elseif ($start < 0) {
                                 $start = 1;
                             }
                             $start = ceil($start);
                         } else {
                             $start = 1;
                         }
                         $navigation_array = VT_getSimpleNavigationValues($start, $list_max_entries_per_page, $noofrows);
                         $limitStartRecord = ($navigation_array['start'] - 1) * $list_max_entries_per_page;
                         if ($adb->dbType == "pgsql") {
                             $listquery = $listquery . " OFFSET {$limitStartRecord} LIMIT {$list_max_entries_per_page}";
                         } else {
                             $listquery = $listquery . " LIMIT {$limitStartRecord}, {$list_max_entries_per_page}";
                         }
                         $list_result = $adb->query($listquery);
                         $listview_entries = $adb->pquery($listquery, array());
                         $entity = "select id from vtiger_ws_entity where ismodule=1 and name =?";
                         $ws_entity = $adb->pquery($entity, array($module));
                         $ws_entity2 = $adb->query_result($ws_entity, 0, 'id');
                         $filde = "select fieldname,entityidfield from vtiger_entityname where modulename =?";
                         $ws_entity1 = $adb->pquery($filde, array($module));
                         $fieldname = $adb->query_result($ws_entity1, 0, 'fieldname');
                         $entityidfield = $adb->query_result($ws_entity1, 0, 'entityidfield');
                         $firstname = explode(',', $fieldname);
                         $noofrows = $adb->num_rows($listview_entries);
                         $lstresult = array();
                         for ($i = 0; $i < $noofrows; $i++) {
                             $lstresult[$i]['firstname'] = $adb->query_result($listview_entries, $i, $firstname[0]);
                             $lstresult[$i]['lastname'] = $adb->query_result($listview_entries, $i, $firstname[1]);
                             $lstresult[$i]['id'] = $ws_entity2 . "x" . $adb->query_result($listview_entries, $i, 'crmid');
                         }
                         //Do not display the Header if there are no entires in listview_entries
                         if (count($listview_entries) > 0) {
                             $display_header = 1;
                         } else {
                             $display_header = 0;
                         }
                         $smarty->assign("LISTHEADER", $listview_header);
                         $smarty->assign("LISTENTITY", $lstresult);
                         $smarty->assign("DISPLAYHEADER", $display_header);
                         $smarty->assign("HEADERCOUNT", count($listview_header));
                         $smarty->assign("searchstring", $query_string);
                         $smarty->assign("SEARCH_CRITERIA", "( {$noofrows} )" . $search_msg);
                         $smarty->display("UnifiedSearchAjax1.tpl");
                         unset($_SESSION['lvs'][$module]);
                         $i++;
                     }
                 }
             }
             //Added to display the Total record count
         }
         //end search
         $viewer = new Mobile_UI_Viewer();
         $viewer->assign('_MODULE', $this->cachedModule($wsResponseResult['module']));
         $viewer->assign('_RECORDS', Mobile_UI_ModuleRecordModel::buildModelsFromResponse($wsResponseResult['records']));
     }
     return $response;
 }