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); }
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; }
function getContextID() { $context_id = parent::getContextID(); if ($context_id == 0) { $context_id = $this->_environment->getCurrentContextID(); } return (int) $context_id; }
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); } }
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; }
function mayEditIgnoreClose($user_item) { return parent::mayEdit($user_item); }
/** 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); }
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; } }