public function __construct($parentID = null) { parent::__construct(false); if (is_numeric($parentID)) { $parentID += 0; } if (is_int($parentID)) { $this->parent['id'] = (string) $parentID; } else { throw new \InvalidArgumentException('Parent Issue ID must be INT'); } }
function GenerateOptionsForField($strFieldName, $strOptionNameArray) { $objIssueField = IssueField::QuerySingle(QQ::Equal(QQN::IssueField()->Name, $strFieldName)); $intOrderNumber = 0; foreach ($strOptionNameArray as $strOptionName) { $intOrderNumber++; $objOption = new IssueFieldOption(); $objOption->IssueField = $objIssueField; $objOption->Name = $strOptionName; $objOption->SetToken(); $objOption->OrderNumber = $intOrderNumber; $objOption->ActiveFlag = true; $objOption->Save(); } }
public static function GetSoapObjectFromObject($objObject, $blnBindRelatedObjects) { if ($objObject->objIssueField) { $objObject->objIssueField = IssueField::GetSoapObjectFromObject($objObject->objIssueField, false); } else { if (!$blnBindRelatedObjects) { $objObject->intIssueFieldId = null; } } return $objObject; }
/** * Refresh this MetaControl with Data from the local IssueFieldValue object. * @param boolean $blnReload reload IssueFieldValue from the database * @return void */ public function Refresh($blnReload = false) { if ($blnReload) { $this->objIssueFieldValue->Reload(); } if ($this->lblId) { if ($this->blnEditMode) { $this->lblId->Text = $this->objIssueFieldValue->Id; } } if ($this->lstIssue) { $this->lstIssue->RemoveAllItems(); if (!$this->blnEditMode) { $this->lstIssue->AddItem(QApplication::Translate('- Select One -'), null); } $objIssueArray = Issue::LoadAll(); if ($objIssueArray) { foreach ($objIssueArray as $objIssue) { $objListItem = new QListItem($objIssue->__toString(), $objIssue->Id); if ($this->objIssueFieldValue->Issue && $this->objIssueFieldValue->Issue->Id == $objIssue->Id) { $objListItem->Selected = true; } $this->lstIssue->AddItem($objListItem); } } } if ($this->lblIssueId) { $this->lblIssueId->Text = $this->objIssueFieldValue->Issue ? $this->objIssueFieldValue->Issue->__toString() : null; } if ($this->lstIssueField) { $this->lstIssueField->RemoveAllItems(); if (!$this->blnEditMode) { $this->lstIssueField->AddItem(QApplication::Translate('- Select One -'), null); } $objIssueFieldArray = IssueField::LoadAll(); if ($objIssueFieldArray) { foreach ($objIssueFieldArray as $objIssueField) { $objListItem = new QListItem($objIssueField->__toString(), $objIssueField->Id); if ($this->objIssueFieldValue->IssueField && $this->objIssueFieldValue->IssueField->Id == $objIssueField->Id) { $objListItem->Selected = true; } $this->lstIssueField->AddItem($objListItem); } } } if ($this->lblIssueFieldId) { $this->lblIssueFieldId->Text = $this->objIssueFieldValue->IssueField ? $this->objIssueFieldValue->IssueField->__toString() : null; } if ($this->lstIssueFieldOption) { $this->lstIssueFieldOption->RemoveAllItems(); if (!$this->blnEditMode) { $this->lstIssueFieldOption->AddItem(QApplication::Translate('- Select One -'), null); } $objIssueFieldOptionArray = IssueFieldOption::LoadAll(); if ($objIssueFieldOptionArray) { foreach ($objIssueFieldOptionArray as $objIssueFieldOption) { $objListItem = new QListItem($objIssueFieldOption->__toString(), $objIssueFieldOption->Id); if ($this->objIssueFieldValue->IssueFieldOption && $this->objIssueFieldValue->IssueFieldOption->Id == $objIssueFieldOption->Id) { $objListItem->Selected = true; } $this->lstIssueFieldOption->AddItem($objListItem); } } } if ($this->lblIssueFieldOptionId) { $this->lblIssueFieldOptionId->Text = $this->objIssueFieldValue->IssueFieldOption ? $this->objIssueFieldValue->IssueFieldOption->__toString() : null; } }
/** * Static Helper Method to Create using PK arguments * You must pass in the PK arguments on an object to load, or leave it blank to create a new one. * If you want to load via QueryString or PathInfo, use the CreateFromQueryString or CreateFromPathInfo * static helper methods. Finally, specify a CreateType to define whether or not we are only allowed to * edit, or if we are also allowed to create a new one, etc. * * @param mixed $objParentObject QForm or QPanel which will be using this IssueFieldMetaControl * @param integer $intId primary key value * @param QMetaControlCreateType $intCreateType rules governing IssueField object creation - defaults to CreateOrEdit * @return IssueFieldMetaControl */ public static function Create($objParentObject, $intId = null, $intCreateType = QMetaControlCreateType::CreateOrEdit) { // Attempt to Load from PK Arguments if (strlen($intId)) { $objIssueField = IssueField::Load($intId); // IssueField was found -- return it! if ($objIssueField) { return new IssueFieldMetaControl($objParentObject, $objIssueField); } else { if ($intCreateType != QMetaControlCreateType::CreateOnRecordNotFound) { throw new QCallerException('Could not find a IssueField object with PK arguments: ' . $intId); } } // If EditOnly is specified, throw an exception } else { if ($intCreateType == QMetaControlCreateType::EditOnly) { throw new QCallerException('No PK arguments specified'); } } // If we are here, then we need to create a new record return new IssueFieldMetaControl($objParentObject, new IssueField()); }
/** * Refresh this MetaControl with Data from the local IssueFieldOption object. * @param boolean $blnReload reload IssueFieldOption from the database * @return void */ public function Refresh($blnReload = false) { if ($blnReload) { $this->objIssueFieldOption->Reload(); } if ($this->lblId) { if ($this->blnEditMode) { $this->lblId->Text = $this->objIssueFieldOption->Id; } } if ($this->lstIssueField) { $this->lstIssueField->RemoveAllItems(); if (!$this->blnEditMode) { $this->lstIssueField->AddItem(QApplication::Translate('- Select One -'), null); } $objIssueFieldArray = IssueField::LoadAll(); if ($objIssueFieldArray) { foreach ($objIssueFieldArray as $objIssueField) { $objListItem = new QListItem($objIssueField->__toString(), $objIssueField->Id); if ($this->objIssueFieldOption->IssueField && $this->objIssueFieldOption->IssueField->Id == $objIssueField->Id) { $objListItem->Selected = true; } $this->lstIssueField->AddItem($objListItem); } } } if ($this->lblIssueFieldId) { $this->lblIssueFieldId->Text = $this->objIssueFieldOption->IssueField ? $this->objIssueFieldOption->IssueField->__toString() : null; } if ($this->txtName) { $this->txtName->Text = $this->objIssueFieldOption->Name; } if ($this->lblName) { $this->lblName->Text = $this->objIssueFieldOption->Name; } if ($this->txtToken) { $this->txtToken->Text = $this->objIssueFieldOption->Token; } if ($this->lblToken) { $this->lblToken->Text = $this->objIssueFieldOption->Token; } if ($this->txtOrderNumber) { $this->txtOrderNumber->Text = $this->objIssueFieldOption->OrderNumber; } if ($this->lblOrderNumber) { $this->lblOrderNumber->Text = $this->objIssueFieldOption->OrderNumber; } if ($this->chkActiveFlag) { $this->chkActiveFlag->Checked = $this->objIssueFieldOption->ActiveFlag; } if ($this->lblActiveFlag) { $this->lblActiveFlag->Text = $this->objIssueFieldOption->ActiveFlag ? QApplication::Translate('Yes') : QApplication::Translate('No'); } }
/** * Main utility method to aid with data binding. It is used by the default BindAllRows() databinder but * could and should be used by any custom databind methods that would be used for instances of this * MetaDataGrid, by simply passing in a custom QQCondition and/or QQClause. * * If a paginator is set on this DataBinder, it will use it. If not, then no pagination will be used. * It will also perform any sorting (if applicable). * * @param QQCondition $objConditions override the default condition of QQ::All() to the query, itself * @param QQClause[] $objOptionalClauses additional optional QQClause object or array of QQClause objects for the query * @return void */ public function MetaDataBinder(QQCondition $objCondition = null, $objOptionalClauses = null) { // Setup input parameters to default values if none passed in if (!$objCondition) { $objCondition = QQ::All(); } $objClauses = $objOptionalClauses ? $objOptionalClauses : array(); // We need to first set the TotalItemCount, which will affect the calcuation of LimitClause below if ($this->Paginator) { $this->TotalItemCount = IssueField::QueryCount($objCondition, $objClauses); } // If a column is selected to be sorted, and if that column has a OrderByClause set on it, then let's add // the OrderByClause to the $objClauses array if ($objClause = $this->OrderByClause) { array_push($objClauses, $objClause); } // Add the LimitClause information, as well if ($objClause = $this->LimitClause) { array_push($objClauses, $objClause); } // Set the DataSource to be a Query result from IssueField, given the clauses above $this->DataSource = IssueField::QueryArray($objCondition, $objClauses); }
/** * This will return the string-based name of the selected FieldToken for this issue, or NULL if * either the Field doesn't exist or if the Option doesn't exist (e.g. none was set) * * @param string $strToken the token of the IssueField you want to look up * @return string the value of the IssueField for this issue and token */ public function GetFieldOptionValueForIssueFieldToken($strToken) { $objIssueField = IssueField::LoadByToken($strToken); if (!$objIssueField) { return null; } $objFieldValue = IssueFieldValue::LoadByIssueIdIssueFieldId($this->intId, $objIssueField->Id); if (!$objFieldValue) { return null; } return $objFieldValue->IssueFieldOption->Name; }
/** * Default / simple DataBinder for this Meta DataGrid. This can easily be overridden * by calling SetDataBinder() on this DataGrid with another DataBinder of your choice. * * If a paginator is set on this DataBinder, it will use it. If not, then no pagination will be used. * It will also perform any sorting (if applicable). */ public function MetaDataBinder() { // Remember! We need to first set the TotalItemCount, which will affect the calcuation of LimitClause below if ($this->Paginator) { $this->TotalItemCount = IssueField::CountAll(); } // Setup the $objClauses Array $objClauses = array(); // If a column is selected to be sorted, and if that column has a OrderByClause set on it, then let's add // the OrderByClause to the $objClauses array if ($objClause = $this->OrderByClause) { array_push($objClauses, $objClause); } // Add the LimitClause information, as well if ($objClause = $this->LimitClause) { array_push($objClauses, $objClause); } // Set the DataSource to be a Query result from IssueField, given the clauses above $this->DataSource = IssueField::LoadAll($objClauses); }
protected function lstField_Save(QListBox $lstField) { if ($lstField->SelectedValue) { // Did the user select "OTHER"? if ($lstField->SelectedValue == -1) { // Yes -- we need to create the new IssueFieldOption $objIssueField = IssueField::Load($lstField->ActionParameter); $objIssueFieldOption = $objIssueField->CreateNewIssueFieldOption($this->txtMutableFields[$lstField->ActionParameter]->Text); } else { // No -- let's use theexisting IssueFieldOption $objIssueFieldOption = IssueFieldOption::Load($lstField->SelectedValue); } // Now let's set it to the Issue! $this->mctIssue->Issue->SetFieldOption($objIssueFieldOption); } }
public static function GetSoapArrayFromArray($objArray) { if (!$objArray) { return null; } $objArrayToReturn = array(); foreach ($objArray as $objObject) { array_push($objArrayToReturn, IssueField::GetSoapObjectFromObject($objObject, true)); } return unserialize(serialize($objArrayToReturn)); }
/** * Gets the IssueField object for the QcodoVersion field * @return IssueField */ public static function LoadIssueFieldForQcodoVersion() { return IssueField::LoadByToken(IssueField::TokenQcodoVersion); }
protected function Form_Create() { parent::Form_Create(); $this->dtgIssues = new IssueDataGrid($this, 'issues'); $this->dtgIssues->CssClass = 'datagrid issuesDataGrid'; $this->dtgIssues->Paginator = new QPaginator($this->dtgIssues); $this->dtgIssues->AlternateRowStyle->CssClass = 'alternate'; $this->dtgIssues->Noun = 'issue'; $this->dtgIssues->NounPlural = 'issues'; $this->dtgIssues->SetDataBinder('dtgIssues_Bind'); $this->dtgIssues->MetaAddColumn('Id', 'Html=<?= $_FORM->RenderId($_ITEM); ?>', 'Name=Issue ID', 'HtmlEntities=false'); $this->dtgIssues->MetaAddColumn('Title', 'Html=<?= $_FORM->RenderTitle($_ITEM); ?>', 'Name=Summary', 'HtmlEntities=false'); $this->dtgIssues->MetaAddTypeColumn('IssuePriorityTypeId', 'IssuePriorityType', 'Name=Priority'); $this->dtgIssues->MetaAddTypeColumn('IssueStatusTypeId', 'IssueStatusType', 'Html=<?= $_FORM->RenderStatus($_ITEM); ?>', 'HtmlEntities=false', 'Name=Status'); $this->dtgIssues->AddColumn(new QDataGridColumn('Category', '<?= $_FORM->RenderCategory($_ITEM); ?>', 'CssClass=small')); $this->dtgIssues->MetaAddColumn('PostDate', 'Name=Posted', 'CssClass=small'); $this->dtgIssues->MetaAddColumn(QQN::Issue()->PostedByPerson->DisplayName, 'Name=By', 'Html=<?= $_FORM->RenderPostedBy($_ITEM); ?>', 'HtmlEntities=false', 'CssClass=small reverseLink'); $this->dtgIssues->MetaAddColumn(QQN::Issue()->TopicLink->LastPostDate, 'Name=Last Updated', 'CssClass=small'); $this->dtgIssues->MetaAddColumn(QQN::Issue()->AssignedToPerson->DisplayName, 'Name=Assigned To', 'Html=<?= $_FORM->RenderAssignedTo($_ITEM); ?>', 'HtmlEntities=false', 'CssClass=small reverseLink'); $this->dtgIssues->GetColumnByName('Status')->OrderByClause = QQ::OrderBy(QQN::Issue()->IssueStatusTypeId, QQN::Issue()->IssueResolutionTypeId); $this->dtgIssues->GetColumnByName('Status')->ReverseOrderByClause = QQ::OrderBy(QQN::Issue()->IssueStatusTypeId, false, QQN::Issue()->IssueResolutionTypeId, false); $this->dtgIssues->SortColumnIndex = 7; $this->dtgIssues->SortDirection = 1; $this->objIssueFieldForCategory = IssueField::LoadIssueFieldForCategory(); $this->objIssueFieldForQcodoVersion = IssueField::LoadIssueFieldForQcodoVersion(); $this->objIssueFieldForPhpVersion = IssueField::LoadIssueFieldForPhpVersion(); $this->txtId = new QIntegerTextBox($this); $this->txtId->Name = 'Go to Issue by ID'; $this->txtId->AddAction(new QChangeEvent(), new QAjaxAction('txtId_Change')); $this->txtId->AddAction(new QEnterKeyEvent(), new QAjaxAction('txtId_Change')); $this->txtId->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->txtId->CausesValidation = $this->txtId; $this->btnNew = new RoundedLinkButton($this); $this->btnNew->CssClass = 'searchOption'; $this->btnNew->ToolTip = 'Report a new bug or issue'; $this->btnNew->LinkUrl = '/issues/edit.php/new'; $this->txtSummary = new QTextBox($this); $this->txtSummary->Name = 'Summary'; $this->txtSummary->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->txtSummary->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->txtSummary->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstCategory = new QListBox($this); $this->lstCategory->Name = 'Category'; $this->lstCategory->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->lstCategory->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->lstCategory->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstCategory->AddItem('- View All -', null); foreach ($this->objIssueFieldForCategory->GetIssueFieldOptionArray(QQ::OrderBy(QQN::IssueFieldOption()->OrderNumber)) as $objOption) { $this->lstCategory->AddItem($objOption->Name, $objOption->Id); } $this->lstPriority = new QListBox($this); $this->lstPriority->Name = 'Priority'; $this->lstPriority->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->lstPriority->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->lstPriority->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstPriority->AddItem('- View All -', null); foreach (IssuePriorityType::$NameArray as $intKey => $strName) { $this->lstPriority->AddItem($strName, $intKey); } $this->lstStatus = new QListBox($this); $this->lstStatus->Name = 'Status'; $this->lstStatus->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->lstStatus->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->lstStatus->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->lstStatus->AddItem('- View All -', null); foreach (IssueStatusType::$NameArray as $intKey => $strName) { $this->lstStatus->AddItem($strName, $intKey); } $this->txtPostedBy = new QTextBox($this); $this->txtPostedBy->Name = 'Posted By'; $this->txtPostedBy->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->txtPostedBy->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->txtPostedBy->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->txtAssignedTo = new QTextBox($this); $this->txtAssignedTo->Name = 'Assigned To'; $this->txtAssignedTo->AddAction(new QChangeEvent(), new QAjaxAction('Refresh')); $this->txtAssignedTo->AddAction(new QEnterKeyEvent(), new QAjaxAction('Refresh')); $this->txtAssignedTo->AddAction(new QEnterKeyEvent(), new QTerminateAction()); $this->chkIncludeClosed = new QCheckBox($this); $this->chkIncludeClosed->AddAction(new QClickEvent(), new QAjaxAction('Refresh')); }