set_time_limit(0);
//require_once '../inc/global.inc.php';
api_protect_course_script();
$sysCoursePath = api_get_path(SYS_COURSE_PATH);
$courseInfo = api_get_course_info();
$courseId = api_get_course_int_id();
$sessionId = api_get_session_id();
$groupId = api_get_group_id();
$courseCode = api_get_course_id();
// Check if folder exists in current course.
$documentInfo = DocumentManager::get_document_data_by_id($_GET['id'], $courseCode, false, 0);
if (!empty($sessionId)) {
    /* If no data found and session id exists
       try to look the file inside the session */
    if (empty($documentInfo)) {
        $documentInfo = DocumentManager::get_document_data_by_id($_GET['id'], $courseCode, false, $sessionId);
    }
}
$path = $documentInfo['path'];
if (empty($path)) {
    $path = '/';
}
// A student should not be able to download a root shared directory
if (($path == '/shared_folder' || $path == '/shared_folder_session_' . api_get_session_id()) && (!api_is_allowed_to_edit() || !api_is_platform_admin())) {
    api_not_allowed(true);
    exit;
}
// Creating a ZIP file.
$tempZipFile = api_get_path(SYS_ARCHIVE_PATH) . api_get_unique_id() . ".zip";
$zip = new PclZip($tempZipFile);
$doc_table = Database::get_course_table(TABLE_DOCUMENT);
Exemplo n.º 2
0
 public function scorm_export_to_pdf($lp_id)
 {
     $lp_id = intval($lp_id);
     $files_to_export = array();
     $course_data = api_get_course_info($this->cc);
     if (!empty($course_data)) {
         $scorm_path = api_get_path(SYS_COURSE_PATH) . $course_data['path'] . '/scorm/' . $this->path;
         $list = self::get_flat_ordered_items_list($lp_id);
         if (!empty($list)) {
             foreach ($list as $item_id) {
                 $item = $this->items[$item_id];
                 switch ($item->type) {
                     case 'document':
                         //Getting documents from a LP with chamilo documents
                         $file_data = DocumentManager::get_document_data_by_id($item->path, $this->cc);
                         $file_path = api_get_path(SYS_COURSE_PATH) . $course_data['path'] . '/document' . $file_data['path'];
                         if (file_exists($file_path)) {
                             $files_to_export[] = array('title' => $item->get_title(), 'path' => $file_path);
                         }
                         break;
                     case 'asset':
                         //commes from a scorm package generated by chamilo
                     //commes from a scorm package generated by chamilo
                     case 'sco':
                         $file_path = $scorm_path . '/' . $item->path;
                         if (file_exists($file_path)) {
                             $files_to_export[] = array('title' => $item->get_title(), 'path' => $file_path);
                         }
                         break;
                     case 'dokeos_chapter':
                     case 'dir':
                     case 'chapter':
                         $files_to_export[] = array('title' => $item->get_title(), 'path' => null);
                         break;
                 }
             }
         }
         $pdf = new PDF();
         $result = $pdf->html_to_pdf($files_to_export, $this->name, $this->cc, true);
         return $result;
     }
     return false;
 }
Exemplo n.º 3
0
    $dir = $sys_course_path . $course_dir;
    $createdDir = create_unexisting_directory(
        $courseInfo,
        api_get_user_id(),
        api_get_session_id(),
        null,
        null,
        $dir,
        '/'.$folderName,
        $folderName
    );
    if ($createdDir) {
        $path = '/'.$folderName;
    }
} else {
    $data = DocumentManager::get_document_data_by_id($documentId, $courseInfo['code']);
    $path = $data['path'];
}

if (empty($path)) {
    exit;
}

$files = array(
    'file' => $_FILES['Filedata']
);

DocumentManager::upload_document(
    $files,
    $path,
    $_FILES['Filedata']['name'],
Exemplo n.º 4
0
        }
    );
});
</script>';
$_SESSION['whereami'] = 'document/create';
$this_section = SECTION_COURSES;
$lib_path = api_get_path(LIBRARY_PATH);
require_once api_get_path(SYS_CODE_PATH) . 'document/document.inc.php';
$course_info = api_get_course_info();
$group_id = api_get_group_id();
if (api_is_in_group()) {
    $group_properties = GroupManager::get_group_properties($group_id);
}
$dir = '/';
if (isset($_GET['id'])) {
    $document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true);
    $document_id = $document_data['id'];
    $file = $document_data['path'];
    $parent_id = DocumentManager::get_document_id($course_info, dirname($file));
    $dir = dirname($document_data['path']);
    $dir_original = $dir;
    $doc = basename($file);
    $my_cur_dir_path = isset($_GET['curdirpath']) ? Security::remove_XSS($_GET['curdirpath']) : null;
    $readonly = $document_data['readonly'];
}
if (empty($document_data)) {
    api_not_allowed();
}
$is_certificate_mode = DocumentManager::is_certificate_mode($dir);
//Call from
$call_from_tool = isset($_GET['origin']) ? Security::remove_XSS($_GET['origin']) : null;
Exemplo n.º 5
0
/**
 * @param array $params
 * @return int|string
 */
function WSDeleteLp($params)
{
    global $debug;
    if (!WSHelperVerifyKey($params)) {
        return return_error(WS_ERROR_SECRET_KEY);
    }
    require_once api_get_path(SYS_CODE_PATH) . 'newscorm/learnpathList.class.php';
    require_once api_get_path(SYS_CODE_PATH) . 'newscorm/learnpath.class.php';
    require_once api_get_path(SYS_CODE_PATH) . 'newscorm/learnpathItem.class.php';
    $courseIdName = $params['course_id_name'];
    $courseIdValue = $params['course_id_value'];
    $lpId = $params['lp_id'];
    $sessionIdName = isset($params['session_id_name']) ? $params['session_id_name'] : null;
    $sessionIdValue = isset($params['session_id_value']) ? $params['session_id_value'] : null;
    $courseInfo = CourseManager::getCourseInfoFromOriginalId($courseIdValue, $courseIdName);
    if (empty($courseInfo)) {
        if ($debug) {
            error_log("Course not found: {$courseIdName} : {$courseIdValue}");
        }
        return 'Course not found';
    }
    $courseId = $courseInfo['real_id'];
    $courseCode = $courseInfo['code'];
    $sessionId = 0;
    /*
    if (!empty($sessionIdName) && !empty($sessionIdValue)) {
        $sessionId = SessionManager::get_session_id_from_original_id(
            $sessionIdValue,
            $sessionIdName
        );
    
        if (empty($sessionId)) {
    
            if ($debug) error_log('Session not found');
            return 'Session not found';
        }
    }
    */
    $lp = new learnpath($courseCode, $lpId, null);
    if ($lp) {
        if ($debug) {
            error_log("LP deleted {$lpId}");
        }
        $course_dir = $courseInfo['directory'] . '/document';
        $sys_course_path = api_get_path(SYS_COURSE_PATH);
        $base_work_dir = $sys_course_path . $course_dir;
        $items = $lp->get_flat_ordered_items_list($lpId, 0, $courseId);
        if (!empty($items)) {
            /** @var $item learnpathItem */
            foreach ($items as $itemId) {
                $item = new learnpathItem($itemId, null, $courseId);
                if ($item) {
                    $documentId = $item->get_path();
                    if ($debug) {
                        error_log("lp item id found #{$itemId}");
                    }
                    $documentInfo = DocumentManager::get_document_data_by_id($documentId, $courseInfo['code'], false, $sessionId);
                    if (!empty($documentInfo)) {
                        if ($debug) {
                            error_log("Document id deleted #{$documentId}");
                        }
                        DocumentManager::delete_document($courseInfo, null, $base_work_dir, $sessionId, $documentId);
                    } else {
                        if ($debug) {
                            error_log("No document found for id #{$documentId}");
                        }
                    }
                } else {
                    if ($debug) {
                        error_log("Document not found #{$itemId}");
                    }
                }
            }
        }
        $lp->delete($courseInfo, $lpId, 'remove');
        return 1;
    }
    return 0;
}
Exemplo n.º 6
0
            if (isset($_FILES["{$type}-blob"])) {
                $fileName = $_POST["{$type}-filename"];
                //$file = $_FILES["${type}-blob"]["tmp_name"];
                $file = $_FILES["{$type}-blob"];
                $fileInfo = pathinfo($fileName);
                $file['name'] = 'rec_' . date('Y-m-d_His') . '_' . uniqid() . '.' . $fileInfo['extension'];
                $file['file'] = $file;
                $lpPathInfo['dir'] = api_remove_trailing_slash($lpPathInfo['dir']);
                $result = DocumentManager::upload_document($file, $lpPathInfo['dir'], $file['name'], null, 0, 'overwrite', false, false);
                if (!empty($result) && is_array($result)) {
                    $newDocId = $result['id'];
                    $courseId = $result['c_id'];
                    $lp->set_modified_on();
                    $lpItem = new learnpathItem($_REQUEST['lp_item_id']);
                    $lpItem->add_audio_from_documents($newDocId);
                    $data = DocumentManager::get_document_data_by_id($newDocId, $course_info['code']);
                    echo $data['document_url'];
                    exit;
                }
            }
        }
        break;
    default:
        echo '';
}
exit;
/*
 * Classes to create a special data structure to manipulate LP Items
 * used only in this file
 * @todo move in a file
 */
Exemplo n.º 7
0
<?php

/* For licensing terms, see /license.txt */
/**
 * ODF document editor script (maybe unused)
 * @package chamilo.document
 */
/**
 * Init
 */
require_once '../inc/global.inc.php';
exit;
$document_id = $_GET['id'];
if ($document_id) {
    $document_data = DocumentManager::get_document_data_by_id($document_id);
    if (empty($document_data)) {
        api_not_allowed();
    }
} else {
    api_not_allowed();
}
//Check user visibility
//$is_visible = DocumentManager::is_visible_by_id($document_id, $course_info, api_get_session_id(), api_get_user_id());
$is_visible = DocumentManager::check_visibility_tree($document_id, api_get_course_id(), api_get_session_id(), api_get_user_id());
if (!api_is_allowed_to_edit() && !$is_visible) {
    api_not_allowed(true);
}
$header_file = $document_data['path'];
$pathinfo = pathinfo($header_file);
$show_web_odf = false;
$web_odf_supported_files = DocumentManager::get_web_odf_extension_list();
Exemplo n.º 8
0
<?php

/* For licensing terms, see /license.txt */
/**
 * ODF document editor script (maybe unused)
 * @package chamilo.document
 */
require_once '../inc/global.inc.php';
//exit;
$document_id = $_GET['id'];
$courseCode = api_get_course_id();
if ($document_id) {
    $document_data = DocumentManager::get_document_data_by_id($document_id, $courseCode);
    if (empty($document_data)) {
        api_not_allowed();
    }
} else {
    api_not_allowed();
}
//Check user visibility
//$is_visible = DocumentManager::is_visible_by_id($document_id, $course_info, api_get_session_id(), api_get_user_id());
$is_visible = DocumentManager::check_visibility_tree($document_id, api_get_course_id(), api_get_session_id(), api_get_user_id(), api_get_group_id());
if (!api_is_allowed_to_edit() && !$is_visible) {
    api_not_allowed(true);
}
$header_file = $document_data['path'];
$pathinfo = pathinfo($header_file);
$show_web_odf = false;
$web_odf_supported_files = DocumentManager::get_web_odf_extension_list();
if (in_array(strtolower($pathinfo['extension']), $web_odf_supported_files)) {
    $show_web_odf = true;
Exemplo n.º 9
0
// Including additional libraries
require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php';
// Adding extra javascript to the form
//$htmlHeadXtra[] = api_get_jquery_libraries_js(array('jquery-ui', 'jquery-upload'));
// Variables
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$_course = api_get_course_info();
$groupId = api_get_group_id();
$courseDir = $_course['path'] . '/document';
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$base_work_dir = $sys_course_path . $courseDir;
$sessionId = api_get_session_id();
$selectcat = isset($_GET['selectcat']) ? Security::remove_XSS($_GET['selectcat']) : null;
$document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id(), true, $sessionId);
if ($sessionId != 0 && !$document_data) {
    $document_data = DocumentManager::get_document_data_by_id($_REQUEST['id'], api_get_course_id(), true, 0);
}
if (empty($document_data)) {
    $document_id = $parent_id = 0;
    $path = '/';
} else {
    $document_id = $document_data['id'];
    $path = $document_data['path'];
    $parent_id = DocumentManager::get_document_id(api_get_course_info(), dirname($path));
}
$group_properties = array();
$htmlHeadXtra[] = '<script>

function check_unzip() {
    if (document.upload.unzip.checked){
        document.upload.if_exists[0].disabled=true;
Exemplo n.º 10
0
 // Create directory with $_POST data
 if (isset($_POST['create_dir']) && $_POST['dirname'] != '') {
     // Needed for directory creation
     $post_dir_name = $_POST['dirname'];
     if ($post_dir_name == '../' || $post_dir_name == '.' || $post_dir_name == '..') {
         $message = Display::return_message(get_lang('CannotCreateDir'), 'error');
     } else {
         // dir_id is the parent folder id.
         if (!empty($_POST['dir_id'])) {
             // Get the document data from the ID
             $document_data = DocumentManager::get_document_data_by_id($_POST['dir_id'], api_get_course_id(), false, $sessionId);
             if ($sessionId != 0 && !$document_data) {
                 // If there is a session defined and asking for the
                 // document * from the session* didn't work, try it from
                 // the course (out of a session context)
                 $document_data = DocumentManager::get_document_data_by_id($_POST['dir_id'], api_get_course_id(), false, 0);
             }
             $curdirpath = $document_data['path'];
         }
         $added_slash = $curdirpath == '/' ? '' : '/';
         $dir_name = $curdirpath . $added_slash . api_replace_dangerous_char($post_dir_name);
         $dir_name = disable_dangerous_file($dir_name);
         $dir_check = $base_work_dir . $dir_name;
         $visibility = empty($groupId) ? null : 1;
         $newFolderData = create_unexisting_directory($courseInfo, api_get_user_id(), $sessionId, $groupId, $to_user_id, $base_work_dir, $dir_name, $post_dir_name, $visibility);
         if (!empty($newFolderData)) {
             $message = Display::return_message(get_lang('DirCr') . ' ' . $newFolderData['title'], 'confirmation');
         } else {
             $message = Display::return_message(get_lang('CannotCreateDir'), 'error');
         }
     }
Exemplo n.º 11
0
/**
 * Creates a new directory trying to find a directory name
 * that doesn't already exist
 * (we could use unique_name() here...)
 *
 * @author  Hugues Peeters <*****@*****.**>
 * @author  Bert Vanderkimpen
 * @param   array   $_course current course information
 * @param   int     $user_id current user id
 * @param   int     $session_id
 * @param   int     $to_group_id
 * @param   int     $to_user_id
 * @param   string  $base_work_dir /var/www/chamilo/courses/ABC/document
 * @param   string  $desired_dir_name complete path of the desired name
 * Example: /folder1/folder2
 * @param   string  $title "folder2"
 * @param   int     $visibility (0 for invisible, 1 for visible, 2 for deleted)
 * @param   bool $generateNewNameIfExists
 * @return  string  actual directory name if it succeeds,
 *          boolean false otherwise
 */
function create_unexisting_directory($_course, $user_id, $session_id, $to_group_id, $to_user_id, $base_work_dir, $desired_dir_name, $title = null, $visibility = null, $generateNewNameIfExists = false)
{
    $course_id = $_course['real_id'];
    $session_id = intval($session_id);
    $folderExists = DocumentManager::folderExists($desired_dir_name, $_course, $session_id, $to_group_id);
    if ($folderExists == true) {
        if ($generateNewNameIfExists) {
            $counter = 1;
            while (1) {
                $folderExists = DocumentManager::folderExists($desired_dir_name . '_' . $counter, $_course, $session_id, $to_group_id);
                if ($folderExists == false) {
                    break;
                }
                $counter++;
            }
            $desired_dir_name = $desired_dir_name . '_' . $counter;
        } else {
            return false;
        }
    }
    $systemFolderName = $desired_dir_name;
    // Adding suffix
    $suffix = DocumentManager::getDocumentSuffix($_course, $session_id, $to_group_id);
    $systemFolderName .= $suffix;
    if ($title == null) {
        $title = basename($desired_dir_name);
    }
    if (!is_dir($base_work_dir . $systemFolderName)) {
        $result = mkdir($base_work_dir . $systemFolderName, api_get_permissions_for_new_directories(), true);
        if ($result) {
            // Check if pathname already exists inside document table
            $tbl_document = Database::get_course_table(TABLE_DOCUMENT);
            $sql = "SELECT id, path FROM {$tbl_document}\n                    WHERE\n                        c_id = {$course_id} AND\n                        (\n                            path = '" . $systemFolderName . "'\n                        )\n            ";
            $rs = Database::query($sql);
            if (Database::num_rows($rs) == 0) {
                $document_id = add_document($_course, $systemFolderName, 'folder', 0, $title, null, 0, true, $to_group_id);
                if ($document_id) {
                    // Update document item_property
                    if (!empty($visibility)) {
                        $visibilities = array(0 => 'invisible', 1 => 'visible', 2 => 'delete');
                        api_item_property_update($_course, TOOL_DOCUMENT, $document_id, $visibilities[$visibility], $user_id, $to_group_id, $to_user_id, null, null, $session_id);
                    } else {
                        api_item_property_update($_course, TOOL_DOCUMENT, $document_id, 'FolderCreated', $user_id, $to_group_id, $to_user_id, null, null, $session_id);
                    }
                    $documentData = DocumentManager::get_document_data_by_id($document_id, $_course['code'], false, $session_id);
                    return $documentData;
                }
            } else {
                $document = Database::fetch_array($rs);
                $documentData = DocumentManager::get_document_data_by_id($document['id'], $_course['code'], false, $session_id);
                /* This means the folder NOT exist in the filesystem
                   (now this was created) but there is a record in the Database*/
                return $documentData;
            }
        }
    }
    return false;
}
Exemplo n.º 12
0
/**
 * @param int $workId
 * @param array $courseInfo
 * @return string
 */
function getAllDocumentsFromWorkToString($workId, $courseInfo)
{
    $documents = getAllDocumentToWork($workId, $courseInfo['real_id']);
    $content = null;
    if (!empty($documents)) {
        $content .= '<ul class="nav nav-list well">';
        $content .= '<li class="nav-header">'.get_lang('Documents').'</li>';
        foreach ($documents as $doc) {
            $docData = DocumentManager::get_document_data_by_id($doc['document_id'], $courseInfo['code']);
            if ($docData) {
                $content .= '<li><a target="_blank" href="'.$docData['url'].'">'.$docData['title'].'</a></li>';
            }
        }
        $content .= '</ul><br />';
    }
    return $content;
}
Exemplo n.º 13
0
 /**
  * Returns an HTML-formatted link to a resource, to incorporate directly into
  * the new learning path tool.
  *
  * The function is a big switch on tool type.
  * In each case, we query the corresponding table for information and build the link
  * with that information.
  * @author	Yannick Warnier <*****@*****.**> - rebranding based on previous work (display_addedresource_link_in_learnpath())
  * @param	int	$course_id Course code
  * @param	int $learnpath_id The learning path ID (in lp table)
  * @param   int $id_in_path the unique index in the items table
  * @param int $lpViewId
  */
 public static function rl_get_resource_link_for_learnpath($course_id, $learnpath_id, $id_in_path, $lpViewId)
 {
     $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
     $course_info = api_get_course_info_by_id($course_id);
     $course_id = $course_info['real_id'];
     $course_code = $course_info['code'];
     $session_id = api_get_session_id();
     $learnpath_id = intval($learnpath_id);
     $id_in_path = intval($id_in_path);
     $lpViewId = intval($lpViewId);
     $sql = "SELECT * FROM {$tbl_lp_item}\n             WHERE\n                c_id = {$course_id} AND\n                lp_id = {$learnpath_id} AND\n                id = {$id_in_path}\n            ";
     $res_item = Database::query($sql);
     if (Database::num_rows($res_item) < 1) {
         return -1;
     }
     $row_item = Database::fetch_array($res_item, 'ASSOC');
     $type = strtolower($row_item['item_type']);
     $id = strcmp($row_item['path'], '') == 0 ? '0' : $row_item['path'];
     $origin = 'learnpath';
     $main_dir_path = api_get_path(WEB_CODE_PATH);
     $main_course_path = api_get_path(WEB_COURSE_PATH) . $course_info['directory'] . '/';
     $link = '';
     switch ($type) {
         case 'dokeos_chapter':
             $link .= $main_dir_path . 'newscorm/blank.php';
         case TOOL_CALENDAR_EVENT:
             $link .= $main_dir_path . 'calendar/agenda.php?origin=' . $origin . '&agenda_id=' . $id;
             break;
         case TOOL_ANNOUNCEMENT:
             $link .= $main_dir_path . 'announcements/announcements.php?origin=' . $origin . '&ann_id=' . $id;
             break;
         case TOOL_LINK:
             $TABLETOOLLINK = Database::get_course_table(TABLE_LINK);
             $result = Database::query("SELECT * FROM {$TABLETOOLLINK} WHERE c_id = {$course_id} AND id={$id}");
             $myrow = Database::fetch_array($result);
             $thelink = $myrow["url"];
             $link .= $thelink;
             break;
         case TOOL_QUIZ:
             if (!empty($id)) {
                 $TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
                 $sql = "SELECT * FROM {$TBL_EXERCICES} WHERE c_id = {$course_id} AND id={$id}";
                 $result = Database::query($sql);
                 $myrow = Database::fetch_array($result);
                 if ($row_item['title'] != '') {
                     $myrow['title'] = $row_item['title'];
                 }
                 $link .= $main_dir_path . 'exercice/overview.php?cidReq=' . $course_code . '&session_id=' . $session_id . '&lp_init=1&origin=' . $origin . '&learnpath_id=' . $learnpath_id . '&learnpath_item_id=' . $id_in_path . '&exerciseId=' . $id;
             }
             break;
         case 'hotpotatoes':
             //lowercase because of strtolower above
             $TBL_DOCUMENT = Database::get_course_table(TABLE_DOCUMENT);
             $result = Database::query("SELECT * FROM " . $TBL_DOCUMENT . " WHERE c_id = {$course_id} AND id={$id}");
             $myrow = Database::fetch_array($result);
             $path = $myrow['path'];
             $link .= $main_dir_path . 'exercice/showinframes.php?file=' . $path . '' . '&origin=' . $origin . '&cid=' . $course_code . '&uid=' . api_get_user_id() . '' . '&learnpath_id=' . $learnpath_id . '&learnpath_item_id=' . $id_in_path . '&lp_view_id=' . $lpViewId;
             break;
         case TOOL_FORUM:
             $link .= $main_dir_path . 'forum/viewforum.php?forum=' . $id . '&lp=true&origin=learnpath';
             break;
         case TOOL_THREAD:
             //forum post
             $tbl_topics = Database::get_course_table(TABLE_FORUM_THREAD);
             if (!empty($id)) {
                 $sql = "SELECT * FROM {$tbl_topics} WHERE c_id = {$course_id} AND thread_id={$id}";
                 $result = Database::query($sql);
                 $myrow = Database::fetch_array($result);
                 $link .= $main_dir_path . 'forum/viewthread.php?origin=learnpath&thread=' . $id . '' . '&forum=' . $myrow['forum_id'] . '&lp=true';
             }
             break;
         case TOOL_POST:
             $tbl_post = Database::get_course_table(TABLE_FORUM_POST);
             $result = Database::query("SELECT * FROM {$tbl_post} WHERE c_id = {$course_id} AND post_id={$id}");
             $myrow = Database::fetch_array($result);
             $title = $myrow['post_title'];
             //$desc = $row_item['description'];
             $posternom = $myrow['poster_name'];
             $posttime = $myrow['post_date'];
             $posttext = $myrow['post_text'];
             $posttitle = $title;
             $posttext = str_replace('"', "'", $posttext);
             $link .= $main_dir_path . 'forum/viewthread.php?post=' . $id . '' . '&thread=' . $myrow['thread_id'] . '&forum=' . $myrow['forum_id'] . '' . '&lp=true';
             break;
         case TOOL_DOCUMENT:
             $documentInfo = DocumentManager::get_document_data_by_id($id, $course_code, true, $session_id);
             $documentPathInfo = pathinfo($documentInfo['absolute_path']);
             $jplayer_supported_files = ['mp4', 'ogv', 'flv', 'm4v'];
             $showDirectUrl = !in_array($documentPathInfo['extension'], $jplayer_supported_files);
             if ($showDirectUrl) {
                 $link = $documentInfo['direct_url'] . '?';
                 $link .= http_build_query(['cidReq' => $course_code, 'id_session' => $session_id]);
             } else {
                 $link = $documentInfo['url'] . '&' . http_build_query(['origin' => 'learnpathitem']);
             }
             $openmethod = 2;
             $officedoc = false;
             Session::write('openmethod', $openmethod);
             Session::write('officedoc', $officedoc);
             break;
         case 'assignments':
             $link .= $main_dir_path . 'work/work.php?origin=' . $origin;
             break;
         case TOOL_DROPBOX:
             $link .= $main_dir_path . 'dropbox/index.php?origin=learnpath';
             break;
         case 'introduction_text':
             //DEPRECATED
             $link .= '';
             break;
         case TOOL_COURSE_DESCRIPTION:
             $link .= $main_dir_path . 'course_description?origin=learnpath';
             break;
         case TOOL_GROUP:
             $link .= $main_dir_path . 'group/group.php?origin=' . $origin;
             break;
         case TOOL_USER:
             $link .= $main_dir_path . 'user/user.php?origin=' . $origin;
             break;
         case TOOL_STUDENTPUBLICATION:
             $link .= $main_dir_path . 'work/work_list.php?' . api_get_cidreq() . '&id=' . $row_item['path'] . '&origin=learnpath';
             break;
     }
     //end switch
     return $link;
 }
Exemplo n.º 14
0
 /**
  * Generate a default certificate for a courses
  *
  * @global string $css CSS directory
  * @global string $img_dir image directory
  * @global string $default_course_dir Course directory
  * @global string $js JS directory
  * @param array $courseData The course info
  * @param bool $fromBaseCourse
  * @param int $sessionId
  */
 public static function generateDefaultCertificate($courseData, $fromBaseCourse = false, $sessionId = 0)
 {
     global $css, $img_dir, $default_course_dir, $js;
     $codePath = api_get_path(REL_CODE_PATH);
     $dir = '/certificates';
     $title = get_lang('DefaultCertificate');
     $comment = null;
     $fileName = api_replace_dangerous_char($title);
     $filePath = api_get_path(SYS_COURSE_PATH) . "{$courseData['path']}/document{$dir}";
     $fileFullPath = "{$filePath}/{$fileName}.html";
     $fileSize = 0;
     $fileType = 'file';
     $templateContent = file_get_contents(api_get_path(SYS_CODE_PATH) . 'gradebook/certificate_template/template.html');
     $search = array('{CSS}', '{IMG_DIR}', '{REL_CODE_PATH}', '{COURSE_DIR}');
     $replace = array($css . $js, $img_dir, $codePath, $default_course_dir);
     $fileContent = str_replace($search, $replace, $templateContent);
     $saveFilePath = "{$dir}/{$fileName}.html";
     if (!is_dir($filePath)) {
         mkdir($filePath, api_get_permissions_for_new_directories());
     }
     if ($fromBaseCourse) {
         $defaultCertificateId = self::get_default_certificate_id($courseData['code'], 0);
         if (!empty($defaultCertificateId)) {
             // We have a certificate from the course base
             $documentData = DocumentManager::get_document_data_by_id($defaultCertificateId, $courseData['code'], false, 0);
             if ($documentData) {
                 $fileContent = file_get_contents($documentData['absolute_path']);
             }
         }
     }
     $defaultCertificateFile = $fp = @fopen($fileFullPath, 'w');
     if ($defaultCertificateFile != false) {
         @fputs($defaultCertificateFile, $fileContent);
         fclose($defaultCertificateFile);
         chmod($fileFullPath, api_get_permissions_for_new_files());
         $fileSize = filesize($fileFullPath);
     }
     $documentId = add_document($courseData, $saveFilePath, $fileType, $fileSize, $title, $comment, 0, true, null, $sessionId);
     api_item_property_update($courseData, TOOL_DOCUMENT, $documentId, 'DocumentAdded', api_get_user_id(), null, null, null, null, $sessionId);
     $defaultCertificateId = self::get_default_certificate_id($courseData['code'], $sessionId);
     if (!isset($defaultCertificateId)) {
         self::attach_gradebook_certificate($courseData['code'], $documentId, $sessionId);
     }
 }
Exemplo n.º 15
0
$header_file = isset($_GET['file']) ? Security::remove_XSS($_GET['file']) : null;
$document_id = intval($_GET['id']);
$courseInfo = api_get_course_info();
$course_code = api_get_course_id();
$session_id = api_get_session_id();
if (empty($courseInfo)) {
    api_not_allowed(true);
}
$show_web_odf = false;
// Generate path
if (!$document_id) {
    $document_id = DocumentManager::get_document_id($courseInfo, $header_file);
}
$document_data = DocumentManager::get_document_data_by_id($document_id, $course_code, true, $session_id);
if ($session_id != 0 and !$document_data) {
    $document_data = DocumentManager::get_document_data_by_id($document_id, $course_code, true, 0);
}
if (empty($document_data)) {
    api_not_allowed(true);
}
$header_file = $document_data['path'];
$name_to_show = $document_data['title'];
$path_array = explode('/', str_replace('\\', '/', $header_file));
$path_array = array_map('urldecode', $path_array);
$header_file = implode('/', $path_array);
$file = Security::remove_XSS(urldecode($document_data['path']));
$file_root = $courseInfo['path'] . '/document' . str_replace('%2F', '/', $file);
$file_url_sys = api_get_path(SYS_COURSE_PATH) . $file_root;
$file_url_web = api_get_path(WEB_COURSE_PATH) . $file_root;
if (!file_exists($file_url_sys)) {
    api_not_allowed(true);
 /**
  * @param string $courseCode
  * @param string $fileName
  * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  */
 public function getFileAction($courseCode, $fileName)
 {
     $courseInfo = api_get_course_info($courseCode);
     $sessionId = $this->getRequest()->get('id_session');
     $docId = \DocumentManager::get_document_id($courseInfo, "/" . $fileName);
     $filePath = null;
     if ($docId) {
         $isVisible = \DocumentManager::is_visible_by_id($docId, $courseInfo, $sessionId, api_get_user_id());
         $documentData = \DocumentManager::get_document_data_by_id($docId, $courseCode);
         $filePath = $documentData['absolute_path'];
         event_download($filePath);
     }
     if (!api_is_allowed_to_edit() && !$isVisible) {
         $this->abort(500);
     }
     return $this->sendFile($filePath);
 }
 function add_audio_from_documents($doc_id)
 {
     $course_info = api_get_course_info();
     $document_data = DocumentManager::get_document_data_by_id($doc_id, $course_info['code']);
     if (!empty($document_data)) {
         $file_path = basename($document_data['path']);
         // Store the mp3 file in the lp_item table.
         $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
         $sql_insert_audio = "UPDATE {$tbl_lp_item} SET audio = '" . Database::escape_string($file_path) . "'\n                                 WHERE c_id = {$course_info['real_id']} AND id = '" . Database::escape_string($this->db_id) . "'";
         Database::query($sql_insert_audio);
     }
     return $file_path;
 }
Exemplo n.º 18
0
// Please, do not modify this dirname formatting
if (strstr($dir, '..')) {
    $dir = '/';
}
if ($dir[0] == '.') {
    $dir = substr($dir, 1);
}
if ($dir[0] != '/') {
    $dir = '/' . $dir;
}
if ($dir[strlen($dir) - 1] != '/') {
    $dir .= '/';
}
if ($is_certificate_mode) {
    $document_id = DocumentManager::get_document_id(api_get_course_info(), '/certificates');
    $document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id(), true);
    $folder_id = $document_data['id'];
    $dir = '/certificates/';
}
// Configuration for the FCKEDITOR
$doc_tree = explode('/', $dir);
$count_dir = count($doc_tree) - 2;
// "2" because at the begin and end there are 2 "/"
if (api_is_in_group()) {
    $group_properties = GroupManager::get_group_properties($groupId);
    // Level correction for group documents.
    if (!empty($group_properties['directory'])) {
        $count_dir = $count_dir > 0 ? $count_dir - 1 : 0;
    }
}
$relative_url = '';
Exemplo n.º 19
0
     // Only course admin or group members allowed
     if ($is_allowed_to_edit || GroupManager::is_user_in_group(api_get_user_id(), api_get_group_id())) {
     } else {
         exit;
     }
 } elseif ($is_allowed_to_edit || DocumentManager::is_my_shared_folder(api_get_user_id(), $_POST['curdirpath'], api_get_session_id())) {
 } else {
     // No course admin and no group member...
     exit;
 }
 $directoryParentId = isset($_POST['directory_parent_id']) ? $_POST['directory_parent_id'] : 0;
 $currentDirectory = '';
 if (empty($directoryParentId)) {
     $currentDirectory = isset($_REQUEST['curdirpath']) ? $_REQUEST['curdirpath'] : '';
 } else {
     $documentData = DocumentManager::get_document_data_by_id($directoryParentId, api_get_course_id());
     if ($documentData) {
         $currentDirectory = $documentData['path'];
     }
 }
 $ifExists = isset($_POST['if_exists']) ? $_POST['if_exists'] : '';
 $unzip = isset($_POST['unzip']) ? 1 : 0;
 if (empty($ifExists)) {
     $fileExistsOption = api_get_setting('document.if_file_exists_option');
     $defaultFileExistsOption = 'rename';
     if (!empty($fileExistsOption)) {
         $defaultFileExistsOption = $fileExistsOption;
     }
 } else {
     $defaultFileExistsOption = $ifExists;
 }