public function Save() { if (empty($this->category_class)) { $this->class = 'folder'; } parent::Save(); }
function cate() { for ($i = 0; $i < 1000; $i++) { $cate = new Category(); $cate->Name = getRandStr(mt_rand(2, 4)); $cate->Save(); } }
protected function btnNext_Click() { $blnError = false; if ($this->intStep == 1) { if ($this->chkHeaderRow->Checked) { $this->blnHeaderRow = true; } else { $this->blnHeaderRow = false; } // Check errors if ($this->lstFieldSeparator->SelectedValue == 'other' && !$this->txtFieldSeparator->Text) { $this->flcFileCsv->Warning = "Please enter the field separator."; $blnError = true; } elseif ($this->lstTextDelimiter->SelectedValue == 'other' && !$this->txtTextDelimiter->Text) { $this->flcFileCsv->Warning = "Please enter the text delimiter."; $blnError = true; } else { // Step 1 complete // File Not Uploaded if (!file_exists($this->flcFileCsv->File) || !$this->flcFileCsv->Size) { //throw new QCallerException('FileAssetType must be a valid QFileAssetType constant value'); $this->flcFileCsv->Warning = 'The file could not be uploaded. Please provide a valid file.'; $blnError = true; // File Has Incorrect MIME Type (only if an acceptiblemimearray is setup) } elseif (is_array($this->strAcceptibleMimeArray) && !array_key_exists($this->flcFileCsv->Type, $this->strAcceptibleMimeArray)) { $this->flcFileCsv->Warning = "Extension must be 'csv' or 'txt'"; $blnError = true; // File Successfully Uploaded } else { $this->flcFileCsv->Warning = ""; // Setup Filename, Base Filename and Extension $strFilename = $this->flcFileCsv->FileName; $intPosition = strrpos($strFilename, '.'); } if (!$blnError) { $this->FileCsvData = new File_CSV_DataSource(); // Setup the settings which have got on step 1 $this->FileCsvData->settings($this->GetCsvSettings()); $file = fopen($this->flcFileCsv->File, "r"); // Counter of files $i = 1; // Counter of rows $j = 1; $this->strFilePathArray = array(); // The uploaded file splits up in order to avoid out of memory while ($row = fgets($file, 1000)) { if ($j == 1) { $strFilePath = sprintf('%s/%s_%s.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId'], $i); $this->strFilePathArray[] = $strFilePath; $file_part = fopen($strFilePath, "w+"); if ($i == 1) { $strHeaderRow = $row; } else { fwrite($file_part, $strHeaderRow); } } fwrite($file_part, $row); $j++; if ($j > 200) { $j = 1; $i++; fclose($file_part); } } $this->intTotalCount = ($i - 1) * 200 + $j - 1; if (QApplication::$TracmorSettings->AssetLimit != null && QApplication::$TracmorSettings->AssetLimit < $this->intTotalCount + Asset::CountAll()) { $blnError = true; $this->btnNext->Warning = $i . " " . $j . "Sorry that is too many assets. Your asset limit is = " . QApplication::$TracmorSettings->AssetLimit . ", this import has " . $this->intTotalCount . " assets, and you already have " . Asset::CountAll() . " assets in the database."; } else { $this->arrMapFields = array(); $this->arrTracmorField = array(); // Load first file $this->FileCsvData->load($this->strFilePathArray[0]); $file_skipped = fopen($this->strFilePath = sprintf('%s/%s_skipped.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId']), "w+"); // Get Headers if ($this->blnHeaderRow) { $this->arrCsvHeader = $this->FileCsvData->getHeaders(); // Create the header row in the skipped error file $this->PutSkippedRecordInFile($file_skipped, $this->arrCsvHeader); } /*else { // If it is not first file $this->FileCsvData->appendRow($this->FileCsvData->getHeaders()); }*/ $strFirstRowArray = $this->FileCsvData->getRow(0); for ($i = 0; $i < count($strFirstRowArray); $i++) { $this->arrMapFields[$i] = array(); if ($this->blnHeaderRow && array_key_exists($i, $this->arrCsvHeader)) { if ($this->arrCsvHeader[$i] == '') { $this->arrCsvHeader[$i] = ' '; } $this->lstMapHeader_Create($this, $i, $this->arrCsvHeader[$i]); $this->arrMapFields[$i]['header'] = $this->arrCsvHeader[$i]; } else { $this->lstMapHeader_Create($this, $i); } // Create Default Value TextBox, ListBox and DateTimePicker if ($this->blnHeaderRow && array_key_exists($i, $this->arrCsvHeader) && $this->arrCsvHeader[$i] || !$this->blnHeaderRow) { $txtDefaultValue = new QTextBox($this); $txtDefaultValue->Width = 200; $this->txtMapDefaultValueArray[] = $txtDefaultValue; $lstDefaultValue = new QListBox($this); $lstDefaultValue->Width = 200; $lstDefaultValue->Display = false; $this->lstMapDefaultValueArray[] = $lstDefaultValue; $dtpDate = new QDateTimePicker($this); $dtpDate->DateTimePickerType = QDateTimePickerType::Date; $dtpDate->DateTimePickerFormat = QDateTimePickerFormat::MonthDayYear; $dtpDate->Display = false; $this->dtpDateArray[] = $dtpDate; if (array_key_exists($i, $this->lstMapHeaderArray)) { $this->lstTramorField_Change(null, $this->lstMapHeaderArray[$i]->ControlId, null); } } $this->arrMapFields[$i]['row1'] = $strFirstRowArray[$i]; } $this->btnNext->Text = "Import Now"; fclose($file_skipped); // Create Add Field button $btnAddField = new QButton($this); $btnAddField->Text = "Add Field"; $btnAddField->AddAction(new QClickEvent(), new QServerAction('btnAddField_Click')); $btnAddField->AddAction(new QEnterKeyEvent(), new QServerAction('btnAddField_Click')); $btnAddField->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstMapHeaderArray[] = $btnAddField; } } } } elseif ($this->intStep == 2) { // Step 2 complete $blnError = false; $blnAssetCode = false; $blnLocation = false; $blnAssetModelCode = false; $blnAssetModelShortDescription = false; $blnCategory = false; $blnManufacturer = false; // Checking errors (Location, Asset Code, Model Short Description, Model Code, Category and Manufacturer must be selected) for ($i = 0; $i < count($this->lstMapHeaderArray) - 1; $i++) { $lstMapHeader = $this->lstMapHeaderArray[$i]; $strSelectedValue = strtolower($lstMapHeader->SelectedValue); if ($strSelectedValue == "location") { $blnLocation = true; } elseif ($strSelectedValue == "asset code") { $blnAssetCode = true; } elseif ($strSelectedValue == "asset model short description") { $blnAssetModelShortDescription = true; } elseif ($strSelectedValue == "asset model code") { $blnAssetModelCode = true; } elseif ($strSelectedValue == "category") { $blnCategory = true; } elseif ($strSelectedValue == "manufacturer") { $blnManufacturer = true; } } if ($this->lstMapDefaultValueArray) { // Checking errors for required Default Value text fields foreach ($this->lstMapDefaultValueArray as $lstDefault) { if ($lstDefault->Display && $lstDefault->Required && !$lstDefault->SelectedValue) { $lstDefault->Warning = "You must select one default value."; $blnError = true; break; } else { $blnError = false; $lstDefault->Warning = ""; } } } if ($this->txtMapDefaultValueArray) { // Checking errors for required Default Value lst fields foreach ($this->txtMapDefaultValueArray as $txtDefault) { if ($txtDefault->Display && $txtDefault->Required && !$txtDefault->Text) { $txtDefault->Warning = "You must enter default value."; break; } else { $blnError = false; $txtDefault->Warning = ""; } } } // If all required fields have no errors if (!$blnError && $blnAssetCode && $blnAssetModelCode && $blnAssetModelShortDescription && $blnLocation && $blnCategory && $blnManufacturer) { $this->btnNext->Warning = ""; // Setup keys for main required fields foreach ($this->arrTracmorField as $key => $value) { if ($value == 'location') { $this->intLocationKey = $key; } elseif ($value == 'category') { $this->intCategoryKey = $key; } elseif ($value == 'manufacturer') { $this->intManufacturerKey = $key; } elseif ($value == 'created by') { $this->intCreatedByKey = $key; } elseif ($value == 'created date') { $this->intCreatedDateKey = $key; } elseif ($value == 'modified by') { $this->intModifiedByKey = $key; } elseif ($value == 'modified date') { $this->intModifiedDateKey = $key; } } $strLocationArray = array(); $strNewLocationArray = array(); // Load all locations foreach (Location::LoadAll() as $objLocation) { $strLocationArray[] = stripslashes($objLocation->ShortDescription); } $txtDefaultValue = trim($this->txtMapDefaultValueArray[$this->intLocationKey]->Text); // Add default value in database if it is not exist if ($txtDefaultValue && !$this->in_array_nocase($txtDefaultValue, $strLocationArray)) { $strLocationArray[] = $txtDefaultValue; $objNewLocation = new Location(); $objNewLocation->ShortDescription = addslashes($txtDefaultValue); $objNewLocation->EnabledFlag = 1; $objNewLocation->Save(); $this->objNewLocationArray[$objNewLocation->LocationId] = $objNewLocation->ShortDescription; } $this->objNewLocationArray = array(); $this->objNewCategoryArray = array(); $this->objNewManufacturerArray = array(); $this->objNewAssetModelArray = array(); $this->strModelValuesArray = array(); $this->blnImportEnd = false; $j = 1; $strLocationValuesArray = array(); // Add all unique locations in database foreach ($this->strFilePathArray as $strFilePath) { $this->FileCsvData->load($strFilePath); if ($j != 1) { //$this->FileCsvData->appendRow($this->FileCsvData->getHeaders()); } // Location Import for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); if (trim($strRowArray[$this->intLocationKey]) && !$this->in_array_nocase(trim($strRowArray[$this->intLocationKey]), $strLocationArray)) { $strLocationArray[] = trim($strRowArray[$this->intLocationKey]); /*$objNewLocation = new Location(); $objNewLocation->ShortDescription = addslashes(trim($strRowArray[$this->intLocationKey])); $objNewLocation->Save();*/ $strLocationValuesArray[] = sprintf("('%s', '%s', NOW())", addslashes(trim($strRowArray[$this->intLocationKey])), $_SESSION['intUserAccountId']); $strNewLocation[] = addslashes(trim($strRowArray[$this->intLocationKey])); //$this->objNewLocationArray[$objNewLocation->LocationId] = $objNewLocation->ShortDescription; } } $j++; } if (count($strLocationValuesArray)) { $objDatabase = Location::GetDatabase(); $objDatabase->NonQuery(sprintf("INSERT INTO `location` (`short_description`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $strLocationValuesArray))); $intStartId = $objDatabase->InsertId(); for ($i = 0; $i < count($strNewLocation); $i++) { $this->objNewLocationArray[$intStartId + $i] = $strNewLocation[$i]; } } $this->btnNext->RemoveAllActions('onclick'); // Add new ajax actions for button $this->btnNext->AddAction(new QClickEvent(), new QAjaxAction('btnNext_Click')); $this->btnNext->AddAction(new QClickEvent(), new QToggleEnableAction($this->btnNext)); $this->btnNext->AddAction(new QEnterKeyEvent(), new QAjaxAction('btnNext_Click')); $this->btnNext->AddAction(new QEnterKeyEvent(), new QToggleEnableAction($this->btnNext)); $this->btnNext->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->btnNext->Warning = "Locations have been imported. Please wait..."; $this->intImportStep = 2; $this->intCurrentFile = 0; $this->strSelectedValueArray = array(); // New locations $this->dtgLocation = new QDataGrid($this); $this->dtgLocation->Name = 'location_list'; $this->dtgLocation->CellPadding = 5; $this->dtgLocation->CellSpacing = 0; $this->dtgLocation->CssClass = "datagrid"; $this->dtgLocation->UseAjax = true; $this->dtgLocation->ShowColumnToggle = false; $this->dtgLocation->ShowExportCsv = false; $this->dtgLocation->ShowHeader = false; $this->dtgLocation->AddColumn(new QDataGridColumnExt('Location', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // New categories $this->dtgCategory = new QDataGrid($this); $this->dtgCategory->Name = 'category_list'; $this->dtgCategory->CellPadding = 5; $this->dtgCategory->CellSpacing = 0; $this->dtgCategory->CssClass = "datagrid"; $this->dtgCategory->UseAjax = true; $this->dtgCategory->ShowColumnToggle = false; $this->dtgCategory->ShowExportCsv = false; $this->dtgCategory->ShowHeader = false; $this->dtgCategory->AddColumn(new QDataGridColumnExt('Manufacturer', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // New manufacturers $this->dtgManufacturer = new QDataGrid($this); $this->dtgManufacturer->Name = 'manufacturer_list'; $this->dtgManufacturer->CellPadding = 5; $this->dtgManufacturer->CellSpacing = 0; $this->dtgManufacturer->CssClass = "datagrid"; $this->dtgManufacturer->UseAjax = true; $this->dtgManufacturer->ShowColumnToggle = false; $this->dtgManufacturer->ShowExportCsv = false; $this->dtgManufacturer->ShowHeader = false; $this->dtgManufacturer->AddColumn(new QDataGridColumnExt('Manufacturer', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // New asset models $this->dtgAssetModel = new QDataGrid($this); $this->dtgAssetModel->Name = 'asset_model_list'; $this->dtgAssetModel->CellPadding = 5; $this->dtgAssetModel->CellSpacing = 0; $this->dtgAssetModel->CssClass = "datagrid"; $this->dtgAssetModel->UseAjax = true; $this->dtgAssetModel->ShowColumnToggle = false; $this->dtgAssetModel->ShowExportCsv = false; $this->dtgAssetModel->ShowHeader = false; $this->dtgAssetModel->AddColumn(new QDataGridColumnExt('Model', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // New assets $this->dtgAsset = new QDataGrid($this); $this->dtgAsset->Name = 'asset_list'; $this->dtgAsset->CellPadding = 5; $this->dtgAsset->CellSpacing = 0; $this->dtgAsset->CssClass = "datagrid"; $this->dtgAsset->UseAjax = true; $this->dtgAsset->ShowColumnToggle = false; $this->dtgAsset->ShowExportCsv = false; $this->dtgAsset->ShowHeader = false; $this->dtgAsset->AddColumn(new QDataGridColumnExt('Asset Tag', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // Updated assets $this->dtgUpdatedAsset = new QDataGrid($this); $this->dtgUpdatedAsset->Name = 'updated_asset_list'; $this->dtgUpdatedAsset->CellPadding = 5; $this->dtgUpdatedAsset->CellSpacing = 0; $this->dtgUpdatedAsset->CssClass = "datagrid"; $this->dtgUpdatedAsset->UseAjax = true; $this->dtgUpdatedAsset->ShowColumnToggle = false; $this->dtgUpdatedAsset->ShowExportCsv = false; $this->dtgUpdatedAsset->ShowHeader = false; $this->dtgUpdatedAsset->AddColumn(new QDataGridColumnExt('Asset Tag', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // Create the label for successful import $this->lblImportSuccess = new QLabel($this); $this->lblImportSuccess->HtmlEntities = false; $this->lblImportSuccess->Display = false; // Undo Last Import button $this->btnUndoLastImport = new QButton($this); $this->btnUndoLastImport->Text = "Undo Last Import"; $this->btnUndoLastImport->Display = false; $this->btnUndoLastImport->AddAction(new QClickEvent(), new QServerAction('btnCancel_Click')); $this->btnUndoLastImport->AddAction(new QEnterKeyEvent(), new QServerAction('btnCancel_Click')); $this->btnUndoLastImport->AddAction(new QEnterKeyEvent(), new QTerminateAction()); // Import More button $this->btnImportMore = new QButton($this); $this->btnImportMore->Text = "Import More"; $this->btnImportMore->Display = false; $this->btnImportMore->AddAction(new QClickEvent(), new QServerAction('btnImportMore_Click')); $this->btnImportMore->AddAction(new QEnterKeyEvent(), new QServerAction('btnImportMore_Click')); $this->btnImportMore->AddAction(new QEnterKeyEvent(), new QTerminateAction()); // Return to Assets button $this->btnReturnToAssets = new QButton($this); $this->btnReturnToAssets->Text = "Return to Assets"; $this->btnReturnToAssets->Display = false; $this->btnReturnToAssets->AddAction(new QClickEvent(), new QServerAction('btnReturnToAssets_Click')); $this->btnReturnToAssets->AddAction(new QEnterKeyEvent(), new QServerAction('btnReturnToAssets_Click')); $this->btnReturnToAssets->AddAction(new QEnterKeyEvent(), new QTerminateAction()); } else { $this->btnNext->Warning = "You must select all required fields (Asset Tag, Model Number, Model Short Description, Location, Category and Manufacturer)."; $blnError = true; } } else { // Step 3 complete set_time_limit(0); $file_skipped = fopen($strFilePath = sprintf('%s/%s_skipped.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId']), "a"); if (!$this->blnImportEnd) { // Category if ($this->intImportStep == 2) { $strCategoryArray = array(); $this->objNewCategoryArray = array(); // Load all categories foreach (Category::LoadAll() as $objCategory) { $strCategoryArray[] = stripslashes($objCategory->ShortDescription); } // Add Default value $txtDefaultValue = trim($this->txtMapDefaultValueArray[$this->intCategoryKey]->Text); if ($txtDefaultValue && !$this->in_array_nocase($txtDefaultValue, $strCategoryArray)) { $strCategoryArray[] = $txtDefaultValue; $objNewCategory = new Category(); $objNewCategory->ShortDescription = addslashes($txtDefaultValue); $objNewCategory->AssetFlag = true; $objNewCategory->InventoryFlag = false; $objNewCategory->Save(); $this->objNewCategoryArray[$objNewCategory->CategoryId] = $objNewCategory->ShortDescription; } $this->btnNext->Warning = "Categories have been imported. Please wait..."; } elseif ($this->intImportStep == 3) { $strManufacturerArray = array(); $this->objNewManufacturerArray = array(); // Load all manufacturers foreach (Manufacturer::LoadAll() as $objManufacturer) { $strManufacturerArray[] = stripslashes($objManufacturer->ShortDescription); } $txtDefaultValue = trim($this->txtMapDefaultValueArray[$this->intManufacturerKey]->Text); // Add Default Value if ($txtDefaultValue && !$this->in_array_nocase($txtDefaultValue, $strManufacturerArray)) { $strManufacturerArray[] = $txtDefaultValue; $objNewManufacturer = new Manufacturer(); $objNewManufacturer->ShortDescription = addslashes($txtDefaultValue); $objNewManufacturer->Save(); $this->objNewManufacturerArray[$objNewManufacturer->ManufacturerId] = $objNewManufacturer->ShortDescription; } $this->btnNext->Warning = "Manufacturers have been imported. Please wait..."; } elseif ($this->intImportStep == 4) { $intCategoryArray = array(); // Load all categories with keys=category_id foreach (Category::LoadAllWithFlags(true, false) as $objCategory) { //$intCategoryArray["'" . strtolower($objCategory->ShortDescription) . "'"] = $objCategory->CategoryId; $intCategoryArray[$objCategory->CategoryId] = strtolower($objCategory->ShortDescription); } $intManufacturerArray = array(); // Load all manufacturers with keys=manufacturer_id foreach (Manufacturer::LoadAll() as $objManufacturer) { //$intManufacturerArray["'" . strtolower($objManufacturer->ShortDescription) . "'"] = $objManufacturer->ManufacturerId; $intManufacturerArray[$objManufacturer->ManufacturerId] = strtolower($objManufacturer->ShortDescription); } $intModelCustomFieldKeyArray = array(); $arrAssetModelCustomField = array(); // Setup keys foreach ($this->arrTracmorField as $key => $value) { if ($value == 'asset model short description') { $intModelShortDescriptionKey = $key; } elseif ($value == 'asset model long description') { $intModelLongDescriptionKey = $key; } elseif ($value == 'asset model code') { $intModelCodeKey = $key; } elseif ($value == 'asset code') { $intAssetCode = $key; } elseif (substr($value, 0, 6) == 'model_') { $intModelCustomFieldKeyArray[substr($value, 6)] = $key; if (array_key_exists(substr($value, 6), $this->arrAssetCustomField)) { $arrAssetModelCustomField[substr($value, 6)] = $this->arrAssetCustomField[substr($value, 6)]; } } } $strAssetModelArray = array(); // Load all asset models foreach (AssetModel::LoadAll() as $objAssetModel) { $strAssetModelArray[] = strtolower(sprintf("%s_%s_%s_%s", $objAssetModel->AssetModelCode, $objAssetModel->ShortDescription, $objAssetModel->CategoryId, $objAssetModel->ManufacturerId)); } $this->btnNext->Warning = sprintf("Please wait... Model import complete: %s%s", ceil(($this->intCurrentFile + 1) * 200 / $this->intTotalCount * 100), "%"); } elseif ($this->intImportStep == 5) { $intCategoryArray = array(); // Load all categories with keys=category_id foreach (Category::LoadAllWithFlags(true, false) as $objCategory) { //$intCategoryArray["'" . strtolower($objCategory->ShortDescription) . "'"] = $objCategory->CategoryId; $intCategoryArray[$objCategory->CategoryId] = strtolower($objCategory->ShortDescription); } $intManufacturerArray = array(); // Load all manufacturers with keys=manufacturer_id foreach (Manufacturer::LoadAll() as $objManufacturer) { //$intManufacturerArray["'" . strtolower($objManufacturer->ShortDescription) . "'"] = $objManufacturer->ManufacturerId; $intManufacturerArray[$objManufacturer->ManufacturerId] = strtolower($objManufacturer->ShortDescription); } if ($this->intCurrentFile == 0) { $this->intAssetModelArray = array(); // Load all asset models with keys=asset_model_id foreach (AssetModel::LoadAll() as $objAssetModel) { //$intAssetModelArray["'" . strtolower($objAssetModel->ShortDescription) . "'"] = $objAssetModel->AssetModelId; $this->intAssetModelArray[$objAssetModel->AssetModelId] = strtolower(sprintf("%s_%s_%s_%s", $objAssetModel->AssetModelCode, $objAssetModel->ShortDescription, $objAssetModel->CategoryId, $objAssetModel->ManufacturerId)); } } $intAssetCustomFieldKeyArray = array(); $arrAssetCustomField = array(); // Setup keys foreach ($this->arrTracmorField as $key => $value) { if ($value == 'asset model short description') { $intModelShortDescriptionKey = $key; } elseif ($value == 'asset model code') { $intModelCodeKey = $key; } elseif ($value == 'asset code') { $intAssetCode = $key; } elseif (substr($value, 0, 6) == 'asset_') { $intAssetCustomFieldKeyArray[substr($value, 6)] = $key; if (array_key_exists(substr($value, 6), $this->arrAssetCustomField)) { $arrAssetCustomField[substr($value, 6)] = $this->arrAssetCustomField[substr($value, 6)]; } } } $intLocationArray = array(); // Load all locations with keys=location_id foreach (Location::LoadAll() as $objLocation) { //$intLocationArray["'" . strtolower($objLocation->ShortDescription) . "'"] = $objLocation->LocationId; $intLocationArray[$objLocation->LocationId] = strtolower($objLocation->ShortDescription); } $strAssetArray = array(); $strUpdatedAssetArray = array(); // Load all assets foreach (Asset::LoadAll() as $objAsset) { $strAssetArray[] = strtolower($objAsset->AssetCode); } $this->btnNext->Warning = sprintf("Please wait... Asset import complete: %s%s", ceil(($this->intCurrentFile + 1) * 200 / $this->intTotalCount * 100), "%"); } for ($j = $this->intCurrentFile; $j < count($this->strFilePathArray); $j++) { $this->FileCsvData->load($this->strFilePathArray[$j]); if (!$j) { //$this->FileCsvData->appendRow($this->FileCsvData->getHeaders()); } // Category Import if ($this->intImportStep == 2) { $strCategoryValuesArray = array(); $strNewCategoryArray = array(); for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); if (trim($strRowArray[$this->intCategoryKey]) && !$this->in_array_nocase(trim($strRowArray[$this->intCategoryKey]), $strCategoryArray)) { $strCategoryArray[] = trim($strRowArray[$this->intCategoryKey]); /*$objNewCategory = new Category(); $objNewCategory->ShortDescription = addslashes(trim($strRowArray[$this->intCategoryKey])); $objNewCategory->AssetFlag = true; $objNewCategory->InventoryFlag = false; $objNewCategory->Save(); $this->objNewCategoryArray[$objNewCategory->CategoryId] = $objNewCategory->ShortDescription;*/ $strCategoryValuesArray[] = sprintf("('%s', '1', '0', '%s', NOW())", addslashes(trim($strRowArray[$this->intCategoryKey])), $_SESSION['intUserAccountId']); $strNewCategoryArray[] = addslashes(trim($strRowArray[$this->intCategoryKey])); } } if (count($strCategoryValuesArray)) { $objDatabase = Category::GetDatabase(); $objDatabase->NonQuery(sprintf("INSERT INTO `category` (`short_description`, `asset_flag`, `inventory_flag`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $strCategoryValuesArray))); $intStartId = $objDatabase->InsertId(); for ($i = 0; $i < count($strNewCategoryArray); $i++) { $this->objNewCategoryArray[$intStartId + $i] = $strNewCategoryArray[$i]; } } } elseif ($this->intImportStep == 3) { $strManufacturerValuesArray = array(); $strNewManufacturerArray = array(); for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); if (trim($strRowArray[$this->intManufacturerKey]) && !$this->in_array_nocase(trim($strRowArray[$this->intManufacturerKey]), $strManufacturerArray)) { $strManufacturerArray[] = trim($strRowArray[$this->intManufacturerKey]); /*$objNewManufacturer = new Manufacturer(); $objNewManufacturer->ShortDescription = addslashes(trim($strRowArray[$this->intManufacturerKey])); $objNewManufacturer->Save(); $this->objNewManufacturerArray[$objNewManufacturer->ManufacturerId] = $objNewManufacturer->ShortDescription;*/ $strManufacturerValuesArray[] = sprintf("('%s', '%s', NOW())", addslashes(trim($strRowArray[$this->intManufacturerKey])), $_SESSION['intUserAccountId']); $strNewManufacturerArray[] = addslashes(trim($strRowArray[$this->intManufacturerKey])); } } if (count($strManufacturerValuesArray)) { $objDatabase = Manufacturer::GetDatabase(); $objDatabase->NonQuery(sprintf("INSERT INTO `manufacturer` (`short_description`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $strManufacturerValuesArray))); $intStartId = $objDatabase->InsertId(); for ($i = 0; $i < count($strNewManufacturerArray); $i++) { $this->objNewManufacturerArray[$intStartId + $i] = $strNewManufacturerArray[$i]; } } } elseif ($this->intImportStep == 4) { $objNewAssetModelArray = array(); for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); $strShortDescription = trim($strRowArray[$intModelShortDescriptionKey]) ? addslashes(trim($strRowArray[$intModelShortDescriptionKey])) : false; $strAssetModelCode = trim($strRowArray[$intModelCodeKey]) ? addslashes(trim($strRowArray[$intModelCodeKey])) : addslashes(trim($this->txtMapDefaultValueArray[$intModelCodeKey]->Text)); $strKeyArray = array_keys($intCategoryArray, addslashes(strtolower(trim($strRowArray[$this->intCategoryKey])))); if (count($strKeyArray)) { $intCategoryId = $strKeyArray[0]; } else { $strKeyArray = array_keys($intCategoryArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intCategoryKey]->Text)))); if (count($strKeyArray)) { $intCategoryId = $strKeyArray[0]; } else { $intCategoryId = false; } } $strKeyArray = array_keys($intManufacturerArray, addslashes(strtolower(trim($strRowArray[$this->intManufacturerKey])))); if (count($strKeyArray)) { $intManufacturerId = $strKeyArray[0]; } else { $strKeyArray = array_keys($intManufacturerArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intManufacturerKey]->Text)))); if (count($strKeyArray)) { $intManufacturerId = $strKeyArray[0]; } else { $intManufacturerId = false; } } if (!$strShortDescription || $intCategoryId === false || $intManufacturerId === false) { //$blnError = true; //$this->intSkippedRecordCount++; //$this->PutSkippedRecordInFile($file_skipped, $strRowArray); //echo sprintf("Desc: %s AssetCode: %s Cat: %s Man: %s<br/>", $strShortDescription, $strAssetModelCode, $intCategoryId, $intManufacturerId); //break; $strAssetModel = null; } else { //$blnError = false; $strAssetModel = strtolower(sprintf("%s_%s_%s_%s", $strAssetModelCode, $strShortDescription, $intCategoryId, $intManufacturerId)); } if ($strAssetModel && !$this->in_array_nocase($strAssetModel, $strAssetModelArray)) { $strAssetModelArray[] = $strAssetModel; /*$objNewAssetModel = new AssetModel(); $objNewAssetModel->ShortDescription = $strShortDescription; $objNewAssetModel->AssetModelCode = $strAssetModelCode; $objNewAssetModel->CategoryId = $intCategoryId; $objNewAssetModel->ManufacturerId = $intManufacturerId; if (isset($intModelLongDescriptionKey)) { $objNewAssetModel->LongDescription = addslashes(trim($strRowArray[$intModelLongDescriptionKey])); } $objNewAssetModel->Save(); // Asset Model Custom Field import foreach ($arrAssetModelCustomField as $objCustomField) { if ($objCustomField->CustomFieldQtypeId != 2) { $objCustomField->CustomFieldSelection = new CustomFieldSelection; $objCustomField->CustomFieldSelection->newCustomFieldValue = new CustomFieldValue; $objCustomField->CustomFieldSelection->newCustomFieldValue->CustomFieldId = $objCustomField->CustomFieldId; if (trim($strRowArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]])) { $objCustomField->CustomFieldSelection->newCustomFieldValue->ShortDescription = addslashes(trim($strRowArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]])); } else { $objCustomField->CustomFieldSelection->newCustomFieldValue->ShortDescription = addslashes($this->txtMapDefaultValueArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); } $objCustomField->CustomFieldSelection->newCustomFieldValue->Save(); $objCustomField->CustomFieldSelection->EntityId = $objNewAssetModel->AssetModelId; $objCustomField->CustomFieldSelection->EntityQtypeId = 4; $objCustomField->CustomFieldSelection->CustomFieldValueId = $objCustomField->CustomFieldSelection->newCustomFieldValue->CustomFieldValueId; $objCustomField->CustomFieldSelection->Save(); } else { $data = trim($strRowArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]]); $blnInList = false; $objCustomField->CustomFieldSelection = new CustomFieldSelection; $objCustomField->CustomFieldSelection->EntityId = $objNewAssetModel->AssetModelId; $objCustomField->CustomFieldSelection->EntityQtypeId = 4; foreach (CustomFieldValue::LoadArrayByCustomFieldId($objCustomField->CustomFieldId) as $objCustomFieldValue) { if (strtolower($objCustomFieldValue->ShortDescription) == $data) { $objCustomField->CustomFieldSelection->CustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; $blnInList = true; break; } } if (!$blnInList && $this->lstMapDefaultValueArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue != null) { $objCustomField->CustomFieldSelection->CustomFieldValueId = $this->lstMapDefaultValueArray[$intModelCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue; $objCustomField->CustomFieldSelection->Save(); } elseif ($data) { $objCustomField->CustomFieldSelection->Save(); } } }*/ $this->strModelValuesArray[] = sprintf("('%s', '%s', '%s', '%s', '%s', '%s', NOW())", $strShortDescription, isset($intModelLongDescriptionKey) ? addslashes(trim($strRowArray[$intModelLongDescriptionKey])) : null, $strAssetModelCode, $intCategoryId, $intManufacturerId, $_SESSION['intUserAccountId']); $objNewAssetModelArray[] = $strShortDescription; } } //if ($this->intCurrentFile == count($this->strFilePathArray)) { if (count($this->strModelValuesArray)) { //$strNewModelArray = array_merge($this->objNewAssetModelArray, array()); //$this->objNewAssetModelArray = array(); $objDatabase = AssetModel::GetDatabase(); //var_dump($this->strModelValuesArray); //exit(); $objDatabase->NonQuery(sprintf("INSERT INTO `asset_model` (`short_description`, `long_description`, `asset_model_code`, `category_id`, `manufacturer_id`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $this->strModelValuesArray))); $intStartId = $objDatabase->InsertId(); for ($i = 0; $i < count($objNewAssetModelArray); $i++) { //$objDatabase->NonQuery(sprintf("INSERT INTO `asset_model` (`short_description`, `long_description`, `asset_model_code`, `category_id`, `manufacturer_id`, `created_by`, `creation_date`) VALUES %s;", $this->strModelValuesArray[$i])); //$intStartId = $objDatabase->InsertId(); $this->objNewAssetModelArray[$intStartId + $i] = $objNewAssetModelArray[$i]; } $this->strModelValuesArray = array(); } //} //$this->intCurrentFile++; //break; } elseif ($this->intImportStep == 5) { $strAssetValuesArray = array(); $objAssetValuesArray = array(); $strAssetCFVArray = array(); $strUpdatedAssetCFVArray = array(); $strAssetCodeArray = array(); $strAddedCFVArray = array(); // This will add extra commas for blank values $this->FileCsvData->symmetrize(); for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); // The addslashes was causing match-up problems //$strShortDescription = (trim($strRowArray[$intModelShortDescriptionKey])) ? addslashes(trim($strRowArray[$intModelShortDescriptionKey])) : false; $strShortDescription = trim($strRowArray[$intModelShortDescriptionKey]) ? trim($strRowArray[$intModelShortDescriptionKey]) : false; $strAssetModelCode = trim($strRowArray[$intModelCodeKey]) ? addslashes(trim($strRowArray[$intModelCodeKey])) : addslashes(trim($this->txtMapDefaultValueArray[$intModelCodeKey]->Text)); $strKeyArray = array_keys($intCategoryArray, addslashes(strtolower(trim($strRowArray[$this->intCategoryKey])))); if (count($strKeyArray)) { $intCategoryId = $strKeyArray[0]; } else { $strKeyArray = array_keys($intCategoryArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intCategoryKey]->Text)))); if (count($strKeyArray)) { $intCategoryId = $strKeyArray[0]; } else { $intCategoryId = false; } } $strKeyArray = array_keys($intManufacturerArray, addslashes(strtolower(trim($strRowArray[$this->intManufacturerKey])))); if (count($strKeyArray)) { $intManufacturerId = $strKeyArray[0]; } else { $strKeyArray = array_keys($intManufacturerArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intManufacturerKey]->Text)))); if (count($strKeyArray)) { $intManufacturerId = $strKeyArray[0]; } else { $intManufacturerId = false; } } if (!$strShortDescription || $intCategoryId === false || $intManufacturerId === false) { //$blnError = true; $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); //break; } else { //$blnError = false; $strAssetModel = strtolower(sprintf("%s_%s_%s_%s", $strAssetModelCode, $strShortDescription, $intCategoryId, $intManufacturerId)); $strAssetCode = addslashes(trim($strRowArray[$intAssetCode])); if ($strAssetCode && !$this->in_array_nocase($strAssetCode, $strAssetArray)) { $intLocationKeyArray = array_keys($intLocationArray, addslashes(strtolower(trim($strRowArray[$this->intLocationKey])))); if (!count($intLocationKeyArray)) { $intLocationKeyArray = array_keys($intLocationArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intLocationKey]->Text)))); } $intModelKeyArray = array_keys($this->intAssetModelArray, $strAssetModel); if (count($intLocationKeyArray) && count($intModelKeyArray)) { $strAssetArray[] = strtolower($strAssetCode); $strAssetValuesArray[] = sprintf("('%s', '%s', '%s', '%s', NOW())", $strAssetCode, $intLocationKeyArray[0], $intModelKeyArray[0], $_SESSION['intUserAccountId']); /*$objNewAsset = new Asset(); $objNewAsset->AssetCode = $strAssetCode; $objNewAsset->LocationId = $intLocationKeyArray[0]; $objNewAsset->AssetModelId = $intModelKeyArray[0]; if (isset($this->intCreatedByKey)) { if (isset($this->intUserArray[strtolower(trim($strRowArray[$this->intCreatedByKey]))])) { $objNewAsset->CreatedBy = $this->intUserArray[strtolower(trim($strRowArray[$this->intCreatedByKey]))]; } else { $objNewAsset->CreatedBy = $this->lstMapDefaultValueArray[$this->intCreatedByKey]->SelectedValue; } } $objNewAsset->Save();*/ $strCFVArray = array(); $objDatabase = CustomField::GetDatabase(); // Asset Custom Field import foreach ($arrAssetCustomField as $objCustomField) { if ($objCustomField->CustomFieldQtypeId != 2) { $strShortDescription = trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]) ? addslashes(trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])) : addslashes($this->txtMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; /*$strQuery = sprintf("INSERT INTO `custom_field_value` " . "(`custom_field_id`,`short_description`, `created_by`, `creation_date`) " . "VALUES ('%s', '%s', '%s', 'NOW()');", $objCustomField->CustomFieldId, $strShortDescription, $_SESSION['intUserAccountId']); $objDatabase->NonQuery($strQuery); $this->strSelectedValueArray[] = sprintf("('%s', '%s', '%s')", $objNewAsset->AssetId, 1, $objDatabase->InsertId()); $strCFVArray[] = sprintf("`cfv_%s`='%s'", $objCustomField->CustomFieldId, $strShortDescription); $objCustomField->CustomFieldSelection = new CustomFieldSelection; $objCustomField->CustomFieldSelection->newCustomFieldValue = new CustomFieldValue; $objCustomField->CustomFieldSelection->newCustomFieldValue->CustomFieldId = $objCustomField->CustomFieldId; if (trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])) { $objCustomField->CustomFieldSelection->newCustomFieldValue->ShortDescription = addslashes(trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])); } else { $objCustomField->CustomFieldSelection->newCustomFieldValue->ShortDescription = addslashes($this->txtMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); } $objCustomField->CustomFieldSelection->newCustomFieldValue->Save(); $objCustomField->CustomFieldSelection->EntityId = $objNewAsset->AssetId; $objCustomField->CustomFieldSelection->EntityQtypeId = 1; $objCustomField->CustomFieldSelection->CustomFieldValueId = $objCustomField->CustomFieldSelection->newCustomFieldValue->CustomFieldValueId; $objCustomField->CustomFieldSelection->Save();*/ } else { $objDatabase = Asset::GetDatabase(); $strShortDescription = addslashes(trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])); $blnInList = false; foreach (CustomFieldValue::LoadArrayByCustomFieldId($objCustomField->CustomFieldId) as $objCustomFieldValue) { if (strtolower($objCustomFieldValue->ShortDescription) == strtolower($strShortDescription)) { //$intCustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; $blnInList = true; break; } } // Add the CustomFieldValue if (!$blnInList && !in_array($strShortDescription, $strAddedCFVArray)) { $strQuery = sprintf("INSERT INTO custom_field_value (custom_field_id, short_description, created_by, creation_date) VALUES (%s, '%s', %s, NOW());", $objCustomField->CustomFieldId, $strShortDescription, $_SESSION['intUserAccountId']); $objDatabase->NonQuery($strQuery); $strAddedCFVArray[] = $strShortDescription; } elseif (!$blnInList && $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue != null) { //$intCustomFieldValueId = $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue; $strShortDescription = $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedName; } if ($strShortDescription) { //$this->strSelectedValueArray[] = sprintf("('%s', '%s', '%s')", $objNewAsset->AssetId, 1, $intCustomFieldValueId); //$strCFVArray[] = sprintf("`cfv_%s`='%s'", $objCustomField->CustomFieldId, $strShortDescription); $strCFVArray[$objCustomField->CustomFieldId] = sprintf("'%s'", $strShortDescription); } else { $strCFVArray[$objCustomField->CustomFieldId] = "NULL"; } } } $strAssetCodeArray[] = $strAssetCode; /*$this->objNewAssetArray[$objNewAsset->AssetId] = $objNewAsset->AssetCode; if (count($strCFVArray)) { $strQuery = sprintf("UPDATE `asset_custom_field_helper` " . "SET %s " . "WHERE `asset_id`='%s';", implode(", ", $strCFVArray), $objNewAsset->AssetId); $objDatabase->NonQuery($strQuery); }*/ if (count($strCFVArray)) { $strAssetCFVArray[] = implode(', ', $strCFVArray); } else { $strAssetCFVArray[] = ""; } } else { $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } } elseif ($strAssetCode && $this->lstImportAction->SelectedValue == 2 && $this->in_array_nocase($strAssetCode, $strAssetArray)) { $intLocationKeyArray = array_keys($intLocationArray, addslashes(strtolower(trim($strRowArray[$this->intLocationKey])))); if (isset($this->intCreatedByKey)) { if (isset($strRowArray[$this->intCreatedByKey]) && isset($this->intUserArray[strtolower(trim($strRowArray[$this->intCreatedByKey]))])) { $intCreatedBy = $this->intUserArray[strtolower(trim($strRowArray[$this->intCreatedByKey]))]; } else { $intCreatedBy = $this->lstMapDefaultValueArray[$this->intCreatedByKey]->SelectedValue; } } else { $intCreatedBy = false; } if (!count($intLocationKeyArray)) { $intLocationKeyArray = array_keys($intLocationArray, addslashes(strtolower(trim($this->txtMapDefaultValueArray[$this->intLocationKey]->Text)))); } $intModelKeyArray = array_keys($this->intAssetModelArray, $strAssetModel); if (count($intLocationKeyArray) && count($intModelKeyArray)) { $objAssetArray = Asset::LoadArrayBySearchHelper($strAssetCode, null, null, null, null, false, null, null, null, null, null, null, null, null, null, false, null, null, null, false, false, false); $objAsset = $objAssetArray[0]; $strUpdatedAssetArray[] = strtolower($strAssetCode); $strCategoryKeyArray = array_keys($intCategoryArray, addslashes(strtolower(trim($strRowArray[$this->intCategoryKey])))); // Only fields that can normally be updated when editing an asset can be updated //if ($objAsset->LocationId != $intLocationKeyArray[0] || $objAsset->AssetModel->CategoryId != $intCategoryId || $objAsset->AssetModel->ManufacturerId != $intManufacturerId) { if ($objAsset->LocationId != $intLocationKeyArray[0] || $objAsset->CreatedBy != false && $objAsset->CreatedBy != $intCreatedBy) { $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } else { $this->arrOldAssetArray[$objAsset->AssetId] = array(); $this->arrOldAssetArray[$objAsset->AssetId]['AssetModelId'] = $objAsset->AssetModelId; $this->arrOldAssetArray[$objAsset->AssetId]['ModifiedBy'] = $objAsset->ModifiedBy; $this->arrOldAssetArray[$objAsset->AssetId]['ModifiedDate'] = $objAsset->ModifiedDate; $this->arrOldAssetArray[$objAsset->AssetId]['CFV'] = array(); $objAsset->AssetModelId = $intModelKeyArray[0]; $objAssetValuesArray[] = $objAsset; //$objAssetValuesArray[] = sprintf("('%s', '%s', '%s', '%s', NOW())", $strAssetCode, $intLocationKeyArray[0], $intModelKeyArray[0], $_SESSION['intUserAccountId']); $strCFVArray = array(); $objDatabase = CustomField::GetDatabase(); // Asset Custom Field import foreach ($arrAssetCustomField as $objCustomField) { $this->arrOldAssetArray[$objAsset->AssetId]['CFV'][$objCustomField->CustomFieldId] = $objAsset->GetVirtualAttribute($objCustomField->CustomFieldId); if ($objCustomField->CustomFieldQtypeId != 2) { $strShortDescription = trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]) ? addslashes(trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])) : addslashes($this->txtMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; } else { $objDatabase = Asset::GetDatabase(); $strShortDescription = addslashes(trim($strRowArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]])); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; $blnInList = false; foreach (CustomFieldValue::LoadArrayByCustomFieldId($objCustomField->CustomFieldId) as $objCustomFieldValue) { if (strtolower($objCustomFieldValue->ShortDescription) == strtolower($strShortDescription)) { //$intCustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; $blnInList = true; break; } } // Add the CustomFieldValue if (!$blnInList && !in_array($strShortDescription, $strAddedCFVArray)) { $strQuery = sprintf("INSERT INTO custom_field_value (custom_field_id, short_description, created_by, creation_date) VALUES (%s, '%s', %s, NOW());", $objCustomField->CustomFieldId, $strShortDescription, $_SESSION['intUserAccountId']); $objDatabase->NonQuery($strQuery); $strAddedCFVArray[] = $strShortDescription; } elseif (!$blnInList && $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue != null) { //$intCustomFieldValueId = $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue; $strShortDescription = $this->lstMapDefaultValueArray[$intAssetCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedName; } if ($strShortDescription) { $strCFVArray[$objCustomField->CustomFieldId] = sprintf("'%s'", $strShortDescription); } else { $strCFVArray[$objCustomField->CustomFieldId] = "NULL"; } } } $strAssetCodeArray[] = $strAssetCode; if (count($strCFVArray)) { $strUpdatedAssetCFVArray[$objAsset->AssetId] = $strCFVArray; } else { $strUpdatedAssetCFVArray[$objAsset->AssetId] = ""; } } } else { $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } } elseif ($this->lstImportAction->SelectedValue == 1 && $this->in_array_nocase($strAssetCode, $strAssetArray)) { // Skipped and flagged as duplicates $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } } } $intAssetCount = count($strAssetValuesArray); if ($intAssetCount) { $objDatabase = Asset::GetDatabase(); $strQuery = sprintf("INSERT INTO `asset` (`asset_code`, `location_id`, `asset_model_id`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $strAssetValuesArray)); $objDatabase->NonQuery($strQuery); $intInsertId = $objDatabase->InsertId(); if ($intInsertId) { $strAssetIdArray = array(); for ($i = 0; $i < $intAssetCount; $i++) { $strAssetCFVArray[$i] = sprintf("('%s', %s)", $intInsertId + $i, $strAssetCFVArray[$i]); $strAssetIdArray[$i] = sprintf("(%s)", $intInsertId + $i); } $strCFVNameArray = array(); foreach ($arrAssetCustomField as $objCustomField) { $strCFVNameArray[] = sprintf("`cfv_%s`", $objCustomField->CustomFieldId); } if (count($strAssetCFVArray) > 0 && count($strCFVNameArray) > 0) { $strQuery = sprintf("INSERT INTO `asset_custom_field_helper` (`asset_id`, %s) VALUES %s", implode(", ", $strCFVNameArray), implode(", ", $strAssetCFVArray)); } else { $strQuery = sprintf("INSERT INTO `asset_custom_field_helper` (`asset_id`) VALUES %s", implode(", ", $strAssetIdArray)); } $objDatabase->NonQuery($strQuery); for ($i = 0; $i < $intAssetCount; $i++) { $this->objNewAssetArray[$intInsertId + $i] = $strAssetCodeArray[$i]; } } } $intObjAssetCount = count($objAssetValuesArray); if ($intObjAssetCount) { $objDatabase = Asset::GetDatabase(); foreach ($objAssetValuesArray as $objAsset) { $this->objUpdatedAssetArray[$objAsset->AssetId] = $objAsset->AssetCode; if (count($strUpdatedAssetCFVArray[$objAsset->AssetId])) { $strCFVArray = array(); foreach ($arrAssetCustomField as $objCustomField) { $strCFVArray[] = sprintf("`cfv_%s`=%s", $objCustomField->CustomFieldId, $strUpdatedAssetCFVArray[$objAsset->AssetId][$objCustomField->CustomFieldId]); } if (count($strCFVArray)) { $strQuery = sprintf("UPDATE `asset_custom_field_helper` SET %s WHERE `asset_id`='%s'", implode(", ", $strCFVArray), $objAsset->AssetId); $objDatabase->NonQuery($strQuery); } } $objAsset->Save(); } } $this->intCurrentFile++; break; } //$j++; } if ($this->intImportStep == 6) { /*if (count($this->strSelectedValueArray)) { $objDatabase = CustomField::GetDatabase(); $strQuery = sprintf("INSERT INTO `custom_field_selection` " . "(`entity_id`,`entity_qtype_id`, `custom_field_value_id`) " . "VALUES %s;", implode(", ", $this->strSelectedValueArray)); $objDatabase->NonQuery($strQuery); }*/ // Insert Values into helper tables $objDatabase = Asset::GetDatabase(); $objDatabase->NonQuery("SET FOREIGN_KEY_CHECKS=0;"); // Insert into asset_model_custom_field_helper $objDatabase->NonQuery(sprintf("INSERT INTO `asset_model_custom_field_helper` (`asset_model_id`) (SELECT `asset_model_id` FROM `asset_model` WHERE `asset_model_id` NOT IN (SELECT `asset_model_id` FROM `asset_model_custom_field_helper`));")); // Insert into category_custom_field_helper $objDatabase->NonQuery(sprintf("INSERT INTO `category_custom_field_helper` (`category_id`) (SELECT `category_id` FROM `category` WHERE `category_id` NOT IN (SELECT `category_id` FROM `category_custom_field_helper`));")); // Insert into manufacturer_custom_field_helper $objDatabase->NonQuery(sprintf("INSERT INTO `manufacturer_custom_field_helper` (`manufacturer_id`) (SELECT `manufacturer_id` FROM `manufacturer` WHERE `manufacturer_id` NOT IN (SELECT `manufacturer_id` FROM `manufacturer_custom_field_helper`));")); // Inserts end $objDatabase->NonQuery("SET FOREIGN_KEY_CHECKS=1;"); $this->blnImportEnd = true; $this->btnNext->Warning = ""; $this->lblImportResults->Display = true; if (count($this->objNewAssetArray)) { $this->lblImportAssets->Display = true; $this->dtgAsset->Paginator = new QPaginator($this->dtgAsset); $this->dtgAsset->ItemsPerPage = 20; } if (count($this->objUpdatedAssetArray)) { $this->lblImportUpdatedAssets->Display = true; $this->dtgUpdatedAsset->Paginator = new QPaginator($this->dtgUpdatedAsset); $this->dtgUpdatedAsset->ItemsPerPage = 20; } if (count($this->objNewAssetModelArray)) { $this->lblImportModels->Display = true; $this->dtgAssetModel->Paginator = new QPaginator($this->dtgAssetModel); $this->dtgAssetModel->ItemsPerPage = 20; } if (count($this->objNewManufacturerArray)) { $this->lblImportManufacturers->Display = true; $this->dtgManufacturer->Paginator = new QPaginator($this->dtgManufacturer); $this->dtgManufacturer->ItemsPerPage = 20; } if (count($this->objNewCategoryArray)) { $this->lblImportCategories->Display = true; $this->dtgCategory->Paginator = new QPaginator($this->dtgCategory); $this->dtgCategory->ItemsPerPage = 20; } if (count($this->objNewLocationArray)) { $this->lblImportLocations->Display = true; $this->dtgLocation->Paginator = new QPaginator($this->dtgLocation); $this->dtgLocation->ItemsPerPage = 20; } $this->btnNext->Display = false; $this->btnCancel->Display = false; $this->btnUndoLastImport->Display = true; $this->btnImportMore->Display = true; $this->btnReturnToAssets->Display = true; $this->lblImportSuccess->Display = true; $this->lblImportSuccess->Text = sprintf("Success:<br/>" . "<b>%s</b> Records imported successfully<br/>" . "<b>%s</b> Records skipped due to error<br/>", count($this->objNewAssetArray) + count($this->objUpdatedAssetArray), $this->intSkippedRecordCount); if ($this->intSkippedRecordCount) { $this->lblImportSuccess->Text .= sprintf("<a href='./asset_import.php?intDownloadCsv=1'>Click here to download records that could not be imported</a>"); } $this->lblImportSuccess->Text .= "<br/><br/>"; $this->intImportStep = -1; } // Enable Next button $this->btnNext->Enabled = true; if (!$this->blnImportEnd && !$this->intCurrentFile) { $this->intImportStep++; } } fclose($file_skipped); } if (!$blnError) { if (($this->blnImportEnd || $this->intImportStep == 2) && $this->intImportStep != -1) { $this->intStep++; $this->DisplayStepForm($this->intStep); } if (!$this->blnImportEnd) { QApplication::ExecuteJavaScript("document.getElementById('" . $this->btnNext->ControlId . "').click();"); } if (!($this->intCurrentFile < count($this->strFilePathArray))) { $this->intCurrentFile = 0; $this->intImportStep++; } } }
/** * * @param $categname * @param int $parentid * @param int $intPosition * @return bool|Category|int */ protected function parseCategoryString($categname, $parentid = 0, $intPosition = 0) { $categname = trim($categname); if (empty($categname)) { return $parentid; } $categs = Category::LoadArrayByName($categname); $exist = false; foreach ($categs as $categ) { if ($categ->Parent == $parentid) { $exist = $categ; break; } } if ($exist) { return $exist; } $categ = new Category(); $categ->Name = $categname; $categ->Parent = $parentid; $categ->Created = new QDateTime(QDateTime::Now); $categ->Position = $intPosition; $categ->Save(true); $categ->UpdateChildCount(); return $categ; }
protected function btnNext_Click() { $blnError = false; if ($this->intStep == 1) { if ($this->chkHeaderRow->Checked) { $this->blnHeaderRow = true; } else { $this->blnHeaderRow = false; } // Check errors if ($this->lstFieldSeparator->SelectedValue == 'other' && !$this->txtFieldSeparator->Text) { $this->flcFileCsv->Warning = "Please enter the field separator."; $blnError = true; } elseif ($this->lstTextDelimiter->SelectedValue == 'other' && !$this->txtTextDelimiter->Text) { $this->flcFileCsv->Warning = "Please enter the text delimiter."; $blnError = true; } else { // Step 1 complete // File Not Uploaded if (!file_exists($this->flcFileCsv->File) || !$this->flcFileCsv->Size) { //throw new QCallerException('FileAssetType must be a valid QFileAssetType constant value'); $this->flcFileCsv->Warning = 'The file could not be uploaded. Please provide a valid file.'; $blnError = true; // File Has Incorrect MIME Type (only if an acceptiblemimearray is setup) } elseif (is_array($this->strAcceptibleMimeArray) && !array_key_exists($this->flcFileCsv->Type, $this->strAcceptibleMimeArray)) { $this->flcFileCsv->Warning = "Extension must be 'csv' or 'txt'"; $blnError = true; // File Successfully Uploaded } else { $this->flcFileCsv->Warning = ""; // Setup Filename, Base Filename and Extension $strFilename = $this->flcFileCsv->FileName; $intPosition = strrpos($strFilename, '.'); } if (!$blnError) { $this->FileCsvData = new File_CSV_DataSource(); // Setup the settings which have got on step 1 $this->FileCsvData->settings($this->GetCsvSettings()); $file = fopen($this->flcFileCsv->File, "r"); // Counter of files $i = 1; // Counter of rows $j = 1; $this->strFilePathArray = array(); // The uploaded file splits up in order to avoid out of memory while ($row = fgets($file, 1000)) { if ($j == 1) { $strFilePath = sprintf('%s/%s_cat_%s.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId'], $i); $this->strFilePathArray[] = $strFilePath; $file_part = fopen($strFilePath, "w+"); if ($i == 1) { if ($this->blnHeaderRow) { $strHeaderRow = $row; } else { // Add empty row which would be as header row $strHeaderRow = "\n"; fwrite($file_part, $strHeaderRow); } } else { fwrite($file_part, $strHeaderRow); } } fwrite($file_part, $row); $j++; if ($j > 200) { $j = 1; $i++; fclose($file_part); } } $this->intTotalCount = ($i - 1) * 200 + $j - 1; if (true && QApplication::$TracmorSettings->AssetLimit != null && QApplication::$TracmorSettings->AssetLimit < $this->intTotalCount + Asset::CountAll()) { $blnError = true; $this->btnNext->Warning = $i . " " . $j . "Sorry that is too many assets. Your asset limit is = " . QApplication::$TracmorSettings->AssetLimit . ", this import has " . $this->intTotalCount . " assets, and you already have " . Asset::CountAll() . " assets in the database."; } else { $this->arrMapFields = array(); $this->arrTracmorField = array(); // Load first file $this->FileCsvData->load($this->strFilePathArray[0]); $file_skipped = fopen($this->strFilePath = sprintf('%s/%s_category_skipped.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId']), "w+"); // Get Headers if ($this->blnHeaderRow) { $this->arrCsvHeader = $this->FileCsvData->getHeaders(); // Create the header row in the skipped error file $this->PutSkippedRecordInFile($file_skipped, $this->arrCsvHeader); } /*else { // If it is not first file $this->FileCsvData->appendRow($this->FileCsvData->getHeaders()); }*/ $strFirstRowArray = $this->FileCsvData->getRow(0); for ($i = 0; $i < count($strFirstRowArray); $i++) { $this->arrMapFields[$i] = array(); if ($this->blnHeaderRow && array_key_exists($i, $this->arrCsvHeader)) { if ($this->arrCsvHeader[$i] == '') { $this->arrCsvHeader[$i] = ' '; } $this->lstMapHeader_Create($this, $i, $this->arrCsvHeader[$i]); $this->arrMapFields[$i]['header'] = $this->arrCsvHeader[$i]; } else { $this->lstMapHeader_Create($this, $i); } // Create Default Value TextBox, ListBox and DateTimePicker if ($this->blnHeaderRow && array_key_exists($i, $this->arrCsvHeader) && $this->arrCsvHeader[$i] || !$this->blnHeaderRow) { $txtDefaultValue = new QTextBox($this); $txtDefaultValue->Width = 200; $this->txtMapDefaultValueArray[] = $txtDefaultValue; $lstDefaultValue = new QListBox($this); $lstDefaultValue->Width = 200; $lstDefaultValue->Display = false; $this->lstMapDefaultValueArray[] = $lstDefaultValue; $dtpDate = new QDateTimePicker($this); $dtpDate->DateTimePickerType = QDateTimePickerType::Date; $dtpDate->DateTimePickerFormat = QDateTimePickerFormat::MonthDayYear; $dtpDate->Display = false; $this->dtpDateArray[] = $dtpDate; if (array_key_exists($i, $this->lstMapHeaderArray)) { $this->lstTramorField_Change(null, $this->lstMapHeaderArray[$i]->ControlId, null); } } $this->arrMapFields[$i]['row1'] = $strFirstRowArray[$i]; } $this->btnNext->Text = "Import Now"; fclose($file_skipped); // Create Add Field button $btnAddField = new QButton($this); $btnAddField->Text = "Add Field"; $btnAddField->AddAction(new QClickEvent(), new QServerAction('btnAddField_Click')); $btnAddField->AddAction(new QEnterKeyEvent(), new QServerAction('btnAddField_Click')); $btnAddField->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstMapHeaderArray[] = $btnAddField; } } } } elseif ($this->intStep == 2) { // Step 2 complete $blnError = false; $blnCategory = false; $blnCategoryId = false; for ($i = 0; $i < count($this->lstMapHeaderArray) - 1; $i++) { $lstMapHeader = $this->lstMapHeaderArray[$i]; $strSelectedValue = strtolower($lstMapHeader->SelectedValue); if ($strSelectedValue == "category name") { $blnCategory = true; } elseif ($strSelectedValue == "id") { $blnCategoryId = true; } } if ($this->lstMapDefaultValueArray) { // Checking errors for required Default Value text fields foreach ($this->lstMapDefaultValueArray as $lstDefault) { if ($lstDefault->Display && $lstDefault->Required && !$lstDefault->SelectedValue) { $lstDefault->Warning = "You must select one default value."; $blnError = true; break; } else { $blnError = false; $lstDefault->Warning = ""; } } } if ($this->txtMapDefaultValueArray) { // Checking errors for required Default Value lst fields foreach ($this->txtMapDefaultValueArray as $txtDefault) { if ($txtDefault->Display && $txtDefault->Required && !$txtDefault->Text) { $txtDefault->Warning = "You must enter default value."; break; } else { $blnError = false; $txtDefault->Warning = ""; } } } // If all required fields have no errors if (!$blnError && $blnCategory && ($this->lstImportAction->SelectedValue != 2 || $blnCategoryId)) { $this->btnNext->Warning = ""; // Setup keys for main required fields foreach ($this->arrTracmorField as $key => $value) { if ($value == 'category name') { $this->intCategoryKey = $key; } elseif ($value == 'category description') { $this->intCategoryDescriptionKey = $key; } elseif ($this->lstImportAction->SelectedValue == 2 && $value == 'id') { $this->intItemIdKey = $key; } } $this->objNewCategoryArray = array(); $this->blnImportEnd = false; $j = 1; $this->btnNext->RemoveAllActions('onclick'); // Add new ajax actions for button $this->btnNext->AddAction(new QClickEvent(), new QAjaxAction('btnNext_Click')); $this->btnNext->AddAction(new QClickEvent(), new QToggleEnableAction($this->btnNext)); $this->btnNext->AddAction(new QEnterKeyEvent(), new QAjaxAction('btnNext_Click')); $this->btnNext->AddAction(new QEnterKeyEvent(), new QToggleEnableAction($this->btnNext)); $this->btnNext->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->btnNext->Warning = "Please wait..."; $this->intImportStep = 2; $this->intCurrentFile = 0; $this->strSelectedValueArray = array(); // New categories $this->dtgCategory = new QDataGrid($this); $this->dtgCategory->Name = 'category_list'; $this->dtgCategory->CellPadding = 5; $this->dtgCategory->CellSpacing = 0; $this->dtgCategory->CssClass = "datagrid"; $this->dtgCategory->UseAjax = true; $this->dtgCategory->ShowColumnToggle = false; $this->dtgCategory->ShowExportCsv = false; $this->dtgCategory->ShowHeader = false; $this->dtgCategory->AddColumn(new QDataGridColumnExt('Category', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // Updated categories $this->dtgUpdatedItems = new QDataGrid($this); $this->dtgUpdatedItems->Name = 'updated_category_list'; $this->dtgUpdatedItems->CellPadding = 5; $this->dtgUpdatedItems->CellSpacing = 0; $this->dtgUpdatedItems->CssClass = "datagrid"; $this->dtgUpdatedItems->UseAjax = true; $this->dtgUpdatedItems->ShowColumnToggle = false; $this->dtgUpdatedItems->ShowExportCsv = false; $this->dtgUpdatedItems->ShowHeader = false; $this->dtgUpdatedItems->AddColumn(new QDataGridColumnExt('Category Name', '<?= $_ITEM ?>', 'CssClass="dtg_column"', 'HtmlEntities="false"')); // Create the label for successful import $this->lblImportSuccess = new QLabel($this); $this->lblImportSuccess->HtmlEntities = false; $this->lblImportSuccess->Display = false; // Undo Last Import button $this->btnUndoLastImport = new QButton($this); $this->btnUndoLastImport->Text = "Undo Last Import"; $this->btnUndoLastImport->Display = false; $this->btnUndoLastImport->AddAction(new QClickEvent(), new QServerAction('btnCancel_Click')); $this->btnUndoLastImport->AddAction(new QEnterKeyEvent(), new QServerAction('btnCancel_Click')); $this->btnUndoLastImport->AddAction(new QEnterKeyEvent(), new QTerminateAction()); // Import More button $this->btnImportMore = new QButton($this); $this->btnImportMore->Text = "Import More"; $this->btnImportMore->Display = false; $this->btnImportMore->AddAction(new QClickEvent(), new QServerAction('btnImportMore_Click')); $this->btnImportMore->AddAction(new QEnterKeyEvent(), new QServerAction('btnImportMore_Click')); $this->btnImportMore->AddAction(new QEnterKeyEvent(), new QTerminateAction()); // Return to Assets button $this->btnReturnTo = new QButton($this); $this->btnReturnTo->Text = "Return to Categories"; $this->btnReturnTo->Display = false; $this->btnReturnTo->AddAction(new QClickEvent(), new QServerAction('btnReturnTo_Click')); $this->btnReturnTo->AddAction(new QEnterKeyEvent(), new QServerAction('btnReturnTo_Click')); $this->btnReturnTo->AddAction(new QEnterKeyEvent(), new QTerminateAction()); } else { $this->btnNext->Warning = "You must select all required fields."; $blnError = true; } } else { // Step 3 complete set_time_limit(0); $file_skipped = fopen($strFilePath = sprintf('%s/%s_category_skipped.csv', __DOCROOT__ . __SUBDIRECTORY__ . __TRACMOR_TMP__, $_SESSION['intUserAccountId']), "a"); if (!$this->blnImportEnd) { // Category if ($this->intImportStep == 2) { $strCategoryArray = array(); $this->objNewCategoryArray = array(); // Load all categories foreach (Category::LoadAll() as $objCategory) { $strCategoryArray[] = stripslashes($objCategory->ShortDescription); } // Add Default value $txtDefaultValue = trim($this->txtMapDefaultValueArray[$this->intCategoryKey]->Text); if ($txtDefaultValue && !$this->in_array_nocase($txtDefaultValue, $strCategoryArray)) { $strCategoryArray[] = $txtDefaultValue; $objNewCategory = new Category(); $objNewCategory->ShortDescription = addslashes($txtDefaultValue); $objNewCategory->AssetFlag = true; $objNewCategory->InventoryFlag = false; $objNewCategory->Save(); $this->objNewCategoryArray[$objNewCategory->CategoryId] = $objNewCategory->ShortDescription; } $this->btnNext->Warning = "Categories have been imported. Please wait..."; } for ($j = $this->intCurrentFile; $j < count($this->strFilePathArray); $j++) { $this->FileCsvData->load($this->strFilePathArray[$j]); if (!$j) { //$this->FileCsvData->appendRow($this->FileCsvData->getHeaders()); } // Category Import if ($this->intImportStep == 2) { $arrItemCustomField = array(); foreach ($this->arrTracmorField as $key => $value) { if (substr($value, 0, 9) == 'category_') { $intItemCustomFieldKeyArray[substr($value, 9)] = $key; if (array_key_exists(substr($value, 9), $this->arrItemCustomField)) { $arrItemCustomField[substr($value, 9)] = $this->arrItemCustomField[substr($value, 9)]; } } } $strCategoryValuesArray = array(); $strUpdatedCategoryValuesArray = array(); $strItemCFVArray = array(); $strUpdatedItemCFVArray = array(); $strNewCategoryArray = array(); $intCategoryArray = array(); $this->arrOldItemArray = array(); $this->objUpdatedItemArray = array(); $objCategoryArray = array(); foreach (Category::LoadAllWithCustomFieldsHelper() as $objCategory) { $objCategoryArray[strtolower($objCategory->ShortDescription)] = $objCategory; } for ($i = 0; $i < $this->FileCsvData->countRows(); $i++) { $strRowArray = $this->FileCsvData->getRow($i); $objCategory = null; if ($this->lstImportAction->SelectedValue == 2) { $intItemId = intval(trim($strRowArray[$this->intItemIdKey])); foreach ($objCategoryArray as $objItem) { if ($objItem->CategoryId == $intItemId) { $objCategory = $objItem; break; } } } else { $intItemId = 0; } // Create action if (trim($strRowArray[$this->intCategoryKey]) && (!$intItemId || !$objCategory) && !$this->in_array_nocase(trim($strRowArray[$this->intCategoryKey]), $strCategoryArray)) { $strCategoryArray[] = trim($strRowArray[$this->intCategoryKey]); $strCategoryDescription = ""; if (isset($this->intCategoryDescriptionKey)) { if (trim($strRowArray[$this->intCategoryDescriptionKey])) { $strCategoryDescription = trim($strRowArray[$this->intCategoryDescriptionKey]); } else { $strCategoryDescription = isset($this->txtMapDefaultValueArray[$this->intCategoryDescriptionKey]) ? trim($this->txtMapDefaultValueArray[$this->intCategoryDescriptionKey]->Text) : ''; } } $strCFVArray = array(); $blnCheckCFVError = false; // Custom Field import foreach ($arrItemCustomField as $objCustomField) { if ($objCustomField->CustomFieldQtypeId != 2) { $strShortDescription = trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]) ? addslashes(trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]])) : addslashes($this->txtMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; } else { $objDatabase = CustomField::GetDatabase(); $strShortDescription = addslashes(trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]])); $blnInList = false; foreach (CustomFieldValue::LoadArrayByCustomFieldId($objCustomField->CustomFieldId) as $objCustomFieldValue) { if (strtolower($objCustomFieldValue->ShortDescription) == strtolower($strShortDescription)) { $blnInList = true; break; } } // Add the CustomFieldValue /*if (!$blnInList && !in_array($strShortDescription, $strAddedCFVArray)) { $strQuery = sprintf("INSERT INTO custom_field_value (custom_field_id, short_description, created_by, creation_date) VALUES (%s, '%s', %s, NOW());", $objCustomField->CustomFieldId, $strShortDescription, $_SESSION['intUserAccountId']); $objDatabase->NonQuery($strQuery); $strAddedCFVArray[] = $strShortDescription; } else*/ if (!$blnInList && $this->lstMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue != null) { $strShortDescription = $this->lstMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedName; } elseif (!$blnInList) { $blnCheckCFVError = true; break; } if (!$blnCheckCFVError) { if ($strShortDescription) { $strCFVArray[$objCustomField->CustomFieldId] = sprintf("'%s'", $strShortDescription); } else { $strCFVArray[$objCustomField->CustomFieldId] = "NULL"; } } } } if (!$blnCheckCFVError) { if (isset($strCFVArray) && count($strCFVArray)) { $strItemCFVArray[] = implode(', ', $strCFVArray); } else { $strItemCFVArray[] = ""; } $strCategoryValuesArray[] = sprintf("('%s', '%s', '1', '1', '%s', NOW())", addslashes(trim($strRowArray[$this->intCategoryKey])), addslashes($strCategoryDescription), $_SESSION['intUserAccountId']); $strNewCategoryArray[] = addslashes(trim($strRowArray[$this->intCategoryKey])); } } elseif (trim($strRowArray[$this->intCategoryKey]) && $this->lstImportAction->SelectedValue == 2 && !$this->in_array_nocase(trim($strRowArray[$this->intCategoryKey]), $this->objUpdatedItemArray) && $objCategory) { if (!$blnError) { //$objCategory = $objCategoryArray[strtolower(trim($strRowArray[$this->intCategoryKey]))]; $strCategoryDescription = ""; if (isset($this->intCategoryDescriptionKey)) { if (trim($strRowArray[$this->intCategoryDescriptionKey])) { $strCategoryDescription = trim($strRowArray[$this->intCategoryDescriptionKey]); } else { $strCategoryDescription = isset($this->txtMapDefaultValueArray[$this->intCategoryDescriptionKey]) ? trim($this->txtMapDefaultValueArray[$this->intCategoryDescriptionKey]->Text) : ''; } } $this->arrOldItemArray[$objCategory->CategoryId] = $objCategory; $blnCheckCFVError = false; foreach ($arrItemCustomField as $objCustomField) { //$objItem = $objCategoryArray[strtolower($objUpdatedItem)]; if ($objCustomField->CustomFieldQtypeId != 2) { $strShortDescription = trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]) ? addslashes(trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]])) : addslashes($this->txtMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->Text); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; } else { $objDatabase = CustomField::GetDatabase(); $strShortDescription = addslashes(trim($strRowArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]])); $strCFVArray[$objCustomField->CustomFieldId] = $strShortDescription ? sprintf("'%s'", $strShortDescription) : "NULL"; $blnInList = false; foreach (CustomFieldValue::LoadArrayByCustomFieldId($objCustomField->CustomFieldId) as $objCustomFieldValue) { if (strtolower($objCustomFieldValue->ShortDescription) == strtolower($strShortDescription)) { //$intItemKeyntCustomFieldValueId = $objCustomFieldValue->CustomFieldValueId; $blnInList = true; break; } } // Add the CustomFieldValue /*if (!$blnInList && !in_array($strShortDescription, $strAddedCFVArray)) { $strQuery = sprintf("INSERT INTO custom_field_value (custom_field_id, short_description, created_by, creation_date) VALUES (%s, '%s', %s, NOW());", $objCustomField->CustomFieldId, $strShortDescription, $_SESSION['intUserAccountId']); $objDatabase->NonQuery($strQuery); $strAddedCFVArray[] = $strShortDescription; } else*/ if (!$blnInList && $this->lstMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedValue != null) { $strShortDescription = $this->lstMapDefaultValueArray[$intItemCustomFieldKeyArray[$objCustomField->CustomFieldId]]->SelectedName; } elseif (!$blnInList) { $blnCheckCFVError = true; break; } if (!$blnCheckCFVError) { if ($strShortDescription) { $strCFVArray[$objCustomField->CustomFieldId] = sprintf("'%s'", $strShortDescription); } else { $strCFVArray[$objCustomField->CustomFieldId] = "NULL"; } } } } if (!$blnCheckCFVError) { if (isset($strCFVArray) && count($strCFVArray)) { $strUpdatedItemCFVArray[$objCategory->CategoryId] = $strCFVArray; } else { $strUpdatedItemCFVArray[$objCategory->CategoryId] = ""; } $strUpdatedCategoryValuesArray[] = sprintf("UPDATE `category` SET `short_description`='%s', `long_description`='%s' WHERE `category_id`='%s'", addslashes(trim($strRowArray[$this->intCategoryKey])), addslashes($strCategoryDescription), $objCategory->CategoryId); $this->objUpdatedItemArray[$objCategory->CategoryId] = $objCategory->ShortDescription; } } else { $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } } else { $this->intSkippedRecordCount++; $this->PutSkippedRecordInFile($file_skipped, $strRowArray); } } if (count($strCategoryValuesArray)) { $objDatabase = Category::GetDatabase(); $objDatabase->NonQuery(sprintf("INSERT INTO `category` (`short_description`, `long_description`, `asset_flag`, `inventory_flag`, `created_by`, `creation_date`) VALUES %s;", implode(", ", $strCategoryValuesArray))); $intStartId = $objDatabase->InsertId(); $strItemIdArray = array(); for ($i = 0; $i < count($strNewCategoryArray); $i++) { $this->objNewCategoryArray[$intStartId + $i] = $strNewCategoryArray[$i]; $objDatabase = CustomField::GetDatabase(); $strItemCFVArray[$i] = sprintf("('%s', %s)", $intStartId + $i, $strItemCFVArray[$i]); $strItemIdArray[$i] = sprintf("(%s)", $intStartId + $i); } $strCFVNameArray = array(); foreach ($arrItemCustomField as $objCustomField) { $strCFVNameArray[] = sprintf("`cfv_%s`", $objCustomField->CustomFieldId); } if (count($strItemCFVArray) > 0 && count($strCFVNameArray) > 0) { $strQuery = sprintf("INSERT INTO `category_custom_field_helper` (`category_id`, %s) VALUES %s", implode(", ", $strCFVNameArray), implode(", ", $strItemCFVArray)); } else { $strQuery = sprintf("INSERT INTO `category_custom_field_helper` (`category_id`) VALUES %s", implode(", ", $strItemIdArray)); } $objDatabase->NonQuery($strQuery); } if (count($strUpdatedCategoryValuesArray)) { $objDatabase = Category::GetDatabase(); foreach ($strUpdatedCategoryValuesArray as $query) { $objDatabase->NonQuery($query); } foreach ($this->objUpdatedItemArray as $intItemKey => $objUpdatedItem) { if (isset($strUpdatedItemCFVArray[$intItemKey]) && count($strUpdatedItemCFVArray[$intItemKey])) { $strCFVArray = array(); foreach ($arrItemCustomField as $objCustomField) { $strCFVArray[] = sprintf("`cfv_%s`=%s", $objCustomField->CustomFieldId, $strUpdatedItemCFVArray[$intItemKey][$objCustomField->CustomFieldId]); } if (isset($strCFVArray) && count($strCFVArray)) { $strQuery = sprintf("UPDATE `category_custom_field_helper` SET %s WHERE `category_id`='%s'", implode(", ", $strCFVArray), $intItemKey); $objDatabase->NonQuery($strQuery); } } } } $this->intImportStep = 6; // The import have been completed } } if ($this->intImportStep == 6) { $this->blnImportEnd = true; $this->btnNext->Warning = ""; $this->lblImportResults->Display = true; if (count($this->objUpdatedItemArray)) { $this->lblImportUpdatedItems->Display = true; $this->dtgUpdatedItems->Paginator = new QPaginator($this->dtgUpdatedItems); $this->dtgUpdatedItems->ItemsPerPage = 20; } if (count($this->objNewCategoryArray)) { $this->lblImportCategories->Display = true; $this->dtgCategory->Paginator = new QPaginator($this->dtgCategory); $this->dtgCategory->ItemsPerPage = 20; } $this->btnNext->Display = false; $this->btnCancel->Display = false; $this->btnUndoLastImport->Display = true; $this->btnImportMore->Display = true; $this->btnReturnTo->Display = true; $this->lblImportSuccess->Display = true; $this->lblImportSuccess->Text = sprintf("Success:<br/>" . "<b>%s</b> Records imported successfully<br/>" . "<b>%s</b> Records skipped due to error<br/>", count($this->objNewCategoryArray) + count($this->objUpdatedItemArray), $this->intSkippedRecordCount); if ($this->intSkippedRecordCount) { $this->lblImportSuccess->Text .= sprintf("<a href='./category_import.php?intDownloadCsv=1'>Click here to download records that could not be imported</a>"); } $this->lblImportSuccess->Text .= "<br/><br/>"; $this->intImportStep = -1; } // Enable Next button $this->btnNext->Enabled = true; if (!$this->blnImportEnd && !$this->intCurrentFile) { $this->intImportStep++; } } fclose($file_skipped); } if (!$blnError) { if (($this->blnImportEnd || $this->intImportStep == 2) && $this->intImportStep != -1) { $this->intStep++; $this->DisplayStepForm($this->intStep); } if (!$this->blnImportEnd) { QApplication::ExecuteJavaScript("document.getElementById('" . $this->btnNext->ControlId . "').click();"); } if (!($this->intCurrentFile < count($this->strFilePathArray))) { $this->intCurrentFile = 0; $this->intImportStep++; } } }
function InsertInfo() { global $zbp; $zbp->guid = GetGuid(); $mem = new Member(); $guid = GetGuid(); $mem->Guid = $guid; $mem->Level = 1; $mem->Name = GetVars('username', 'POST'); $mem->Password = Member::GetPassWordByGuid(GetVars('password', 'POST'), $guid); $mem->IP = GetGuestIP(); $mem->PostTime = time(); $mem->Save(); $cate = new Category(); $cate->Name = $zbp->lang['msg']['uncategory']; $cate->Alias = 'uncategorized'; $cate->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_navbar']; $t->FileName = "navbar"; $t->Source = "system"; $t->SidebarID = 0; $t->Content = '<li id="nvabar-item-index"><a href="{#ZC_BLOG_HOST#}">' . $zbp->lang['zb_install']['index'] . '</a></li><li id="navbar-page-2"><a href="{#ZC_BLOG_HOST#}?id=2">' . $zbp->lang['zb_install']['guestbook'] . '</a></li>'; $t->HtmlID = "divNavBar"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['calendar']; $t->FileName = "calendar"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = ""; $t->HtmlID = "divCalendar"; $t->Type = "div"; $t->IsHideTitle = true; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['control_panel']; $t->FileName = "controlpanel"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = '<span class="cp-hello">' . $zbp->lang['zb_install']['wellcome'] . '</span><br/><span class="cp-login"><a href="{#ZC_BLOG_HOST#}zb_system/cmd.php?act=login">' . $zbp->lang['msg']['admin_login'] . '</a></span> <span class="cp-vrs"><a href="{#ZC_BLOG_HOST#}zb_system/cmd.php?act=misc&type=vrs">' . $zbp->lang['msg']['view_rights'] . '</a></span>'; $t->HtmlID = "divContorPanel"; $t->Type = "div"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_catalog']; $t->FileName = "catalog"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = ""; $t->HtmlID = "divCatalog"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['search']; $t->FileName = "searchpanel"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = '<form name="search" method="post" action="{#ZC_BLOG_HOST#}zb_system/cmd.php?act=search"><input type="text" name="q" size="11" /> <input type="submit" value="' . $zbp->lang['msg']['search'] . '" /></form>'; $t->HtmlID = "divSearchPanel"; $t->Type = "div"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_comments']; $t->FileName = "comments"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = ""; $t->HtmlID = "divComments"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_archives']; $t->FileName = "archives"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = ""; $t->HtmlID = "divArchives"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_statistics']; $t->FileName = "statistics"; $t->Source = "system"; $t->SidebarID = 0; $t->Content = ""; $t->HtmlID = "divStatistics"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_favorite']; $t->FileName = "favorite"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = '<li><a href="http://bbs.zblogcn.com/" target="_blank">ZBlogger社区</a></li><li><a href="http://app.zblogcn.com/" target="_blank">Z-Blog应用中心</a></li><li><a href="http://weibo.com/zblogcn" target="_blank">Z-Blog新浪官微</a></li><li><a href="http://t.qq.com/zblogcn" target="_blank">Z-Blog腾讯官微</a></li>'; $t->HtmlID = "divFavorites"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_link']; $t->FileName = "link"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = '<li><a href="http://www.dbshost.cn/" target="_blank" title="独立博客服务 Z-Blog官方主机">DBS主机</a></li>'; $t->HtmlID = "divLinkage"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_misc']; $t->FileName = "misc"; $t->Source = "system"; $t->SidebarID = 1; $t->Content = '<li><a href="http://www.zblogcn.com/" target="_blank"><img src="{#ZC_BLOG_HOST#}zb_system/image/logo/zblog.gif" height="31" width="88" alt="RainbowSoft Studio Z-Blog" /></a></li><li><a href="{#ZC_BLOG_HOST#}feed.php" target="_blank"><img src="{#ZC_BLOG_HOST#}zb_system/image/logo/rss.png" height="31" width="88" alt="订阅本站的 RSS 2.0 新闻聚合" /></a></li>'; $t->HtmlID = "divMisc"; $t->Type = "ul"; $t->IsHideTitle = true; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_authors']; $t->FileName = "authors"; $t->Source = "system"; $t->SidebarID = 0; $t->Content = ""; $t->HtmlID = "divAuthors"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_previous']; $t->FileName = "previous"; $t->Source = "system"; $t->SidebarID = 0; $t->Content = ""; $t->HtmlID = "divPrevious"; $t->Type = "ul"; $t->Save(); $t = new Module(); $t->Name = $zbp->lang['msg']['module_tags']; $t->FileName = "tags"; $t->Source = "system"; $t->SidebarID = 0; $t->Content = ""; $t->HtmlID = "divTags"; $t->Type = "ul"; $t->Save(); $a = new Post(); $a->CateID = 1; $a->AuthorID = 1; $a->Tag = ''; $a->Status = ZC_POST_STATUS_PUBLIC; $a->Type = ZC_POST_TYPE_ARTICLE; $a->Alias = ''; $a->IsTop = false; $a->IsLock = false; $a->Title = $zbp->lang['zb_install']['hello_zblog']; $a->Intro = $zbp->lang['zb_install']['hello_zblog_content']; $a->Content = $zbp->lang['zb_install']['hello_zblog_content']; $a->IP = GetGuestIP(); $a->PostTime = time(); $a->CommNums = 0; $a->ViewNums = 0; $a->Template = ''; $a->Meta = ''; $a->Save(); $a = new Post(); $a->CateID = 0; $a->AuthorID = 1; $a->Tag = ''; $a->Status = ZC_POST_STATUS_PUBLIC; $a->Type = ZC_POST_TYPE_PAGE; $a->Alias = ''; $a->IsTop = false; $a->IsLock = false; $a->Title = $zbp->lang['zb_install']['guestbook']; $a->Intro = ''; $a->Content = $zbp->lang['zb_install']['guestbook_content']; $a->IP = GetGuestIP(); $a->PostTime = time(); $a->CommNums = 0; $a->ViewNums = 0; $a->Template = ''; $a->Meta = ''; $a->Save(); echo $zbp->lang['zb_install']['create_datainfo'] . "<br/>"; }
case 'delete_img': $img_id = (int) $_REQUEST['img_id']; Product::DeleteImage($img_id); $view = 'editproduct'; break; case 'saveproduct': $P = new Product($_POST['id']); if (!$P->Save($_POST)) { $content .= PAYPAL_errMsg($P->PrintErrors()); $view = 'editproduct'; } break; case 'savecat': USES_paypal_class_category(); $C = new Category($_POST['cat_id']); if (!$C->Save($_POST)) { $content .= PAYPAL_popupMsg($LANG_PP['invalid_form']); $view = 'editcat'; } else { $view = 'catlist'; } break; case 'saveopt': USES_paypal_class_attribute(); $Attr = new Attribute($_POST['attr_id']); if (!$Attr->Save($_POST)) { $content .= PAYPAL_popupMsg($LANG_PP['invalid_form']); } if (isset($_POST['attr_id']) && !empty($_POST['attr_id'])) { // Updating an existing option, return to the list $view = 'attributes';
protected function btnQuickAdd_Click($strFormId, $strControlId, $strParameter) { $blnError = false; $this->btnQuickAdd->Warning = ''; if (strlen(trim($this->txtQuickAdd->Text)) == 0) { $blnError = true; $this->btnQuickAdd->Warning = 'You must enter a Category name'; } // Check for dupes $objCategoryDuplicate = Category::QuerySingle(QQ::Equal(QQN::Category()->ShortDescription, $this->txtQuickAdd->Text)); if ($objCategoryDuplicate) { $blnError = true; $this->btnQuickAdd->Warning = 'This Category Name is already in use. Please try another.'; } if (!$blnError) { $objCategory = new Category(); $objCategory->ShortDescription = $this->txtQuickAdd->Text; $objCategory->AssetFlag = '1'; $objCategory->InventoryFlag = '1'; $objCategory->CreatedBy = QApplication::$objUserAccount->UserAccountId; $objCategory->CreationDate = QDateTime::Now(); $objCategory->Save(); $this->dtgCategory->Refresh(); $this->txtQuickAdd->Text = ''; } $this->txtQuickAdd->Focus(); $this->txtQuickAdd->Select(); }
<?php include_once $_SERVER['DOCUMENT_ROOT'] . '/../inc/application_top.php'; // Create the category class $myCategory = new Category(); try { // If they are saving the Information if ($_POST['submit'] == 'save') { // Get all the Form Data $myCategory->SetValues($_POST); $myCategory->SetValue('user_id', $myUser->GetPrimary()); // Save the Make if ($myCategory->Save()) { SetAlert('Category Successfully Saved.', 'success'); LogAction('Saved Category: ' . stripslashes($myCategory->GetValue('category')), 1); header('location:' . PATH . 'categories'); die; } } // If Deleting if ($_POST['submit'] == 'delete') { $myCategory->SetValues($_POST); $name = stripslashes($myCategory->GetValue('category')); // Remove from the DB if (!$myCategory->Delete()) { throw new SimplException('Error deleting from the database, please try again.'); } // Everything went fine SetAlert('Category Deleted Successfully', 'success'); LogAction('Deleted Category: ' . $name, 1); header('location:' . PATH . 'categories');
$ret_val = array(); $user = new User($username, $password); if ($user->IsValidUser) { $ret_val['success'] = 1; $ret_val['redirect'] = 'manageblog.php'; } else { $ret_val['success'] = 0; $ret_val['redirect'] = null; } echo json_encode($ret_val); }); $app->get('/testserver/', function () { $ret_val = array(); require_once 'category.php'; $category = new Category(4); $category->Save(); $ret_val['success'] = 1; echo json_encode($ret_val); }); //TODO $app->get('/getblogtypelist', function () { require_once 'common/dbconnection.php'; $GLOBALS['mysqli'] = MySQLConnection::Open(); require_once 'posttype.php'; $retval = TypeFactory::GetTypes(); MySQLConnection::Close($GLOBALS['mysqli']); echo json_encode($retval); }); $app->get('/getcategorylist/', function () { require_once 'common/dbconnection.php'; $GLOBALS['mysqli'] = MySQLConnection::Open();