/**
     * 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) . '
			');
    }
Example #2
0
 /**
  * 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;
     }
 }
Example #3
0
 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);
     			}*/
 }
Example #5
0
    /**
     * 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();
                }
            }
        }
    }
Example #6
0
 /**
  * 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();
             }
         }
     }
 }
Example #7
0
 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();
         }
     }
 }