Exemple #1
0
 /**
  * Get all the fields of the module or block
  * @param Vtiger_Block Instance of block to use to get fields, false to get all the block fields
  */
 function getFields($blockInstance = false)
 {
     $fields = false;
     if ($blockInstance) {
         $fields = Vtiger_Field::getAllForBlock($blockInstance, $this);
     } else {
         $fields = Vtiger_Field::getAllForModule($this);
     }
     return $fields;
 }
 /**
  * Update Fields of the module
  * @access private
  */
 function update_Fields($blocknode, $blockInstance, $moduleInstance)
 {
     if (empty($blocknode->fields) || empty($blocknode->fields->field)) {
         return;
     }
     foreach ($blocknode->fields->field as $fieldnode) {
         $this->listFields[] = strval($fieldnode->fieldname);
         $fieldInstance = Vtiger_Field::getInstance((string) $fieldnode->fieldname, $moduleInstance);
         if (!$fieldInstance) {
             $fieldInstance = $this->import_Field($blocknode, $blockInstance, $moduleInstance, $fieldnode);
         } else {
             $this->update_Field($blocknode, $blockInstance, $moduleInstance, $fieldnode, $fieldInstance);
         }
         $this->__AddModuleFieldToCache($moduleInstance, $fieldInstance->name, $fieldInstance);
     }
     // Deleting removed fields
     $listFieldBeforeUpdate = Vtiger_Field::getAllForModule($moduleInstance);
     foreach ($listFieldBeforeUpdate as $fieldInstance) {
         if (!in_array($fieldInstance->name, $this->listFields)) {
             $fieldInstance->delete();
         }
     }
 }
Exemple #3
0
 /**
  * Function to retrieve field model for specific block and module
  * @param <Vtiger_Module_Model> $blockModel - block instance
  * @return <array> List of field model
  */
 public static function getAllForModule($moduleModel)
 {
     $fieldModelList = Vtiger_Cache::get('ModuleFields', $moduleModel->id);
     if (!$fieldModelList) {
         $fieldObjects = parent::getAllForModule($moduleModel);
         $fieldModelList = array();
         //if module dont have any fields
         if (!is_array($fieldObjects)) {
             $fieldObjects = array();
         }
         foreach ($fieldObjects as $fieldObject) {
             $fieldModelObject = self::getInstanceFromFieldObject($fieldObject);
             $fieldModelList[$fieldModelObject->get('block')->id][] = $fieldModelObject;
             Vtiger_Cache::set('field-' . $moduleModel->getId(), $fieldModelObject->getId(), $fieldModelObject);
             Vtiger_Cache::set('field-' . $moduleModel->getId(), $fieldModelObject->getName(), $fieldModelObject);
         }
         Vtiger_Cache::set('ModuleFields', $moduleModel->id, $fieldModelList);
     }
     return $fieldModelList;
 }
 /**
  * Update Blocks of the module
  * @access private
  */
 function update_Blocks($modulenode, $moduleInstance)
 {
     if (empty($modulenode->blocks) || empty($modulenode->blocks->block)) {
         return;
     }
     foreach ($modulenode->blocks->block as $blocknode) {
         $this->listBlocks[] = strval($blocknode->label);
         $blockInstance = Vtiger_Block::getInstance((string) $blocknode->label, $moduleInstance);
         if (!$blockInstance) {
             $blockInstance = $this->import_Block($modulenode, $moduleInstance, $blocknode);
         } else {
             $this->update_Block($modulenode, $moduleInstance, $blocknode, $blockInstance);
         }
         $this->update_Fields($blocknode, $blockInstance, $moduleInstance);
     }
     // Deleting removed fields
     $listFieldBeforeUpdate = Vtiger_Field::getAllForModule($moduleInstance);
     foreach ($listFieldBeforeUpdate as $fieldInstance) {
         if (!in_array($fieldInstance->name, $this->listFields)) {
             $fieldInstance->delete();
         }
     }
     // Deleting removed blocks
     $listBlockBeforeUpdate = Vtiger_Block::getAllForModule($moduleInstance);
     foreach ($listBlockBeforeUpdate as $blockInstance) {
         if (!in_array($blockInstance->label, $this->listBlocks)) {
             $blockInstance->delete();
         }
     }
 }