/**
  * Gets the folder associated with this ObjectFolder object
  * @return Folder - a folder object
  */
 function getFolder()
 {
     if ($this->folder == null) {
         $folderMapper = new FolderMapper();
         $this->folder = $folderMapper->get($this->folderID);
     }
     return $this->folder;
 }
 /**
  * Shows the view for a folder
  */
 function showFolder()
 {
     $folderId = $_REQUEST["childFolderIdHidden"];
     assert($folderId != null);
     $folderMapper = new FolderMapper();
     $folder = $folderMapper->get($folderId);
     $this->showView($folder);
 }
 /**
  * Gets the folder sent in controllerData
  * @return Folder - folder object
  */
 function getFolder()
 {
     $controllerData =& $this->getControllerData();
     $folderId = $controllerData["folderIdSelect"];
     $folderMapper = new FolderMapper();
     $folder = $folderMapper->get($folderId);
     return $folder;
 }
 /**
  * Switches two folders position.
  * @param $folderId int - the folder that is going to switch positions with one that is next to it
  * @param $incremental int - a relative position to the first folder. The folder found in that position
  * switches position with the first folder. It'll be tippically -1 (folderUp) or 1 (folderDown)
  * @access private
  */
 function switchFolders($folderId, $incremental)
 {
     // Get folder
     $folderMapper = new FolderMapper();
     $folder = $folderMapper->get($folderId);
     // Get its parent
     $parentFolder = $folder->getParent();
     // Get its children
     $folderArray = $parentFolder->getChildren();
     // Lookup the folder
     $position = -1000;
     for ($i = 0; $i < count($folderArray); $i++) {
         $arrayFolder = $folderArray[$i];
         if ($folder->getId() == $arrayFolder->getId()) {
             $position = $i;
             break;
         }
     }
     assert($position != -1000);
     $position = $position + $incremental;
     $otherFolder = $folderArray[$position];
     // Switch positions
     $folder->switchPositionWith($otherFolder);
     // Coordinate transaction
     $icfDatabase = new IcfDatabase();
     $conn =& $icfDatabase->dbOpen();
     $conn->StartTrans();
     $folderMapper = new FolderMapper();
     $folderMapper->setConnection($conn);
     // Save objects
     $folderMapper->update($folder);
     $folderMapper->update($otherFolder);
     // Close transaction
     $conn->completeTrans();
     $icfDatabase->dbClose($conn);
 }
Exemple #5
0
 /**
  * Gets the parent folder for this folder
  * @return Folder - folder object, or null, if this folder has no parent
  */
 function getParent()
 {
     // If it has no parent id, it has no parent object also...
     if ($this->getParentId() == null) {
         return null;
     }
     if ($this->parent == null) {
         $folderMapper = new FolderMapper();
         $this->parent = $folderMapper->get($this->getParentId());
     }
     return $this->parent;
 }
 /**
  * Collects the Object sent by HTTP. This method also fills the controller messages with the appropiate errors.
  * @param $object Object - object to update, if not supplied a new one is created
  * @return Object - Object collected, it there was problems collecting, it will return null
  */
 function collectObject($object = null)
 {
     // Signal -> if true, there was an error, so do not save
     $save = true;
     // Get languages
     $languageMapper = new LanguageMapper();
     $languageArray = $languageMapper->getAll();
     // Collect data from attributes for each language
     $frontAttributeArray = array();
     $objectAttributeArray = array();
     foreach ($languageArray as $language) {
         $attributeArray = $this->class->getAttributesForLanguage($language);
         foreach ($attributeArray as $attribute) {
             // Get the ObjectAttribute if it was already saved (it could be new...)
             if (is_null($object) == false) {
                 $objectAttribute = $object->getAttributeForLanguage($attribute->getId(), $language->getId());
                 if ($objectAttribute != null) {
                     $attribute = $objectAttribute;
                 }
             }
             // Create his GUI representation
             $frontAttribute = FrontAttributeFactory::newInstance($language, $attribute);
             // Collect it
             $frontAttribute->collectWidget();
             if ($frontAttribute->isValid() == false) {
                 $this->frontAttributeNotValidMessage($frontAttribute);
                 $save = false;
             }
             array_push($frontAttributeArray, $frontAttribute);
             array_push($objectAttributeArray, $frontAttribute->toObjectAttribute());
         }
     }
     // Collect object relations
     $classRelationArray = $this->class->getClassRelations();
     $objectRelationArray = array();
     foreach ($classRelationArray as $classRelation) {
         /* @var $classRelation ClassRelation */
         $name = "classRelation" . $classRelation->getId() . "Select";
         $valueArray = $_POST[$name];
         if (is_null($valueArray) == false && $valueArray != "") {
             foreach ($valueArray as $value) {
                 $objectRelation = new ObjectRelation();
                 $objectRelation->setChildId($value);
                 $objectRelation->setPosition($classRelation->getPosition());
                 array_push($objectRelationArray, $objectRelation);
             }
         } else {
             if ($classRelation->getIsRequired()) {
                 // It was required, notify the user
                 $this->dataNotValidMessage($classRelation->getTitle());
                 $save = false;
             }
         }
     }
     // Collect publishing info
     // Get date format
     $dateFormat = DateFormatFactory::getDateFormat();
     $publishCheckbox = $_REQUEST["publishCheckbox"];
     $publish = 0;
     if ($publishCheckbox == "-1") {
         $publish = true;
     }
     // Only get publishing dates if the user issued publish in true
     $publishFromDateString = null;
     $publishToDateString = null;
     if ($publish == true) {
         // Get ISO dateFormat for the database
         $isoDateFormat = new IsoDateFormat();
         // Get publishFrom/to checking if they are available first
         $publishFrom = $_REQUEST["publishFromText"];
         if ($publishFrom != null && $publishFrom != "") {
             $publishFromDate = $dateFormat->parseDate($publishFrom);
             if ($publishFromDate == null) {
                 $this->dataNotValidMessage($this->text["from"]);
                 $save = false;
             } else {
                 $publishFromDateString = $isoDateFormat->toDatetimeString($publishFromDate);
             }
         }
         $publishTo = $_REQUEST["publishToText"];
         if ($publishTo != null && $publishTo != "") {
             $publishToDate = $dateFormat->parseDate($publishTo);
             if ($publishToDate == null) {
                 $this->dataNotValidMessage($this->text["to"]);
                 $save = false;
             } else {
                 $publishToDateString = $isoDateFormat->toDatetimeString($publishToDate);
             }
         }
     }
     $hits = $_REQUEST["hitsText"];
     // Get tree references
     $folders = $_REQUEST["folders"];
     $objectFolderArray = array();
     $folderMapper = new FolderMapper();
     if ($folders != null && $folders != "") {
         $folderIdArray = split(",", $folders);
         foreach ($folderIdArray as $folderId) {
             $folder = $folderMapper->get($folderId);
             /* @var $folder Folder */
             $objectFolderPosition = $folder->getNextObjectFolderPosition();
             $objectFolder = new ObjectFolder(null, $folderId);
             $objectFolder->setPosition($objectFolderPosition);
             array_push($objectFolderArray, $objectFolder);
         }
     }
     if ($save == false) {
         return null;
     }
     // My new object
     if ($object == null) {
         $object = new Object();
     }
     $object->setId($this->objectId);
     $object->setClassID($this->classId);
     $object->setIsPublished($publish);
     $object->setStartPublishing($publishFromDateString);
     $object->setEndPublishing($publishToDateString);
     $object->setHits($hits);
     // Attributes
     $object->setAttributes($objectAttributeArray);
     // Folders
     $object->setObjectFolders($objectFolderArray);
     // Relationships
     $object->setObjectRelations($objectRelationArray);
     // Save attached data, if any
     /* @var $frontAttribute FrontAttribute */
     foreach ($frontAttributeArray as $frontAttribute) {
         $frontAttribute->saveAttachedData();
     }
     // Return the object
     return $object;
 }
 /**
  * Creates a new folder
  * @param $parentFolderId the parent folder id
  */
 function addFolder()
 {
     $controllerData =& $this->collectControlerData();
     $title = $controllerData["titleText"];
     $parentId = $controllerData["parentIdHidden"];
     $position = $controllerData["positionText"];
     $shortDescription = $controllerData["shortDescriptionText"];
     $longDescription = $controllerData["longDescriptionTextarea"];
     $classesIdArray = $controllerData["classesIdSelect"];
     if ($title == null || $title == "") {
         $this->addErrorMessage("title");
     }
     if ($shortDescription == null || $shortDescription == "") {
         $this->addErrorMessage("shortdescription");
     }
     if ($longDescription == null || $longDescription == "") {
         $this->addErrorMessage("longdescription");
     }
     if (count($classesIdArray) <= 0) {
         $this->addErrorMessage("classes");
     }
     if (count($this->controllerMessageArray) > 0) {
         $this->displayAddFolderView();
         return;
     }
     $folderMapper = new FolderMapper();
     $parentFolder = $folderMapper->get($parentId);
     /* @var $parentFolder Folder */
     $folder = new Folder();
     $folder->setTitle($title);
     $folder->setParentId($parentId);
     $folder->setPosition($position);
     $folder->setShortDescription($shortDescription);
     $folder->setLongDescription($longDescription);
     $folderClassesArray = array();
     foreach ($classesIdArray as $classId) {
         $folderClass = new FolderClass();
         $folderClass->setClassID($classId);
         $folderClass->setPosition(1);
         $folderClass->setIsDefault(0);
         array_push($folderClassesArray, $folderClass);
     }
     $folder->setFolderClasses($folderClassesArray);
     $folderService = new FolderService();
     $folderService->save($folder);
     $this->redirectToReferer();
 }