CWIS Developer Documentation
HumanMetadataField.php
Go to the documentation of this file.
1 <?PHP
2 #
3 # FILE: ItemFactory.php
4 #
5 # Part of the Collection Workflow Integration System (CWIS)
6 # Copyright 2013 Edward Almasy and Internet Scout Research Group
7 # http://scout.wisc.edu/cwis/
8 #
9 
15 {
16 
21  public function __construct(MetadataField $Field)
22  {
23  $this->Field = $Field;
24  }
25 
30  public function Status()
31  {
32  switch ($this->Field->Status())
33  {
35  return "OK";
37  return "Error";
39  return "Duplicate field name";
41  return "Duplicate database column";
43  return "Field does not exist";
45  return "Illegal field name";
47  return "Duplicate label name";
49  return "Illegal label name";
50  }
51 
52  return $this->NotSetText;
53  }
54 
59  public function Type()
60  {
61  return MetadataField::$FieldTypeDBEnums[$this->Field->Type()];
62  }
63 
68  public function TypeAsName()
69  {
70  return $this->Field->TypeAsName();
71  }
72 
77  public function GetDisplayName()
78  {
79  return $this->Field->GetDisplayName();
80  }
81 
86  public function Name()
87  {
88  return $this->Field->Name();
89  }
90 
95  public function Label()
96  {
97  return $this->GetValueCheckingLength($this->Field->Label());
98  }
99 
104  public function GetAllowedConversionTypes()
105  {
106  $Value = $this->Field->GetAllowedConversionTypes();
107 
108  return count($Value) ? implode(", ", $Value) : $this->NotSetText;
109  }
110 
116  public function IsTempItem()
117  {
118  return $this->GetYesNo($this->Field->IsTempItem());
119  }
120 
125  public function Id()
126  {
127  return $this->Field->Id();
128  }
129 
134  public function DBFieldName()
135  {
136  return $this->Field->DBFieldName();
137  }
138 
143  public function Description()
144  {
145  # for our purposes, HTML code and some whitespace are not human-readable
146  $Value = strip_tags($this->Field->Description());
147  $Value = trim(str_replace(array("\r", "\n", "\t"), " ", $Value));
148  $Value = preg_replace('/ +/', " ", $Value);
149 
150  return $this->GetValueCheckingLength($Value);
151  }
152 
157  public function Instructions()
158  {
159  # for our purposes, HTML code and some whitespace are not human-readable
160  $Value = strip_tags($this->Field->Instructions());
161  $Value = trim(str_replace(array("\r", "\n", "\t"), " ", $Value));
162  $Value = preg_replace('/ +/', " ", $Value);
163 
164  return $this->GetValueCheckingLength($Value);
165  }
166 
171  public function Owner()
172  {
173  return $this->GetValueCheckingLength($this->Field->Owner());
174  }
175 
181  public function RequiredBySPT()
182  {
183  return $this->GetYesNo($this->Field->RequiredBySPT());
184  }
185 
190  public function Enabled()
191  {
192  return $this->GetYesNo($this->Field->Enabled());
193  }
194 
199  public function Optional()
200  {
201  return $this->GetYesNo($this->Field->Optional());
202  }
203 
208  public function Editable()
209  {
210  return $this->GetYesNo($this->Field->Editable());
211  }
212 
217  public function Viewable()
218  {
219  return $this->GetYesNo($this->Field->Viewable());
220  }
221 
228  public function AllowMultiple()
229  {
230  return $this->GetYesNo($this->Field->AllowMultiple());
231  }
232 
239  public function IncludeInKeywordSearch()
240  {
241  return $this->GetYesNo($this->Field->IncludeInKeywordSearch());
242  }
243 
250  public function IncludeInAdvancedSearch()
251  {
252  return $this->GetYesNo($this->Field->IncludeInAdvancedSearch());
253  }
254 
261  public function IncludeInFacetedSearch()
262  {
263  return $this->GetYesNo($this->Field->IncludeInFacetedSearch());
264  }
265 
272  public function IncludeInSortOptions()
273  {
274  return $this->GetYesNo($this->Field->IncludeInSortOptions());
275  }
276 
283  public function IncludeInRecommender()
284  {
285  return $this->GetYesNo($this->Field->IncludeInRecommender());
286  }
287 
292  public function TextFieldSize()
293  {
294  return $this->GetValueCheckingLength($this->Field->TextFieldSize());
295  }
296 
301  public function MaxLength()
302  {
303  return $this->GetValueCheckingLength($this->Field->MaxLength());
304  }
305 
310  public function ParagraphRows()
311  {
312  return $this->GetValueCheckingLength($this->Field->ParagraphRows());
313  }
314 
319  public function ParagraphCols()
320  {
321  return $this->GetValueCheckingLength($this->Field->ParagraphCols());
322  }
323 
328  public function MinValue()
329  {
330  return $this->GetValueCheckingLength($this->Field->MinValue());
331  }
332 
337  public function MaxValue()
338  {
339  return $this->GetValueCheckingLength($this->Field->MaxValue());
340  }
341 
346  public function FlagOnLabel()
347  {
348  return $this->GetValueCheckingLength($this->Field->FlagOnLabel());
349  }
350 
355  public function FlagOffLabel()
356  {
357  return $this->GetValueCheckingLength($this->Field->FlagOffLabel());
358  }
359 
364  public function DateFormat()
365  {
366  return $this->GetValueCheckingLength($this->Field->DateFormat());
367  }
368 
373  public function SearchWeight()
374  {
375  return $this->GetValueCheckingLength($this->Field->SearchWeight());
376  }
377 
382  public function RecommenderWeight()
383  {
384  return $this->GetValueCheckingLength($this->Field->RecommenderWeight());
385  }
386 
391  public function MaxHeight()
392  {
393  return $this->GetValueCheckingLength($this->Field->MaxHeight());
394  }
395 
400  public function MaxWidth()
401  {
402  return $this->GetValueCheckingLength($this->Field->MaxWidth());
403  }
404 
410  public function MaxPreviewHeight()
411  {
412  return $this->GetValueCheckingLength($this->Field->MaxPreviewHeight());
413  }
414 
420  public function MaxPreviewWidth()
421  {
422  return $this->GetValueCheckingLength($this->Field->MaxPreviewWidth());
423  }
424 
431  public function MaxThumbnailHeight()
432  {
433  return $this->GetValueCheckingLength($this->Field->MaxThumbnailHeight());
434  }
435 
441  public function MaxThumbnailWidth()
442  {
443  return $this->GetValueCheckingLength($this->Field->MaxThumbnailWidth());
444  }
445 
451  public function DefaultAltText()
452  {
453  return $this->GetValueCheckingLength($this->Field->DefaultAltText());
454  }
455 
461  public function UsesQualifiers()
462  {
463  return $this->GetYesNo($this->Field->UsesQualifiers());
464  }
465 
472  public function ShowQualifiers()
473  {
474  return $this->GetYesNo($this->Field->ShowQualifiers());
475  }
476 
481  public function DefaultQualifier()
482  {
483  $DefaultQualifier = $this->Field->DefaultQualifier();
484 
485  if ($DefaultQualifier > 0)
486  {
487  $Qualifier = new Qualifier($DefaultQualifier);
488 
489  return $Qualifier->Name();
490  }
491 
492  return $this->NotSetText;
493  }
494 
500  public function AllowHTML()
501  {
502  return $this->GetYesNo($this->Field->AllowHTML());
503  }
504 
511  public function UseWysiwygEditor()
512  {
513  return $this->GetYesNo($this->Field->UseWysiwygEditor());
514  }
515 
522  public function UseForOaiSets()
523  {
524  return $this->GetYesNo($this->Field->UseForOaiSets());
525  }
526 
532  public function NumAjaxResults()
533  {
534  return $this->Field->NumAjaxResults();
535  }
536 
541  public function ViewingPrivilege()
542  {
543  $Value = $this->MapPrivilege($this->Field->ViewingPrivilege());
544 
545  return $this->GetValueCheckingLength($Value);
546  }
547 
552  public function AuthoringPrivilege()
553  {
554  $Value = $this->MapPrivilege($this->Field->AuthoringPrivilege());
555 
556  return $this->GetValueCheckingLength($Value);
557  }
558 
563  public function EditingPrivilege()
564  {
565  $Value = $this->MapPrivilege($this->Field->EditingPrivilege());
566 
567  return $this->GetValueCheckingLength($Value);
568  }
569 
574  public function ImagePreviewPrivilege()
575  {
576  $Value = $this->MapPrivilege($this->Field->ImagePreviewPrivilege());
577 
578  return $this->GetValueCheckingLength($Value);
579  }
580 
587  public function EnableOnOwnerReturn()
588  {
589  return $this->GetYesNo($this->Field->EnableOnOwnerReturn());
590  }
591 
596  public function ViewingUserIsValue()
597  {
598  $Value = $this->MapUserIsValue($this->Field->ViewingUserIsValue());
599 
600  return $this->GetValueCheckingLength($Value);
601  }
602 
607  public function AuthoringUserIsValue()
608  {
609  $Value = $this->MapUserIsValue($this->Field->AuthoringUserIsValue());
610 
611  return $this->GetValueCheckingLength($Value);
612  }
613 
618  public function EditingUserIsValue()
619  {
620  $Value = $this->MapUserIsValue($this->Field->EditingUserIsValue());
621 
622  return $this->GetValueCheckingLength($Value);
623  }
624 
629  public function ViewingUserValue()
630  {
631  $Value = $this->MapUserValue($this->Field->ViewingUserValue());
632 
633  return $this->GetValueCheckingLength($Value);
634  }
635 
640  public function AuthoringUserValue()
641  {
642  $Value = $this->MapUserValue($this->Field->AuthoringUserValue());
643 
644  return $this->GetValueCheckingLength($Value);
645  }
646 
651  public function EditingUserValue()
652  {
653  $Value = $this->MapUserValue($this->Field->EditingUserValue());
654 
655  return $this->GetValueCheckingLength($Value);
656  }
657 
662  public function UserPrivilegeRestrictions()
663  {
664  $Value = $this->Field->UserPrivilegeRestrictions();
665  $Values = array();
666 
667  # need to map each privilege ID to its text
668  foreach ($Value as $Id)
669  {
670  $Values[] = $this->MapPrivilege($Id);
671  }
672 
673  return count($Values) ? implode(", ", $Values) : $this->NotSetText;
674  }
675 
680  public function PointPrecision()
681  {
682  return $this->GetValueCheckingLength($this->Field->PointPrecision());
683  }
684 
689  public function PointDecimalDigits()
690  {
691  return $this->GetValueCheckingLength($this->Field->PointDecimalDigits());
692  }
693 
698  public function DefaultValue()
699  {
700  $Type = $this->Field->Type();
701  $Value = $this->Field->DefaultValue();
702 
703  if ($Type == MetadataSchema::MDFTYPE_POINT)
704  {
705  $XText = NULL;
706  $X = $Value["X"];
707  $Y = $Value["Y"];
708 
709  if (strlen($X))
710  {
711  $XText = "X: " . $X;
712  }
713 
714  if (strlen($Y))
715  {
716  return (strlen($XText) ? $XText . ", " : "") . "Y: " . $Y;
717  }
718 
719  return $this->NotSetText;
720  }
721 
722  if ($Type == MetadataSchema::MDFTYPE_OPTION)
723  {
724  # multiple default values are set
725  if (is_array($Value))
726  {
727  foreach ($Value as $Id)
728  {
729  $ControlledName = new ControlledName($Id);
730 
731  $Names[] = $ControlledName->Name();
732  }
733 
734  return implode(", ", $Names);
735  }
736 
737  # only one default value
738  else if ($Value)
739  {
740  $ControlledName = new ControlledName($Value);
741 
742  return $ControlledName->Name();
743  }
744 
745  return $this->NotSetText;
746  }
747 
748  if ($Type == MetadataSchema::MDFTYPE_FLAG)
749  {
750  return $Value ? $this->FlagOnLabel() : $this->FlagOffLabel();
751  }
752 
753  return $this->GetValueCheckingLength($Value);
754  }
755 
760  public function UpdateMethod()
761  {
762  $Value = $this->Field->UpdateMethod();
763  $String = $this->GetArrayValue(MetadataField::$UpdateTypes, $Value);
764 
765  return $this->GetValueCheckingLength($String);
766  }
767 
773  public function GetPossibleValues()
774  {
775  $Value = $this->Field->GetPossibleValues();
776 
777  return count($Value) ? implode(", ", $Value) : $this->NotSetText;
778  }
779 
785  public function GetCountOfPossibleValues()
786  {
787  return $this->GetValueCheckingLength($this->Field->GetCountOfPossibleValues());
788  }
789 
796  public function HasItemLevelQualifiers()
797  {
798  return $this->GetYesNo($this->Field->HasItemLevelQualifiers());
799  }
800 
805  public function AssociatedQualifierList()
806  {
807  $Value = $this->Field->AssociatedQualifierList();
808 
809  return count($Value) ? implode(", ", $Value) : $this->NotSetText;
810  }
815  public function UnassociatedQualifierList()
816  {
817  $Value = $this->Field->UnassociatedQualifierList();
818 
819  return count($Value) ? implode(", ", $Value) : $this->NotSetText;
820  }
821 
827  public function GetViewingPrivilegeString()
828  {
829  return $this->GetPrivilegeString("Viewing");
830  }
831 
838  public function GetAuthoringPrivilegeString()
839  {
840  return $this->GetPrivilegeString("Authoring");
841  }
842 
848  public function GetEditingPrivilegeString()
849  {
850  return $this->GetPrivilegeString("Editing");
851  }
852 
857  public function GetNotSetText()
858  {
859  return $this->NotSetText;
860  }
861 
866  public function SetNotSetText($Text)
867  {
868  $this->NotSetText = $Text;
869  }
870 
876  protected function GetYesNo($Value)
877  {
878  return $Value ? "Yes" : "No";
879  }
880 
887  protected function GetValueCheckingLength($Value)
888  {
889  return strlen($Value) ? $Value : $this->NotSetText;
890  }
891 
898  protected function GetPrivilegeString($Mode)
899  {
900  $Privilege = $this->MapPrivilege($this->Field->{$Mode."Privileges"}());
901  $UserIsValue = $this->MapUserIsValue($this->Field->{$Mode."UserIsValue"}());
902  $UserValue = $this->MapUserValue($this->Field->{$Mode."UserValue"}());
903 
904  $String = NULL;
905 
906  # add the user privilege constraint first, if set
907  if (!is_null($Privilege))
908  {
909  $String = $Privilege;
910  }
911 
912  # then add the "user is value of field" constraint, if set
913  if (!is_null($UserIsValue) && !is_null($UserValue))
914  {
915  if (is_null($String))
916  {
917  $String = "User is value of " . $UserValue;
918  }
919 
920  else
921  {
922  $String .= " " . $UserIsValue . " user is value of ";
923  $String .= $UserValue;
924  }
925  }
926 
927  return is_null($String) ? $this->NotSetText : $String;
928  }
929 
935  protected function MapPrivilege($Value)
936  {
937  if (!isset(self::$PrivilegeList))
938  {
939  $this->LoadPrivilegeList();
940  }
941 
942  return $this->GetArrayValue(self::$PrivilegeList, $Value);
943  }
944 
948  protected function LoadPrivilegeList()
949  {
950  $PrivilegeFactory = new PrivilegeFactory();
951 
952  self::$PrivilegeList = $PrivilegeFactory->GetPrivileges(TRUE, FALSE);
953  }
954 
960  protected function MapUserIsValue($Value)
961  {
962  return $this->GetArrayValue(self::$UserIsValueList, $Value);
963  }
964 
970  protected function MapUserValue($Value)
971  {
972  if (!isset(self::$UserFieldList))
973  {
974  $this->LoadUserFieldList();
975  }
976 
977  return $this->GetArrayValue(self::$UserFieldList, $Value);
978  }
979 
983  protected function LoadUserFieldList()
984  {
985  $Schema = new MetadataSchema($this->Field->SchemaId());
986  $UserFields = $Schema->GetFields(MetadataSchema::MDFTYPE_USER);
987 
988  # make sure the list is set to something even if there are no user
989  # fields
990  self::$UserFieldList = array();
991 
992  foreach ($UserFields as $Field)
993  {
994  self::$UserFieldList[$Field->Id()] = $Field->GetDisplayName();
995  }
996  }
997 
1008  protected function GetArrayValue(array $Array, $Key, $Default=NULL)
1009  {
1010  return array_key_exists($Key, $Array) ? $Array[$Key] : $Default;
1011  }
1012 
1018  protected $Field;
1019 
1024  protected $NotSetText = "--";
1025 
1030  protected static $PrivilegeList;
1031 
1036  protected static $UserIsValueList = array(
1039 
1044  protected static $UserFieldList;
1045 
1046 }
const MDFSTAT_ILLEGALLABEL
PointDecimalDigits()
Get the human-readable point decimal digits of point fields.
MapUserIsValue($Value)
Map a UserIsValue value to a name.
static $FieldTypeDBEnums
MaxHeight()
Get the human-readable maximum height of images of image fields.
$NotSetText
The text used when a value is not set.
DBFieldName()
Get the human-readable database field name of the field.
MaxPreviewHeight()
Get the human-readable maximum height of preview images of image fields.
GetYesNo($Value)
Get the human-readable string for a boolean-like value.
AuthoringUserIsValue()
Get the human-readable authoring user is value of the field.
GetPossibleValues()
Get the human-readable possible values of the field.
Metadata schema (in effect a Factory class for MetadataField).
DefaultAltText()
Get the human-readable default alternate text of images of image fields.
DefaultQualifier()
Get the human-readable default qualifier of the field.
SetNotSetText($Text)
Set the text that is used when a value is not set.
EditingUserValue()
Get the human-readable editing user value of the field.
EditingPrivilege()
Get the human-readable editing privilege of the field.
HasItemLevelQualifiers()
Get the human-readable string that indicates if the field has item-level qualifiers.
Given a metadata field, this class returns human-readable values for each value of the field...
Instructions()
Get the human-readable instructions of the field.
AssociatedQualifierList()
Get the human-readable list of associated qualifiers of the field.
MaxLength()
Get the human-readable maximum size of text field values.
Factory which extracts all defined privileges from the database.
DefaultValue()
Get the human-readable default value of the field.
const MDFSTAT_FIELDDOESNOTEXIST
const USERISVALUE_OR
UnassociatedQualifierList()
Get the human-readable list of unassociated qualifiers of the field.
MapPrivilege($Value)
Map a privilege value to a privilege name.
const USERISVALUE_AND
FlagOffLabel()
Get the human-readable flag-off label for flag fields.
ViewingUserValue()
Get the human-readable viewing user value of the field.
LoadUserFieldList()
Load the static user field list.
EditingUserIsValue()
Get the human-readable editing user is value of the field.
ViewingUserIsValue()
Get the human-readable viewing user is value of the field.
MaxValue()
Get the human-readable maximum value for number fields.
AllowMultiple()
Get the human-readable string that indicates if multiple field values are permitted.
ParagraphRows()
Get the human-readable number of rows of paragraph field inputs.
FlagOnLabel()
Get the human-readable flag-on label for flag fields.
AllowHTML()
Get the human-readable string indicating if HTML is allowed as the value.
SearchWeight()
Get the human-readable search weight of the field.
Metadata type representing non-hierarchical controlled vocabulary values.
ShowQualifiers()
Get the human-readable string indicating if qualifiers are shown for the field.
IncludeInSortOptions()
Get the human-readable string that indicates if the field is included in sort options.
UserPrivilegeRestrictions()
Get the human-readable user privilege restrictions of user fields.
Name()
Get the human-readable name of the field.
MaxPreviewWidth()
Get the human-readable maximum width of preview images of image fields.
ViewingPrivilege()
Get the human-readable viewing privilege of the field.
GetEditingPrivilegeString()
Get the human-readable editing privilege string that includes the editing privilege required...
UseWysiwygEditor()
Get the human-readable string indicating if a WYSIWYG editor should be used when editing the field va...
IncludeInAdvancedSearch()
Get the human-readable string that indicates if the field is included in advanced search options...
PHP
Definition: OAIClient.php:39
RequiredBySPT()
Get the human-readable string that indicates if the field is required by SPT.
MinValue()
Get the human-readable minimum value for number fields.
NumAjaxResults()
Get the human-readable number of AJAX search results to display for the field.
const MDFSTAT_DUPLICATEDBCOLUMN
MaxThumbnailWidth()
Get the human-readable maximum width of thumbnail images of image fields.
UseForOaiSets()
Get the human-readable string indicating if the field should be used for OAI sets.
PointPrecision()
Get the human-readable point precision of point fields.
GetValueCheckingLength($Value)
Get the value or the not-set text depending on the length of the value.
Id()
Get the human-readable field ID.
RecommenderWeight()
Get the human-readable recommender weight of the field.
Type()
Get the human-readable field type of the field.
Optional()
Get the human-readable string that indicates if the field is optional.
const MDFSTAT_DUPLICATELABEL
AuthoringPrivilege()
Get the human-readable authoring privilege of the field.
TypeAsName()
Get the human-readable field type of the field.
MapUserValue($Value)
Map a UserValue value to a field display name.
GetFields($FieldTypes=NULL, $OrderType=NULL, $IncludeDisabledFields=FALSE, $IncludeTempFields=FALSE)
Retrieve array of fields.
TextFieldSize()
Get the human-readable size of text field inputs.
LoadPrivilegeList()
Load the static privilege list.
MaxThumbnailHeight()
Get the human-readable maximum height of thumbnail images of image fields.
MaxWidth()
Get the human-readable maximum width of images of image fields.
Object representing a locally-defined type of metadata field.
Viewable()
Get the human-readable string that indicates if the field is viewable.
GetArrayValue(array $Array, $Key, $Default=NULL)
Get the value from an array with a given index or a default value if it does not exist.
ImagePreviewPrivilege()
Get the human-readable image preview privilege of image fields.
IsTempItem()
Get the human-readable string that indicates if the field is a temporary field.
DateFormat()
Get the human-readable field date format.
IncludeInRecommender()
Get the human-readable string that indicates if the field is included in the recommender system...
const MDFSTAT_ILLEGALNAME
GetPrivilegeString($Mode)
This method makes getting privilege strings for viewing, authoring, and editing a little more conveni...
GetNotSetText()
Get the text that is used when a value is not set.
static $UserFieldList
A static array of user fields.
UsesQualifiers()
Get the human-readable string indicating if the field uses qualifiers.
Enabled()
Get the human-readable string that indicates if the field is enabled.
GetAllowedConversionTypes()
Get the human-readable allowed conversion types of the field.
static $PrivilegeList
A static array of privilege values and names.
$Field
The metadata field that is having its values returned in human-readable form.
UpdateMethod()
Get the human-readable update method of the field.
Editable()
Get the human-readable string that indicates if the field is editable.
const MDFSTAT_DUPLICATENAME
IncludeInFacetedSearch()
Get the human-readable string that indicates if the field is included in faceted search options...
GetViewingPrivilegeString()
Get the human-readable viewing privilege string that includes the viewing privilege required...
GetDisplayName()
Get the human-readable display name of the field.
GetCountOfPossibleValues()
Get the human-readable count of possible values of the field.
Status()
Get the human-readable error status of the field.
Label()
Get the human-readable label of the field.
Owner()
Get the human-readable field owner.
IncludeInKeywordSearch()
Get the human-readable string that indicates if the field is included in keyword searches.
__construct(MetadataField $Field)
Save the field that will be used to generate the human-readable values.
Description()
Get the human-readable description of the field.
ParagraphCols()
Get the human-readable number of columns of paragraph field inputs.
EnableOnOwnerReturn()
Get the human-readable string indicating if the field should be enabled when the owner/plugin is avai...
AuthoringUserValue()
Get the human-readable authoring user value of the field.
GetAuthoringPrivilegeString()
Get the human-readable authoring privilege string that includes the authoring privilege required...