* @license GNU/GPL - See Dokeos license directory for details */ /** * Defines the "OpenofficePresentation" child of class "OpenofficeDocument" * @package dokeos.learnpath.OpenofficeDocument */ require_once('openoffice_document.class.php'); if (api_get_setting('search_enabled')=='true') { require_once(api_get_path(LIBRARY_PATH).'search/DokeosIndexer.class.php'); require_once(api_get_path(LIBRARY_PATH).'search/IndexableChunk.class.php'); require_once(api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php'); } class OpenofficePresentation extends OpenofficeDocument { public $take_slide_name; function OpenofficePresentation($take_slide_name=false, $course_code=null, $resource_id=null,$user_id=null) { $this -> take_slide_name = $take_slide_name; parent::OpenofficeDocument($course_code, $resource_id, $user_id); } function make_lp($files=array()) { global $_course; $previous = 0; $i = 0; if(!is_dir($this->base_work_dir.$this->created_dir)) return false; foreach($files as $file){ list($slide_name,$file_name,$slide_body) = explode('||',$file); // '||' is used as separator between fields: slide name (with accents) || file name (without accents) || all slide text (to be indexed) //filename is utf8 encoded, but when we decode, some chars are not translated (like quote ’). //so we remove these chars by translating it in htmlentities and the reconvert it in want charset // A note by Ivan Tcholakov, 05-MAY-2009: On my machine (Ubuntu 9.04) $slide_name is not utf8 encoded. // ---------------------------------------------------------------------------------------------------------- //$slide_name = htmlentities($slide_name,ENT_COMPAT,$this->original_charset); $slide_name = htmlentities($slide_name, ENT_COMPAT, 'ISO-8859-15'); $slide_name = str_replace('’','\'',$slide_name); //$slide_name = mb_convert_encoding($slide_name, api_get_setting('platform_charset'), $this->original_charset); $slide_name = mb_convert_encoding($slide_name, api_get_setting('platform_charset'), 'ISO-8859-15'); //$slide_name = html_entity_decode($slide_name); $slide_name = html_entity_decode($slide_name, ENT_QUOTES, api_get_setting('platform_charset')); // ---------------------------------------------------------------------------------------------------------- // if($this->take_slide_name === true) { $slide_name = str_replace('_',' ',$slide_name); $slide_name = ucfirst($slide_name); } else { $slide_name = 'slide'.str_repeat('0',2-strlen($i)).$i; } $i++; // add the png to documents $document_id = add_document($_course,$this->created_dir.'/'.urlencode($file_name),'file',filesize($this->base_work_dir.$this->created_dir.'/'.$file_name),$slide_name); api_item_property_update($_course,TOOL_DOCUMENT,$document_id,'DocumentAdded',api_get_user_id(),0,0); // Generating the thumbnail $image = $this->base_work_dir.$this->created_dir .'/'. $file_name; $pattern = '/(\w+)\.png$/'; $replacement = '${1}_thumb.png'; $thumb_name = preg_replace($pattern, $replacement, $file_name); // calculate thumbnail size list($width, $height) = getimagesize($image); $thumb_width = 300; $thumb_height = floor( $height * ($thumb_width / $width ) ); // load $thumb = imagecreatetruecolor($thumb_width, $thumb_height); $source = imagecreatefrompng($image); // resize imagecopyresized($thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); // output imagepng($thumb, $this->base_work_dir.$this->created_dir .'/'. $thumb_name); /* // new resizing method usign imagemagick $im = new Imagick( $image ); $im->thumbnailImage($thumb_width, $thumb_height); //file_put_contents($this->base_work_dir.$this->created_dir .'/'. $thumb_name,$im); $im->writeImage($this->base_work_dir.$this->created_dir .'/'. $thumb_name); */ // adding the thumbnail to documents $document_id_thumb = add_document($_course, $this->created_dir.'/'.urlencode($thumb_name), 'file', filesize($this->base_work_dir.$this->created_dir.'/'.$thumb_name), $slide_name); api_item_property_update($_course, TOOL_THUMBNAIL, $document_id_thumb,'DocumentAdded',api_get_user_id(),0,0); // create an html file $html_file = $file_name.'.html'; $fp = fopen($this->base_work_dir.$this->created_dir.'/'.$html_file, 'w+'); $slide_src = api_get_path(REL_COURSE_PATH).$_course['path'].'/document/'.$this->created_dir.'/'.utf8_encode($file_name); $slide_src = str_replace('//', '/', $slide_src); fwrite($fp, '