• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

course/classes/class.ilCourseArchivesGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 
00034 class ilCourseArchivesGUI
00035 {
00036         var $container_obj;
00037         var $course_obj;
00038 
00039         var $tpl;
00040         var $ctrl;
00041         var $lng;
00042         var $tabs_gui;
00043 
00048         function ilCourseArchivesGUI(&$content_gui)
00049         {
00050                 global $tpl,$ilCtrl,$lng,$ilObjDataCache,$ilTabs;
00051 
00052                 $this->tpl =& $tpl;
00053                 $this->ctrl =& $ilCtrl;
00054                 $this->lng =& $lng;
00055                 $this->tabs_gui =& $ilTabs;
00056 
00057                 $this->content_gui =& $content_gui;
00058                 $this->content_obj =& $this->content_gui->object;
00059 
00060                 $this->__initCourseObject();
00061         }
00062 
00063                 
00064 
00065         function &executeCommand()
00066         {
00067                 $cmd = $this->ctrl->getCmd();
00068                 if (!$cmd = $this->ctrl->getCmd())
00069                 {
00070                         $cmd = "view";
00071                 }
00072                 $this->$cmd();
00073         }
00074 
00075         function view()
00076         {
00077                 global $ilAccess,$ilErr;
00078 
00079                 // MINIMUM ACCESS LEVEL = 'write'
00080                 if(!$ilAccess->checkAccess("read",'',$this->course_obj->getRefId()))
00081                 {
00082                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00083                 }
00084 
00085 
00086                 $this->is_tutor = $ilAccess->checkAccess('write','',$this->course_obj->getRefId());
00087                 $this->download_allowed = ($this->is_tutor or $this->course_obj->getArchiveType() == $this->course_obj->ARCHIVE_DOWNLOAD);
00088                 
00089                 $this->course_obj->initCourseArchiveObject();
00090                 $this->course_obj->archives_obj->initCourseFilesObject();
00091                 
00092 
00093                 $archives = $this->is_tutor ? 
00094                         $this->course_obj->archives_obj->getArchives() :
00095                         $this->course_obj->archives_obj->getPublicArchives();
00096 
00097                 require_once("classes/class.ilTableGUI.php");
00098                 $tbl = new ilTableGUI();
00099 
00100                 $this->__showArchivesMenu();
00101                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00102                 $this->tpl->addBlockfile("TBL_CONTENT","tbl_content","tpl.crs_archives_row.html",'course');
00103                 
00104                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00105                 
00106                 $tbl->setTitle($this->lng->txt("crs_header_archives"));
00107 
00108 
00109                 if($this->download_allowed or $this->is_tutor)
00110                 {
00111                         $header_names = array('',
00112                                                                   $this->lng->txt("type"),
00113                                                                   $this->lng->txt("crs_file_name"),
00114                                                                   $this->lng->txt("crs_size"),
00115                                                                   $this->lng->txt("crs_create_date"),
00116                                                                   $this->lng->txt("crs_archive_lang"));
00117 
00118                         $header_vars = array("",
00119                                                                  "type",
00120                                                                  "name",
00121                                                                  "size",
00122                                                                  "date",
00123                                                                  "lang");
00124                         $column_width = array("1%","9%","30%","20%","20%","20%");
00125                         $this->tpl->setVariable("COLUMN_COUNTS",6);
00126                 }
00127                 else
00128                 {
00129                         $header_names = array($this->lng->txt("type"),
00130                                                                   $this->lng->txt("crs_file_name"),
00131                                                                   $this->lng->txt("crs_create_date"),
00132                                                                   $this->lng->txt("crs_size"),
00133                                                                   $this->lng->txt("crs_archive_lang"));
00134                         
00135                         $header_vars = array("type",
00136                                                                  "name",
00137                                                                  "date",
00138                                                                  "size",
00139                                                                  "lang");
00140                         $column_width = array("10%","30%","20%","20%","20%");
00141                         $this->tpl->setVariable("COLUMN_COUNTS",5);
00142                 }
00143                 
00144                 $tbl->setHeaderNames($header_names);
00145                 $tbl->setHeaderVars($header_vars,
00146                                                         array("ref_id" => $this->course_obj->getRefId(),
00147                                                                   "cmd" => "view",
00148                                                                   "cmdClass" => strtolower(get_class($this))));
00149                 $tbl->setColumnWidth($column_width);
00150 
00151 
00152                 // control
00153                 $tbl->setOrderColumn($_GET["sort_by"]);
00154                 $tbl->setOrderDirection($_GET["sort_order"]);
00155                 $tbl->setLimit($_GET["limit"]);
00156                 $tbl->setOffset($_GET["offset"]);
00157                 $tbl->disable("sort");
00158 
00159                 if($this->download_allowed)
00160                 {
00161                         $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00162                         if($this->is_tutor)
00163                         {
00164                                 // delete
00165                                 $this->tpl->setCurrentBlock("tbl_action_btn");
00166                                 $this->tpl->setVariable("BTN_NAME", "confirmDeleteArchives");
00167                                 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
00168                                 $this->tpl->parseCurrentBlock();
00169                         }
00170                         
00171                         // download
00172                         $this->tpl->setCurrentBlock("tbl_action_btn");
00173                         $this->tpl->setVariable("BTN_NAME", "downloadArchives");
00174                         $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
00175                         $this->tpl->parseCurrentBlock();
00176                 }
00177 
00178                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00179                 $tbl->setMaxCount(count($archives));
00180                 $archives = array_slice($archives,$_GET['offset'],$_GET['limit']);
00181                 $tbl->render();
00182 
00183                 if(!count($archives))
00184                 {
00185                         $this->tpl->setCurrentBlock("notfound");
00186                         $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
00187                         $this->tpl->setVariable("NUM_COLS",6);
00188                         $this->tpl->parseCurrentBlock();
00189                 }
00190 
00191 
00192                 $counter = 0;
00193                 foreach($archives as $archive_data)
00194                 {
00195                         $this->tpl->setCurrentBlock("tbl_content");
00196                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor($counter++,'tblrow1','tblrow2'));
00197 
00198 
00199                         if($this->download_allowed)
00200                         {
00201                                 $this->tpl->setVariable("VAL_CHECK",ilUtil::formCheckbox(0,"archives[]",$archive_data['archive_id']));
00202                         }
00203                         // Type
00204                         switch($archive_data["archive_type"])
00205                         {
00206                                 case $this->course_obj->archives_obj->ARCHIVE_XML:
00207                                         $type = $this->lng->txt("crs_xml");
00208                                         break;
00209 
00210                                 case $this->course_obj->archives_obj->ARCHIVE_HTML:
00211                                         $type = $this->lng->txt("crs_html");
00212                                         break;
00213 
00214                                 case $this->course_obj->archives_obj->ARCHIVE_PDF:
00215                                         $type = $this->lng->txt("crs_pdf");
00216                                         break;
00217                         }
00218                         $this->tpl->setVariable("VAL_TYPE",$type);
00219 
00220                         // Name
00221                         if($archive_data['archive_type'] == $this->course_obj->archives_obj->ARCHIVE_HTML)
00222                         {
00223                                 $link = '<a href="'.$this->course_obj->archives_obj->course_files_obj->getOnlineLink($archive_data['archive_name']).'"'.
00224                                         ' target="_blank">'.$archive_data["archive_name"].'</a>';
00225                         }
00226                         else
00227                         {
00228                                 $link = $archive_data['archive_name'];
00229                         }
00230 
00231                         $this->tpl->setVariable("VAL_NAME",$link);
00232                         $this->tpl->setVariable("VAL_SIZE",$archive_data['archive_size']);
00233                         $this->tpl->setVariable("VAL_DATE",ilFormat::formatUnixTime($archive_data['archive_name'],true));
00234                         if($archive_data["archive_lang"])
00235                         {
00236                                 $this->tpl->setVariable("VAL_LANG",$this->lng->txt('lang_'.$archive_data["archive_lang"]));
00237                         }
00238                         else
00239                         {
00240                                 $this->tpl->setVariable("VAL_LANG",$this->lng->txt('crs_not_available'));
00241                         }
00242                         $this->tpl->parseCurrentBlock();
00243                 }
00244                 $this->tpl->parseCurrentBlock();
00245         }
00246 
00247 
00248         function confirmDeleteArchives()
00249         {
00250                 global $ilAccess,$ilErr;
00251 
00252                 // MINIMUM ACCESS LEVEL = 'write'
00253                 if(!$ilAccess->checkAccess("write",'',$this->course_obj->getRefId()))
00254                 {
00255                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00256                 }
00257 
00258                 if(!$_POST['archives'])
00259                 {
00260                         sendInfo($this->lng->txt("crs_no_archives_selected"));
00261                         $this->view();
00262                         return false;
00263                 }
00264                 $_SESSION["crs_archives"] = $_POST["archives"];
00265                 sendInfo($this->lng->txt("crs_sure_delete_selected_archives"));
00266                 
00267                 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.crs_confirm_delete_archives.html','course');
00268                 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00269                 $this->tpl->setVariable("TXT_ARCHIVE_NAME",$this->lng->txt('crs_file_name'));
00270 
00271                 $this->course_obj->initCourseArchiveObject();
00272                 $counter = 0;
00273 
00274                 foreach($_POST['archives'] as $archive_id)
00275                 {
00276                         $archive = $this->course_obj->archives_obj->getArchive($archive_id);
00277                         $this->tpl->setCurrentBlock("archives");
00278 
00279                         $this->tpl->setVariable("ARCHIVE_NAME",$archive['archive_name']);
00280                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor($counter++,'tblrow1','tblrow2'));
00281                         $this->tpl->parseCurrentBlock();
00282                 }
00283                 
00284                 $this->tpl->setVariable("DELETE",$this->lng->txt('delete'));
00285                 $this->tpl->setVariable("CANCEL",$this->lng->txt('cancel'));
00286 
00287                 return true;
00288         }
00289 
00290         function delete()
00291         {
00292                 global $ilAccess,$ilErr;
00293 
00294                 // MINIMUM ACCESS LEVEL = 'write'
00295                 if(!$ilAccess->checkAccess("write",'',$this->course_obj->getRefId()))
00296                 {
00297                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00298                 }
00299 
00300                 if(!$_SESSION['crs_archives'])
00301                 {
00302                         sendInfo($this->lng->txt("crs_no_archives_selected"));
00303                         $this->view();
00304                 }
00305                 
00306                 $this->course_obj->initCourseArchiveObject();
00307                 foreach($_SESSION['crs_archives'] as $archive_id)
00308                 {
00309                         $this->course_obj->archives_obj->delete($archive_id);
00310                 }
00311                 
00312                 sendInfo($this->lng->txt('crs_archives_deleted'));
00313                 unset($_SESSION["crs_archives"]);
00314 
00315                 $this->view();
00316                 return true;
00317         }
00318 
00319         function addXMLArchive()
00320         {
00321                 global $ilAccess;
00322 
00323                 // MINIMUM ACCESS LEVEL = 'write'
00324                 if(!$ilAccess->checkAccess("write",'',$this->course_obj->getRefId()))
00325                 {
00326                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00327                 }
00328 
00329                 $this->course_obj->initCourseArchiveObject();
00330                 $this->course_obj->archives_obj->addXML();
00331                 
00332                 sendInfo($this->lng->txt("crs_added_new_archive"));
00333                 $this->view();
00334 
00335                 return true;
00336         }
00337 
00338         function selectArchiveLanguage()
00339         {
00340                 global $ilAccess;
00341 
00342                 // MINIMUM ACCESS LEVEL = 'write'
00343                 if(!$ilAccess->checkAccess("write",'',$this->course_obj->getRefId()))
00344                 {
00345                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00346                 }
00347 
00348                 foreach($this->lng->getInstalledLanguages() as $lang_code)
00349                 {
00350                         $actions["$lang_code"] = $this->lng->txt('lang_'.$lang_code);
00351 
00352                         if($this->lng->getLangKey() == $lang_code)
00353                         {
00354                                 $selected = $lang_code;
00355                         }
00356                 }
00357 
00358                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_selectLanguage.html","course");
00359 
00360                 $this->tpl->setVariable("LANGUAGE_SELECTION",$this->lng->txt('crs_archive_language_selection'));
00361                 $this->tpl->setVariable("LANGUAGE",$this->lng->txt('obj_lng'));
00362                 $this->tpl->setVariable("INFO_TXT",$this->lng->txt('crs_select_archive_language'));
00363                 $this->tpl->setVariable("SELECT_FORMACTION",$this->ctrl->getFormAction($this));
00364                 $this->tpl->setVariable("LANG_SELECTOR",ilUtil::formSelect($selected,'lang',$actions,false,true));
00365                 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt('cancel'));
00366                 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt('crs_add_html_archive'));
00367 
00368                 return true;
00369         }
00370 
00371         function addHTMLArchive()
00372         {
00373                 global $ilAccess;
00374 
00375                 // MINIMUM ACCESS LEVEL = 'write'
00376                 if(!$ilAccess->checkAccess("write",'',$this->course_obj->getRefId()))
00377                 {
00378                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00379                 }
00380                 
00381                 $this->course_obj->initCourseArchiveObject();
00382                 $this->course_obj->archives_obj->setLanguage($_POST['lang']);
00383                 $this->course_obj->archives_obj->addHTML();
00384 
00385                 sendInfo($this->lng->txt("crs_added_new_archive"));
00386                 $this->view();
00387 
00388                 return true;
00389         }
00390 
00391         function downloadArchives()
00392         {
00393                 global $ilAccess;
00394 
00395                 // MINIMUM ACCESS LEVEL = 'write'
00396                 if(!$ilAccess->checkAccess("read",'',$this->course_obj->getRefId()))
00397                 {
00398                         $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->MESSAGE);
00399                 }
00400 
00401                 $_POST["archives"] = $_POST["archives"] ? $_POST["archives"] : array();
00402 
00403                 if(!count($_POST['archives']))
00404                 {
00405                         sendInfo($this->lng->txt('crs_no_archive_selected'));
00406                         $this->view();
00407 
00408                         return false;
00409                 }
00410                 if(count($_POST['archives']) > 1)
00411                 {
00412                         sendInfo($this->lng->txt('crs_select_one_archive'));
00413                         $this->view();
00414 
00415                         return false;
00416                 }
00417 
00418                 $this->course_obj->initCourseArchiveObject();
00419                 
00420                 $abs_path = $this->course_obj->archives_obj->getArchiveFile((int) $_POST['archives'][0]);
00421                 $basename = basename($abs_path);
00422 
00423                 ilUtil::deliverFile($abs_path,$basename);
00424         }
00425                 
00426 
00427         function __showArchivesMenu()
00428         {
00429                 if(!$this->is_tutor)
00430                 {
00431                         return false;
00432                 }
00433                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00434 
00435                 // create xml archive button
00436                 $this->tpl->setCurrentBlock("btn_cell");
00437                 $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "addXMLArchive"));
00438                 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("crs_add_archive_xml"));
00439                 $this->tpl->parseCurrentBlock();
00440 
00441                 $this->tpl->setCurrentBlock("btn_cell");
00442                 $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "selectArchiveLanguage"));
00443                 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("crs_add_archive_html"));
00444                 $this->tpl->parseCurrentBlock();
00445                 
00446                 return true;
00447         }
00448 
00449         function __initCourseObject()
00450         {
00451                 global $tree;
00452 
00453                 if($this->content_obj->getType() == 'crs')
00454                 {
00455                         // Container is course
00456                         $this->course_obj =& $this->content_obj;
00457                 }
00458                 else
00459                 {
00460                         $course_ref_id = $tree->checkForParentType($this->content_obj->getRefId(),'crs');
00461                         $this->course_obj =& ilObjectFactory::getInstanceByRefId($course_ref_id);
00462                 }
00463                 return true;
00464         }
00465 
00466         
00467 } // END class.ilCourseArchivesGUI
00468 ?>

Generated on Fri Dec 13 2013 13:52:10 for ILIAS Release_3_7_x_branch .rev 46817 by  doxygen 1.7.1