예제 #1
0
 function addRelation($request)
 {
     $sourceModule = $request->getModule();
     $sourceRecordId = $request->get('src_record');
     $relatedModule = $request->get('related_module');
     if (is_numeric($relatedModule)) {
         $relatedModule = Vtiger_Functions::getModuleName($relatedModule);
     }
     $relatedRecordIdList = $request->get('related_record_list');
     $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
     $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedModule);
     $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel);
     foreach ($relatedRecordIdList as $relatedRecordId) {
         $relationModel->addRelation($sourceRecordId, $relatedRecordId, $listPrice);
         if ($relatedModule == 'PriceBooks') {
             $recordModel = Vtiger_Record_Model::getInstanceById($relatedRecordId);
             if ($sourceRecordId && ($sourceModule === 'Products' || $sourceModule === 'Services')) {
                 $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecordId, $sourceModule);
                 $recordModel->updateListPrice($sourceRecordId, $parentRecordModel->get('unit_price'));
             }
         }
     }
     $response = new Vtiger_Response();
     $response->setResult(true);
     $response->emit();
 }
예제 #2
0
 public function edit(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     $wid = $request->get('id');
     $moduleModel = Settings_Widgets_Module_Model::getInstance($qualifiedModuleName);
     $WidgetInfo = $moduleModel->getWidgetInfo($wid);
     $RelatedModule = $moduleModel->getRelatedModule($WidgetInfo['tabid']);
     $type = $WidgetInfo['type'];
     $viewer = $this->getViewer($request);
     $viewer->assign('SOURCE', $WidgetInfo['tabid']);
     $viewer->assign('SOURCEMODULE', Vtiger_Functions::getModuleName($WidgetInfo['tabid']));
     $viewer->assign('WID', $wid);
     $viewer->assign('WIDGETINFO', $WidgetInfo);
     $viewer->assign('TYPE', $type);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('MODULE_MODEL', $moduleModel);
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName);
     $viewer->assign('RELATEDMODULES', $RelatedModule);
     $widgetName = 'Vtiger_' . $type . '_Widget';
     if (class_exists($widgetName)) {
         $widgetInstance = new $widgetName();
         $tplName = $widgetInstance->getConfigTplName();
         $viewer->view("widgets/{$tplName}.tpl", 'Vtiger');
     }
 }
예제 #3
0
 public function getSelectableDashboard()
 {
     global $log;
     $log->debug("Entering Settings_WidgetsManagement_Module_Model::getSelectableDashboard() method ...");
     $db = PearDatabase::getInstance();
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $sql = 'SELECT * FROM vtiger_links WHERE linktype = ?';
     $params = array('DASHBOARDWIDGET');
     $result = $db->pquery($sql, $params);
     $widgets = array();
     for ($i = 0; $i < $db->num_rows($result); $i++) {
         $row = $db->query_result_rowdata($result, $i);
         $moduleName = Vtiger_Functions::getModuleName($row['tabid']);
         if ($moduleName != 'Home' && ($row['linklabel'] == 'Mini List' || $row['linklabel'] == 'Notebook')) {
             continue;
         }
         if ($row['linklabel'] == 'Tag Cloud') {
             $isTagCloudExists = getTagCloudView($currentUser->getId());
             if ($isTagCloudExists == 'false') {
                 continue;
             }
         }
         $moduleName = Vtiger_Functions::getModuleName($row['tabid']);
         $widgets[$moduleName][] = Vtiger_Widget_Model::getInstanceFromValues($row);
     }
     $log->debug("Exiting Settings_WidgetsManagement_Module_Model::getSelectableDashboard() method ...");
     return $widgets;
 }
예제 #4
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     $source = $request->get('source');
     $sourceModule = $request->get('sourceModule');
     if ($sourceModule != '') {
         $source = Vtiger_Functions::getModuleId($sourceModule);
     }
     if ($source == '') {
         $source = 6;
     }
     $moduleModel = Settings_Widgets_Module_Model::getInstance($qualifiedModuleName);
     $RelatedModule = $moduleModel->getRelatedModule($source);
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULE_MODEL', $moduleModel);
     $viewer->assign('SOURCE', $source);
     $viewer->assign('SOURCEMODULE', Vtiger_Functions::getModuleName($source));
     $viewer->assign('WIDGETS', $moduleModel->getWidgets($source));
     $viewer->assign('RELATEDMODULES', $RelatedModule);
     $viewer->assign('FILTERS', json_encode($moduleModel->getFiletrs($RelatedModule)));
     $viewer->assign('CHECKBOXS', json_encode($moduleModel->getCheckboxs($RelatedModule)));
     //$viewer->assign('EXCLUDEDTYPES', $moduleModel->excludedTypes($source) );
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName);
     $viewer->assign('MODULE', $moduleName);
     $viewer->view('Index.tpl', $qualifiedModuleName);
 }
예제 #5
0
 /**
  * Function to get the list view entries
  * @param Vtiger_Paging_Model $pagingModel
  * @return <Array> - Associative array of record id mapped to Vtiger_Record_Model instance.
  */
 public function getListViewEntries($pagingModel)
 {
     $db = PearDatabase::getInstance();
     $module = $this->getModule();
     $moduleName = $module->getName();
     $parentModuleName = $module->getParentName();
     $qualifiedModuleName = $moduleName;
     if (!empty($parentModuleName)) {
         $qualifiedModuleName = $parentModuleName . ':' . $qualifiedModuleName;
     }
     $recordModelClass = Vtiger_Loader::getComponentClassName('Model', 'Record', $qualifiedModuleName);
     $listQuery = $this->getBasicListQuery();
     $startIndex = $pagingModel->getStartIndex();
     $pageLimit = $pagingModel->getPageLimit();
     $orderBy = $this->getForSql('orderby');
     if (!empty($orderBy) && $orderBy === 'smownerid') {
         $fieldModel = Vtiger_Field_Model::getInstance('assigned_user_id', $moduleModel);
         if ($fieldModel->getFieldDataType() == 'owner') {
             $orderBy = 'COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname)';
         }
     }
     if (!empty($orderBy)) {
         $listQuery .= ' ORDER BY ' . $orderBy . ' ' . $this->getForSql('sortorder');
     }
     $sourceModule = $this->get('sourceModule');
     if (!empty($sourceModule)) {
         $tabId = Vtiger_Functions::getModuleId($sourceModule);
         $listQuery .= " WHERE `module` = '{$tabId}' ";
     }
     if ($module->isPagingSupported()) {
         $nextListQuery = $listQuery . ' LIMIT ' . ($startIndex + $pageLimit) . ',1';
         $listQuery .= " LIMIT {$startIndex}, {$pageLimit}";
     }
     $listResult = $db->pquery($listQuery, array());
     $noOfRecords = $db->num_rows($listResult);
     $listViewRecordModels = array();
     for ($i = 0; $i < $noOfRecords; ++$i) {
         $row = $db->query_result_rowdata($listResult, $i);
         $record = new $recordModelClass();
         $record->setData($row);
         $recordModule = Vtiger_Functions::getModuleName($row['module']);
         $record->set('module', vtranslate($recordModule, $recordModule));
         if (method_exists($record, 'getModule') && method_exists($record, 'setModule')) {
             $moduleModel = Settings_Vtiger_Module_Model::getInstance($qualifiedModuleName);
             $record->setModule($moduleModel);
         }
         $listViewRecordModels[$record->getId()] = $record;
     }
     if ($module->isPagingSupported()) {
         $pagingModel->calculatePageRange($listViewRecordModels);
         $nextPageResult = $db->pquery($nextListQuery, array());
         $nextPageNumRows = $db->num_rows($nextPageResult);
         if ($nextPageNumRows <= 0) {
             $pagingModel->set('nextPageExists', false);
         }
     }
     return $listViewRecordModels;
 }
예제 #6
0
 /**
  * Function to get the list view entries
  * @param Vtiger_Paging_Model $pagingModel
  * @return <Array> - Associative array of record id mapped to Vtiger_Record_Model instance.
  */
 public function getListViewEntries($pagingModel)
 {
     $db = PearDatabase::getInstance();
     $module = $this->getModule();
     $parentModuleName = $module->getParentName();
     if (!empty($parentModuleName)) {
         $qualifiedModuleName = $parentModuleName . ':' . $module->getName();
     }
     $recordModelClass = Vtiger_Loader::getComponentClassName('Model', 'Record', $qualifiedModuleName);
     $listFields = $module->listFields;
     $listQuery = 'SELECT ';
     foreach ($listFields as $fieldName => $fieldLabel) {
         $listQuery .= '`' . $fieldName . '`, ';
     }
     $listQuery .= '`' . $module->baseIndex . '` FROM `' . $module->baseTable . '`';
     $params = [];
     $sourceModule = $this->get('sourceModule');
     if (!empty($sourceModule)) {
         $sourceModule = Vtiger_Functions::getModuleName($sourceModule);
         $listQuery .= ' WHERE `tabid` = ?';
         $params[] = $sourceModule;
     }
     $startIndex = $pagingModel->getStartIndex();
     $pageLimit = $pagingModel->getPageLimit();
     $orderBy = $this->getForSql('orderby');
     if (!empty($orderBy)) {
         $listQuery .= ' ORDER BY ' . $orderBy . ' ' . $this->getForSql('sortorder');
     }
     $nextListQuery = $listQuery . ' LIMIT ' . ($startIndex + $pageLimit) . ',1';
     $listQuery .= " LIMIT {$startIndex}," . ($pageLimit + 1);
     $listResult = $db->pquery($listQuery, $params);
     $listViewRecordModels = [];
     while ($row = $db->getRow($listResult)) {
         $recordModel = new $recordModelClass();
         $moduleName = Vtiger_Functions::getModuleName($row['tabid']);
         $relModuleName = Vtiger_Functions::getModuleName($row['reltabid']);
         $row['tabid'] = vtranslate($moduleName, $moduleName);
         $row['reltabid'] = vtranslate($relModuleName, $relModuleName);
         $recordModel->setData($row);
         $listViewRecordModels[$recordModel->getId()] = $recordModel;
     }
     $pagingModel->calculatePageRange($listViewRecordModels);
     if ($listResult->rowCount() > $pageLimit) {
         array_pop($listViewRecordModels);
         $pagingModel->set('nextPageExists', true);
     } else {
         $pagingModel->set('nextPageExists', false);
     }
     $nextPageResult = $db->pquery($nextListQuery, $params);
     if ($nextPageResult->rowCount() <= 0) {
         $pagingModel->set('nextPageExists', false);
     }
     return $listViewRecordModels;
 }
예제 #7
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('id');
     $moduleInstance = Settings_MappedFields_Module_Model::getInstanceById($recordId);
     header('content-type: application/xml; charset=utf-8');
     header('Pragma: public');
     header('Cache-Control: private');
     header('Content-Disposition: attachment; filename=' . $recordId . '_mftemplate.xml');
     header('Content-Description: PHP Generated Data');
     $xml = new DOMDocument('1.0', 'utf-8');
     $xml->preserveWhiteSpace = false;
     $xml->formatOutput = true;
     $xmlTemplate = $xml->createElement('mf_template');
     $xmlFields = $xml->createElement('fields');
     $xmlField = $xml->createElement('field');
     $cDataColumns = ['conditions', 'params'];
     $changeNames = ['tabid', 'reltabid'];
     foreach (Settings_MappedFields_Module_Model::$allFields as $field) {
         if (in_array($field, $cDataColumns)) {
             $name = $xmlTemplate->appendChild($xml->createElement($field));
             $name->appendChild($xml->createCDATASection(html_entity_decode($moduleInstance->getRecord()->getRaw($field))));
         } else {
             if (in_array($field, $changeNames)) {
                 $value = Vtiger_Functions::getModuleName($moduleInstance->get($field));
             } else {
                 $value = $moduleInstance->get($field);
             }
             $xmlColumn = $xml->createElement($field, html_entity_decode($value, ENT_COMPAT, 'UTF-8'));
         }
         $xmlTemplate->appendChild($xmlColumn);
     }
     foreach ($moduleInstance->getMapping() as $field) {
         $xmlField = $xml->createElement('field');
         foreach ($field as $key => $details) {
             if (gettype($details) == 'object') {
                 $value = $details->getFieldName();
             } else {
                 $value = $details;
             }
             $xmlColumn = $xml->createElement($key, html_entity_decode($value, ENT_COMPAT, 'UTF-8'));
             $xmlField->appendChild($xmlColumn);
         }
         $xmlFields->appendChild($xmlField);
     }
     $xmlTemplate->appendChild($xmlFields);
     $xmlTemplate->appendChild($xmlFields);
     $xml->appendChild($xmlTemplate);
     print $xml->saveXML();
 }
예제 #8
0
 public function step($step, Vtiger_Request $request)
 {
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     $recordId = $request->get('record');
     if ($recordId) {
         $moduleInstance = Settings_MappedFields_Module_Model::getInstanceById($recordId);
         $viewer->assign('RECORDID', $recordId);
         $viewer->assign('MODE', 'edit');
     } else {
         $moduleInstance = Settings_MappedFields_Module_Model::getCleanInstance();
     }
     $viewer->assign('MAPPEDFIELDS_MODULE_MODEL', $moduleInstance);
     $allModules = Settings_MappedFields_Module_Model::getSupportedModules();
     $viewer->assign('ALL_MODULES', $allModules);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName);
     switch ($step) {
         case 'step4':
             $viewer->view('Step4.tpl', $qualifiedModuleName);
             break;
         case 'step3':
             $moduleSourceName = Vtiger_Functions::getModuleName($moduleInstance->get('tabid'));
             $moduleModel = Vtiger_Module_Model::getInstance($moduleSourceName);
             $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
             $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
             $viewer->assign('SOURCE_MODULE', $moduleSourceName);
             $viewer->assign('ADVANCE_CRITERIA', Vtiger_AdvancedFilter_Helper::transformToAdvancedFilterCondition($moduleInstance->get('conditions')));
             $viewer->view('Step3.tpl', $qualifiedModuleName);
             break;
         case 'step2':
             $currentUser = Users_Record_Model::getCurrentUserModel();
             $assignedToValues = [];
             $assignedToValues['LBL_USERS'] = $currentUser->getAccessibleUsers();
             $assignedToValues['LBL_GROUPS'] = $currentUser->getAccessibleGroups();
             $viewer->assign('SEL_MODULE_MODEL', Settings_MappedFields_Module_Model::getInstance($moduleInstance->get('tabid')));
             $viewer->assign('REL_MODULE_MODEL', Settings_MappedFields_Module_Model::getInstance($moduleInstance->get('reltabid')));
             $viewer->assign('USERS_LIST', $assignedToValues);
             $viewer->view('Step2.tpl', $qualifiedModuleName);
             break;
         case 'step1':
         default:
             $viewer->view('Step1.tpl', $qualifiedModuleName);
             break;
     }
 }
예제 #9
0
 function addRelation($request)
 {
     $sourceModule = $request->getModule();
     $sourceRecordId = $request->get('src_record');
     $relatedModule = $request->get('related_module');
     if (is_numeric($relatedModule)) {
         $relatedModule = Vtiger_Functions::getModuleName($relatedModule);
     }
     $relatedRecordIdList = $request->get('related_record_list');
     $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
     $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedModule);
     $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel);
     foreach ($relatedRecordIdList as $relatedRecordId) {
         $relationModel->addRelation($sourceRecordId, $relatedRecordId, $listPrice);
     }
     $response = new Vtiger_Response();
     $response->setResult(true);
     $response->emit();
 }
예제 #10
0
 public function process(Vtiger_Request $request)
 {
     vimport('~~modules/OSSPdf/helpers/Conditions.php');
     $moduleSettingsName = $request->getModule(false);
     $moduleName = $request->getModule();
     $record = $request->get('record');
     $baseModule = Vtiger_Functions::getModuleName($request->get('base_module'));
     $num = $request->get('num');
     if ("" == $num) {
         $num = 0;
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('NUM', ++$num);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('BASE_MODULE', $baseModule);
     $viewer->assign('CONDITION_LIST', Conditions::getListBaseModuleField($baseModule));
     $viewer->assign('FIELD_LIST', Conditions::getListBaseModuleField($baseModule));
     echo $viewer->view('Condition.tpl', $moduleSettingsName, true);
 }
예제 #11
0
 public function getType($module = false)
 {
     $moduleName = Vtiger_Functions::getModuleName($module);
     $dir = 'modules/Vtiger/widgets/';
     $ffs = scandir($dir);
     foreach ($ffs as $ff) {
         $action = str_replace('.php', "", $ff);
         if ($ff != '.' && $ff != '..' && !is_dir($dir . '/' . $ff) && $action != 'Basic') {
             $folderFiles[$action] = $action;
             vimport('~~' . $dir . $ff);
             $modelClassName = Vtiger_Loader::getComponentClassName('Widget', $action, 'Vtiger');
             $instance = new $modelClassName();
             if ($instance->allowedModules && !in_array($moduleName, $instance->allowedModules)) {
                 unset($folderFiles[$action]);
             }
         }
     }
     return $folderFiles;
 }
예제 #12
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     $wid = $request->get('id');
     $moduleModel = Settings_Widgets_Module_Model::getInstance($qualifiedModuleName);
     $WidgetInfo = $moduleModel->getWidgetInfo($wid);
     $RelatedModule = $moduleModel->getRelatedModule($WidgetInfo['tabid']);
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULE_MODEL', $moduleModel);
     $viewer->assign('SOURCE', $WidgetInfo['tabid']);
     $viewer->assign('SOURCEMODULE', Vtiger_Functions::getModuleName($WidgetInfo['tabid']));
     $viewer->assign('WID', $wid);
     $viewer->assign('WIDGETINFO', $WidgetInfo);
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName);
     $viewer->assign('RELATEDMODULES', $RelatedModule);
     $viewer->assign('MODULE', $moduleName);
     $viewer->view('Edit.tpl', $qualifiedModuleName);
 }
예제 #13
0
 /**
  * Gets status
  * @return - array of status
  */
 public static function getStatusNotModify()
 {
     $log = vglobal('log');
     $adb = PearDatabase::getInstance();
     $log->debug("Entering Settings_RealizationProcesses_Module_Model::getStatusNotModify() method ...");
     $sql = 'SELECT * FROM `vtiger_realization_process`;';
     $result = $adb->query($sql);
     $rowsNum = $adb->num_rows($result);
     for ($i = 0; $i < $rowsNum; $i++) {
         $moduleId = $adb->query_result($result, $i, 'module_id');
         $moduleName = Vtiger_Functions::getModuleName($moduleId);
         $return[$moduleName]['id'] = $moduleId;
         $status = Zend_Json::decode(html_entity_decode($adb->query_result($result, $i, 'status_indicate_closing')));
         if (!is_array($status)) {
             $status = [$status];
         }
         $return[$moduleName]['status'] = $status;
     }
     $log->debug("Exiting Settings_RealizationProcesses_Module_Model::getStatusNotModify() method ...");
     return $return;
 }
예제 #14
0
파일: List2.php 프로젝트: Wasage/werpa
 public function process(Vtiger_Request $request) {
     $viewer = $this->getViewer ($request);
     $moduleName = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     $module = Vtiger_Functions::getModuleName($request->get("module_id"));
     
     $adb = PearDatabase::getInstance();
     $sql = "select * from  vtiger_customview where viewname = ? and entitytype = ? and status = ?";
     $result = $adb->pquery($sql, array('All', $module, 0));
     while($row = $adb->fetchByAssoc($result)){
         $record = $row['cvid'];
     }
     $customViewModel = CustomView_Record_Model::getInstanceById($record);
     $moduleModel = Vtiger_Module_Model::getInstance($module);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     $recordStructure = $recordStructureInstance->getStructure();
     
     $viewer->assign('CUSTOMVIEW_MODEL', $customViewModel);
     $viewer->assign('RECORD_STRUCTURE', $recordStructure);
     $viewer->assign('RECORD_ID', $record);
     $viewer->assign('SOURCE_MODULE', $module);
     $viewer->assign('MODULENAME', $moduleName);
     echo $viewer->view('List2.tpl', $qualifiedModuleName,true);
 }
예제 #15
0
 public static function getMenu()
 {
     $db = PearDatabase::getInstance();
     $profileId = self::getCurrentUserProfile();
     $userModel = Users_Record_Model::getCurrentUserModel();
     $isAdmin = is_admin($userModel);
     if ($isAdmin) {
         $sql = "SELECT * FROM `vtiger_ossmenumanager` WHERE `parent_id` = ? AND `visible` = ? ORDER BY `sequence` ASC;";
         $params = array(0, 1);
     } else {
         $sql = "SELECT * FROM `vtiger_ossmenumanager` WHERE `parent_id` = ? AND `visible` = ? AND (";
         if (!empty($profileId)) {
             for ($i = 0; $i < count($profileId); $i++) {
                 $sql .= "`permission` RLIKE ' " . $profileId[$i] . " ' OR ";
             }
         }
         $sql .= " `permission` = '' OR `permission` = '0') ORDER BY `sequence` ASC;";
         $params = array(0, 1);
         //	echo '<pre>';print_r($num);echo '</pre>';
     }
     $result = $db->pquery($sql, $params, true);
     $num = $db->num_rows($result);
     $menuStructure = array();
     $breadcrumbs = array();
     $request = new Vtiger_Request($_REQUEST, $_REQUEST);
     if ($num > 0) {
         for ($i = 0; $i < $num; $i++) {
             $id = $db->query_result($result, $i, 'id');
             $locationicon = $db->query_result($result, $i, 'locationicon');
             $sizeicon = $db->query_result($result, $i, 'sizeicon');
             $name = $db->query_result($result, $i, 'label');
             $sizeicon_first = substr($sizeicon, 0, strpos($sizeicon, "x"));
             $sizeicon_second = substr($sizeicon, 3, 5);
             $langfied = $db->query_result($result, $i, 'langfield');
             if ($langfied) {
                 $res = explode('#', $langfied);
                 for ($k = 0; count($res) > $k; $k++) {
                     $prefix = substr($res[$k], 0, strpos($res[$k], "*"));
                     $value = substr($res[$k], 6);
                     if (Users_Record_Model::getCurrentUserModel()->get('language') == $prefix) {
                         //		echo '<pre>';print_r($_matches[1][$k]);echo '</pre>';exit;
                         $name = $value;
                     }
                 }
             }
             $menuStructure[$name] = array();
             if ($isAdmin) {
                 $subSql = "SELECT * FROM `vtiger_ossmenumanager` WHERE `parent_id` = ? AND `visible` = ? ORDER BY `sequence` ASC;";
                 $subParams = array($id, 1);
             } else {
                 $subSql = "SELECT * FROM `vtiger_ossmenumanager` WHERE `parent_id` = ? AND `visible` = ? AND (";
                 if (!empty($profileId)) {
                     for ($k = 0; $k < count($profileId); $k++) {
                         $subSql .= "`permission` RLIKE ' " . $profileId[$k] . " ' OR ";
                     }
                 }
                 $subSql .= " `permission` = '' OR `permission` = '0') ORDER BY `sequence` ASC;";
                 $subParams = array($id, 1);
             }
             $subResult = $db->pquery($subSql, $subParams, true);
             $subNum = $db->num_rows($subResult);
             if ($subNum > 0) {
                 for ($j = 0; $j < $subNum; $j++) {
                     $subName = $db->query_result($subResult, $j, 'label');
                     $subNameOrg = $subName;
                     $type = $db->query_result($subResult, $j, 'type');
                     $tabId = $db->query_result($subResult, $j, 'tabid');
                     $newWindow = $db->query_result($subResult, $j, 'new_window');
                     $locationiconname = $db->query_result($subResult, $j, 'locationicon');
                     $subsizeicon = $db->query_result($subResult, $j, 'sizeicon');
                     $subsizeicon_first = substr($subsizeicon, 0, strpos($subsizeicon, "x"));
                     $subsizeicon_second = substr($subsizeicon, 3, 5);
                     $langfiedpick = $db->query_result($subResult, $j, 'langfield');
                     if ($langfiedpick && intval($type) == 0) {
                         $res = explode('#', $langfiedpick);
                         for ($k = 0; count($res) > $k; $k++) {
                             $prefix = substr($res[$k], 0, strpos($res[$k], "*"));
                             $value = substr($res[$k], 6);
                             //	echo '<pre>';print_r($value);echo '</pre>';exit;
                             if (Users_Record_Model::getCurrentUserModel()->get('language') == $prefix) {
                                 $subName = $value;
                             }
                         }
                     } elseif ($langfiedpick) {
                         $res = explode('#', $langfiedpick);
                         for ($k = 0; count($res) > $k; $k++) {
                             $prefix = substr($res[$k], 0, strpos($res[$k], "*"));
                             $value = substr($res[$k], 6);
                             //	echo '<pre>';print_r($value);echo '</pre>';exit;
                             if (Users_Record_Model::getCurrentUserModel()->get('language') == $prefix) {
                                 $subName = $value;
                             }
                         }
                     }
                     if ($newWindow == 1) {
                         $newWindow = '*_blank*';
                     } else {
                         $newWindow = '';
                     }
                     switch (intval($type)) {
                         case 0:
                             $model = Vtiger_Module_Model::getInstance($subNameOrg);
                             if ($model) {
                                 $url = $model->getDefaultUrl();
                             } else {
                                 // usuń nieistniejącą pozycję
                                 $recordModel = Vtiger_Record_Model::getCleanInstance('OSSMenuManager');
                                 $recordModel->deleteMenu($subId);
                                 $url = false;
                             }
                             break;
                         case 1:
                         case 2:
                         case 3:
                         case 4:
                         default:
                             $url = $db->query_result_raw($subResult, $j, 'url');
                     }
                     if ($url !== false) {
                         $url = $newWindow . $url;
                         $menuStructure[$name][$j] = array('name' => $subName, 'mod' => $subNameOrg, 'link' => $url, 'sizeicon_first' => $subsizeicon_first, 'sizeicon_second' => $subsizeicon_second, 'locationiconname' => $locationiconname);
                     }
                     $moduleName = Vtiger_Functions::getModuleName($tabId);
                     $excludedViews = array("DashBoard", 'index', 'Index');
                     $purl = false;
                     if ($request->get('module') != '' && $request->get('module') == $moduleName && vglobal('breadcrumbs') && $request->get('parent') == '') {
                         $breadcrumbs[] = array('lable' => vtranslate($name, 'OSSMenuManager'));
                         $breadcrumbs[] = array('lable' => vtranslate($subName, $moduleName), 'url' => $url, 'class' => 'moduleColor_' . $moduleName);
                         if ($request->get('view') == 'Edit' && $request->get('record') == '') {
                             $breadcrumbs[] = array('lable' => vtranslate('LBL_VIEW_CREATE', $moduleName));
                         } elseif (!in_array($request->get('view'), $excludedViews)) {
                             $breadcrumbs[] = array('lable' => vtranslate('LBL_VIEW_' . strtoupper($request->get('view')), $moduleName));
                         }
                         if ($request->get('record') != '') {
                             $recordLabel = Vtiger_Functions::getCRMRecordLabel($request->get('record'));
                             if ($recordLabel != '') {
                                 $breadcrumbs[] = array('lable' => $recordLabel);
                             }
                         }
                     } elseif (vglobal('breadcrumbs') && $request->get('module') != '' && $request->get('parent') == '') {
                         $parts = parse_url($url);
                         parse_str($parts['query'], $purl);
                         if ($request->get('module') == $purl['module'] && $request->get('view') == $purl['view'] && $request->get('viewname') == $purl['viewname']) {
                             $breadcrumbs[] = array('lable' => vtranslate($name, 'OSSMenuManager'));
                             $breadcrumbs[] = array('lable' => vtranslate($request->get('module'), $request->get('module')), 'url' => 'index.php?module=' . $request->get('module') . '&view=List', 'class' => 'moduleColor_' . $request->get('module'));
                             if ($request->get('view') != 'List') {
                                 $breadcrumbs[] = array('lable' => vtranslate($subName, $moduleName), 'url' => $url);
                             }
                         }
                     }
                 }
             }
             $menuStructureGroupe[$name]['iconf'] = $sizeicon_first;
             $menuStructureGroupe[$name]['picon'] = $locationicon;
             $menuStructureGroupe[$name]['icons'] = $sizeicon_second;
         }
         if (vglobal('breadcrumbs') && count($breadcrumbs) == 0 && $request->get('module') != '' && $request->get('parent') == '') {
             $breadcrumbs[] = array('lable' => vtranslate($request->get('module'), $request->get('module')), 'url' => 'index.php?module=' . $request->get('module') . '&view=List', 'class' => 'moduleColor_' . $request->get('module'));
             if ($request->get('view') == 'Edit' && $request->get('record') == '') {
                 $breadcrumbs[] = array('lable' => vtranslate('LBL_VIEW_CREATE', $request->get('module')));
             } else {
                 $breadcrumbs[] = array('lable' => vtranslate('LBL_VIEW_' . strtoupper($request->get('view')), $request->get('module')));
             }
             if ($request->get('record') != '') {
                 $recordLabel = Vtiger_Functions::getCRMRecordLabel($request->get('record'));
                 if ($recordLabel != '') {
                     $breadcrumbs[] = array('lable' => $recordLabel);
                 }
             }
         }
         return array('structure' => $menuStructure, 'icons' => $menuStructureGroupe, 'breadcrumbs' => $breadcrumbs);
     } else {
         return array();
     }
 }
예제 #16
0
 static function getModuleFieldTypeOfDataInfos($tables, $tabid = '')
 {
     $result = array();
     if (!empty($tabid)) {
         $module = Vtiger_Functions::getModuleName($tabid);
         $fieldInfos = Vtiger_Functions::getModuleFieldInfos($tabid);
         foreach ($fieldInfos as $name => $field) {
             if (($field['displaytype'] == '1' || $field['displaytype'] == '3') && ($field['presence'] == '0' || $field['presence'] == '2')) {
                 $label = Vtiger_Functions::getTranslatedString($field['fieldlabel'], $module);
                 $result[$name] = array($label => $field['typeofdata']);
             }
         }
     } else {
         throw new Exception('Field lookup by table no longer supported');
     }
     return $result;
 }
예제 #17
0
 function pobox()
 {
     global $log, $adb;
     $sql = "SELECT * FROM `vtiger_field` WHERE `fieldname` LIKE 'addresslevel1%';";
     $result = $adb->query($sql, true);
     $Num = $adb->num_rows($result);
     for ($i = 0; $i < $Num; $i++) {
         $row = $adb->query_result_rowdata($result, $i);
         $tabid = $row['tabid'];
         $moduleName = Vtiger_Functions::getModuleName($tabid);
         $block = $row['block'];
         $tablename = $row['tablename'];
         $fieldname = $row['fieldname'];
         $name = 'pobox' . substr($fieldname, -1);
         $moduleInstance = Vtiger_Module::getInstance($moduleName);
         $blockInstance = Vtiger_Block::getInstance($block, $moduleInstance);
         $fieldInstance = new Vtiger_Field();
         $fieldInstance->name = $name;
         $fieldInstance->table = $tablename;
         $fieldInstance->label = 'Po Box';
         $fieldInstance->column = $name;
         $fieldInstance->columntype = 'varchar(50)';
         $fieldInstance->uitype = 1;
         $fieldInstance->typeofdata = 'V~O';
         $blockInstance->addField($fieldInstance);
     }
 }
예제 #18
0
 public static function findEmail($emails, $searchModule = false, $returnArray = true)
 {
     $adb = PearDatabase::getInstance();
     if ($returnArray) {
         $return = [];
     } else {
         $return = '';
     }
     $EmailSearchList = self::getEmailSearchList();
     if (strpos($emails, ',')) {
         $emailsArray = explode(',', $emails);
     } else {
         $emailsArray[0] = $emails;
     }
     if ($EmailSearchList != null && $emails != '' && !empty($EmailSearchList['fields'])) {
         if (strpos($EmailSearchList['fields'], ',')) {
             $fields = explode(',', $EmailSearchList['fields']);
         } else {
             $fields[0] = $EmailSearchList['fields'];
         }
         foreach ($fields as $field) {
             $enableFind = true;
             $row = explode('=', $field);
             if ($searchModule) {
                 $moduleId = Vtiger_Functions::getModuleId($searchModule);
                 if ($moduleId != $row[2]) {
                     $enableFind = false;
                 }
             }
             if ($enableFind) {
                 $module = Vtiger_Functions::getModuleName($row[2]);
                 require_once "modules/{$module}/{$module}.php";
                 $ModuleObject = new $module();
                 $table_index = $ModuleObject->table_index;
                 foreach ($emailsArray as $email) {
                     $result = $adb->pquery("SELECT {$table_index} FROM " . $row[0] . ' INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = ' . $row[0] . ".{$table_index} WHERE vtiger_crmentity.deleted = 0 AND " . $row[1] . ' = ? ', [$email]);
                     while ($crmid = $adb->getSingleValue($result)) {
                         if ($returnArray) {
                             $return[] = $crmid;
                         } else {
                             if ($return != '') {
                                 $return .= ',';
                             }
                             $return .= $crmid;
                         }
                     }
                 }
             }
         }
     }
     return $return;
 }
예제 #19
0
 public function process(Vtiger_Request $request)
 {
     $db = PearDatabase::getInstance();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $record = $request->get('record');
     if (!empty($record) && $request->get('isDuplicate') == true) {
         $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
         $viewer->assign('MODE', '');
     } else {
         if (!empty($record)) {
             $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
             $viewer->assign('RECORD_ID', $record);
             $viewer->assign('MODE', 'edit');
         } else {
             $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
             $viewer->assign('MODE', '');
         }
     }
     $moduleModel = $recordModel->getModule();
     $fieldList = $moduleModel->getFields();
     $requestFieldList = array_intersect_key($request->getAll(), $fieldList);
     foreach ($requestFieldList as $fieldName => $fieldValue) {
         $fieldModel = $fieldList[$fieldName];
         if ($fieldModel->isEditable()) {
             $recordModel->set($fieldName, $fieldValue);
         }
     }
     if ($request->get('record') != '') {
         $rid = $request->get('record');
         $mresult = $db->query("SELECT moduleid FROM vtiger_osspdf WHERE osspdfid = '{$rid}'", true);
         $moduleid = $db->query_result($mresult, 0, 'moduleid');
     } else {
         $moduleid = '2';
     }
     $pobierz = $db->query("select name from vtiger_tab where tabid = '{$moduleid}'", true);
     $modulename = $db->query_result($pobierz, 0, "name");
     $chosen_module = $modulename;
     $pobierz_bloki = $db->query("select blockid, blocklabel from vtiger_blocks where tabid = '{$moduleid}'", true);
     $field_list = array();
     for ($k = 0; $k < $db->num_rows($pobierz_bloki); $k++) {
         $blockid = $db->query_result($pobierz_bloki, $k, "blockid");
         $label = $db->query_result($pobierz_bloki, $k, "blocklabel");
         $pobierz_pola = $db->query("select fieldname, fieldlabel from vtiger_field where block = '{$blockid}' and tabid = '{$moduleid}'", true);
         for ($i = 0; $i < $db->num_rows($pobierz_pola); $i++) {
             $field_list[vtranslate($label, $modulename)][$i]['name'] = $db->query_result($pobierz_pola, $i, "fieldname");
             $field_list[vtranslate($label, $modulename)][$i]['label'] = vtranslate($db->query_result($pobierz_pola, $i, "fieldlabel"), $modulename);
         }
     }
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT);
     ///Conditions
     vimport('~~modules/OSSPdf/helpers/Conditions.php');
     $baseModule = Vtiger_Functions::getModuleName($moduleid);
     $Condition = Conditions::getConditionRelToRecordFieldInfo($request->get('record'), $baseModule);
     $viewer->assign('CONDITION_BY_TYPE', Conditions::getConditionByType());
     $viewer->assign('REQUIRED_CONDITIONS', $Condition['required_conditions']);
     $viewer->assign('OPTIONAL_CONDITIONS', $Condition['optional_conditions']);
     $viewer->assign('FIELD_LIST', Conditions::getListBaseModuleField($baseModule));
     $viewer->assign('BASE_MODULE', $baseModule);
     $viewer->assign('RECORD', $recordModel);
     ///Conditions
     $viewer->assign('DEFAULT_FIELDS', $field_list);
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('CURRENTDATE', date('Y-n-j'));
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $mappingRelatedField = $moduleModel->getMappingRelatedField($moduleName);
     $viewer->assign('MAPPING_RELATED_FIELD', Zend_Json::encode($mappingRelatedField));
     $isRelationOperation = $request->get('relationOperation');
     //if it is relation edit
     $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation);
     if ($isRelationOperation) {
         $viewer->assign('SOURCE_MODULE', $request->get('sourceModule'));
         $viewer->assign('SOURCE_RECORD', $request->get('sourceRecord'));
     }
     $viewer->assign('MAX_UPLOAD_LIMIT_MB', vglobal('upload_maxsize') / 1000000);
     $viewer->assign('MAX_UPLOAD_LIMIT', vglobal('upload_maxsize'));
     $viewer->view('EditView.tpl', $moduleName);
 }
예제 #20
0
 public function getTree()
 {
     $tree = array();
     $templateId = $this->getId();
     if (empty($templateId)) {
         return $tree;
     }
     $adb = PearDatabase::getInstance();
     $lastId = 0;
     $result = $adb->pquery('SELECT * FROM vtiger_trees_templates_data WHERE templateid = ?', [$templateId]);
     $module = $this->get('module');
     if (is_numeric($module)) {
         $module = Vtiger_Functions::getModuleName($module);
     }
     for ($i = 0; $i < $adb->num_rows($result); $i++) {
         $row = $adb->raw_query_result_rowdata($result, $i);
         $treeID = (int) str_replace('T', '', $row['tree']);
         $cut = strlen('::' . $row['tree']);
         $parenttrre = substr($row['parenttrre'], 0, -$cut);
         $pieces = explode('::', $parenttrre);
         $parent = (int) str_replace('T', '', end($pieces));
         $tree[] = ['id' => $treeID, 'parent' => $parent == 0 ? '#' : $parent, 'text' => vtranslate($row['name'], $module), 'state' => $row['state'] ? $row['state'] : ''];
         if ($treeID > $lastId) {
             $lastId = $treeID;
         }
     }
     $this->set('lastId', $lastId);
     return $tree;
 }
예제 #21
0
    public function process($moduleName, $iD, $record_form, $config)
    {
        $db = PearDatabase::getInstance();
        $moduleNameID = Vtiger_Functions::getModuleId($moduleName);
        $fieldlabel = $sql_ext = '';
        $save_record1 = true;
        $save_record2 = true;
        $save_record = true;
        $type = 0;
        $typeInfo = 'info';
        $info = false;
        if ($iD != 0 && $iD != '' && !array_key_exists($config['what1'], $record_form)) {
            $Record_Model = Vtiger_Record_Model::getInstanceById($iD, $moduleName);
            $value1 = $Record_Model->get($config['what1']);
        } else {
            if (array_key_exists($config['what1'], $record_form)) {
                $value1 = $record_form[$config['what1']];
            }
        }
        if ($iD != 0 && $iD != '' && !array_key_exists($config['what2'], $record_form)) {
            $Record_Model = Vtiger_Record_Model::getInstanceById($iD, $moduleName);
            $value2 = $Record_Model->get($config['what2']);
        } else {
            if (array_key_exists($config['what2'], $record_form)) {
                $value2 = $record_form[$config['what2']];
            }
        }
        if (!is_array($config['where1'])) {
            $wheres1[] = $config['where1'];
        } else {
            $wheres1 = $config['where1'];
        }
        if (!is_array($config['where2'])) {
            $wheres2[] = $config['where2'];
        } else {
            $wheres2 = $config['where2'];
        }
        if ($value1 != '') {
            foreach ($wheres1 as $where) {
                $where = explode('=', $where);
                $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
                $ModuleInstance = CRMEntity::getInstance($DestModuleName);
                $tab_name_index = $ModuleInstance->tab_name_index;
                $index = $tab_name_index[$where[0]];
                $sql_param = array($value1);
                $sql_ext = '';
                $spacialCondition = '';
                $sqlSpecial = '';
                if ($moduleNameID == $where[2] && $iD != 0 && $iD != '') {
                    $sql_param[] = $iD;
                    $sql_ext = 'AND ' . $index . ' <> ?';
                }
                if ($DestModuleName == 'Leads') {
                    $spacialCondition = ' AND `converted` = 0';
                    if ('vtiger_crmentity' == $where[0]) {
                        $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid ';
                    }
                }
                $result = $db->pquery("SELECT {$index} FROM {$where[0]} {$sqlSpecial} WHERE {$where[1]} = ? {$sql_ext} {$spacialCondition};", $sql_param, true);
                $num = $db->num_rows($result);
                for ($i = 0; $i < $num; $i++) {
                    $id = $db->query_result_raw($result, $i, $index);
                    $metadata = Vtiger_Functions::getCRMRecordMetadata($id);
                    if ($metadata['setype'] == $DestModuleName) {
                        $save_record1 = false;
                        $deletedLabel = $metadata['deleted'] ? ' - ' . vtranslate('LBL_RECORD_DELETED', 'DataAccess') : '';
                        $fieldlabel .= '<li><a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '"><strong>' . Vtiger_Functions::getCRMRecordLabel($id) . '</strong></a> (' . Vtiger_Functions::getOwnerRecordLabel($metadata['smownerid']) . ')' . $deletedLabel . ',</li>';
                    }
                }
            }
        }
        if ($value2 != '') {
            foreach ($wheres2 as $where) {
                $where = explode('=', $where);
                $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
                $ModuleInstance = CRMEntity::getInstance($DestModuleName);
                $tab_name_index = $ModuleInstance->tab_name_index;
                $index = $tab_name_index[$where[0]];
                $sql_param = array($value2);
                $sql_ext = '';
                $spacialCondition = '';
                $sqlSpecial = '';
                if ($moduleNameID == $where[2] && $iD != 0 && $iD != '') {
                    $sql_param[] = $iD;
                    $sql_ext = 'AND ' . $index . ' <> ?';
                }
                if ($DestModuleName == 'Leads') {
                    $spacialCondition = ' AND `converted` = 0';
                    if ('vtiger_crmentity' == $where[0]) {
                        $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid ';
                    }
                }
                $result = $db->pquery("SELECT {$index} FROM {$where[0]} WHERE {$where[1]} = ? {$sql_ext};", $sql_param, true);
                $num = $db->num_rows($result);
                for ($i = 0; $i < $num; $i++) {
                    $id = $db->query_result_raw($result, $i, $index);
                    $metadata = Vtiger_Functions::getCRMRecordMetadata($id);
                    if ($metadata['setype'] == $DestModuleName) {
                        $save_record2 = false;
                        $deletedLabel = $metadata['deleted'] ? ' - ' . vtranslate('LBL_RECORD_DELETED', 'DataAccess') : '';
                        $fieldlabel .= '<li><a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '"><strong>' . Vtiger_Functions::getCRMRecordLabel($id) . '</strong></a> (' . Vtiger_Functions::getOwnerRecordLabel($metadata['smownerid']) . ')' . $deletedLabel . ',</li>';
                    }
                }
            }
        }
        if ($config['locksave'] == 0) {
            $info = $config['info0'];
            $type = 2;
            $save_record = !$save_record1 || !$save_record2 ? false : true;
        } elseif (!$save_record1 && !$save_record2) {
            $typeInfo = 'error';
            $save_record = false;
            $info = $config['info2'];
        } elseif (!$save_record1 || !$save_record2) {
            $typeInfo = 'error';
            $save_record = false;
            $info = $config['info1'];
        }
        if ($config['locksave'] == 3 && !$save_record) {
            $type = $config['locksave'];
            $permission = Users_Privileges_Model::isPermitted($moduleName, 'DuplicateRecord');
            $text = '<div class="marginLeft10">' . vtranslate('LBL_DUPLICATED_FOUND', 'DataAccess') . ': <br/ >' . trim($fieldlabel, ',') . '</div>';
            if ($permission) {
                $title = '<strong>' . vtranslate('LBL_DUPLICTAE_CREATION_CONFIRMATION', 'DataAccess') . '</strong>';
                if (!empty($iD)) {
                    $text .= '<form class="form-horizontal"><div class="checkbox">
							<label>
								<input type="checkbox" name="cache"> ' . vtranslate('LBL_DONT_ASK_AGAIN', 'DataAccess') . '
							</label>
						</div></form>';
                }
                if ($record_form['view'] == 'quick_edit') {
                    $text = '<div class="alert alert-warning" role="alert">' . vtranslate('LBL_DUPLICTAE_QUICK_EDIT_CONFIRMATION', 'DataAccess') . '</div>' . $text;
                }
            }
            $info = ['text' => $text, 'title' => $title, 'type' => $permission ? 1 : 0];
        }
        if (!$save_record || $info) {
            return array('save_record' => $save_record, 'type' => $type, 'info' => $info ? $info : ['text' => vtranslate($info, 'DataAccess') . ' <br/ >' . trim($fieldlabel, ','), 'ntype' => $typeInfo, 'hide' => false]);
        } else {
            return array('save_record' => true);
        }
    }
예제 #22
0
 public static function findEmail($emails, $module = false, $return_array = true)
 {
     $adb = PearDatabase::getInstance();
     $EmailSearchList = self::getEmailSearchList();
     if (strpos($emails, ',')) {
         $emails_array = explode(",", $emails);
     } else {
         $emails_array[0] = $emails;
     }
     if ($EmailSearchList != null && $emails != '') {
         if (strpos($EmailSearchList['fields'], ',')) {
             $fields = explode(",", $EmailSearchList['fields']);
         } else {
             $fields[0] = $EmailSearchList['fields'];
         }
         foreach ($fields as $field) {
             $enable_find = true;
             $row = explode("=", $field);
             if ($module) {
                 $ModuleId = Vtiger_Functions::getModuleId($module);
                 if ($ModuleId != $row[2]) {
                     $enable_find = false;
                 }
             } else {
                 $enable_find = false;
             }
             if ($enable_find) {
                 $module = Vtiger_Functions::getModuleName($row[2]);
                 require_once "modules/{$module}/{$module}.php";
                 $ModuleObject = new $module();
                 $table_index = $ModuleObject->table_index;
                 foreach ($emails_array as $email) {
                     $result = $adb->pquery("SELECT {$table_index} FROM " . $row[0] . " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = " . $row[0] . "." . $table_index . " WHERE vtiger_crmentity.deleted = 0  AND " . $row[1] . " = ? ", array($email), true);
                     for ($i = 0; $i < $adb->num_rows($result); $i++) {
                         $crmid = $adb->query_result($result, $i, $table_index);
                         if ($return_array) {
                             $return[] = array($crmid, $module);
                         } else {
                             if ($return != '') {
                                 $return .= ',';
                             }
                             $return .= $crmid;
                         }
                     }
                 }
             }
         }
     }
     return $return;
 }
예제 #23
0
 function preProcess(Vtiger_Request $request, $display = true)
 {
     $db = PearDatabase::getInstance();
     parent::preProcess($request, false);
     $origModuleName = $request->getModule();
     $recordId = $request->get('record');
     if (!$this->record) {
         $this->record = Vtiger_DetailView_Model::getInstance($moduleName, $recordId);
     }
     $recordModel = $this->record->getRecord();
     $recordStrucure = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_DETAIL);
     $summaryInfo = array();
     // Take first block information as summary information
     $stucturedValues = $recordStrucure->getStructure();
     foreach ($stucturedValues as $blockLabel => $fieldList) {
         $summaryInfo[$blockLabel] = $fieldList;
         break;
     }
     $detailViewLinkParams = array('MODULE' => $moduleName, 'RECORD' => $recordId);
     $detailViewLinks = $this->record->getDetailViewLinks($detailViewLinkParams);
     $navigationInfo = ListViewSession::getListViewNavigation($recordId);
     $viewer = $this->getViewer($request);
     $modid = $recordModel->get('moduleid');
     $moduleNameResult = $db->query("select name from vtiger_tab where tabid = '{$modid}'", true);
     $moduleName = $db->query_result($moduleNameResult, 0, 'name');
     $tName = vtranslate($moduleName, $moduleName);
     $viewer->assign('MODULEID_NAME', $tName);
     $viewer->assign('RECORD', $recordModel);
     //var_dump($recordModel);
     //exit;
     ///Conditions
     vimport('~~modules/OSSPdf/helpers/Conditions.php');
     $baseModule = Vtiger_Functions::getModuleName($modid);
     $Condition = Conditions::getConditionRelToRecordFieldInfo($request->get('record'), $baseModule);
     $viewer->assign('REQUIRED_CONDITIONS', $Condition['required_conditions']);
     $viewer->assign('OPTIONAL_CONDITIONS', $Condition['optional_conditions']);
     $viewer->assign('BASE_MODULE', $baseModule);
     ///Conditions
     $viewer->assign('NAVIGATION', $navigationInfo);
     //Intially make the prev and next records as null
     $prevRecordId = null;
     $nextRecordId = null;
     $found = false;
     if ($navigationInfo) {
         foreach ($navigationInfo as $page => $pageInfo) {
             foreach ($pageInfo as $index => $record) {
                 //If record found then next record in the interation
                 //will be next record
                 if ($found) {
                     $nextRecordId = $record;
                     break;
                 }
                 if ($record == $recordId) {
                     $found = true;
                 }
                 //If record not found then we are assiging previousRecordId
                 //assuming next record will get matched
                 if (!$found) {
                     $prevRecordId = $record;
                 }
             }
             //if record is found and next record is not calculated we need to perform iteration
             if ($found && !empty($nextRecordId)) {
                 break;
             }
         }
     }
     $moduleModel = Vtiger_Module_Model::getInstance($origModuleName);
     if (!empty($prevRecordId)) {
         $viewer->assign('PREVIOUS_RECORD_URL', $moduleModel->getDetailViewUrl($prevRecordId));
     }
     if (!empty($nextRecordId)) {
         $viewer->assign('NEXT_RECORD_URL', $moduleModel->getDetailViewUrl($nextRecordId));
     }
     $viewer->assign('MODULE_MODEL', $this->record->getModule());
     $viewer->assign('DETAILVIEW_LINKS', $detailViewLinks);
     $viewer->assign('MODULE', $request->getModule());
     $viewer->assign('IS_EDITABLE', $this->record->getRecord()->isEditable($moduleName));
     $viewer->assign('IS_DELETABLE', $this->record->getRecord()->isDeletable($moduleName));
     $viewer->assign('URL_CONTENT', "index.php?module=OSSPdf&view=content&record={$recordId}");
     $viewer->assign('URL_FOOTER', "index.php?module=OSSPdf&view=footer&record={$recordId}");
     $viewer->assign('URL_HEADER', "index.php?module=OSSPdf&view=header&record={$recordId}");
     $linkParams = array('MODULE' => $moduleName, 'ACTION' => $request->get('view'));
     $linkModels = $this->record->getSideBarLinks($linkParams);
     $viewer->assign('QUICK_LINKS', $linkModels);
     if ($display) {
         $this->preProcessDisplay($request);
     }
 }
예제 #24
0
 public function process($ModuleName, $ID, $record_form, $config)
 {
     $db = PearDatabase::getInstance();
     $ModuleNameID = Vtiger_Functions::getModuleId($ModuleName);
     $sql_ext = '';
     $save_record1 = true;
     $save_record2 = true;
     $save_record = true;
     $type = 'info';
     $info = false;
     if ($ID != 0 && $ID != '' && !array_key_exists($config['what1'], $record_form)) {
         $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName);
         $value1 = $Record_Model->get($config['what1']);
     } else {
         if (array_key_exists($config['what1'], $record_form)) {
             $value1 = $record_form[$config['what1']];
         }
     }
     if ($ID != 0 && $ID != '' && !array_key_exists($config['what2'], $record_form)) {
         $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName);
         $value2 = $Record_Model->get($config['what2']);
     } else {
         if (array_key_exists($config['what2'], $record_form)) {
             $value2 = $record_form[$config['what2']];
         }
     }
     if (!is_array($config['where1'])) {
         $wheres1[] = $config['where1'];
     } else {
         $wheres1 = $config['where1'];
     }
     if (!is_array($config['where2'])) {
         $wheres2[] = $config['where2'];
     } else {
         $wheres2 = $config['where2'];
     }
     if ($value1 != '') {
         foreach ($wheres1 as $where) {
             $where = explode('=', $where);
             $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
             $ModuleInstance = CRMEntity::getInstance($DestModuleName);
             $tab_name_index = $ModuleInstance->tab_name_index;
             $index = $tab_name_index[$where[0]];
             $sql_param = array($value1);
             $sql_ext = '';
             if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') {
                 $sql_param[] = $ID;
                 $sql_ext = 'AND ' . $index . ' <> ?';
             }
             $result = $db->pquery("SELECT {$index} FROM {$where[0]} WHERE {$where[1]} = ? {$sql_ext};", $sql_param, true);
             for ($i = 0; $i < $db->num_rows($result); $i++) {
                 $save_record1 = false;
                 $id = $db->query_result_raw($result, $i, $index);
                 $result = $db->pquery("SELECT smownerid FROM vtiger_crmentity WHERE crmid = ?", array($id), true);
                 $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">&bull; ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($db->query_result($result, 0, 'smownerid')) . '),';
             }
         }
     }
     if ($value2 != '') {
         foreach ($wheres2 as $where) {
             $where = explode('=', $where);
             $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
             $ModuleInstance = CRMEntity::getInstance($DestModuleName);
             $tab_name_index = $ModuleInstance->tab_name_index;
             $index = $tab_name_index[$where[0]];
             $sql_param = array($value1);
             $sql_ext = '';
             if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') {
                 $sql_param[] = $ID;
                 $sql_ext = 'AND ' . $index . ' <> ?';
             }
             $result = $db->pquery("SELECT {$index} FROM {$where[0]} WHERE {$where[1]} = ? {$sql_ext};", $sql_param, true);
             for ($i = 0; $i < $db->num_rows($result); $i++) {
                 $save_record2 = false;
                 $id = $db->query_result_raw($result, $i, $index);
                 $result = $db->pquery("SELECT smownerid FROM vtiger_crmentity WHERE crmid = ?", array($id), true);
                 $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">&bull; ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($db->query_result($result, 0, 'smownerid')) . '),';
             }
         }
     }
     if ($config['locksave'] == 0 && $ID == '') {
         $info = $config['info0'];
     } elseif (!$save_record1 && !$save_record2) {
         $type = 'error';
         $save_record = false;
         $info = $config['info2'];
     } elseif (!$save_record1 || !$save_record2) {
         $type = 'error';
         $save_record = false;
         $info = $config['info1'];
     }
     if (!$save_record || $info) {
         return array('save_record' => $save_record, 'type' => 0, 'info' => array('title' => vtranslate($info, 'DataAccess') . ' <br/ >' . trim($fieldlabel, ','), 'type' => $type, 'hide' => false));
     } else {
         return array('save_record' => true);
     }
 }
예제 #25
0
	public function getBlocksId()
	{
		$log = vglobal('log');
		$log->debug("Entering Settings_WidgetsManagement_Module_Model::getBlocksId() method ...");
		$adb = PearDatabase::getInstance();
		$data = array();
		$query = 'SELECT 
				  `vtiger_module_dashboard_blocks`.* , `vtiger_role`.`rolename` 
				FROM
				  `vtiger_module_dashboard_blocks` 
				  INNER JOIN `vtiger_role` 
				  ON `vtiger_module_dashboard_blocks`.`authorized` = `vtiger_role`.`roleid`;';
		$result = $adb->query($query);
		for ($i = 0; $i < $adb->num_rows($result); $i++) {
			$blockId = $adb->query_result($result, $i, 'id');
			$authorizedName = $adb->query_result($result, $i, 'rolename');
			$tabId = $adb->query_result($result, $i, 'tabid');
			$authorized = $adb->query_result($result, $i, 'authorized');
			$moduleName = Vtiger_Functions::getModuleName($tabId);
			$data[$moduleName][$blockId]['name'] = $authorizedName;
			$data[$moduleName][$blockId]['code'] = $authorized;
		}
		$log->debug("Exiting Settings_WidgetsManagement_Module_Model::getBlocksId() method ...");
		return $data;
	}
예제 #26
0
 public function getName()
 {
     return Vtiger_Functions::getModuleName($this->get('tabid'));
 }
예제 #27
0
파일: utils.php 프로젝트: yunter/crm
/** Function to get the tab module name for a given id
 * @param $tabid -- tab id:: Type integer
 * @returns $string -- string:: Type string
 *
 */
function getTabModuleName($tabid)
{
    return Vtiger_Functions::getModuleName($tabid);
}
예제 #28
0
 public function getRelatedName()
 {
     return Vtiger_Functions::getModuleName($this->get('reltabid'));
 }
예제 #29
0
 /**
  * Function returns related records based on related moduleName
  * @param Vtiger_Request $request
  * @return <type>
  */
 function showRelatedRecords(Vtiger_Request $request)
 {
     $parentId = $request->get('record');
     $pageNumber = $request->get('page');
     $limit = $request->get('limit');
     $whereCondition = $request->get('whereCondition');
     $relatedModuleName = $request->get('relatedModule');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $moduleName = $request->getModule();
     if (empty($pageNumber)) {
         $pageNumber = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (!empty($limit)) {
         $pagingModel->set('limit', $limit);
     } else {
         $pagingModel->set('limit', 10);
     }
     if ($sortOrder == 'ASC') {
         $nextSortOrder = 'DESC';
         $sortImage = 'glyphicon glyphicon-chevron-down';
     } else {
         $nextSortOrder = 'ASC';
         $sortImage = 'glyphicon glyphicon-chevron-up';
     }
     if (empty($orderBy) && empty($sortOrder)) {
         if (is_numeric($relatedModuleName)) {
             $relatedModuleName = Vtiger_Functions::getModuleName($relatedModuleName);
         }
         $relatedInstance = CRMEntity::getInstance($relatedModuleName);
         $orderBy = $relatedInstance->default_order_by;
         $sortOrder = $relatedInstance->default_sort_order;
     }
     $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName);
     if (!empty($whereCondition)) {
         $relationListView->set('whereCondition', $whereCondition);
     }
     if (!empty($orderBy)) {
         $relationListView->set('orderby', $orderBy);
         $relationListView->set('sortorder', $sortOrder);
     }
     $models = $relationListView->getEntries($pagingModel);
     $links = $relationListView->getLinks();
     $header = $relationListView->getHeaders();
     $relationModel = $relationListView->getRelationModel();
     $relatedModuleModel = $relationModel->getRelationModuleModel();
     $relationField = $relationModel->getRelationField();
     $noOfEntries = count($models);
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('COLUMNS', $request->get('col'));
     $viewer->assign('LIMIT', $request->get('limit'));
     $viewer->assign('RELATED_RECORDS', $models);
     $viewer->assign('RELATED_HEADERS', $header);
     $viewer->assign('RELATED_MODULE', $relatedModuleModel);
     $viewer->assign('RELATED_MODULE_NAME', $relatedModuleName);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('PARENT_RECORD', $parentRecordModel);
     $viewer->assign('RELATED_LIST_LINKS', $links);
     $viewer->assign('RELATED_ENTIRES_COUNT', $noOfEntries);
     $viewer->assign('RELATION_FIELD', $relationField);
     if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false)) {
         $totalCount = $relationListView->getRelatedEntriesCount();
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('TOTAL_ENTRIES', $totalCount);
         $viewer->assign('PERFORMANCE', true);
     }
     $viewer->assign('PAGING', $pagingModel);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     $viewer->assign('IS_EDITABLE', $relationModel->isEditable());
     $viewer->assign('IS_DELETABLE', $relationModel->isDeletable());
     return $viewer->view('SummaryWidgets.tpl', $moduleName, 'true');
 }
예제 #30
0
 public function process($ModuleName, $ID, $record_form, $config)
 {
     $db = PearDatabase::getInstance();
     $ModuleNameID = Vtiger_Functions::getModuleId($ModuleName);
     $fieldlabel = $sql_ext = '';
     $save_record1 = true;
     $save_record2 = true;
     $save_record = true;
     $type = 0;
     $typeInfo = 'info';
     $info = false;
     if ($ID != 0 && $ID != '' && !array_key_exists($config['what1'], $record_form)) {
         $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName);
         $value1 = $Record_Model->get($config['what1']);
     } else {
         if (array_key_exists($config['what1'], $record_form)) {
             $value1 = $record_form[$config['what1']];
         }
     }
     if ($ID != 0 && $ID != '' && !array_key_exists($config['what2'], $record_form)) {
         $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName);
         $value2 = $Record_Model->get($config['what2']);
     } else {
         if (array_key_exists($config['what2'], $record_form)) {
             $value2 = $record_form[$config['what2']];
         }
     }
     if (!is_array($config['where1'])) {
         $wheres1[] = $config['where1'];
     } else {
         $wheres1 = $config['where1'];
     }
     if (!is_array($config['where2'])) {
         $wheres2[] = $config['where2'];
     } else {
         $wheres2 = $config['where2'];
     }
     if ($value1 != '') {
         foreach ($wheres1 as $where) {
             $where = explode('=', $where);
             $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
             $ModuleInstance = CRMEntity::getInstance($DestModuleName);
             $tab_name_index = $ModuleInstance->tab_name_index;
             $index = $tab_name_index[$where[0]];
             $sql_param = array($value1);
             $sql_ext = '';
             $spacialCondition = '';
             $sqlSpecial = '';
             if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') {
                 $sql_param[] = $ID;
                 $sql_ext = 'AND ' . $index . ' <> ?';
             }
             if ($DestModuleName == 'Leads') {
                 $spacialCondition = ' AND `converted` = 0';
                 if ('vtiger_crmentity' == $where[0]) {
                     $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid ';
                 }
             }
             $result = $db->pquery("SELECT {$index} FROM {$where[0]} {$sqlSpecial} WHERE {$where[1]} = ? {$sql_ext} {$spacialCondition};", $sql_param, true);
             $num = $db->num_rows($result);
             for ($i = 0; $i < $num; $i++) {
                 $id = $db->query_result_raw($result, $i, $index);
                 $metadata = Vtiger_Functions::getCRMRecordMetadata($id);
                 if ($metadata['setype'] == $DestModuleName) {
                     $save_record1 = false;
                     $deletedLabel = $metadata['deleted'] ? ' - ' . vtranslate('LBL_RECORD_DELETED', 'DataAccess') : '';
                     $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">&bull; ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($metadata['smownerid']) . ')' . $deletedLabel . ',<br/>';
                 }
             }
         }
     }
     if ($value2 != '') {
         foreach ($wheres2 as $where) {
             $where = explode('=', $where);
             $DestModuleName = Vtiger_Functions::getModuleName($where[2]);
             $ModuleInstance = CRMEntity::getInstance($DestModuleName);
             $tab_name_index = $ModuleInstance->tab_name_index;
             $index = $tab_name_index[$where[0]];
             $sql_param = array($value2);
             $sql_ext = '';
             $spacialCondition = '';
             $sqlSpecial = '';
             if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') {
                 $sql_param[] = $ID;
                 $sql_ext = 'AND ' . $index . ' <> ?';
             }
             if ($DestModuleName == 'Leads') {
                 $spacialCondition = ' AND `converted` = 0';
                 if ('vtiger_crmentity' == $where[0]) {
                     $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid ';
                 }
             }
             $result = $db->pquery("SELECT {$index} FROM {$where[0]} WHERE {$where[1]} = ? {$sql_ext};", $sql_param, true);
             $num = $db->num_rows($result);
             for ($i = 0; $i < $num; $i++) {
                 $id = $db->query_result_raw($result, $i, $index);
                 $metadata = Vtiger_Functions::getCRMRecordMetadata($id);
                 if ($metadata['setype'] == $DestModuleName) {
                     $save_record2 = false;
                     $deletedLabel = $metadata['deleted'] ? ' - ' . vtranslate('LBL_RECORD_DELETED', 'DataAccess') : '';
                     $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">&bull; ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($metadata['smownerid']) . ')' . $deletedLabel . ',<br/>';
                 }
             }
         }
     }
     if ($config['locksave'] == 0) {
         $info = $config['info0'];
         $type = 2;
         $save_record = !$save_record1 || !$save_record2 ? false : true;
     } elseif (!$save_record1 && !$save_record2) {
         $typeInfo = 'error';
         $save_record = false;
         $info = $config['info2'];
     } elseif (!$save_record1 || !$save_record2) {
         $typeInfo = 'error';
         $save_record = false;
         $info = $config['info1'];
     }
     if (!$save_record || $info) {
         return array('save_record' => $save_record, 'type' => $type, 'info' => ['text' => vtranslate($info, 'DataAccess') . ' <br/ >' . trim($fieldlabel, ','), 'ntype' => $typeInfo, 'hide' => false]);
     } else {
         return array('save_record' => true);
     }
 }