/** * Deletes all associated EntityQtypeCustomFields * @return void */ public function DeleteAllEntityQtypeCustomFields() { if (is_null($this->intCustomFieldId)) { throw new QUndefinedPrimaryKeyException('Unable to call UnassociateEntityQtypeCustomField on this unsaved CustomField.'); } // Get the Database Object for this Class $objDatabase = CustomField::GetDatabase(); // Journaling if ($objDatabase->JournalingDatabase) { foreach (EntityQtypeCustomField::LoadArrayByCustomFieldId($this->intCustomFieldId) as $objEntityQtypeCustomField) { $objEntityQtypeCustomField->Journal('DELETE'); } } // Perform the SQL Query $objDatabase->NonQuery(' DELETE FROM `entity_qtype_custom_field` WHERE `custom_field_id` = ' . $objDatabase->SqlVariable($this->intCustomFieldId) . ' '); }
/** * Gets all associated EntityQtypeCustomFields as an array of EntityQtypeCustomField objects * @param QQClause[] $objOptionalClauses additional optional QQClause objects for this query * @return EntityQtypeCustomField[] */ public function GetEntityQtypeCustomFieldArray($objOptionalClauses = null) { if (is_null($this->intCustomFieldId)) { return array(); } try { return EntityQtypeCustomField::LoadArrayByCustomFieldId($this->intCustomFieldId, $objOptionalClauses); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } }
protected function DeleteEntityQtypeCustomFields() { $objEntityQtypeCustomFieldArray = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->objCustomField->CustomFieldId); if ($objEntityQtypeCustomFieldArray) { foreach ($objEntityQtypeCustomFieldArray as $objEntityQtypeCustomField) { // 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(); } } // If there was Asset Type Custom field Delete AssetCustomField if ($objEntityQtypeCustomField->EntityQtypeId == 1) { $this->DeleteAssetCustomFieldAssetModels(); } // If the helper table exists for that EntityQtype delete the columns in the helper table if ($strHelperTableArray = CustomFieldValue::GetHelperTableByEntityQtypeId($objEntityQtypeCustomField->EntityQtypeId)) { $strHelperTable = $strHelperTableArray[0]; $objDatabase = CustomField::GetDatabase(); $strQuery = sprintf("ALTER TABLE %s DROP `cfv_%s`;", $strHelperTable, $objEntityQtypeCustomField->CustomFieldId); $objDatabase->NonQuery($strQuery); } // Delete the EntityQtypeCustomField last $objEntityQtypeCustomField->Delete(); } } }
public function Delete() { $arrEntityQtype = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->CustomFieldId); parent::Delete(); foreach ($arrEntityQtype as $objEntityQtype) { $strHelperTableArray = $this->GetHelperTableByEntityQtypeId($objEntityQtype->EntityQtypeId); $strHelperTable = $strHelperTableArray[0]; $strTableName = $strHelperTableArray[1]; $strQuery = sprintf("UPDATE %s SET `cfv_%s` = NULL WHERE `cfv_%s` = '%s'", $strHelperTable, $this->CustomFieldId, $this->CustomFieldId, $this->ShortDescription); $objDatabase = CustomFieldValue::GetDatabase(); $objDatabase->NonQuery($strQuery); } /* $objCondition = QQ::Equal(QQN::CustomFieldSelection()->CustomFieldValueId, $this->CustomFieldValueId); $objClauses = QQ::Clause(QQ::Expand(QQN::CustomFieldSelection()->CustomFieldValue)); // Select all CustomFieldSelections (and expanded CustomFieldValues) by CustomFieldValueId $objCustomFieldSelectionArray = CustomFieldSelection::QueryArray($objCondition, $objClauses); //parent::Delete(); $intRowsToDeleteArray = array(); // Create an array switched by helper tables (to minimize number of queries) foreach ($objCustomFieldSelectionArray as $objCustomFieldSelection) { if ($this->GetHelperTableByEntityQtypeId($objCustomFieldSelection->EntityQtypeId)) { $intRowsToDeleteArray[$objCustomFieldSelection->EntityQtypeId][] = $objCustomFieldSelection->EntityId; } } $objDatabase = CustomFieldValue::GetDatabase(); // For each helper table foreach (array_keys($intRowsToDeleteArray) as $intEntityQtypeId) { $strHelperTableArray = $this->GetHelperTableByEntityQtypeId($intEntityQtypeId); $strHelperTable = $strHelperTableArray[0]; $strTableName = $strHelperTableArray[1]; $strQuery = sprintf("UPDATE %s SET `cfv_%s`='' WHERE `%s_id` IN (%s);", $strHelperTable, $objCustomFieldSelection->CustomFieldValue->CustomFieldId, $strTableName, implode(', ', $intRowsToDeleteArray[$intEntityQtypeId])); $objDatabase->NonQuery($strQuery); }*/ }
/** * This method will update the CustomFieldSelections for one Required Custom Field * */ public function UpdateRequiredFieldSelections() { $objEntityQtypeCustomFieldArray = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->CustomFieldId); if ($objEntityQtypeCustomFieldArray) { foreach ($objEntityQtypeCustomFieldArray as $objEntityQtypeCustomField) { //$strEntity = EntityQtype::ToStringPrimaryKeySql($objEntityQtypeCustomField->EntityQtypeId); $arrHelperTable = CustomField::ToStringHelperTable($objEntityQtypeCustomField->EntityQtypeId); // This query returns entities which do not have a custom_field_selection for this specific Custom Field/Entity QType combination /*$strQuery = sprintf(" SELECT %s AS entity_id FROM %s LEFT JOIN (custom_field_selection JOIN custom_field_value ON custom_field_selection.custom_field_value_id = custom_field_value.custom_field_value_id AND custom_field_value.custom_field_id = %s) ON %s = custom_field_selection.entity_id AND custom_field_selection.entity_qtype_id = %s WHERE custom_field_selection.custom_field_selection_id IS NULL" , $strEntity, $strEntityTable, $this->CustomFieldId, $strEntity, $objEntityQtypeCustomField->EntityQtypeId);*/ if ($objEntityQtypeCustomField->EntityQtypeId === 1 && !$this->AllAssetModelsFlag) { // This is an asset model specific custom field $strQuery = sprintf(' SELECT %1$s.%2$s AS entity_id FROM %1$s, asset_custom_field_asset_model, asset WHERE (%1$s.cfv_%3$s IS NULL OR %1$s.cfv_%3$s = \'\') AND asset_custom_field_asset_model.custom_field_id = %3$s AND asset.asset_model_id = asset_custom_field_asset_model.asset_model_id AND %1$s.asset_id = asset.asset_id ', $arrHelperTable['strHelperTable'], $arrHelperTable['strPrimaryKey'], $this->CustomFieldId); } else { $strQuery = sprintf("\n\t\t\t\t\t\tSELECT %s AS entity_id\n\t\t\t\t\t\tFROM %s\n\t\t\t\t\t\tWHERE cfv_%s IS NULL OR cfv_%s = ''", $arrHelperTable['strPrimaryKey'], $arrHelperTable['strHelperTable'], $this->CustomFieldId, $this->CustomFieldId); } $objDatabase = QApplication::$Database[1]; $objDbResult = $objDatabase->Query($strQuery); while ($mixRow = $objDbResult->FetchArray()) { // If it is not a SELECT custom field, then create a new CustomFieldValue if ($this->CustomFieldQtypeId != 2) { $objCustomFieldValue = new CustomFieldValue(); $objCustomFieldValue->CustomFieldId = $this->CustomFieldId; $objCustomFieldValue->ShortDescription = $this->DefaultCustomFieldValue->ShortDescription; $objCustomFieldValue->Save(); $intCustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; } else { $intCustomFieldValueId = $this->DefaultCustomFieldValueId; } // Create the new CustomFieldSelection for this Entity Qtype/Entity Id/Custom Field Id $objCustomFieldSelection = new CustomFieldSelection(); $objCustomFieldSelection->CustomFieldValueId = $intCustomFieldValueId; $objCustomFieldSelection->EntityQtypeId = $objEntityQtypeCustomField->EntityQtypeId; $objCustomFieldSelection->EntityId = $mixRow['entity_id']; $objCustomFieldSelection->Save(); } } } }
/** * This method will update the CustomFieldSelections for one Required Custom Field * */ public function UpdateRequiredFieldSelections() { $objEntityQtypeCustomFieldArray = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->CustomFieldId); if ($objEntityQtypeCustomFieldArray) { foreach ($objEntityQtypeCustomFieldArray as $objEntityQtypeCustomField) { $strEntity = EntityQtype::ToStringPrimaryKeySql($objEntityQtypeCustomField->EntityQtypeId); $strEntityTable = EntityQtype::ToStringTable($objEntityQtypeCustomField->EntityQtypeId); // This query returns entities which do not have a custom_field_selection for this specific Custom Field/Entity QType combination $strQuery = sprintf("\n\t\t\t\t\tSELECT %s AS entity_id\n\t\t\t\t\tFROM %s\n\t\t\t\t\tLEFT JOIN (custom_field_selection JOIN custom_field_value ON custom_field_selection.custom_field_value_id = custom_field_value.custom_field_value_id AND custom_field_value.custom_field_id = %s) ON %s = custom_field_selection.entity_id AND custom_field_selection.entity_qtype_id = %s\n\t\t\t\t\tWHERE custom_field_selection.custom_field_selection_id IS NULL", $strEntity, $strEntityTable, $this->CustomFieldId, $strEntity, $objEntityQtypeCustomField->EntityQtypeId); $objDatabase = QApplication::$Database[1]; $objDbResult = $objDatabase->Query($strQuery); while ($mixRow = $objDbResult->FetchArray()) { // If it is not a SELECT custom field, then create a new CustomFieldValue if ($this->CustomFieldQtypeId != 2) { $objCustomFieldValue = new CustomFieldValue(); $objCustomFieldValue->CustomFieldId = $this->CustomFieldId; $objCustomFieldValue->ShortDescription = $this->DefaultCustomFieldValue->ShortDescription; $objCustomFieldValue->Save(); $intCustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; } else { $intCustomFieldValueId = $this->DefaultCustomFieldValueId; } // Create the new CustomFieldSelection for this Entity Qtype/Entity Id/Custom Field Id $objCustomFieldSelection = new CustomFieldSelection(); $objCustomFieldSelection->CustomFieldValueId = $intCustomFieldValueId; $objCustomFieldSelection->EntityQtypeId = $objEntityQtypeCustomField->EntityQtypeId; $objCustomFieldSelection->EntityId = $mixRow['entity_id']; $objCustomFieldSelection->Save(); } } } }
protected function DeleteEntityQtypeCustomFields() { $objEntityQtypeCustomFieldArray = EntityQtypeCustomField::LoadArrayByCustomFieldId($this->objCustomField->CustomFieldId); if ($objEntityQtypeCustomFieldArray) { foreach ($objEntityQtypeCustomFieldArray as $objEntityQtypeCustomField) { // 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(); } } }