PATH:
home
/
letacommog
/
crmleta
/
modules
/
Vtiger
/
models
<?php /*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *************************************************************************************/ include_once 'vtlib/Vtiger/Link.php'; /** * Vtiger Link Model Class */ class Vtiger_Link_Model extends Vtiger_Link { // Class variable to store the child links protected $childlinks = array(); /** * Function to get the value of a given property * @param <String> $propertyName * @return <Object> * @throws Exception */ public function get($propertyName) { if(property_exists($this,$propertyName)){ return $this->$propertyName; } } /** * Function to set the value of a given property * @param <String> $propertyName * @param <Object> $propertyValue * @return Vtiger_Link_Model instance */ public function set($propertyName, $propertyValue) { $this->$propertyName = $propertyValue; return $this; } /** * Function to get the link url * @return <String> */ public function getUrl() { return $this->convertToNativeLink(); } /** * Function to get the link label * @return <String> */ public function getLabel() { return $this->linklabel; } /** * Function to get the link type * @return <String> */ public function getType() { return $this->linktype; } /** * Function to get the link icon name * @return <String> */ public function getIcon() { return $this->linkicon; } /** * Function to check whether link has icon or not * @return <Boolean> true/false */ public function isIconExists() { $linkIcon = $this->getIcon(); if(empty($linkIcon)) { return false; } return true; } /** * Function to retrieve the icon path for the link icon * @return <String/Boolean> - returns image path if icon exits * else returns false; */ public function getIconPath() { if(!$this->isIconExists()) { return false; } return Vtiger_Theme::getImagePath($this->getIcon()); } /** * Function to get the link id * @return <Number> */ public function getId() { return $this->linkid; } /** * Function to Add link to the child link list * @param Vtiger_Link_Model $link - link model * @result Vtiger_Link_Model - current Instance; */ public function addChildLink(Vtiger_Link_Model $link) { $this->childlinks[] = $link; return $this; } /** * Function to get all the child links * @result <array> - list of Vtiger_Link_Model instances */ public function getChildLinks() { //See if indexing is need depending only user selection return $this->childlinks; } /** * Function to check whether the link model has any child links * @return <Boolean> true/false */ public function hasChild() { (count($this->childlinks) > 0)? true : false; } public function isPageLoadLink() { $url = $this->get('linkurl'); if(strpos($url, 'index') === 0){ return true; } return false; } public function convertToNativeLink() { $url = $this->get('linkurl'); if(empty($url)){ return $url; } //Check if the link is not javascript if(!$this->isPageLoadLink()){ //To convert single quotes and double quotes $url = Vtiger_Util_Helper::toSafeHTML($url); return $url; } $module = false; $sourceModule = false; $sourceRecord = false; $parametersParts = explode('&',$url); foreach($parametersParts as $index => $keyValue){ $urlParts = explode('=', $keyValue); $key = $urlParts[0]; $value = $urlParts[1]; if(strcmp($key, 'module')== 0){ $module = $value; } if(strcmp($key,'action')== 0) { if(strpos($value,'View')) { $value = str_replace('View', '', $value); $key = 'view'; } } if(strcmp($key, 'return_module')== 0) { $key = 'sourceModule'; //Indicating that it is an relation operation $parametersParts[] = 'relationOperation=true'; } if(strcmp($key, 'return_id')== 0) { $key = 'sourceRecord'; } if(strcmp($key, 'sourceRecord') == 0) { $sourceRecord = $value; } if(strcmp($key, 'sourceModule') == 0) { $sourceModule = $value; } $newUrlParts = array(); array_push($newUrlParts, $key); array_push($newUrlParts, $value); $parametersParts[$index] = implode('=', $newUrlParts); } //to append the reference field in one to many relation if(!empty($module) && !empty ($sourceModule) && !empty($sourceRecord)) { $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $relatedModuleModel = Vtiger_Module_Model::getInstance($module); $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel); if($relationModel->isDirectRelation()){ $fieldList = $relatedModuleModel->getFields(); foreach($fieldList as $fieldName=>$fieldModel) { if($fieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) { $referenceList = $fieldModel->getReferenceList(); if(in_array($sourceModuleModel->get('name'), $referenceList)) { $parametersParts[] = $fieldModel->get('name').'='.$sourceRecord; } } } } } $url = implode('&', $parametersParts); //To convert single quotes and double quotes $url = Vtiger_Util_Helper::toSafeHTML($url); return $url; } /** * Function to get the instance of Vtiger Link Model from the given array of key-value mapping * @param <Array> $valueMap * @return Vtiger_Link_Model instance */ public static function getInstanceFromValues($valueMap) { $linkModel = new self(); $linkModel->initialize($valueMap); // To set other properties for Link Model foreach($valueMap as $property => $value) { if(!isset($linkModel->$property)) { $linkModel->$property = $value; } } return $linkModel; } /** * Function to get the instance of Vtiger Link Model from a given Vtiger_Link object * @param Vtiger_Link $linkObj * @return Vtiger_Link_Model instance */ public static function getInstanceFromLinkObject (Vtiger_Link $linkObj) { $objectProperties = get_object_vars($linkObj); $linkModel = new self(); foreach($objectProperties as $properName=>$propertyValue) { $linkModel->$properName = $propertyValue; } return $linkModel; } /** * Function to get all the Vtiger Link Models for a module of the given list of link types * @param <Number> $tabid * @param <Array> $type * @param <Array> $parameters * @return <Array> - List of Vtiger_Link_Model instances */ public static function getAllByType($tabid, $type = false, $parameters = false) { $links = Vtiger_Cache::get('links-'.$tabid, $type); if(!$links) { $links = parent::getAllByType($tabid, $type, $parameters); Vtiger_Cache::set('links-'.$tabid, $type, $links); } // child links $childLinks = array();$childLinksIdList = array(); foreach($links as $linkType => $linkObjects) { foreach($linkObjects as $linkObject) { if($linkObject->parent_link) { $childLinks[$linkObject->parent_link][] = $linkObject; $childLinksIdList[] = $linkObject->linkid; // needed to exclude the child links from appearing in the main links } } } $linkModels = array(); foreach($links as $linkType => $linkObjects) { foreach($linkObjects as $linkObject) { $linkModel = self::getInstanceFromLinkObject($linkObject); if(array_key_exists($linkObject->linkid, $childLinks)) { foreach($childLinks[$linkObject->linkid] as $childLinkObject) { $linkModel->addChildLink(self::getInstanceFromLinkObject($childLinkObject)); } } if(in_array($linkModel->getId(), $childLinksIdList)) continue; // don't include the child links in the links list $linkModels[$linkType][] = $linkModel; } } if (!is_array($type)) { $type = array($type); } $diffTypes = array_diff($type, array_keys($linkModels)); foreach ($diffTypes as $linkType) { $linkModels[$linkType] = array(); } return $linkModels; } /** * Function to get the relatedModuleName * @return <String> */ public function getRelatedModuleName() { return $this->relatedModuleName; } public function isExtensionAccessible() { $extensionName = $this->get('linklabel'); $moduleModel = Vtiger_Module_Model::getInstance($extensionName); if(empty($moduleModel)) { return false; } if($moduleModel->isActive() && method_exists($moduleModel, 'isLinkAccessible')) { return $moduleModel->isLinkAccessible($this); } $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); $permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId()); if($permission) { return true; } return false; } }
[+]
..
[-] MenuStructure.php
[edit]
[-] SummaryRecordStructure.php
[edit]
[-] Action.php
[edit]
[-] TrackRecord.php
[edit]
[-] Utility.php
[edit]
[-] DetailRecordStructure.php
[edit]
[-] QuickCreateRecordStructure.php
[edit]
[-] ModuleMeta.php
[edit]
[-] MassEditRecordStructure.php
[edit]
[-] CompanyDetails.php
[edit]
[-] Block.php
[edit]
[-] RecipientPreference.php
[edit]
[-] CssScript.php
[edit]
[-] DashBoard.php
[edit]
[-] DetailView.php
[edit]
[-] Image.php
[edit]
[-] EditView.php
[edit]
[-] Record.php
[edit]
[-] Widget.php
[edit]
[-] Tag.php
[edit]
[-] FindDuplicate.php
[edit]
[-] MiniList.php
[edit]
[-] ListView.php
[edit]
[-] Menu.php
[edit]
[-] RelationListView.php
[edit]
[-] Notebook.php
[edit]
[-] FilterRecordStructure.php
[edit]
[-] RecordStructure.php
[edit]
[-] TooltipView.php
[edit]
[-] JsScript.php
[edit]
[-] EditRecordStructure.php
[edit]
[-] Paging.php
[edit]
[-] Link.php
[edit]
[-] Field.php
[edit]
[-] Relation.php
[edit]
[-] Module.php
[edit]