Example #1
0
 public function setFilesForItem(cs_item $item, $post_file_ids, $new_file_ids_to_store)
 {
     $session = $this->_environment->getSessionItem();
     // temp files - uploaded via "Image"-Plugin (ckeditor; custom image-upload/image-browse)
     $temp_files_array = array();
     $file_manager = $this->_environment->getFileManager();
     $file_manager->resetLimits();
     $file_manager->setTempUploadSessionIdLimit($this->_environment->getSessionId());
     $file_manager->select();
     $file_list = $file_manager->get();
     $file_item = $file_list->getFirst();
     while ($file_item) {
         $temp_files_array[] = $file_item->getFileID();
         $file_manager->resetTempUpload($file_item);
         $file_item = $file_list->getNext();
     }
     unset($file_manager);
     $file_ids = array();
     // new file information are stored in the session object
     $new_files = $session->getValue("add_files");
     $new_file_ids = array();
     if (!empty($new_files)) {
         $file_manager = $this->_environment->getFileManager();
         foreach ($new_file_ids_to_store as $file_id) {
             $file = $new_files[$file_id];
             $file["file_id"] = $file_id;
             if (isset($file['tmp_name']) && file_exists($file['tmp_name'])) {
                 $file_item = $file_manager->getNewItem();
                 $file_item->setTempKey($file['file_id']);
                 $file['name'] = trim($file['name']);
                 $file_item->setPostFile($file);
                 $file_item->save();
                 unlink($file['tmp_name']);
                 // Currently, the file manager does not unlink a file in its _saveOnDisk() method, because it is also used for copying files when copying material.
                 $new_file_ids[] = $file_item->getFileID();
             }
             /* else {
             				$new_file_ids[] = $file['file_id'];
             			}*/
         }
     }
     $session->unsetValue("add_files");
     // already attach file ids are in $post_file_ids
     $attached_ids = array();
     foreach ($post_file_ids as $file_id) {
         if (is_numeric($file_id)) {
             $attached_ids[] = $file_id;
         } else {
             /*
             * if ( !isset($file_manager) ) {
             							$file_manager = $this->_environment->getFileManager();
             							$file_manager->setContextLimit($this->_environment->getCurrentContextID());
             						}
             						$temp_key = $file_manager->getFileIDForTempKey($file_id);
             						if ( !empty($temp_key) and is_numeric($temp_key) ) {
             							$temp_array[] = $temp_key;
             						} elseif ( !empty($files) ) {
             							foreach ( $files as $file_data ) {
             							if ( $file_data["file_id"] == $file_id ) {
             								if ( isset($file_data["tmp_name"]) and file_exists($file_data["tmp_name"]) ) { // create file entries for uploaded files
             									$file_item = $file_manager->getNewItem();
             									$file_item->setTempKey($file_data["file_id"]);
             									$file_item->setPostFile($file_data);
             									$file_item->save();
             									unlink($file_data["tmp_name"]);  // Currently, the file manager does not unlink a file in its _saveOnDisk() method, because it is also used for copying files when copying material.
             									$temp_array[] = $file_item->getFileID();
             								}
             							}
             							}
             						}
             */
         }
     }
     // merge already attached file ids and new ones
     $file_ids = array_merge($new_file_ids, $attached_ids, $temp_files_array);
     // set
     $item->setFileIDArray($file_ids);
 }
Example #2
0
 function maySee($user_item)
 {
     if ($this->_environment->inCommunityRoom()) {
         // Community room
         if ($user_item->isRoot() or $user_item->isGuest() and $this->isVisibleForAll() or ($user_item->getContextID() == $this->getContextID() or $user_item->getContextID() == $this->_environment->getCurrentContextID()) and ($user_item->isUser() and $this->isVisibleForLoggedIn() or $user_item->getUserID() == $this->getUserID() and $user_item->getAuthSource == $this->getAuthSource() or $user_item->isModerator())) {
             $access = true;
         } else {
             $access = false;
         }
     } else {
         // Project room, group room, private room, portal
         $access = parent::maySee($user_item);
         if ($access) {
             $room = $this->_environment->getCurrentContextItem();
             if ($room->isPrivateRoom() or $room->isPortal() or $room->withRubric(CS_USER_TYPE)) {
                 $access = true;
             } else {
                 // if user rubric is not active, user can always see himself
                 if (!$room->withRubric(CS_USER_TYPE)) {
                     if ($user_item->getUserID() == $this->getUserID() && $user_item->getAuthSource() == $this->getAuthSource()) {
                         $access = true;
                     } else {
                         $access = false;
                     }
                 } else {
                     $access = false;
                 }
             }
         }
     }
     return $access;
 }
Example #3
0
 function getContextID()
 {
     $context_id = parent::getContextID();
     if ($context_id == 0) {
         $context_id = $this->_environment->getCurrentContextID();
     }
     return (int) $context_id;
 }
Example #4
0
 public function save()
 {
     parent::save();
     // save new location in tag tree / net
     if ($this->_newLocation()) {
         $position_array = $this->_getPositionArray();
         $position_old_array = $this->_getOldPositionArray();
         $new = false;
         // only tree / not net
         if (isset($position_old_array[0])) {
             $diff = array_diff($position_array[0], $position_old_array[0]);
         } else {
             $diff = $position_array[0];
             $new = true;
         }
         $father = '';
         if (!empty($diff['father'])) {
             $father = $position_array[0]['father'];
         }
         $place = '';
         if (!empty($diff['place'])) {
             $place = $position_array[0]['place'];
         }
         $tag2tag_manager = $this->_environment->getTag2TagManager();
         if (!empty($father)) {
             // delete old position
             if (!$new) {
                 $tag2tag_manager->delete($position_old_array[0]['father'], $this->getItemID());
             }
             // insert new position
             $tag2tag_manager->insert($this->getItemID(), $father, $position_array[0]['place']);
         } elseif (!empty($place)) {
             // change position
             $tag2tag_manager->change($this->getItemID(), $position_old_array[0]['father'], $place);
         }
         unset($tag2tag_manager);
     }
 }
Example #5
0
 function maySee($user_item)
 {
     if ($this->_environment->inProjectRoom() or $user_item->isUser() or $this->isWorldPublic()) {
         $access = parent::maySee($user_item);
     } else {
         $access = false;
     }
     return $access;
 }
Example #6
0
 function mayEditIgnoreClose($user_item)
 {
     return parent::mayEdit($user_item);
 }
Example #7
0
 /** Checks the data of the item.
  *
  * @return boolean TRUE if data is valid FALSE otherwise
  */
 function isValid()
 {
     // mandatory fields set?
     $title = $this->getTitle();
     $start_day = $this->getStartingDay();
     return parent::isValid() and !empty($title) and !empty($start_day);
 }
Example #8
0
 function mayEdit($user_item)
 {
     $may_edit_item = parent::mayEdit($user_item);
     if ($may_edit_item) {
         if ($this->getLabelType() == 'group') {
             if ($user_item->getStatus() == '3') {
                 return true;
             }
             $group_manager = $this->_environment->getGroupManager();
             $group_item = $group_manager->getItem($this->getItemID());
             if ($group_item->isGroupRoomActivated()) {
                 $may_edit = false;
                 if ($this->isMember($user_item)) {
                     $group_room_item = $group_item->getGroupRoomItem();
                     $user_list = $user_item->getRelatedUserList();
                     $temp_user_item = $user_list->getFirst();
                     while ($temp_user_item) {
                         if ($temp_user_item->getContextID() == $group_room_item->getContextID()) {
                             if ($temp_user_item->getStatus() == '3') {
                                 $may_edit = true;
                             }
                         }
                         $temp_user_item = $user_list->getNext();
                     }
                 }
                 return $may_edit;
             } else {
                 return $may_edit_item;
             }
         } else {
             return $may_edit_item;
         }
     } else {
         return $may_edit_item;
     }
 }