function getPickListOptions($fieldName)
 {
     $default_charset = VTWS_PreserveGlobal::getGlobal('default_charset');
     $options = array();
     $sql = "select * from vtiger_picklist where name=?";
     $result = $this->pearDB->pquery($sql, array($fieldName));
     $numRows = $this->pearDB->num_rows($result);
     if ($numRows == 0) {
         $sql = "select * from vtiger_{$fieldName}";
         $result = $this->pearDB->pquery($sql, array());
         $numRows = $this->pearDB->num_rows($result);
         for ($i = 0; $i < $numRows; ++$i) {
             $elem = array();
             $picklistValue = $this->pearDB->query_result($result, $i, $fieldName);
             $picklistValue = html_entity_decode($picklistValue, ENT_QUOTES, $default_charset);
             $elem["label"] = getTranslatedString($picklistValue, $this->getMeta()->getTabName());
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     } else {
         $details = getPickListValues($fieldName, $this->user->roleid);
         for ($i = 0; $i < sizeof($details); ++$i) {
             $elem = array();
             $picklistValue = html_entity_decode($details[$i], ENT_QUOTES, $default_charset);
             $elem["label"] = getTranslatedString($picklistValue, $this->getMeta()->getTabName());
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     }
     return $options;
 }
Example #2
0
function vtws_listtypes($user)
{
    try {
        global $adb, $log;
        vtws_preserveGlobal('current_user', $user);
        //get All the modules the current user is permitted to Access.
        $allModuleNames = getPermittedModuleNames();
        if (array_search('Calendar', $allModuleNames) !== false) {
            array_push($allModuleNames, 'Events');
        }
        //get All the CRM entity names.
        $webserviceEntities = vtws_getWebserviceEntities();
        $accessibleModules = array_values(array_intersect($webserviceEntities['module'], $allModuleNames));
        $entities = $webserviceEntities['entity'];
        $accessibleEntities = array();
        foreach ($entities as $entity) {
            $webserviceObject = VtigerWebserviceObject::fromName($adb, $entity);
            $handlerPath = $webserviceObject->getHandlerPath();
            $handlerClass = $webserviceObject->getHandlerClass();
            require_once $handlerPath;
            $handler = new $handlerClass($webserviceObject, $user, $adb, $log);
            $meta = $handler->getMeta();
            if ($meta->hasAccess() === true) {
                array_push($accessibleEntities, $entity);
            }
        }
    } catch (WebServiceException $exception) {
        throw $exception;
    } catch (Exception $exception) {
        throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, "An Database error occured while performing the operation");
    }
    $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
    $current_language = vtws_preserveGlobal('current_language', $default_language);
    $appStrings = return_application_language($current_language);
    $appListString = return_app_list_strings_language($current_language);
    vtws_preserveGlobal('app_strings', $appStrings);
    vtws_preserveGlobal('app_list_strings', $appListString);
    $informationArray = array();
    foreach ($accessibleModules as $module) {
        $vtigerModule = $module == 'Events' ? 'Calendar' : $module;
        $informationArray[$module] = array('isEntity' => true, 'label' => getTranslatedString($module, $vtigerModule), 'singular' => getTranslatedString('SINGLE_' . $module, $vtigerModule));
    }
    foreach ($accessibleEntities as $entity) {
        $label = isset($appStrings[$entity]) ? $appStrings[$entity] : $entity;
        $singular = isset($appStrings['SINGLE_' . $entity]) ? $appStrings['SINGLE_' . $entity] : $entity;
        $informationArray[$entity] = array('isEntity' => false, 'label' => $label, 'singular' => $singular);
    }
    VTWS_PreserveGlobal::flush();
    return array("types" => array_merge($accessibleModules, $accessibleEntities), 'information' => $informationArray);
}
Example #3
0
 function getDescribeFieldArray($webserviceField)
 {
     $app_strings = VTWS_PreserveGlobal::getGlobal('app_strings');
     $fieldLabel = $webserviceField->getFieldLabelKey();
     if (isset($app_strings[$fieldLabel])) {
         $fieldLabel = $app_strings[$fieldLabel];
     }
     if (strcasecmp($webserviceField->getFieldName(), $this->meta->getObectIndexColumn()) === 0) {
         return $this->getIdField($fieldLabel);
     }
     $typeDetails = $this->getFieldTypeDetails($webserviceField);
     //set type name, in the type details array.
     $typeDetails['name'] = $webserviceField->getFieldDataType();
     $editable = $this->isEditable($webserviceField);
     $describeArray = array('name' => $webserviceField->getFieldName(), 'label' => $fieldLabel, 'mandatory' => $webserviceField->isMandatory(), 'type' => $typeDetails, 'nullable' => $webserviceField->isNullable(), "editable" => $editable);
     if ($webserviceField->hasDefault()) {
         $describeArray['default'] = $webserviceField->getDefault();
     }
     return $describeArray;
 }
Example #4
0
 function getPickListOptions()
 {
     global $app_strings, $mod_strings, $log, $current_language;
     static $purified_plcache = array();
     $fieldName = $this->getFieldName();
     $default_charset = VTWS_PreserveGlobal::getGlobal('default_charset');
     $moduleName = getTabModuleName($this->getTabId());
     if ($moduleName == 'Events') {
         $moduleName = 'Calendar';
     }
     $temp_mod_strings = $moduleName != '' ? return_module_language($current_language, $moduleName) : $mod_strings;
     if (array_key_exists($moduleName . $fieldName, $purified_plcache)) {
         return $purified_plcache[$moduleName . $fieldName];
     }
     $options = array();
     $sql = "select * from vtiger_picklist where name=?";
     $result = $this->pearDB->pquery($sql, array($fieldName));
     $numRows = $this->pearDB->num_rows($result);
     if ($numRows == 0) {
         $sql = "select * from vtiger_{$fieldName}";
         $result = $this->pearDB->pquery($sql, array());
         $numRows = $this->pearDB->num_rows($result);
         for ($i = 0; $i < $numRows; ++$i) {
             $elem = array();
             $picklistValue = $this->pearDB->query_result($result, $i, $fieldName);
             $picklistValue = decode_html($picklistValue);
             $trans_str = $temp_mod_strings[$picklistValue] != '' ? $temp_mod_strings[$picklistValue] : ($app_strings[$picklistValue] != '' ? $app_strings[$picklistValue] : $picklistValue);
             while ($trans_str != preg_replace('/(.*) {.+}(.*)/', '$1$2', $trans_str)) {
                 $trans_str = preg_replace('/(.*) {.+}(.*)/', '$1$2', $trans_str);
             }
             $elem["label"] = $trans_str;
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     } else {
         $user = VTWS_PreserveGlobal::getGlobal('current_user');
         $details = getPickListValues($fieldName, $user->roleid);
         for ($i = 0; $i < sizeof($details); ++$i) {
             $elem = array();
             $picklistValue = decode_html($details[$i]);
             $trans_str = $temp_mod_strings[$picklistValue] != '' ? $temp_mod_strings[$picklistValue] : ($app_strings[$picklistValue] != '' ? $app_strings[$picklistValue] : $picklistValue);
             while ($trans_str != preg_replace('/(.*) {.+}(.*)/', '$1$2', $trans_str)) {
                 $trans_str = preg_replace('/(.*) {.+}(.*)/', '$1$2', $trans_str);
             }
             $elem["label"] = $trans_str;
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     }
     $purified_plcache[$moduleName . $fieldName] = $options;
     return $options;
 }
 function getDescribeFieldArray($webserviceField)
 {
     $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
     $fieldLabel = getTranslatedString($webserviceField->getFieldLabelKey(), $this->meta->getTabName());
     $typeDetails = array();
     if (!is_array($this->partialDescribeFields)) {
         $typeDetails = $this->getFieldTypeDetails($webserviceField);
     } else {
         if (in_array($webserviceField->getFieldName(), $this->partialDescribeFields)) {
             $typeDetails = $this->getFieldTypeDetails($webserviceField);
         }
     }
     //set type name, in the type details array.
     $typeDetails['name'] = $webserviceField->getFieldDataType();
     $editable = $this->isEditable($webserviceField);
     $describeArray = array('name' => $webserviceField->getFieldName(), 'label' => $fieldLabel, 'mandatory' => $webserviceField->isMandatory(), 'type' => $typeDetails, 'nullable' => $webserviceField->isNullable(), "editable" => $editable);
     if ($webserviceField->hasDefault()) {
         $describeArray['default'] = $webserviceField->getDefault();
     }
     return $describeArray;
 }
Example #6
0
 function getPickListOptions()
 {
     $fieldName = $this->getFieldName();
     $default_charset = VTWS_PreserveGlobal::getGlobal('default_charset');
     $options = array();
     $sql = "select * from vtiger_picklist where name=?";
     $result = $this->pearDB->pquery($sql, array($fieldName));
     $numRows = $this->pearDB->num_rows($result);
     if ($numRows == 0) {
         $sql = "select * from vtiger_{$fieldName}";
         $result = $this->pearDB->pquery($sql, array());
         $numRows = $this->pearDB->num_rows($result);
         for ($i = 0; $i < $numRows; ++$i) {
             $elem = array();
             $picklistValue = $this->pearDB->query_result($result, $i, $fieldName);
             $picklistValue = decode_html($picklistValue);
             $moduleName = getTabModuleName($this->getTabId());
             if ($moduleName == 'Events') {
                 $moduleName = 'Calendar';
             }
             $elem["label"] = getTranslatedString($picklistValue, $moduleName);
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     } else {
         $user = VTWS_PreserveGlobal::getGlobal('current_user');
         $details = getPickListValues($fieldName, $user->roleid);
         for ($i = 0; $i < sizeof($details); ++$i) {
             $elem = array();
             $picklistValue = decode_html($details[$i]);
             $moduleName = getTabModuleName($this->getTabId());
             if ($moduleName == 'Events') {
                 $moduleName = 'Calendar';
             }
             $elem["label"] = getTranslatedString($picklistValue, $moduleName);
             $elem["value"] = $picklistValue;
             array_push($options, $elem);
         }
     }
     return $options;
 }
Example #7
0
function vtws_listtypes($fieldTypeList, $user)
{
    // Bulk Save Mode: For re-using information
    static $webserviceEntities = false;
    // END
    static $types = array();
    if (!empty($fieldTypeList)) {
        $fieldTypeList = array_map(strtolower, $fieldTypeList);
        sort($fieldTypeList);
        $fieldTypeString = implode(',', $fieldTypeList);
    } else {
        $fieldTypeString = 'all';
    }
    if (!empty($types[$user->id][$fieldTypeString])) {
        return $types[$user->id][$fieldTypeString];
    }
    try {
        global $log;
        /**
         * @var PearDatabase
         */
        $db = PearDatabase::getInstance();
        vtws_preserveGlobal('current_user', $user);
        //get All the modules the current user is permitted to Access.
        $allModuleNames = getPermittedModuleNames();
        if (array_search('Calendar', $allModuleNames) !== false) {
            array_push($allModuleNames, 'Events');
        }
        if (!empty($fieldTypeList)) {
            $sql = "SELECT distinct(vtiger_field.tabid) as tabid FROM vtiger_field LEFT JOIN vtiger_ws_fieldtype ON " . "vtiger_field.uitype=vtiger_ws_fieldtype.uitype\n\t\t\t\t INNER JOIN vtiger_profile2field ON vtiger_field.fieldid = vtiger_profile2field.fieldid\n\t\t\t\t INNER JOIN vtiger_def_org_field ON vtiger_def_org_field.fieldid = vtiger_field.fieldid\n\t\t\t\t INNER JOIN vtiger_role2profile ON vtiger_profile2field.profileid = vtiger_role2profile.profileid\n\t\t\t\t INNER JOIN vtiger_user2role ON vtiger_user2role.roleid = vtiger_role2profile.roleid\n\t\t\t\t where vtiger_profile2field.visible=0 and vtiger_def_org_field.visible = 0\n\t\t\t\t and vtiger_field.presence in (0,2)\n\t\t\t\t and vtiger_user2role.userid=? and fieldtype in (" . generateQuestionMarks($fieldTypeList) . ')';
            $params = array();
            $params[] = $user->id;
            foreach ($fieldTypeList as $fieldType) {
                $params[] = $fieldType;
            }
            $result = $db->pquery($sql, $params);
            $it = new SqlResultIterator($db, $result);
            $moduleList = array();
            foreach ($it as $row) {
                $moduleList[] = getTabModuleName($row->tabid);
            }
            $allModuleNames = array_intersect($moduleList, $allModuleNames);
            $params = $fieldTypeList;
            $sql = "select name from vtiger_ws_entity inner join vtiger_ws_entity_tables on " . "vtiger_ws_entity.id=vtiger_ws_entity_tables.webservice_entity_id inner join " . "vtiger_ws_entity_fieldtype on vtiger_ws_entity_fieldtype.table_name=" . "vtiger_ws_entity_tables.table_name where fieldtype=(" . generateQuestionMarks($fieldTypeList) . ')';
            $result = $db->pquery($sql, $params);
            $it = new SqlResultIterator($db, $result);
            $entityList = array();
            foreach ($it as $row) {
                $entityList[] = $row->name;
            }
        }
        //get All the CRM entity names.
        if ($webserviceEntities === false || !CRMEntity::isBulkSaveMode()) {
            // Bulk Save Mode: For re-using information
            $webserviceEntities = vtws_getWebserviceEntities();
        }
        $accessibleModules = array_values(array_intersect($webserviceEntities['module'], $allModuleNames));
        $entities = $webserviceEntities['entity'];
        $accessibleEntities = array();
        if (empty($fieldTypeList)) {
            foreach ($entities as $entity) {
                $webserviceObject = VtigerWebserviceObject::fromName($db, $entity);
                $handlerPath = $webserviceObject->getHandlerPath();
                $handlerClass = $webserviceObject->getHandlerClass();
                require_once $handlerPath;
                $handler = new $handlerClass($webserviceObject, $user, $db, $log);
                $meta = $handler->getMeta();
                if ($meta->hasAccess() === true) {
                    array_push($accessibleEntities, $entity);
                }
            }
        }
    } catch (WebServiceException $exception) {
        throw $exception;
    } catch (Exception $exception) {
        throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, "An Database error occured while performing the operation");
    }
    $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
    global $current_language;
    if (empty($current_language)) {
        $current_language = $default_language;
    }
    $current_language = vtws_preserveGlobal('current_language', $current_language);
    $appStrings = return_application_language($current_language);
    $appListString = return_app_list_strings_language($current_language);
    vtws_preserveGlobal('app_strings', $appStrings);
    vtws_preserveGlobal('app_list_strings', $appListString);
    $informationArray = array();
    foreach ($accessibleModules as $module) {
        $vtigerModule = $module == 'Events' ? 'Calendar' : $module;
        $informationArray[$module] = array('isEntity' => true, 'label' => getTranslatedString($module, $vtigerModule), 'singular' => getTranslatedString('SINGLE_' . $module, $vtigerModule));
    }
    foreach ($accessibleEntities as $entity) {
        $label = isset($appStrings[$entity]) ? $appStrings[$entity] : $entity;
        $singular = isset($appStrings['SINGLE_' . $entity]) ? $appStrings['SINGLE_' . $entity] : $entity;
        $informationArray[$entity] = array('isEntity' => false, 'label' => $label, 'singular' => $singular);
    }
    VTWS_PreserveGlobal::flush();
    $types[$user->id][$fieldTypeString] = array("types" => array_merge($accessibleModules, $accessibleEntities), 'information' => $informationArray);
    return $types[$user->id][$fieldTypeString];
}
Example #8
0
 function sanitizeFields($row, $meta)
 {
     $default_charset = VTWS_PreserveGlobal::getGlobal('default_charset');
     $recordString = DataTransform::$recordString;
     $recordModuleString = DataTransform::$recordModuleString;
     if (isset($row[$recordModuleString])) {
         unset($row[$recordModuleString]);
     }
     if (isset($row['id'])) {
         if (strpos($row['id'], 'x') === false) {
             $row['id'] = vtws_getId($meta->getEntityId(), $row['id']);
         }
     }
     if (isset($row[$recordString])) {
         $row['id'] = vtws_getId($meta->getEntityId(), $row[$recordString]);
         unset($row[$recordString]);
     }
     if (!isset($row['id'])) {
         if ($row[$meta->getObectIndexColumn()]) {
             $row['id'] = vtws_getId($meta->getEntityId(), $row[$meta->getObectIndexColumn()]);
         } else {
             //TODO Handle this.
             //echo 'error id noy set' ;
         }
     } else {
         if (isset($row[$meta->getObectIndexColumn()]) && strcmp($meta->getObectIndexColumn(), "id") !== 0) {
             unset($row[$meta->getObectIndexColumn()]);
         }
     }
     foreach ($row as $field => $value) {
         $row[$field] = html_entity_decode($value, ENT_QUOTES, $default_charset);
     }
     return $row;
 }
 function getDescribeFieldArray($webserviceField)
 {
     $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
     require 'modules/' . $this->meta->getTabName() . "/language/{$default_language}.lang.php";
     $fieldLabel = $webserviceField->getFieldLabelKey();
     if (isset($mod_strings[$fieldLabel])) {
         $fieldLabel = $mod_strings[$fieldLabel];
     }
     $typeDetails = $this->getFieldTypeDetails($webserviceField);
     //set type name, in the type details array.
     $typeDetails['name'] = $webserviceField->getFieldDataType();
     $editable = $this->isEditable($webserviceField);
     $describeArray = array('name' => $webserviceField->getFieldName(), 'label' => $fieldLabel, 'mandatory' => $webserviceField->isMandatory(), 'type' => $typeDetails, 'nullable' => $webserviceField->isNullable(), "editable" => $editable);
     if ($webserviceField->hasDefault()) {
         $describeArray['default'] = $webserviceField->getDefault();
     }
     return $describeArray;
 }
 function retrieveMeta()
 {
     require_once 'modules/CustomView/CustomView.php';
     $current_user = vtws_preserveGlobal('current_user', $this->user);
     $theme = vtws_preserveGlobal('theme', $this->user->theme);
     $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
     $current_language = vtws_preserveGlobal('current_language', $default_language);
     $this->computeAccess();
     $cv = new CustomView();
     $module_info = $cv->getCustomViewModuleInfo($this->getTabName());
     $blockArray = array();
     foreach ($cv->module_list[$this->getTabName()] as $label => $blockList) {
         $blockArray = array_merge($blockArray, explode(',', $blockList));
     }
     $this->retrieveMetaForBlock($blockArray);
     $this->meta = true;
     VTWS_PreserveGlobal::flush();
 }
 function getDescribeFieldArray($webserviceField)
 {
     static $purified_dfcache = array();
     $dfkey = $webserviceField->getFieldName() . $webserviceField->getTabId();
     if (array_key_exists($dfkey, $purified_dfcache)) {
         return $purified_dfcache[$dfkey];
     }
     $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
     require 'modules/' . $this->meta->getTabName() . "/language/{$default_language}.lang.php";
     $fieldLabel = $webserviceField->getFieldLabelKey();
     if (isset($mod_strings[$fieldLabel])) {
         $fieldLabel = $mod_strings[$fieldLabel];
     }
     $typeDetails = $this->getFieldTypeDetails($webserviceField);
     //set type name, in the type details array.
     $typeDetails['name'] = $webserviceField->getFieldDataType();
     $editable = $this->isEditable($webserviceField);
     $blkname = $webserviceField->getBlockName();
     $describeArray = array('name' => $webserviceField->getFieldName(), 'label' => $fieldLabel, 'mandatory' => $webserviceField->isMandatory(), 'type' => $typeDetails, 'nullable' => $webserviceField->isNullable(), "editable" => $editable, 'uitype' => $webserviceField->getUIType(), 'typeofdata' => $webserviceField->getTypeOfData(), 'sequence' => $webserviceField->getFieldSequence(), 'block' => array('blockid' => $webserviceField->getBlockId(), 'blocksequence' => $webserviceField->getBlockSequence(), 'blocklabel' => $blkname, 'blockname' => getTranslatedString($blkname, $this->meta->getTabName())));
     if ($webserviceField->hasDefault()) {
         $describeArray['default'] = $webserviceField->getDefault();
     }
     $purified_dfcache[$dfkey] = $describeArray;
     return $describeArray;
 }