protected function UpdateFieldLevelAuthorizations() { if ($this->objModuleArray) { //First, we get all the panels that we need to manipulate foreach ($this->objModuleArray as $objModule) { switch ($objModule->ModuleId) { case 2: $arrEntity[] = array('objPanel' => $this->pnlAssets, 'intEntity' => EntityQtype::Asset); $arrEntity[] = array('objPanel' => $this->pnlAssetModel, 'intEntity' => EntityQtype::AssetModel); break; case 3: $arrEntity[] = array('objPanel' => $this->pnlInventory, 'intEntity' => EntityQtype::Inventory); break; case 4: $arrEntity[] = array('objPanel' => $this->pnlCompany, 'intEntity' => EntityQtype::Company); $arrEntity[] = array('objPanel' => $this->pnlContact, 'intEntity' => EntityQtype::Contact); $arrEntity[] = array('objPanel' => $this->pnlAddress, 'intEntity' => EntityQtype::Address); break; case 5: $arrEntity[] = array('objPanel' => $this->pnlShipping, 'intEntity' => EntityQtype::Shipment); break; case 6: $arrEntity[] = array('objPanel' => $this->pnlReceiving, 'intEntity' => EntityQtype::Receipt); break; } } //One Panel= One Entity. For each entity, we must save chkBuiltIn for View and Edit and several CustomChecks, for View and Edit foreach ($arrEntity as $entity) { //We look for the BuiltIn View entry, searching by RoleId, EntityId and authorizationId=1 (View) $objRoleEntityQTypeBuiltInAuthView = RoleEntityQtypeBuiltInAuthorization::LoadByRoleIdEntityQtypeIdAuthorizationId($this->objRole->RoleId, $entity['intEntity'], 1); // If the entry doesn't exists, we create it. if (!$objRoleEntityQTypeBuiltInAuthView) { $objRoleEntityQTypeBuiltInAuthView = new RoleEntityQtypeBuiltInAuthorization(); $objRoleEntityQTypeBuiltInAuthView->RoleId = $this->objRole->RoleId; $objRoleEntityQTypeBuiltInAuthView->EntityQtypeId = $entity['intEntity']; $objRoleEntityQTypeBuiltInAuthView->AuthorizationId = 1; } $objRoleEntityQTypeBuiltInAuthView->AuthorizedFlag = $entity['objPanel']->chkBuiltInView->Checked; $objRoleEntityQTypeBuiltInAuthView->Save(); //We look for the BuiltIn Edit entry, searching by RoleId, EntityId and authorizationId=2 (Edit) $objRoleEntityQTypeBuiltInAuthEdit = RoleEntityQtypeBuiltInAuthorization::LoadByRoleIdEntityQtypeIdAuthorizationId($this->objRole->RoleId, $entity['intEntity'], 2); // If the entry doesn't exists, we create it. if (!$objRoleEntityQTypeBuiltInAuthEdit) { $objRoleEntityQTypeBuiltInAuthEdit = new RoleEntityQtypeBuiltInAuthorization(); $objRoleEntityQTypeBuiltInAuthEdit->RoleId = $this->objRole->RoleId; $objRoleEntityQTypeBuiltInAuthEdit->EntityQtypeId = $entity['intEntity']; $objRoleEntityQTypeBuiltInAuthEdit->AuthorizationId = 2; } $objRoleEntityQTypeBuiltInAuthEdit->AuthorizedFlag = $entity['objPanel']->chkBuiltInEdit->Checked; $objRoleEntityQTypeBuiltInAuthEdit->Save(); //We must now save the View and Edit checkboxs values of the Custom checks. if ($entity['objPanel']->arrCustomChecks) { foreach ($entity['objPanel']->arrCustomChecks as $objCustomCheck) { //We look into EntityQtypeCustomFieldId because we need to get EntityQtypeCustomFieldId in order to save into the RoleEntityCustom tables $objEntityQtypeCustomField = EntityQtypeCustomField::LoadByEntityQtypeIdCustomFieldId($entity['intEntity'], $objCustomCheck['id']); //We look for the Custom View entry, searching by RoleId, EntityQtypeCustomFieldId and authorization_id=1(View) $objRoleEntityQtypeCustomFieldView = RoleEntityQtypeCustomFieldAuthorization::LoadByRoleIdEntityQtypeCustomFieldIdAuthorizationId($this->objRole->RoleId, $objEntityQtypeCustomField->EntityQtypeCustomFieldId, 1); // If the entry doesn't exists, we create it. if (!$objRoleEntityQtypeCustomFieldView) { $objRoleEntityQtypeCustomFieldView = new RoleEntityQtypeCustomFieldAuthorization(); $objRoleEntityQtypeCustomFieldView->RoleId = $this->objRole->RoleId; $objRoleEntityQtypeCustomFieldView->EntityQtypeCustomFieldId = $objEntityQtypeCustomField->EntityQtypeCustomFieldId; $objRoleEntityQtypeCustomFieldView->AuthorizationId = 1; } $objRoleEntityQtypeCustomFieldView->AuthorizedFlag = $objCustomCheck['view']->Checked; $objRoleEntityQtypeCustomFieldView->Save(); //We look for the Custom View entry, searching by RoleId, EntityQtypeCustomFieldId and authorization_id=2(Edit) $objRoleEntityQtypeCustomFieldEdit = RoleEntityQtypeCustomFieldAuthorization::LoadByRoleIdEntityQtypeCustomFieldIdAuthorizationId($this->objRole->RoleId, $objEntityQtypeCustomField->EntityQtypeCustomFieldId, 2); // If the entry doesn't exists, we create it. if (!$objRoleEntityQtypeCustomFieldEdit) { $objRoleEntityQtypeCustomFieldEdit = new RoleEntityQtypeCustomFieldAuthorization(); $objRoleEntityQtypeCustomFieldEdit->RoleId = $this->objRole->RoleId; $objRoleEntityQtypeCustomFieldEdit->EntityQtypeCustomFieldId = $objEntityQtypeCustomField->EntityQtypeCustomFieldId; $objRoleEntityQtypeCustomFieldEdit->AuthorizationId = 2; } $objRoleEntityQtypeCustomFieldEdit->AuthorizedFlag = $objCustomCheck['edit']->Checked; $objRoleEntityQtypeCustomFieldEdit->Save(); } } } } }