| | Copyright: copyright (C) 2004 by Mike de Boer | | Description: zOOm Image Gallery, a multi-gallery component for | | Mambo based on RSGallery by Ronald Smit. It's the most | | feature-rich gallery component for Mambo! | | Filename: image.class.php | | Version: 2.1.4 | | | ----------------------------------------------------------------------- **/ // MOS Intruder Alerts defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); class image extends gallery{ var $_id = null; var $_name = null; var $_keywords = null; var $_filename = null; var $_descr = null; var $_date = null; var $_hits = null; var $_votenum = null; var $_votesum = null; var $_type = null; var $_thumbnail = null; var $_viewsize = null; var $_published = null; var $_catid = null; var $_uid = null; var $_sql = null; var $_result = null; var $_size = array(); var $_comments = array(); var $_members = array(); function image($image_id){ $this->_id = $image_id; } function getInfo(){ global $database, $mosConfig_absolute_path, $zoom; $database->setQuery("SELECT imgname, imgkeywords, imgfilename, imgdescr, date_format(imgdate, '%d-%m-%y, %h:%i') AS date, imghits, votenum, votesum, published, catid, uid, imgmembers FROM #__zoomfiles WHERE imgid=".mysql_escape_string($this->_id)); $this->_result = $database->query(); while($row = mysql_fetch_object($this->_result)){ $this->_name = stripslashes($row->imgname); $this->_keywords = stripslashes($row->imgkeywords); $this->_filename = $row->imgfilename; $this->_descr = stripslashes($row->imgdescr); $this->_date = $row->date; $this->_hits = $row->imghits; $this->_votenum = $row->votenum; $this->_votesum = $row->votesum; $this->_published = $row->published; $this->_catid = $row->catid; $this->_uid = $row->uid; $members = explode(",", $row->imgmembers); // gallery-members of type 1 are of access-level 'public' // and members of type 2 are 'registered'. if(in_array("1", $members)) $this->_members[0] = 1; elseif(in_array("2", $members)) $this->_members[0] = 2; else $this->_members = $members; } $this->_type = ereg_replace(".*\.([^\.]*)$", "\\1", $this->_filename); $this->_type = strtolower($this->_type); $this->setThumbnail(); $this->_viewsize = $this->getViewsize(); // get comments of image... $this->getComments(); //$this->_size = getimagesize($zoom->_CONFIG['imagepath'].$dir."/".$this->_filename); } // function save() is to be implemented yet... function save($filename, $keywords, $name, $descr, $catid){ global $database; $uid = $this->_CurrUID; $database->setQuery("INSERT INTO #__zoomfiles (imgfilename,imgname, imgkeywords, imgdescr, imgdate, catid, uid, imgmembers) VALUES ('".mysql_escape_string($filename)."', '".mysql_escape_string($name)."', '".mysql_escape_string($keywords)."','".mysql_escape_string($descr)."', now(), '".mysql_escape_string($catid)."', '$uid', '1')"); if ($database->query()) { return true; }else{ return false; } } function delete(){ global $database, $mosConfig_absolute_path, $zoom; $file1 = $mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$zoom->_gallery->_dir."/".$this->_filename; if($zoom->isMovie($zoom->_gallery->_images[$key]->_type)) $filename2 = ereg_replace("(.*)\.([^\.]*)$", "\\1", $this->_filename).".jpg"; else $filename2 = $this->_filename; $file2 = $mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$zoom->_gallery->_dir."/thumbs/".$filename2; $file3 = $mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$zoom->_gallery->_dir."/viewsize/".$this->_filename; if ($zoom->_isBackend) { $index = "index2.php"; }else{ $index = "index.php"; } if(!isset($return)){ $loc = "$index?option=com_zoom&Itemid=$Itemid&catid=".$zoom->_gallery->_id."&PageNo=$PageNo"; }else{ $loc = "$index?option=com_zoom&Itemid=$Itemid&catid=".$zoom->_gallery->_id."&page=$return"; } if(fs_file_exists($file1)){ if(fs_unlink($file1)){ //If image is deleted, delete thumb (if it exists at all) if(fs_file_exists($file2) && !$zoom->isDocument($this->_type)){// Documents don't have thumbmnails... if(fs_unlink($file2)){ //If tumbnails is deleted, delete the viewsize image (if it exists at all) if (fs_file_exists($file3) && $zoom->isImage($this->_type)) {// Only images have viewsize version of themselves... if (!fs_unlink($file3)) { return false; } } }else{ return false; } }else{ return false; } }else{ return false; } }else{ return false; } //Delete record from mos_zoomfiles and comments from mos_zoom_comments $database->setQuery("DELETE FROM #__zoomfiles WHERE imgid=".mysql_escape_string($this->_id)); $database->query(); $database->setQuery("DELETE FROM #__zoom_comments WHERE imgid=".mysql_escape_string($this->_id)); $database->query(); // check if the image was a category image... $database->setQuery("SELECT catid FROM #__zoom WHERE catimg = ".mysql_escape_string($this->_id)." LIMIT 1"); $this->_result = $database->query(); if (mysql_num_rows($this->_result) > 0){ $row = mysql_fetch_object($this->_result); $database->setQuery("UPDATE #__zoom SET catimg = NULL WHERE catid = ".$row->catid); $database->query(); } return true; } function setThumbnail(){ global $mosConfig_live_site, $mosConfig_absolute_path, $zoom; if($zoom->isImage($this->_type)){ if(fs_file_exists($mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$this->getDir()."/thumbs/".$this->_filename)) $this->_thumbnail = $mosConfig_live_site."/".$zoom->_CONFIG['imagepath'].$this->getDir()."/thumbs/".$this->_filename; else $this->_thumbnail = $mosConfig_live_site."/components/com_zoom/images/filetypes/image.png"; }elseif($zoom->isDocument($this->_type)){ $this->_thumbnail = $mosConfig_live_site."/components/com_zoom/images/filetypes/document.png"; }elseif($zoom->isMovie($this->_type)){ if($zoom->isThumbnailable($this->_type)){ $file = ereg_replace("(.*)\.([^\.]*)$", "\\1", $this->_filename).".jpg"; if(fs_file_exists($mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$this->getDir()."/thumbs/".$file)) $this->_thumbnail = $mosConfig_live_site."/".$zoom->_CONFIG['imagepath'].$this->getDir()."/thumbs/".$file; else $this->_thumbnail = $mosConfig_live_site."/components/com_zoom/images/filetypes/video.png"; }else{ $this->_thumbnail = $mosConfig_live_site."/components/com_zoom/images/filetypes/video.png"; } } } function getViewsize(){ global $mosConfig_absolute_path, $zoom; if(fs_file_exists($mosConfig_absolute_path."/".$zoom->_CONFIG['imagepath'].$zoom->_gallery->_dir."/viewsize/".$this->_filename)){ $this->_viewsize = "viewsize/".$this->_filename; return $this->_viewsize; }else{ $this->_viewsize = $this->_filename; return $this->_filename; } } function isResized(){ if(strstr($this->_viewsize, 'viewsize/')){ return true; }else{ return false; } } function getComments(){ global $database; $this->_comments = null; $database->setQuery('SELECT cmtid FROM #__zoom_comments WHERE imgid = '.mysql_escape_string($this->_id).' ORDER BY cmtdate ASC'); $this->_result = $database->query(); while($row = mysql_fetch_object($this->_result)){ $comment = new comment($row->cmtid); $this->_comments[] = $comment; } } function setImgInfo($newname, $newkeywords,$newdescr,$catimg=0,$parentimg=0,$published=0,$selections=1){ global $database, $zoom; // replace space-character with 'air'...or nothing! $newkeywords = ereg_replace(" ", "", $newkeywords); $database->setQuery("UPDATE #__zoomfiles SET imgname = '".mysql_escape_string($newname)."', imgkeywords='".mysql_escape_string($newkeywords)."', imgdescr = '".mysql_escape_string($newdescr)."', published = '$published', imgmembers = '$selections' WHERE imgid=".mysql_escape_string($this->_id)); $database->query(); if (isset($catimg) && $catimg == 1){ // set new category image, override old one (if it ever existed)... $database->setQuery("UPDATE #__zoom SET catimg = ".mysql_escape_string($this->_id)." WHERE catid=".$zoom->_gallery->_id); $database->query(); }else{ // unset category image, old setting also overridden... $database->setQuery("UPDATE #__zoom SET catimg = NULL WHERE catid=".$zoom->_gallery->_id." AND catimg=".mysql_escape_string($this->_id)); $database->query(); } if (isset($parentimg) && $parentimg == 1){ // set new category image for parent-gallery, override old one (if it ever existed)... $database->setQuery("UPDATE #__zoom SET catimg = ".mysql_escape_string($this->_id)." WHERE catid=".$zoom->_gallery->_subcat_id); $database->query(); }else{ // unset category image of parent gallery, old setting also overridden... $database->setQuery("UPDATE #__zoom SET catimg = NULL WHERE catid=".$zoom->_gallery->_subcat_id." AND catimg=".mysql_escape_string($this->_id)); $database->query(); } } function hitPlus(){ global $database; $database->setQuery("UPDATE #__zoomfiles SET imghits=imghits+1 WHERE imgid=".mysql_escape_string($this->_id)); $database->query(); $this->_hits++; } function rateImg($vote){ global $database, $zoom; if(!$zoom->_EditMon->isEdited($this->_id, 'vote')){ $database->setQuery("UPDATE #__zoomfiles SET votesum=votesum+$vote, votenum=votenum+1 WHERE imgid=".mysql_escape_string($this->_id)); $database->query(); $zoom->_EditMon->setEditMon($this->_id, 'vote'); $this->_votesum = $this->_votesum + $vote; $this->_votenum++; echo ""; }else{ echo ""; } } function addComment($uname, $comment){ global $database, $zoom; if(!$zoom->_EditMon->isEdited($this->_id, 'comment')){ $uname = $zoom->cleanString($uname); $comment = $zoom->cleanString($comment); if(strlen($comment) > $zoom->_CONFIG['cmtLength']) $comment = substr($comment, 0, $zoom->_CONFIG['cmtLength']-4)."..."; $today = date("Y-m-d-H-i" ,time()); $database->setQuery("INSERT INTO #__zoom_comments (imgid,cmtname,cmtcontent,cmtdate) VALUES ('".mysql_escape_string($this->_id)."','".mysql_escape_string($uname)."','".mysql_escape_string($comment)."','$today')"); $database->query(); $zoom->_EditMon->setEditMon($this->_id, 'comment'); echo ""; }else{ echo ""; } // reload/ refill comments array... $this->getComments(); } function delComment($delComment){ global $database; $database->setQuery("DELETE FROM #__zoom_comments WHERE cmtid=".mysql_escape_string($delComment)); $database->query(); $this->getComments(); } function isParentImage($parent_id){ global $database; $database->setQuery("SELECT catid FROM #__zoom WHERE catimg=".mysql_escape_string($this->_id)); $this->_result = $database->query(); while ($cat = mysql_fetch_object($this->_result)){ if ($cat->catid == $parent_id) return true; } return false; } function isPublished(){ if($this->_published == 1) return true; else return false; } function getNumOfComments(){ return count($this->_comments); } function getDir(){ global $database; $database->setQuery("SELECT catdir FROM #__zoom WHERE catid=".$this->_catid); $this->_result = $database->query(); $row = mysql_fetch_object($this->_result); return $row->catdir; } function getKeywords($method = 1){ global $Itemid; // This function will return the list of keywords in two methods: // 1: plain list (comma seperated) of keywords. // 2: each keyword as hyperlink to the search-page...a search for // items matching that keyword will be conducted automatically. if($method == 1){ return $this->_keywords; }elseif($method == 2){ // used for display purposes only (media view)... $keywords = explode(",", $this->_keywords); $list = ""; $counter = 0; foreach($keywords as $keyword){ if($counter != 0) $list .= ", "; $list .= "".$keyword.""; $counter++; } return $list; } } function isMember($popup = false){ global $my, $zoom; $id = intval($my->id); if(in_array(1, $this->_members) || in_array(2, $this->_members) || in_array($id, $this->_members) || $zoom->_isAdmin || $popup == true) return true; else return false; } }