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

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

Generated on Fri Dec 13 2013 17:56:49 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1