学习管理系统源代码v1.0
URP高校网络教学系统V

清华教育在线THEOL系列教学软件北京清元优软科技有限公司2009-7目录一、URP高校网络教学系统V1.0概述 ................................................................. 错误!未定义书签。
二、URP高校网络教学系统V1.0建设方案.......................................................... 错误!未定义书签。
三、URP高校网络教学系统V1.0系统与资源描述 .............................................. 错误!未定义书签。
第一部分通用网络教学平台 ...................................................................... 错误!未定义书签。
第二部分精品课程申报、建设与评审平台 .............................................. 错误!未定义书签。
第三部分专业与课程建设平台 .................................................................. 错误!未定义书签。
第四部分研究型网络教学平台 .................................................................. 错误!未定义书签。
第五部分教学资源库管理平台 .................................................................. 错误!未定义书签。
第六部分国内外开放课程资源 .................................................................. 错误!未定义书签。
ORACLE EBS OPM 标准功能培训资料-OPM系统管理员-V1.0

目录LESSON1文档类型 (2)LESSONG2定义文档编号 (2)LESSON3编辑地址代码 (3)LESSON4编辑HR组织 (3)LESSON5编辑HR地址 (3)LESSON6编辑组织 (4)LESSON7E DITING P ARAGRAPHS (4)LESSON8编辑原因代码 (5)LESSON9编辑任务参数 (6)LESSON10编辑文本标志 (6)LESSON11计量单位 (7)LESSON12编辑用户组织 (7)LESSON13编辑用户计划类 (7)LESSON14特殊菜单 (8)UNIT 2 清除和存档 (9)UNIT 3 OPM查询 (10)UNIT 4 工作流设置 (11)UNIT 5 Audit Trail Reporting (19)LESSON 1 文档类型OPM功能模块如库存,销售,采购,生产等会产生很多交易活动,你可以按照文档类型来进行分类,每种文档类型记录不同的交易信息。
文档类型和组织需要在定义文档编号前先定义。
注意:不要修改OPM提供的文档类型,你可以增加和维护新类型,但不要改变系统自带的文档类型。
文档类型举例如下:有五十种。
(可能是系统提供的)文档类型定义:路径:定位至“文档类型定义”窗口字段:类型代码:输入文档类型代码,最大4个字符描述:输入类型描述信息,最大40个字符附加描述:输入附加的类型描述信息.LESSONG 2 定义文档编号为每种文档类型指定文档的编号,文档在交易时实时产生,每个文档需要有不同的编号。
由于所有的文档编号前都有组织代码,因此不同的组织可使用相同的编号范围。
文档编号可手工指定,也可自动产生。
⏹自动产生时,只使用数字,OPM按顺序将编号指定给文档,故需设定:➢指定一个比期望开始文档编号少1的数字。
例如,如果希望编号从10开始,在此指定9。
需要仔细考虑,文档保存以后再修改编码参数会引起混乱。
➢定义数字的最大位数,不能超过10位(如果与Oracle财务集成不能超过6位)。
员工信息管理系统源码

business R(Q);
return Q;
}
admi gyx(admi Q)
{
admi R(Q);
return Q;
}
/////////////////////////////////主体+初始+登录
void fg();void main();void denglu();void began();void amend();void list();
file1<<A[i].name<<" "<<A[i].age<<" "<<A[i].card<<" "<<A[i].home<<
" "<<A[i].id<<" "<<A[i].time<<" "<<A[i].wage<<" "<<A[i].code<<endl;
file2<<B.jieshao<<" "<<B.gonggao<<endl;
int gnum;int snum;int xnum;
num(int gn,int sn,int xn);
num(){gnum=snum=xnum=0;}
};
num::num(int gn,int sn,int xn)
{
gnum=gn;snum=sn;xnum=xn;
}
代码版本管理规范_v1.1

XXXXXXXX 代码版本管理规范历史版本目录历史版本 (2)1引言 (4)1.1目的 (4)1.2管理工具 (4)2现状概述 (5)3现状分析 (5)3.1现状详述 (5)3.2目标细化 (6)3.3SVN版本管理 (6)3.3.1概述 (6)3.3.2使用对比 (7)4完整的实施方案 (9)4.1开发阶段 (9)4.2预发布测试阶段 (9)1引言1.1目的为了规范和制度化公司的软件版本管理制度,并保障项目开发资料的完整性和安全性,同时明确开发源代码的控制管理流程,特此制定此规范。
1.2管理工具沿用SVN管理工具来进行开发的版本管理,源代码管理和开发资料归档。
2现状概述目前公司研发部门对于代码的版本管理方式较为简单,只是在每次发版后做了基线库存档,导致所有正在开发的需求和项目都在同一个目录里面进行修改,造成每次发版的代码都有可能包含了本次发版以外的内容。
这样会造成如下两点影响:●会有不稳定的因素存在,比如:测试只会对当前需要发版的内容进行测试,但是代码库中同时存在多个版本和项目的代码,对于本次发版无涉及的代码没有进过测试就部署到了服务器上,影响运行的稳定性。
●一旦出现点问题不好定位,比如:出现问题后通常会优先排查发版涉及的内容,但是部分问题是由于其他项目代码引起的。
因此,随着公司和项目规模的壮大,对软件代码版本管理提出了更高的要求。
3现状分析3.1现状详述当前代码版本管理现状如下:1.所有的开发都在一个目录里面做,各种需求、项目、代码、文件混杂在一起。
2.提交测试服务器时,只考虑了编译能通过,而没有考虑功能本身有没有完成。
3.测试出bug以后,会在开发目录进行修改,然后再次提交到测试服务器。
这时提交的代码就可能包含了他人对其他功能/项目的修改,而测试又只会针对此bug再做测试。
这就导致了除了此bug之外的修改可能会没有测试过就直接发布到了服务器上,引起预发布环境不稳定并增加预发布bug数量。
总体来说,当前工作流程是:预发布出bug,研发修改,再提交测试,然后预发布测试通过的代码。
Linux学习之CentOS(23)--Linux软件管理之源代码以及RPM软件包管理

Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理在Linux系统下,对于软件包的管理有多种机制,有源代码方式、RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制一、源代码形式首先我们先来看一下源代码的方式。
我们知道,在开源的环境下,大多数的开源软件都是以源代码的形式来发布,通常将源代码打包成tar.gz的归档压缩文件发布到网上供我们下载使用。
但是我们下载下来的源代码方式我们还不能够直接使用,不像在windows系统上直接下载下来可执行的二进制文件,我们需要将下载好的源码编译成可执行的二进制文件才能运行使用,源代码形式安装流程一般如下:①./configure检查编译环境、相关库文件以及配置参数并生成makefile②make将源代码编译成可执行的二进制文件③make install安装编译好的可执行文件基本上所有以源代码形式发布的软件都是按照以上流程来进行安装,大家可能觉得其实步骤就这三个,安装过程非常简单!其实不然,通常以源代码形式发布的软件,在对其进行①、②步操作时往往会出很多很多的问题,比如说编译过程中缺少所需的库文件,或者说编译源码时又需要依赖A文件,编译A文件时可能又需要用到B文件,这样我们需要花大量时间去找这些依赖的问题,同时如果一个软件特别大的话,我们在将其编译过程中要等待非常久的时间。
所以说其实源代码形式的安装软件并不是我们想象的那么简单,但是为什么源代码形式的软件管理还一直存在呢?必然也有其优点,因为我们的源码都要通过编译成可执行的二进制文件才行,所以说它适用于各种操作系统平台,我只需要在各个操作系统平台上对其源码进行编译即可运行起来了。
总结一下:源代码形式的缺点:操作复杂、编译时间长、极易出现错误源代码形式的优点:适用于所有的操作系统、可定制二、RPM软件包管理因为源代码方式安装软件终究还是比较麻烦,所以说现在出现了许多代替源码方式安装的软件管理机制。
VSS使用手册_v1.0

VSS使用手册(第一版)目录1.VSS概述 (1)1.1 VSS中的文件 (1)1.2 VSS中的项目 (1)1.3 VSS的版本控制功能 (2)1.4 文件的拆分和共享 (2)1.5 工作文件夹(working folder) (3)2.VSS的客户端安装 (3)2.1 安装VSS的系统条件 (3)2.2 从网络安装VSS客户端 (4)3.VSS的基本使用操作 (4)3.1 登录VSS (4)3.2 VSS浏览器 (5)3.3 VSS基本操作 (5)3.3.1创建新的文件夹 (5)3.3.2添加文件夹 (5)3.3.3添加文件 (5)3.3.4查看文件 (6)3.3.5创建工作文件夹 (6)3.3.6修改和编辑文件 (7)3.3.7移动文件/文件夹 (7)3.3.8共享文件/文件夹(share) (7)3.3.9拆分文件(branch) (8)3.3.10删除/恢复文件或文件夹 (8)3.3.11查看文件/文件夹的历史信息或早期版本 (9)3.3.12获取文件的最新版本 (9)3.3.13获取文件的早期版本 (10)3.3.14修改用户密码 (10)3.3.15打开/关闭数据库 (10)1.VSS概述版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。
在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。
Visual SourceSafe 是一种源代码控制系统,它提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能。
VSS通过将有关项目文档(包括文本文件、图象文件、二进制文件、声音文件、视屏文件)存入数据库进行项目研发管理工作。
用户可以根据需要随时快速有效地共享文件。
文件一旦被添加进VSS,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,VSS也同样会将新的改动记录下来。
MX27 MDK1 V1 0 开发套件介绍

MX27 MDK1 V1.0 Morninghan Development Kit系统介绍Nov. 11, 2009辰汉公司介绍:辰汉电子(Morninghan)是一家专注于ARM平台软硬件研发的高科技公司,研究领域涵盖了ARM9、ARM11和Cotex A8,提供Wince和Linux两大OS阵营的底层软件开发。
致力于为消费类电子、汽车电子、医疗设备、工业控制等行业提供创新的嵌入式平台方案,开发最前沿和高性能的产品。
作为飞思卡尔全球设计者同盟成员(Alliance Member),辰汉电子是国内唯一一家跨越i.MX全系列产品的设计服务公司。
辰汉电子的特色是提供底层平台,帮助客户定制差异化产品。
是国内为数不多的具有debug芯片和debug操作系统,熟悉DDR TIMING等高端底层知识结构的设计服务公司。
辰汉电子能够提供产品定义、硬件设计、BSP开发、 OS移植、Midware移植,以及生产管理一条龙设计服务。
辰汉电子同时也是中国软件协会会员和中国嵌入式协会理事单位。
辰汉电子优质的技术团队:•我们的核心成员来自飞思卡尔半导体,有八年以上ARM的开发经验,他们是全球最早从事ARM11平台开发的工程师,也是国内最资深的ARM平台开发工程师。
•核心工程师参与过的项目支持包括微软的ZUNE播放器,索尼的Skype Wifi Phone,福特的Car Infotainment System,英业达GPS,伟创力GPS,富士康Ebook, 三星Smart phone,联想Smart phone,宇龙 Smart Phone,TrinityV2IP,等等。
辰汉电子的合作伙伴:合作过的知名企业:ATA、诺亚舟、海信、海尔、TCL、好易通、快译通、中兴通讯、UT-斯达康、中国电信、中科九章、武汉钢铁、万利达、好帮手、三菱、飞利浦、西门子等等。
合作过的高校:清华大学、北京大学、北京理工大学、北京工业大学、哈尔滨工业大学、北京航空航天大学、上海交通大学、南京大学、东南大学、南京理工大学、国防科学技术大学、厦门大学、浙江大学、武汉大学、吉林大学、重庆大学、东北大学、宁波大学等等。
软件著作权-源代码范本

软件著作权-源代码范本注意事项:常见的源代码包含:C语言,VB,C++,JAVA,。
NET等。
提交的代码必须是源代码的开头载入程序,第30页必须断开,第60页是软件的程序结尾,代码中不得出现与申请表内容不符合的日期,著作权人,软件名字等,不能出现开源代码,不能出现任何版权纠纷.格式要求:一、源代码应提交前、后各连续30页,不足60页的,应当全部提交。
二、源代码页眉应标注软件的名称和版本号,应当与申请表中名称完全一致,页眉右上应标注页码,源代码每页不少于50行。
范例如下:#include <tybs/commandline.h〉#include <tybs/dir。
h>#include <tybs/entropy.h〉#include <tybs/file.h>#include 〈tybs/hash。
h>#include 〈tybs/os.h〉#include 〈tybs/platform。
h>#include <tybs/resource。
h>#include 〈tybs/stdio。
h>#include 〈tybs/string。
h>#include <tybs/task。
h>#include 〈tybs/timer。
h>#include 〈tybs/util。
h>#include <tybscc/result。
h>#include <dns/dispatch.h〉#include <dns/name.h〉#include <dns/result.h>#include <dns/view.h>#include 〈dst/result.h〉#define NS_MAIN 1#include 〈named/ns_smf_globals。
h〉#endif#ifdef DLZ#include <dlz/dlz_drivers。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<?phpsession_cache_limiter('none');session_start();//print_r($_SESSION);$path = "../libraries/";/** The configuration file.*/require_once $path."configuration.php";header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the pasttry {$currentUser = EfrontUser :: checkUserAccess();$smarty -> assign("T_CURRENT_USER", $currentUser);} catch (Exception $e) {if ($e -> getCode() == EfrontUserException :: USER_NOT_LOGGED_IN) {setcookie('c_request', htmlspecialchars_decode(http_build_query($_GET)), time() + 300, false, false, false, true);}eF_redirect("index.php?ctg=expired");exit;}if ($GLOBALS['currentTheme'] -> options['sidebar_interface']) {header("location:".$_SESSION['s_type'].".php".($_SERVER['QUERY_STRING'] ? "?".$_SERVER['QUERY_STRING'] : ''));//$smarty -> assign("T_SIDEBAR_URL", ""); // set an empty source for horizontal sidebars //$smarty -> assign("T_SIDEFRAME_WIDTH", 0);}$smarty -> assign("T_SIDEBAR_MODE", $GLOBALS['currentTheme'] -> options['sidebar_interface']); if ($GLOBALS['currentTheme'] -> options['sidebar_width']) {$smarty -> assign("T_SIDEFRAME_WIDTH", $GLOBALS['currentTheme'] -> options['sidebar_width']); } else {$smarty -> assign("T_SIDEFRAME_WIDTH", 175);}if (isset($_SESSION['previousSideUrl'])) {$smarty -> assign("T_SIDEBAR_URL", $_SESSION['previousSideUrl']);}if (isset($_GET['dashboard']) && $_SESSION['s_type'] == "administrator") {$smarty -> assign("T_MAIN_URL", $_SESSION['s_type'].".php?ctg=personal&user=". $_GET['dashboard']);} elseif (isset($_GET['dashboard']) || $_GET['ctg'] == 'personal') {$smarty -> assign("T_MAIN_URL", $_SESSION['s_type'].".php?ctg=personal");} elseif (isset($_GET['ctg']) || $_GET['ctg'] == 'landing_page') {$smarty -> assign("T_MAIN_URL", $_SESSION['s_type'].".php?ctg=landing_page");} else {if (isset($_SESSION['previousMainUrl'])) {$smarty -> assign("T_MAIN_URL", $_SESSION['previousMainUrl']);}}if (isset($_SESSION['s_type'])) {$smarty -> display($_SESSION['s_type']."page.tpl");} else {eF_redirect("index.php");}><?phpsession_cache_limiter('none');session_start();$path = "../libraries/";include_once $path."configuration.php";header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the pasttry {if (isset($_GET['login']) && $_SESSION['s_login']) {$currentUser = EfrontUserFactory::factory($_SESSION['s_login']);$additionalAccounts = unserialize($currentUser -> user['additional_accounts']);if (in_array($_GET['login'], $additionalAccounts)) {$newUser = EfrontUserFactory::factory($_GET['login']);$lessonID = $_SESSION['s_lessons_ID'];$courseID = $_SESSION['s_courses_ID'];$currentUser -> logout(session_id());$newUser -> login($newUser -> user['password'], true);if ($_SESSION['s_type'] != 'administrator' && $lessonID) {if ($courseID) {setcookie('c_request',$_SESSION['s_type'].'.php?lessons_ID='.$lessonID."&from_course=".$courseID, time() + 300, false, false, false, true);} else {setcookie('c_request', $_SESSION['s_type'].'.php?lessons_ID='.$lessonID, time() + 300);}}unset($_SESSION['referer']);$redirectPage = $GLOBALS['configuration']['login_redirect_page'];if ($redirectPage == "user_dashboard" && $newUser -> user['user_type'] != "administrator") { echo 'userpage.php?ctg=personal';}elseif (strpos($redirectPage, "module") !== false) {echo 'userpage.php?ctg=landing_page';} else {echo 'userpage.php';}}}} catch (Exception $e) {handleAjaxExceptions($e);}><?phpsession_cache_limiter('none');session_start();$path = "../libraries/";include_once $path."configuration.php";header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the pasttry {$languages = EfrontSystem::getLanguages(true);if (isset($_GET['lessons_ID']) && eF_checkParameter($_GET['lessons_ID'], 'id')) {$lesson = new EfrontLesson($_GET['lessons_ID']);$lessonInformation = $lesson -> getInformation();//$lessonInformation['language'] = $languages[$lesson -> lesson['languages_NAME']];if ($lessonInformation['professors']) {foreach ($lessonInformation['professors'] as $value) {$professorsString[] = formatLogin($value['login']);}$lessonInformation['professors'] = implode(", ", $professorsString);}$lesson -> lesson['price'] ? $priceString = formatPrice($lesson -> lesson['price'], array($lesson -> options['recurring'], $lesson -> options['recurring_duration']), true) : $priceString = false; $lessonInformation['price_string'] = $priceString;// if (!$lessonInformation['price']) {// unset($lessonInformation['price_string']);// }try {if ($_GET['from_course'] && eF_checkParameter($_GET['from_course'], 'id')) {$course = new EfrontCourse($_GET['from_course']);$schedule = $course -> getLessonScheduleInCourse($lesson);$lessonInformation['from_timestamp'] = $schedule['start_date'];$lessonInformation['to_timestamp'] = $schedule['end_date'];}} catch (Exception $e) {};if ($lesson -> lesson['course_only']) {$lessonCourses = $lesson -> getCourses();if (!empty($lessonCourses)) {foreach ($lessonCourses as $value) {$lessonInformation['lesson_courses'][] = $value['name'];}$lessonInformation['lesson_courses'] = implode(", ", $lessonInformation['lesson_courses']); }}foreach ($lessonInformation as $key => $value) {if ($value) {$value = str_replace ("\n","<br />", $value);switch ($key) {case 'language' : $GLOBALS['configuration']['onelanguage'] OR $tooltipInfo[] = '<div class = "infoEntry"><span>'._LANGUAGE."</span><span>: $languages[$value]</span></div>"; break;case 'professors' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._PROFESSORS."</span><span>: $value</span></div>"; break;case 'content' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._CONTENTUNITS."</span><span>: $value</span></div>"; break;case 'tests' : $GLOBALS['configuration']['disable_tests'] != 1 ? $tooltipInfo[] = '<div class = "infoEntry"><span>'._TESTS."</span><span>: $value</span></div>" : null; break;case 'projects' : $GLOBALS['configuration']['disable_projects'] != 1 ? $tooltipInfo[] = '<divclass = "infoEntry"><span>'._PROJECTS."</span><span>: $value</span></div>" : null; break;case 'course_dependency' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._DEPENDSON."</span><span>: $value</span></div>"; break;case 'from_timestamp' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._AVAILABLEFROM."</span><span>: ".formatTimestamp($value, 'time_nosec')."</span></div>";break;case 'to_timestamp' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._AVAILABLEUNTIL."</span><span>: ".formatTimestamp($value, 'time_nosec')."</span></div>"; break;case 'general_description': $tooltipInfo[] = '<div class = "infoEntry"><span>'._DESCRIPTION."</span><span>: $value</span></div>"; break;case 'assessment' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._ASSESSMENT."</span><span>: $value</span></div>"; break;case 'objectives' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._OBJECTIVES."</span><span>: $value</span></div>"; break;case 'lesson_topics' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._LESSONTOPICS."</span><span>: $value</span></div>"; break;case 'resources' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._RESOURCES."</span><span>: $value</span></div>"; break;case 'other_info' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._OTHERINFO."</span><span>: $value</span></div>"; break;case 'price_string' : !$lesson -> lesson['course_only'] ? $tooltipInfo[] = '<div class = "infoEntry"><span>'._PRICE."</span><span>: $value</span></div>" : null; break;case 'lesson_courses' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._PARTOFCOURSES."</span><span>: $value</span></div>"; break;default: break;}}}if ($string = implode("", $tooltipInfo)) {echo '<html '.($GLOBALS['rtl'] ? 'dir = "rtl"' : '').' >'.$string.'</html>';} else {echo _NODATAFOUND;}}if (isset($_GET['courses_ID']) && eF_checkParameter($_GET['courses_ID'], 'id')) {$course = new EfrontCourse($_GET['courses_ID']);$courseInformation = $course -> getInformation();if ($courseInformation['professors']) {foreach ($courseInformation['professors'] as $value) {$professorsString[] = formatLogin($value['login']);}$courseInformation['professors'] = implode(", ", $professorsString);}$course -> course['price'] ? $priceString = formatPrice($course -> course['price'], array($course -> options['recurring'], $course -> options['recurring_duration']), true) : $priceString = false; $courseInformation['price_string'] = $priceString;foreach ($courseInformation as $key => $value) {if ($value) {$value = str_replace ("\n","<br />", $value);switch ($key) {case 'language' : $GLOBALS['configuration']['onelanguage'] OR $tooltipInfo[] = '<div class = "infoEntry"><span>'._LANGUAGE."</span><span>: $languages[$value]</span></div>"; break;case 'professors' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._PROFESSORS."</span><span>: $value</span></div>"; break;case 'lessons_number' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._LESSONS."</span><span>: $value</span></div>"; break;case 'instances' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._COURSEINSTANCES."</span><span>: $value</span></div>"; break;case 'general_description': $tooltipInfo[] = '<div class = "infoEntry"><span>'._DESCRIPTION."</span><span>: $value</span></div>"; break;case 'assessment' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._ASSESSMENT."</span><span>: $value</span></div>"; break;case 'objectives' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._OBJECTIVES."</span><span>: $value</span></div>"; break;case 'lesson_topics' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._COURSETOPICS."</span><span>: $value</span></div>"; break;case 'resources' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._RESOURCES."</span><span>: $value</span></div>"; break;case 'other_info' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._OTHERINFO."</span><span>: $value</span></div>"; break;case 'price_string' : $tooltipInfo[] = '<div class = "infoEntry"><span>'._PRICE."</span><span>: $value</span></div>"; break;default: break;}}}if ($course -> course['depends_on']) {try {$dependsOn = new EfrontCourse($course -> course['depends_on']);$tooltipInfo[] = '<div class = "infoEntry"><span>'._DEPENDSON."</span><span>:".$dependsOn->course['name']."</span></div>";} catch (Exception $e) {}}if ($string = implode("", $tooltipInfo)) {echo $string;} else {echo _NODATAFOUND;}}// For eFront socialif (isset($_GET['common_lessons']) && isset($_GET['user1']) && isset($_GET['user2']) && eF_checkParameter($_GET['user1'], 'login') && eF_checkParameter($_GET['user2'], 'login')) {$user1 = EfrontUserFactory::factory($_GET['user1']);if ($user1->getType() != "administrator") {$common_lessons = $user1 -> getCommonLessons($_GET['user2']);// pr($common_lessons);foreach ($common_lessons as $id => $lesson) {if (strlen($lesson['name'])>25) {$lesson['name'] = substr($lesson['name'],0,22) . "...";}$tooltipInfo[] = '<div class = "infoEntry"><span>'.$lesson['name']."</span><span></span></div>";}if ($string = implode("", $tooltipInfo)) {echo $string;} else {echo _NODATAFOUND;}} else {echo _NODATAFOUND;}}} catch (Exception $e) {echo ($e -> getMessage().' ('.$e -> getCode().')'); //No ajax error handling here, since we want the info to appear in the popup}><?php/*** Respond to ajax query returing a list** @package eFront*/session_cache_limiter('none');session_start();header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past$path = "../libraries/";/** Configuration file.*/include_once $path."configuration.php";try {$currentUser = EfrontUser :: checkUserAccess();} catch (Exception $e) {echo "<script>parent.location = 'index.php?logout=true&message=".urlencode($e -> getMessage().' ('.$e -> getCode().')')."&message_type=failure'</script>"; //This way the frameset will revert back to single frame, and the annoying effect of 2 index.php, one in each frame, will not happenexit;}eF_checkParameter($_POST['preffix'], 'text') OR $_POST['preffix'] = '%';switch ($_GET['ask_type']) {case 'users': askUsers(); break;case 'tests': askTests(); break;case 'feedback': askFeedback(); break;case 'projects': askProjects(); break;case 'lesson': case 'lessons': askLessons(); break;case 'group' : case 'groups': askGroups(); break;case 'course': case 'courses': askCourses(); break;case 'branch': case 'branches': askBranches(); break;case 'skill': case 'skills': askSkills(); break;default: break;}function highlightSearch($search_results, $search_criteria, $bgcolor='Yellow'){$start_tag = '<span style="vertical-align:top;background-color: '.$bgcolor.'">';$end_tag = '</span>';$search_results = str_ireplace($search_criteria, $start_tag . $search_criteria . $end_tag, $search_results);return $search_results;}function askUsers() {// $_POST['preffix'] = "%"; // Useful for debuggingif (isset($_POST['preffix'])) {if (mb_strpos($_POST['preffix'], ";") === false) {$user = $_POST['preffix'];} else {$user = mb_substr(strrchr($_POST['preffix'], ";"), 1);}}//pr($_SESSION);$users = array();if (isset($user) && $user) {$preffix = $user;// Return active users for statistics:// - admins: all// - supervisors: all supervised (in Enterprise)// - professors: studentsif (isset($_GET['supervisors'])) {$users = eF_getTableData("users u, module_hcd_employee_works_at_branch wb", "distinct u.login,,u.surname,er_type,er_types_ID", "u.login=ers_LOGIN and wb.supervisor=1 and u.active = 1 and (login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%' OR user_type like '$preffix%')", "login");} elseif (!isset($_GET['messaging'])) {if ($_SESSION['s_type'] == "administrator") {$users = eF_getTableData("users", "login,name,surname,user_type,user_types_ID", "active = 1 and (login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%' OR user_type like '$preffix%')", "login");} else {// Get students of professor$user = EfrontUserFactory :: factory($_SESSION['s_login']);$students = $user -> getProfessorStudents();$logins = array();$size = sizeof($students);for ($i = 0; $i < $size; $i++) {if (!in_array($students[$i], $logins)){$logins[] = $students[$i];}}$logins[] = $_SESSION['s_login'];//pr($logins);$students_list = "'".implode("','", $logins)."'";$users = eF_getTableData("users", "login,name,surname,user_type,user_types_ID", "login IN ($students_list) AND (login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%' OR user_type like '$preffix%')", "login");}// Return active users for messaging:// - admins: all// - supervisors: all// - users: other users with common group, lesson, course (or branch in Enterprise)} else {if ($_SESSION['s_type'] == "administrator") {$users = eF_getTableData("users", "login,name,surname,user_type,user_types_ID", "active = 1 and (login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%')", "login");$users[] = array('login' => "[*]",'name' => _ALLUSERS, 'surname' => _ALLUSERS);} else {$currentUser = EfrontUserFactory::factory($_SESSION['s_login']);$grant_full_access = false;if (!$grant_full_access) { // Used for correct handling in Enterprise and non-Enterprise editions$myGroupsIds = array_keys($currentUser -> getGroups());//echo "Groups<BR><BR><BR>";pr($myGroupsIds);if (!empty($myGroupsIds)) {$result = eF_getTableDataFlat("users JOIN users_to_groups", "distinct users_LOGIN", "users.active = 1 and users.login = users_to_ers_LOGIN AND groups_ID IN ('" . implode("','", $myGroupsIds) ."')");$logins = $result['users_LOGIN'];}$myLessonsIds = array_keys($currentUser -> getLessons());//pr($result);echo "Lessons<BR><BR><BR>";pr($myLessonsIds);if (!empty($myLessonsIds)) {$result = eF_getTableDataFlat("users JOIN users_to_lessons", "distinct users_LOGIN", "users.active = 1 and users.archive=0 and users_to_lessons.archive=0 and users.login = users_to_ers_LOGIN AND lessons_ID IN ('" . implode("','", $myLessonsIds) ."')");$logins = array();foreach($result['users_LOGIN'] as $login) {if (!in_array($login, $logins)){$logins[] = $login;}}}$myCoursesIds = eF_getTableDataFlat("users_to_courses", "courses_ID", "archive = 0 andusers_LOGIN = '". $currentUser -> user['login']."'");$myCoursesIds = $myCoursesIds['courses_ID'];//echo "Courses<BR><BR><BR>";pr($myCoursesIds);if (!empty($myCoursesIds)) {$result = eF_getTableDataFlat("users JOIN users_to_courses", "distinct users_LOGIN", "users.active = 1 and users.login = users_to_ers_LOGIN AND users.archive=0 and users_to_courses.archive=0 AND courses_ID IN ('" . implode("','", $myCoursesIds) ."')");foreach($result['users_LOGIN'] as $login) {if (!in_array($login, $logins)){$logins[] = $login;}}}$related_users_list = "'".implode("','", $logins)."'";$users = eF_getTableData("users", "distinct login,name,surname,user_type,user_types_ID", "login IN (". $related_users_list . ") AND (login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%')", "login");} else {$users = eF_getTableData("users", "distinct login,name,surname,user_type,user_types_ID", "login like '$preffix%' OR name like '$preffix%' OR surname like '$preffix%'", "login");}}if($_SESSION['s_type'] == "professor"){$users[] = array('login' => "[*]",'name' => _MYSTUDENTS, 'surname' => _MYSTUDENTS, 'user_type' => '[*]');}//pr($users);}}$str = '<ul>';for ($k = 0; $k < sizeof($users); $k++){/*$hilogin = highlightSearch($users[$k]['login'], $preffix);$hiname = highlightSearch($users[$k]['name'], $preffix);$hisurname = highlightSearch($users[$k]['surname'], $preffix); */$hilogin = $users[$k]['login'];$hiname = $users[$k]['name'];$hisurname = $users[$k]['surname'];$hiusertype = $users[$k]['user_types_ID'] ? $users[$k]['user_types_ID'] : $users[$k]['user_type'];if ($users[$k]['login'] == '[*]') {$formattedLogins[$users[$k]['login']] = $hiname;} else {$formattedLogins[$users[$k]['login']] = formatLogin(false, array('login' => $hilogin, 'name' => $hiname, 'surname' => $hisurname, 'user_type' => $hiusertype));}//$str = $str.'<li id='.$users[$k]['login'].'>'.$formattedLogin.'</li>';}//changed for case that two users (without common appearance) returned but one of them have common appearance with a third user (#1741)if ($GLOBALS['configuration']['username_format_resolve']) {formatLogin($_SESSION['s_login']);foreach ($formattedLogins as $key => $value) {if (isset($GLOBALS['_usernames'][$key])) {$formattedLogins[$key] = $GLOBALS['_usernames'][$key];}}}for ($k = 0; $k < sizeof($users); $k++){$str = $str.'<li id='.$users[$k]['login'].'>'.$formattedLogins[$users[$k]['login']].'</li>'; }$str = $str.'</ul>';echo $str;}function askTests() {$preffix = $_POST['preffix'];$currentUser = EfrontUserFactory :: factory($_SESSION['s_login']);if ($_SESSION['s_type'] == "administrator"){$tests_info = eF_getTableDataFlat("tests t, lessons l, content c", "t.id, as test_name, as lesson_name, l.originating_course ","c.lessons_ID=l.id AND t.content_ID=c.id AND c.ctg_type='tests' AND t.active=1 and t.lessons_ID = l.id AND like '%$preffix%'", ""); $scorm_tests_info = eF_getTableDataFlat("content c, lessons l", "c.id, as test_name, as lesson_name, l.originating_course ","c.active=1 and c.lessons_ID = l.id AND like '%$preffix%' and c.ctg_type = 'scorm_test'", "");} else {$tests_info = eF_getTableDataFlat("tests t, users_to_lessons ul, lessons l", "t.id, as test_name, as lesson_name, l.originating_course ", "ul.archive=0 and (er_type = 'professor' OR er_type =".$currentUser->user['user_types_ID'].") AND t.active=1 and t.lessons_ID = l.id AND ers_LOGIN='".$_SESSION['s_login']."' and ul.lessons_ID=l.id AND like '%$preffix%'", "");$scorm_tests_info = eF_getTableDataFlat("content c, users_to_lessons ul, lessons l", "c.id, as test_name, as lesson_name, l.originating_course ", "ul.archive=0 and (er_type = 'professor' OR er_type =".$currentUser->user['user_types_ID'].") AND c.active=1 and c.lessons_ID = l.id AND ers_LOGIN='".$_SESSION['s_login']."' and ul.lessons_ID=l.id AND like '%$preffix%' and c.ctg_type = 'scorm_test'", "");$lessons = $currentUser -> getLessons(false,'professor'); //must return tests for lessons that he has a professor role$lessons = array_keys($lessons);if (!empty($lessons)) {$lessonsStr = implode(',', $lessons);$legalTests = eF_getTableDataFlat("tests t, content c","t.id","t.content_ID=c.id AND c.ctg_type!='feedback' AND t.lessons_ID IN ($lessonsStr)");$legalTestsId = $legalTests['id'];$legalScormTests = eF_getTableDataFlat("content","id","lessons_ID IN ($lessonsStr)");$legalScormTestsId = $legalScormTests['id'];}}$result = eF_getTableDataFlat("courses", "id, name");if (!empty($result)) {$courseNames = array_combine($result['id'], $result['name']);} else {$courseNames = array();}$info_array = array();for ($i = 0 ; $i < sizeof($tests_info['test_name']) ; $i ++){$hiname = highlightSearch($tests_info['test_name'][$i], $preffix);$path_string = $tests_info['lesson_name'][$i]." » ".$hiname;if ($courseNames[$tests_info['originating_course'][$i]]) {$path_string = $courseNames[$tests_info['originating_course'][$i]].' » '.$path_string;}if (empty($legalTestsId) || in_array($tests_info['id'][$i], $legalTestsId)) {$info_array[] = array('id' => $tests_info['id'][$i],'name' => $tests_info['test_name'][$i],'path_string' =>$path_string);}}for ($i = 0 ; $i < sizeof($scorm_tests_info['test_name']) ; $i ++){$hiname = highlightSearch($scorm_tests_info['test_name'][$i], $preffix);$path_string = $scorm_tests_info['lesson_name'][$i]." » ".$hiname;if ($courseNames[$scorm_tests_info['originating_course'][$i]]) {$path_string = $courseNames[$scorm_tests_info['originating_course'][$i]].' » '.$path_string; }if (empty($legalScormTestsId) || in_array($scorm_tests_info['id'][$i], $legalScormTestsId)) { $info_array[] = array('id' => $scorm_tests_info['id'][$i],'name' => $scorm_tests_info['test_name'][$i],'path_string' =>$path_string);}}。