[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 *************************************************************************************/ 10 11 class VtigerModuleOperation extends WebserviceEntityOperation { 12 protected $tabId; 13 protected $isEntity = true; 14 protected $partialDescribeFields = null; 15 16 public function VtigerModuleOperation($webserviceObject,$user,$adb,$log){ 17 parent::__construct($webserviceObject,$user,$adb,$log); 18 $this->meta = $this->getMetaInstance(); 19 $this->tabId = $this->meta->getTabId(); 20 } 21 22 protected function getMetaInstance(){ 23 if(empty(WebserviceEntityOperation::$metaCache[$this->webserviceObject->getEntityName()][$this->user->id])){ 24 WebserviceEntityOperation::$metaCache[$this->webserviceObject->getEntityName()][$this->user->id] = new VtigerCRMObjectMeta($this->webserviceObject,$this->user); 25 } 26 return WebserviceEntityOperation::$metaCache[$this->webserviceObject->getEntityName()][$this->user->id]; 27 } 28 29 public function create($elementType,$element){ 30 $crmObject = new VtigerCRMObject($elementType, false); 31 32 $element = DataTransform::sanitizeForInsert($element,$this->meta); 33 34 $error = $crmObject->create($element); 35 if(!$error){ 36 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 37 vtws_getWebserviceTranslatedString('LBL_'. 38 WebServiceErrorCode::$DATABASEQUERYERROR)); 39 } 40 41 $id = $crmObject->getObjectId(); 42 43 // Bulk Save Mode 44 if(CRMEntity::isBulkSaveMode()) { 45 // Avoiding complete read, as during bulk save mode, $result['id'] is enough 46 return array('id' => vtws_getId($this->meta->getEntityId(), $id) ); 47 } 48 49 $error = $crmObject->read($id); 50 if(!$error){ 51 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 52 vtws_getWebserviceTranslatedString('LBL_'. 53 WebServiceErrorCode::$DATABASEQUERYERROR)); 54 } 55 56 return DataTransform::filterAndSanitize($crmObject->getFields(),$this->meta); 57 } 58 59 public function retrieve($id){ 60 61 $ids = vtws_getIdComponents($id); 62 $elemid = $ids[1]; 63 64 $crmObject = new VtigerCRMObject($this->tabId, true); 65 $error = $crmObject->read($elemid); 66 if(!$error){ 67 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 68 vtws_getWebserviceTranslatedString('LBL_'. 69 WebServiceErrorCode::$DATABASEQUERYERROR)); 70 } 71 72 return DataTransform::filterAndSanitize($crmObject->getFields(),$this->meta); 73 } 74 75 public function update($element){ 76 $ids = vtws_getIdComponents($element["id"]); 77 $element = DataTransform::sanitizeForInsert($element,$this->meta); 78 79 $crmObject = new VtigerCRMObject($this->tabId, true); 80 $crmObject->setObjectId($ids[1]); 81 $error = $crmObject->update($element); 82 if(!$error){ 83 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 84 vtws_getWebserviceTranslatedString('LBL_'. 85 WebServiceErrorCode::$DATABASEQUERYERROR)); 86 } 87 88 $id = $crmObject->getObjectId(); 89 90 $error = $crmObject->read($id); 91 if(!$error){ 92 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 93 vtws_getWebserviceTranslatedString('LBL_'. 94 WebServiceErrorCode::$DATABASEQUERYERROR)); 95 } 96 97 return DataTransform::filterAndSanitize($crmObject->getFields(),$this->meta); 98 } 99 100 public function revise($element){ 101 $ids = vtws_getIdComponents($element["id"]); 102 $element = DataTransform::sanitizeForInsert($element,$this->meta); 103 104 $crmObject = new VtigerCRMObject($this->tabId, true); 105 $crmObject->setObjectId($ids[1]); 106 $error = $crmObject->revise($element); 107 if(!$error){ 108 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 109 vtws_getWebserviceTranslatedString('LBL_'. 110 WebServiceErrorCode::$DATABASEQUERYERROR)); 111 } 112 113 $id = $crmObject->getObjectId(); 114 115 $error = $crmObject->read($id); 116 if(!$error){ 117 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 118 vtws_getWebserviceTranslatedString('LBL_'. 119 WebServiceErrorCode::$DATABASEQUERYERROR)); 120 } 121 122 return DataTransform::filterAndSanitize($crmObject->getFields(),$this->meta); 123 } 124 125 public function delete($id){ 126 $ids = vtws_getIdComponents($id); 127 $elemid = $ids[1]; 128 129 $crmObject = new VtigerCRMObject($this->tabId, true); 130 131 $error = $crmObject->delete($elemid); 132 if(!$error){ 133 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 134 vtws_getWebserviceTranslatedString('LBL_'. 135 WebServiceErrorCode::$DATABASEQUERYERROR)); 136 } 137 return array("status"=>"successful"); 138 } 139 140 public function query($q){ 141 142 $parser = new Parser($this->user, $q); 143 $error = $parser->parse(); 144 145 if($error){ 146 return $parser->getError(); 147 } 148 149 $mysql_query = $parser->getSql(); 150 $meta = $parser->getObjectMetaData(); 151 $this->pearDB->startTransaction(); 152 $result = $this->pearDB->pquery($mysql_query, array()); 153 $error = $this->pearDB->hasFailedTransaction(); 154 $this->pearDB->completeTransaction(); 155 156 if($error){ 157 throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 158 vtws_getWebserviceTranslatedString('LBL_'. 159 WebServiceErrorCode::$DATABASEQUERYERROR)); 160 } 161 162 $noofrows = $this->pearDB->num_rows($result); 163 $output = array(); 164 for($i=0; $i<$noofrows; $i++){ 165 $row = $this->pearDB->fetchByAssoc($result,$i); 166 if(!$meta->hasPermission(EntityMeta::$RETRIEVE,$row["crmid"])){ 167 continue; 168 } 169 $output[] = DataTransform::sanitizeDataWithColumn($row,$meta); 170 } 171 172 return $output; 173 } 174 175 public function describe($elementType){ 176 $app_strings = VTWS_PreserveGlobal::getGlobal('app_strings'); 177 $current_user = vtws_preserveGlobal('current_user',$this->user);; 178 179 $label = (isset($app_strings[$elementType]))? $app_strings[$elementType]:$elementType; 180 $createable = (strcasecmp(isPermitted($elementType,EntityMeta::$CREATE),'yes')===0)? true:false; 181 $updateable = (strcasecmp(isPermitted($elementType,EntityMeta::$UPDATE),'yes')===0)? true:false; 182 $deleteable = $this->meta->hasDeleteAccess(); 183 $retrieveable = $this->meta->hasReadAccess(); 184 $fields = $this->getModuleFields(); 185 return array("label"=>$label,"name"=>$elementType,"createable"=>$createable,"updateable"=>$updateable, 186 "deleteable"=>$deleteable,"retrieveable"=>$retrieveable,"fields"=>$fields, 187 "idPrefix"=>$this->meta->getEntityId(),'isEntity'=>$this->isEntity,'labelFields'=>$this->meta->getNameFields()); 188 } 189 190 public function describePartial($elementType, $fields=null) { 191 $this->partialDescribeFields = $fields; 192 $result = $this->describe($elementType); 193 $this->partialDescribeFields = null; 194 return $result; 195 } 196 197 function getModuleFields(){ 198 199 $fields = array(); 200 $moduleFields = $this->meta->getModuleFields(); 201 foreach ($moduleFields as $fieldName=>$webserviceField) { 202 if(((int)$webserviceField->getPresence()) == 1) { 203 continue; 204 } 205 array_push($fields,$this->getDescribeFieldArray($webserviceField)); 206 } 207 array_push($fields,$this->getIdField($this->meta->getObectIndexColumn())); 208 209 return $fields; 210 } 211 212 function getDescribeFieldArray($webserviceField){ 213 $default_language = VTWS_PreserveGlobal::getGlobal('default_language'); 214 215 $fieldLabel = getTranslatedString($webserviceField->getFieldLabelKey(), $this->meta->getTabName()); 216 217 $typeDetails = array(); 218 if (!is_array($this->partialDescribeFields)) { 219 $typeDetails = $this->getFieldTypeDetails($webserviceField); 220 } else if (in_array($webserviceField->getFieldName(), $this->partialDescribeFields)) { 221 $typeDetails = $this->getFieldTypeDetails($webserviceField); 222 } 223 224 //set type name, in the type details array. 225 $typeDetails['name'] = $webserviceField->getFieldDataType(); 226 $editable = $this->isEditable($webserviceField); 227 228 $describeArray = array('name'=>$webserviceField->getFieldName(),'label'=>$fieldLabel,'mandatory'=> 229 $webserviceField->isMandatory(),'type'=>$typeDetails,'nullable'=>$webserviceField->isNullable(), 230 "editable"=>$editable); 231 if($webserviceField->hasDefault()){ 232 $describeArray['default'] = $webserviceField->getDefault(); 233 } 234 return $describeArray; 235 } 236 237 function getMeta(){ 238 return $this->meta; 239 } 240 241 function getField($fieldName){ 242 $moduleFields = $this->meta->getModuleFields(); 243 return $this->getDescribeFieldArray($moduleFields[$fieldName]); 244 } 245 246 } 247 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |