Пример #1
0
 public function searchRecord($searchValue, $searchModule, $potentialId)
 {
     $db = PearDatabase::getInstance();
     $potentialId = intval($potentialId);
     if ($searchModule == 'Products') {
         $sql = "SELECT\n\t\t\t\t\t\tcrm.*,\n\t\t\t\t\t\tprod.*\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`vtiger_products` prod\n\t\t\t\t\t\tINNER JOIN `vtiger_crmentity` crm\n\t\t\t\t\t\t\tON crm.`crmid` = prod.`productid`\n\t\t\t\t\t\tINNER JOIN `vtiger_seproductsrel` prodrel\n\t\t\t\t\t\t\tON prod.`productid` = prodrel.`productid`\n\t\t\t\t\t\t\tAND prodrel.`setype` = 'Potentials'\n\t\t\t\t\tWHERE prod.`productname` LIKE '%{$searchValue}%'\n\t\t\t\t\t\tAND crm.`setype` = 'Products'\n\t\t\t\t\t\tAND crm.`deleted` = 0\n\t\t\t\t\t\tAND prodrel.`crmid` = '{$potentialId}';";
     } else {
         $sql = "SELECT\n\t\t\t\t\t\tcrm.*,\n\t\t\t\t\t\tserv.*\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`vtiger_service` serv\n\t\t\t\t\t\tINNER JOIN `vtiger_crmentity` crm\n\t\t\t\t\t\t\tON crm.`crmid` = serv.`serviceid`\n\t\t\t\t\t\tINNER JOIN `vtiger_crmentityrel` crmrel\n\t\t\t\t\t\t\tON serv.`serviceid` = crmrel.`relcrmid`\n\t\t\t\t\t\t\tAND crmrel.`module` = 'Potentials'\n\t\t\t\t\tWHERE serv.`servicename` LIKE '%{$searchValue}%'\n\t\t\t\t\t\tAND crm.`setype` = 'Services'\n\t\t\t\t\t\tAND crm.`deleted` = 0\n\t\t\t\t\t\tAND crmrel.`crmid` = '{$potentialId}';";
     }
     $result = $db->pquery($sql, array());
     $noOfRows = $db->num_rows($result);
     $moduleModels = array();
     $matchingRecords = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if (Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid'])) {
             $row['id'] = $row['crmid'];
             $moduleName = $row['setype'];
             if (!array_key_exists($moduleName, $moduleModels)) {
                 $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName);
             }
             $moduleModel = $moduleModels[$moduleName];
             $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName);
             $recordInstance = new $modelClassName();
             $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
         }
     }
     return $matchingRecords;
 }
Пример #2
0
 public static function getInstanceFromServerType($type,$componentName) {
     // SalesPlatform.ru begin
     require_once 'includes/SalesPlatform/NetIDNA/idna_convert.class.php';
     // SalesPlatform.ru end
     $db = PearDatabase::getInstance();
     $query = 'SELECT * FROM '.self::tableName.' WHERE server_type=?';
     $params = array($type);
     $result = $db->pquery($query,$params);
     try{
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', $componentName, 'Settings:Vtiger');
     }catch(Exception $e) {
         $modelClassName = self;
     }
     $instance = new $modelClassName();
     if($db->num_rows($result) > 0 ){
         $rowData = $db->query_result_rowdata($result,0);
         $instance->setData($rowData);
     }
     // SalesPlatform.ru begin
     $idn = new idna_convert();
     $mail_server_username = $idn->decode($instance->get('server_username'));
     $from_email_field = $idn->decode($instance->get('from_email_field'));
     $instance->set('server_username', $mail_server_username);
     $instance->set('from_email_field', $from_email_field);
     // SalesPlatform.ru end
     return $instance;
 }
Пример #3
0
	/**
	 * Static function to get the UIType object from Vtiger Field Model
	 * @param Vtiger_Field_Model $fieldModel
	 * @return Vtiger_Base_UIType or UIType specific object instance
	 */
	public static function getInstanceFromField($fieldModel)
	{
		$fieldDataType = $fieldModel->getFieldDataType();
		$uiTypeClassSuffix = ucfirst($fieldDataType);
		$moduleName = $fieldModel->getModuleName();
		$moduleSpecificUiTypeClassName = $moduleName . '_' . $uiTypeClassSuffix . '_UIType';
		$uiTypeClassName = 'Vtiger_' . $uiTypeClassSuffix . '_UIType';
		$fallBackClassName = 'Vtiger_Base_UIType';

		$moduleSpecificFileName = 'modules.' . $moduleName . '.uitypes.' . $uiTypeClassSuffix;
		$uiTypeClassFileName = 'modules.Vtiger.uitypes.' . $uiTypeClassSuffix;

		$moduleSpecificFilePath = Vtiger_Loader::resolveNameToPath($moduleSpecificFileName);
		$completeFilePath = Vtiger_Loader::resolveNameToPath($uiTypeClassFileName);

		if (file_exists($moduleSpecificFilePath)) {
			$instance = new $moduleSpecificUiTypeClassName();
		} else if (file_exists($completeFilePath)) {
			$instance = new $uiTypeClassName();
		} else {
			$instance = new $fallBackClassName();
		}
		$instance->set('field', $fieldModel);
		return $instance;
	}
Пример #4
0
 public function process(Vtiger_Request $request)
 {
     $nbmdinwllij = "moduleModel";
     sw_autoload_register("SWExtension", "~/modules/Workflow2/libs");
     ${"GLOBALS"}["lbrvcglwt"] = "sql";
     ${$nbmdinwllij} = Vtiger_Module_Model::getInstance("Workflow2");
     ${"GLOBALS"}["rzvthtpq"] = "repos";
     ${${"GLOBALS"}["orsfdwhbz"]} = new SWExtension_GenKey("Workflow2", $moduleModel->version);
     $vvirsh = "repo";
     $fievvrk = "repos";
     ${${"GLOBALS"}["ksmqgls"]} = PearDatabase::getInstance();
     ${${"GLOBALS"}["lbrvcglwt"]} = "UPDATE vtiger_wf_repository SET licenseCode = \"" . md5($request->get("license")) . "\" WHERE url LIKE \"%repository.stefanwarnat.de%\"";
     $adb->query(${${"GLOBALS"}["tddsprktk"]});
     ${${"GLOBALS"}["rzvthtpq"]} = \Workflow\Repository::getAll(true);
     foreach (${$fievvrk} as ${$vvirsh}) {
         try {
             $repo->installAll(\Workflow\Repository::INSTALL_ALL);
         } catch (Exception $exp) {
         }
     }
     ${${"GLOBALS"}["qcqdlactbzp"]} = new Vtiger_Response();
     try {
         $GenKey->removeLicense();
         $GenKey->g7cd354a00dadcd8c4600f080755860496d0c03d5($request->get("license"), array(__FILE__, Vtiger_Loader::resolveNameToPath("modules.Settings.Workflow2.views.Config")));
         $response->setResult(array("success" => true));
     } catch (Exception $exp) {
         $response->setResult(array("success" => false, "error" => $exp->getMessage()));
     }
     $response->emit();
 }
Пример #5
0
 /**
  * Static Function to get the list of records matching the search key
  * @param <String> $searchKey
  * @return <Array> - List of Vtiger_Record_Model or Module Specific Record Model instances
  */
 public static function getSearchResult($searchKey, $module = false)
 {
     $db = PearDatabase::getInstance();
     $deletedCondition = $this->getModule()->getDeletedRecordCondition();
     $query = 'SELECT * FROM vtiger_crmentity
                 INNER JOIN vtiger_leaddetails ON vtiger_leaddetails.leadid = vtiger_crmentity.crmid
                 WHERE label LIKE ? AND ' . $deletedCondition;
     $params = array("%{$searchKey}%");
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = array();
     $matchingRecords = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         $row['id'] = $row['crmid'];
         $moduleName = $row['setype'];
         if (!array_key_exists($moduleName, $moduleModels)) {
             $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName);
         }
         $moduleModel = $moduleModels[$moduleName];
         $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName);
         $recordInstance = new $modelClassName();
         $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
     }
     return $matchingRecords;
 }
Пример #6
0
 function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $moduleName = $request->getModule();
     $componentName = $request->get('name');
     $linkId = $request->get('linkid');
     if (!empty($componentName)) {
         $className = Vtiger_Loader::getComponentClassName('Dashboard', $componentName, $moduleName);
         if (!empty($className)) {
             $widget = NULL;
             if (!empty($linkId)) {
                 $widget = new Vtiger_Widget_Model();
                 $widget->set('linkid', $linkId);
                 $widget->set('userid', $currentUser->getId());
                 $widget->set('filterid', $request->get('filterid', NULL));
                 if ($request->has('data')) {
                     $widget->set('data', $request->get('data'));
                 }
                 $widget->add();
             }
             $classInstance = new $className();
             $classInstance->process($request, $widget);
             return;
         }
     }
     $response = new Vtiger_Response();
     $response->setResult(array('success' => false, 'message' => vtranslate('NO_DATA')));
     $response->emit();
 }
Пример #7
0
 function process(Vtiger_Request $request)
 {
     $log = vglobal('log');
     $log->debug('Entering ' . __CLASS__ . '::' . __METHOD__ . '() method ...');
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $view = $request->get('fromview');
     $viewer = $this->getViewer($request);
     $handlerClass = Vtiger_Loader::getComponentClassName('Model', 'MappedFields', $moduleName);
     $mfModel = new $handlerClass();
     if ($view == 'List') {
         $allRecords = Vtiger_Mass_Action::getRecordsListFromRequest($request);
         $templates = $mfModel->getActiveTemplatesForModule($moduleName, $view);
         $viewer->assign('ALL_RECORDS', $allRecords);
     } else {
         $templates = $mfModel->getActiveTemplatesForRecord($recordId, $view, $moduleName);
         $viewer->assign('RECORD', $recordId);
     }
     $viewer->assign('TEMPLATES', $templates);
     $viewer->assign('VIEW', $view);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('BASE_MODULE_NAME', 'Vtiger');
     $this->preProcess($request);
     $viewer->view('GenerateModal.tpl', $qualifiedModule);
     $this->postProcess($request);
     $log->debug('Exiting ' . __CLASS__ . '::' . __METHOD__ . ' method ...');
 }
Пример #8
0
 /**
  * Static Function to get the Instance of Vtiger ListView model for a given module and custom view
  * @param <String> $moduleName - Module Name
  * @param <Number> $viewId - Custom View Id
  * @return Vtiger_ListView_Model instance
  */
 public static function getInstance($moduleName, $viewId = 0)
 {
     $db = PearDatabase::getInstance();
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'ListView', $moduleName);
     $instance = new $modelClassName();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     return $instance->set('module', $moduleModel);
 }
Пример #9
0
 /**
  * Function to get the instance
  * @param <String> $moduleName - module name
  * @param <String> $recordId - record id
  * @return <Vtiger_DetailView_Model>
  */
 public static function getInstance($moduleName, $recordId)
 {
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName);
     $instance = new $modelClassName();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $recordModel = Reports_Record_Model::getCleanInstance($recordId, $moduleName);
     return $instance->setModule($moduleModel)->setRecord($recordModel);
 }
Пример #10
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;
 }
Пример #11
0
 /**
  * Function to get instance of provider model
  * @param <String> $providerName
  * @return <SMSNotifier_Provider_Model> provider object
  */
 public static function getInstance($providerName)
 {
     if (!empty($providerName)) {
         $providerName = trim($providerName);
         $className = Vtiger_Loader::getComponentClassName('Provider', $providerName, 'SMSNotifier');
         return new $className();
     }
     return false;
 }
Пример #12
0
 /**
  * Function to get the instance
  * @param <String> $moduleName - module name
  * @param <String> $recordId - record id
  * @return <Vtiger_DetailView_Model>
  */
 public static function getInstance($moduleName, $recordId)
 {
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName);
     $instance = new $modelClassName();
     $moduleModel = EmailTemplates_Module_Model::getInstance($moduleName);
     $recordModel = EmailTemplates_Record_Model::getInstanceById($recordId, $moduleName);
     $recordModel->trackView();
     return $instance->setModule($moduleModel)->setRecord($recordModel);
 }
Пример #13
0
 public static function getInstance($record, $moduleName, $relatedRecord, $relatedModuleName)
 {
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'RelatedCommentModal', $moduleName);
     $instance = new $modelClassName();
     $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($recordModel, $relatedModuleName);
     $instance->set('relationListView', $relationListView)->set('record', $record)->set('moduleName', $moduleName)->set('relatedRecord', $relatedRecord)->set('relatedModuleName', $relatedModuleName);
     return $instance;
 }
Пример #14
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);
     $listFields = $module->listFields;
     $listQuery = "SELECT ";
     foreach ($listFields as $fieldName => $fieldLabel) {
         $listQuery .= "{$fieldName}, ";
     }
     $listQuery .= $module->baseIndex . " FROM " . $module->baseTable;
     $params = array();
     $sourceModule = $this->get('sourceModule');
     if (!empty($sourceModule)) {
         $listQuery .= ' WHERE module_name = ?';
         $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);
     $noOfRecords = $db->num_rows($listResult);
     $listViewRecordModels = array();
     for ($i = 0; $i < $noOfRecords; ++$i) {
         $row = $db->query_result_rowdata($listResult, $i);
         $record = new $recordModelClass();
         $row['module_name'] = vtranslate($row['module_name'], $row['module_name']);
         $row['execution_condition'] = vtranslate($record->executionConditionAsLabel($row['execution_condition']), 'Settings:Workflows');
         $record->setData($row);
         $listViewRecordModels[$record->getId()] = $record;
     }
     $pagingModel->calculatePageRange($listViewRecordModels);
     if ($db->num_rows($listResult) > $pageLimit) {
         array_pop($listViewRecordModels);
         $pagingModel->set('nextPageExists', true);
     } else {
         $pagingModel->set('nextPageExists', false);
     }
     $nextPageResult = $db->pquery($nextListQuery, $params);
     $nextPageNumRows = $db->num_rows($nextPageResult);
     if ($nextPageNumRows <= 0) {
         $pagingModel->set('nextPageExists', false);
     }
     return $listViewRecordModels;
 }
Пример #15
0
 public static function getLayoutFile($name)
 {
     $basePath = 'layouts' . '/' . vglobal('defaultLayout') . '/';
     $filePath = Vtiger_Loader::resolveNameToPath('~' . $basePath . $name);
     if (is_file($filePath)) {
         return $basePath . $name;
     }
     $basePath = 'layouts' . '/' . Vtiger_Viewer::getDefaultLayoutName() . '/';
     return $basePath . $name;
 }
Пример #16
0
 public static function getInstance($module)
 {
     $instance = Vtiger_Cache::get('transferOwnership', $module);
     if (!$instance) {
         $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'TransferOwnership', $module);
         $instance = new $modelClassName();
         $instance->set('module', $module);
         Vtiger_Cache::set('transferOwnership', $module, $instance);
     }
     return $instance;
 }
Пример #17
0
	/**
	 * Get invnetory instance
	 * @param string $moduleName Module name
	 * @return Vtiger_Inventory_Model instance
	 */
	public static function getInstance($moduleName)
	{
		$instance = Vtiger_Cache::get('Inventory', $moduleName);
		if (!$instance) {
			$modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Inventory', $moduleName);
			$instance = new $modelClassName();
			$instance->initialize($moduleName);
			Vtiger_Cache::set('Inventory', $moduleName, $instance);
		}
		return $instance;
	}
Пример #18
0
 /**
  * Static Function to get the instance of Vtiger TreeView Model for the given Vtiger Module Model
  * @param string name of the module
  * @return Vtiger_TreeView_Model instance
  */
 public static function getInstance($moduleModel)
 {
     $moduleName = $moduleModel->get('name');
     if (isset(self::$_cached_instance[$moduleName])) {
         return self::$_cached_instance[$moduleName];
     }
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'TreeView', $moduleName);
     $instance = new $modelClassName();
     self::$_cached_instance[$moduleName] = $instance->set('module', $moduleModel);
     return self::$_cached_instance[$moduleName];
 }
Пример #19
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;
 }
Пример #20
0
 public static function getCleanInstance($moduleName = 'Vtiger')
 {
     $handlerClass = Vtiger_Loader::getComponentClassName('Model', 'PDF', $moduleName);
     $pdf = new $handlerClass();
     $data = [];
     $fields = Settings_PDF_Module_Model::getFieldsByStep();
     foreach ($fields as $field) {
         $data[$field] = '';
     }
     $pdf->setData($data);
     return $pdf;
 }
Пример #21
0
 /**
  * Function to get the path of a given style sheet or default style sheet
  * @param <String> $fileName
  * @return <string / Boolean> - file path , false if not exists
  */
 public static function getFilePath($fileName = '')
 {
     if (empty($fileName)) {
         return false;
     }
     $filePath = self::getBaseJavaScriptPath() . '/' . $fileName;
     $completeFilePath = Vtiger_Loader::resolveNameToPath('~' . $filePath);
     if (file_exists($completeFilePath)) {
         return $filePath;
     }
     return false;
 }
Пример #22
0
 /**
  * Static Function to get the Instance of Vtiger ListView model for a given module and custom view
  * @param <String> $moduleName - Module Name
  * @param <Number> $viewId - Custom View Id
  * @return Vtiger_ListView_Model instance
  */
 public static function getInstance($moduleName, $sourceModule)
 {
     $db = PearDatabase::getInstance();
     $currentUser = vglobal('current_user');
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'ListView', $moduleName);
     $instance = new $modelClassName();
     $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
     $queryGenerator = new QueryGenerator($sourceModuleModel->get('name'), $currentUser);
     $queryGenerator->initForDefaultCustomView();
     $controller = new ListViewController($db, $currentUser, $queryGenerator);
     return $instance->set('module', $sourceModuleModel)->set('query_generator', $queryGenerator)->set('listview_controller', $controller);
 }
Пример #23
0
 public static function getInstanceFromServerType($type,$componentName) {
     $db = PearDatabase::getInstance();
     $query = 'SELECT * FROM '.self::tableName.' WHERE server_type=?';
     $params = array($type);
     $result = $db->pquery($query,$params);
     try{
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', $componentName, 'Settings:Vtiger');
     }catch(Exception $e) {
         $modelClassName = self;
     }
     $instance = new $modelClassName();
     if($db->num_rows($result) > 0 ){
         $rowData = $db->query_result_rowdata($result,0);
         $instance->setData($rowData);
     }
     return $instance;
 }
Пример #24
0
 /**
  * Function to get the selected theme folder path
  * @return <string> -  selected theme path
  */
 public static function getThemePath($theme = '')
 {
     if (empty($theme)) {
         $theme = self::getDefaultThemeName();
     }
     $selectedThemePath = self::getBaseThemePath() . '/' . $theme;
     $fallBackThemePath = self::getBaseThemePath() . '/' . self::getDefaultThemeName();
     $completeSelectedThemePath = Vtiger_Loader::resolveNameToPath('~' . $selectedThemePath);
     $completeFallBackThemePath = Vtiger_Loader::resolveNameToPath('~' . $fallBackThemePath);
     if (file_exists($completeSelectedThemePath)) {
         return $selectedThemePath;
     } else {
         if (file_exists($completeFallBackThemePath)) {
             return $fallBackThemePath;
         }
     }
     return false;
 }
Пример #25
0
 /**
  * Function searches the records in the module, if parentId & parentModule
  * is given then searches only those records related to them.
  * @param <String> $searchValue - Search value
  * @param <Integer> $parentId - parent recordId
  * @param <String> $parentModule - parent module name
  * @return <Array of Users_Record_Model>
  */
 public function searchRecord($searchValue, $parentId = false, $parentModule = false, $relatedModule = false)
 {
     if (!empty($searchValue)) {
         $db = PearDatabase::getInstance();
         $query = 'SELECT * FROM vtiger_users WHERE (first_name LIKE ? OR last_name LIKE ?) AND status = ?';
         $params = array("%{$searchValue}%", "%{$searchValue}%", 'Active');
         $result = $db->pquery($query, $params);
         $noOfRows = $db->num_rows($result);
         $matchingRecords = array();
         for ($i = 0; $i < $noOfRows; ++$i) {
             $row = $db->query_result_rowdata($result, $i);
             $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', 'Users');
             $recordInstance = new $modelClassName();
             $matchingRecords['Users'][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($this);
         }
         return $matchingRecords;
     }
 }
Пример #26
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)
 {
     $forModule = $this->get('formodule');
     $dependentPicklists = Vtiger_DependencyPicklist::getDependentPicklistFields($forModule);
     $noOfRecords = count($dependentPicklists);
     $recordModelClass = Vtiger_Loader::getComponentClassName('Model', 'Record', 'Settings:PickListDependency');
     $listViewRecordModels = array();
     for ($i = 0; $i < $noOfRecords; $i++) {
         $record = new $recordModelClass();
         $module = $dependentPicklists[$i]['module'];
         unset($dependentPicklists[$i]['module']);
         $record->setData($dependentPicklists[$i]);
         $record->set('sourceModule', $module);
         $record->set('sourceLabel', vtranslate($module, $module));
         $listViewRecordModels[] = $record;
     }
     $pagingModel->calculatePageRange($listViewRecordModels);
     return $listViewRecordModels;
 }
Пример #27
0
 public function process(Vtiger_Request $request)
 {
     $module = $request->getModule();
     $transferOwnerId = $request->get('transferOwnerId');
     $record = $request->get('record');
     $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'TransferOwnership', $module);
     $transferModel = new $modelClassName();
     if (empty($record)) {
         $recordIds = $this->getBaseModuleRecordIds($request);
     } else {
         $recordIds[] = $record;
     }
     $relatedModuleRecordIds = $transferModel->getRelatedModuleRecordIds($request, $recordIds);
     $transferRecordIds = array_merge($relatedModuleRecordIds, $recordIds);
     $transferModel->transferRecordsOwnership($module, $transferOwnerId, $transferRecordIds);
     $response = new Vtiger_Response();
     $response->setResult(true);
     $response->emit();
 }
Пример #28
0
 protected function _getAvailableFiles($moduleName)
 {
     $return = array();
     if (!$this->isModuleActive()) {
         return $return;
     }
     /**
      * @var $PDFMaker PDFMaker_PDFMaker_Model
      */
     \Vtiger_Loader::autoLoad('PDFMaker_PDFMaker_Model');
     $PDFMaker = new \PDFMaker_PDFMaker_Model();
     if (method_exists($PDFMaker, "GetAvailableTemplates")) {
         $templates = $PDFMaker->GetAvailableTemplates($moduleName);
         foreach ($templates as $index => $value) {
             $return[$index] = 'PDFMaker - ' . $value["templatename"];
         }
     }
     return $return;
 }
Пример #29
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;
 }
Пример #30
0
 function getUnLinkedRecord()
 {
     $targetId = $this->get('targetid');
     $targetModule = $this->get('targetmodule');
     $db = PearDatabase::getInstance();
     $query = 'SELECT * FROM vtiger_crmentity WHERE crmid = ?';
     $params = array($targetId);
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = array();
     if ($noOfRows) {
         if (!array_key_exists($targetModule, $moduleModels)) {
             $moduleModel = Vtiger_Module_Model::getInstance($targetModule);
         }
         $row = $db->query_result_rowdata($result, 0);
         $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $targetModule);
         $recordInstance = new $modelClassName();
         $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
         return $recordInstance;
     }
     return false;
 }