/**
  * Load an array of CustomFieldSelection objects,
  * by EntityId Index(es)
  * @param integer $intEntityId
  * @param QQClause[] $objOptionalClauses additional optional QQClause objects for this query
  * @return CustomFieldSelection[]
  */
 public static function LoadArrayByEntityId($intEntityId, $objOptionalClauses = null)
 {
     // Call CustomFieldSelection::QueryArray to perform the LoadArrayByEntityId query
     try {
         return CustomFieldSelection::QueryArray(QQ::Equal(QQN::CustomFieldSelection()->EntityId, $intEntityId), $objOptionalClauses);
     } catch (QCallerException $objExc) {
         $objExc->IncrementOffset();
         throw $objExc;
     }
 }
Exemplo n.º 2
0
 protected function UpdateEntityQtypeCustomFields()
 {
     // Delete any EntityQtypeCustomFields that were selected but are no longer selected
     $objEntityQtypeCustomFieldArray = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->objCustomField->CustomFieldId);
     if ($objEntityQtypeCustomFieldArray) {
         foreach ($objEntityQtypeCustomFieldArray as $objEntityQtypeCustomField) {
             // Determines whether or not a entityqtypecustomfield can stay or gets deleted
             $blnKeep = false;
             if ($this->lstEntityQtype->SelectedItems) {
                 foreach ($this->lstEntityQtype->SelectedItems as $objEntityQtypeItem) {
                     if ($objEntityQtypeCustomField->EntityQtypeId == $objEntityQtypeItem->Value) {
                         $blnKeep = true;
                     }
                 }
             }
             // If the EntityQtype needs to be deleted, you must delete the CustomFieldValues for text and textarea, and CustomFieldSelections for all types
             if (!$blnKeep) {
                 $objAndCondition = QQ::AndCondition(QQ::Equal(QQN::CustomFieldSelection()->EntityQtypeId, $objEntityQtypeCustomField->EntityQtypeId), QQ::Equal(QQN::CustomFieldSelection()->CustomFieldValue->CustomFieldId, $this->objCustomField->CustomFieldId));
                 $objClauses = QQ::Clause(QQ::Expand(QQN::CustomFieldSelection()->CustomFieldValue));
                 // Select all CustomFieldSelections (and expanded CustomFieldValues) by EntityQtypeId and CustomFieldId
                 $objCustomFieldSelectionArray = CustomFieldSelection::QueryArray($objAndCondition, $objClauses);
                 if ($objCustomFieldSelectionArray) {
                     foreach ($objCustomFieldSelectionArray as $objCustomFieldSelection) {
                         if ($this->objCustomField->CustomFieldQtypeId != 2) {
                             // Deleting the CustomFieldValue will MySQL CASCADE to delete the CustomFieldSelection also
                             $objCustomFieldSelection->CustomFieldValue->Delete();
                         } else {
                             // If it is a select box, only delete the CustomFieldSelection (the CustomFieldValue stays unless it is removed as a selection entirely)
                             $objCustomFieldSelection->Delete();
                         }
                     }
                 }
                 // If the EntityQtype needs to be deleted, you must delete EntityQtypeId for all roles in RoleEntityQTypeCustomFieldAuthorization
                 $objRoleEntityCustomAuthArray = RoleEntityQtypeCustomFieldAuthorization::LoadArrayByEntityQtypeCustomFieldId($objEntityQtypeCustomField->EntityQtypeCustomFieldId);
                 if ($objRoleEntityCustomAuthArray) {
                     foreach ($objRoleEntityCustomAuthArray as $objRoleEntityCustomAuth) {
                         $objRoleEntityCustomAuth->Delete();
                     }
                 }
                 // Delete the EntityQtypeCustomField last
                 $objEntityQtypeCustomField->Delete();
             }
         }
     }
     // Insert the new EntityQtypeCustomFields
     if ($this->lstCustomFieldQtype->SelectedItems) {
         foreach ($this->lstEntityQtype->SelectedItems as $objEntityQtypeItem) {
             // If the field doesn't already exist, then it needs to be created
             if (!($objEntityQtypeCustomField = EntityQtypeCustomField::LoadByEntityQtypeIdCustomFieldId($objEntityQtypeItem->Value, $this->objCustomField->CustomFieldId))) {
                 $objEntityQtypeCustomField = new EntityQtypeCustomField();
                 $objEntityQtypeCustomField->CustomFieldId = $this->objCustomField->CustomFieldId;
                 $objEntityQtypeCustomField->EntityQtypeId = $objEntityQtypeItem->Value;
                 $objEntityQtypeCustomField->Save();
                 //// Insert the new EntityQtypeCustomField to the RoleEntityQTypeCustomFieldAuthorization table, to all the roles, with authorized_flag set to true, one for View Auth and another for Edit Auth
                 foreach (Role::LoadAll() as $objRole) {
                     //Insert the view Auth
                     $objRoleEntityQtypeCustomFieldAuth = new RoleEntityQtypeCustomFieldAuthorization();
                     $objRoleEntityQtypeCustomFieldAuth->RoleId = $objRole->RoleId;
                     $objRoleEntityQtypeCustomFieldAuth->EntityQtypeCustomFieldId = $objEntityQtypeCustomField->EntityQtypeCustomFieldId;
                     $objRoleEntityQtypeCustomFieldAuth->AuthorizationId = 1;
                     $objRoleEntityQtypeCustomFieldAuth->AuthorizedFlag = 1;
                     $objRoleEntityQtypeCustomFieldAuth->Save();
                     //Insert the Edit Auth
                     $objRoleEntityQtypeCustomFieldAuth = new RoleEntityQtypeCustomFieldAuthorization();
                     $objRoleEntityQtypeCustomFieldAuth->RoleId = $objRole->RoleId;
                     $objRoleEntityQtypeCustomFieldAuth->EntityQtypeCustomFieldId = $objEntityQtypeCustomField->EntityQtypeCustomFieldId;
                     $objRoleEntityQtypeCustomFieldAuth->AuthorizationId = 2;
                     $objRoleEntityQtypeCustomFieldAuth->AuthorizedFlag = 1;
                     $objRoleEntityQtypeCustomFieldAuth->Save();
                 }
             }
         }
     }
 }