/** * Perfoms manipulation * * @param string $from * @param string $to * @param string $options * @return void */ public function manipulate($from, $to, $options) { if (false === class_exists('Thumbnail')) { throw new Yag_Manipulator_Adapter_Exception('Class Thumbnail could not be loaded'); } if (!isset($options['geometry'])) { throw new Yag_Manipulator_Adapter_Exception('Thumbnail requires the \'geometry\' option to be set'); } $matches = array(); preg_match('/(c)?([0-9]+)x([0-9]+)/', $options['geometry'], $matches); $crop = empty($matches[1]) ? false : true; $width = $matches[2]; $height = $matches[3]; if (empty($matches[2])) { throw new Yag_Manipulator_Adapter_Exception('Invalid geometry pattern \'' . $options['geometry'] . '\''); } if (empty($matches[3])) { throw new Yag_Manipulator_Adapter_Exception('Invalid geometry pattern \'' . $options['geometry'] . '\''); } $thumbnail = new Thumbnail($from); // TODO: Fix error handling around this... $quality = 80; if (false == $crop) { $thumbnail->resize($width, $height); $quality = 100; } else { if ($width == $height) { // Well works for now... the crop for ImageTransform is a bit better // but who cares? $thumbnail->cropFromCenter($width); } else { $thumbnail->crop(0, 0, $width, $height); } } $thumbnail->save($to, $quality); }
/** * Save editted video details */ function saveVideoInfo() { global $Itemid, $mainframe; $db = & JFactory::getDBO(); $my = & JFactory::getUser(); $c = hwd_vs_Config::get_instance(); $app = & JFactory::getApplication(); $row = new hwdvids_video($db); $uid = JRequest::getInt( 'owner', 0, 'post' ); $rowid = JRequest::getInt( 'id', 0, 'post' ); $referrer = JRequest::getVar( 'referrer', JURI::root( true ) . '/index.php?option=com_hwdvideoshare&Itemid='.$Itemid ); // check component access settings and deny those without privileges if (!hwd_vs_access::allowAccess( $c->gtree_mdrt, $c->gtree_mdrt_child, hwd_vs_access::userGID( $my->id ))) { if ($my->id == $uid) { if ($my->id == "0") { $app->enqueueMessage(_HWDVIDS_ALERT_NOPERM); $app->redirect( $referrer ); } if ($c->allowvidedit == "0") { $app->enqueueMessage(_HWDVIDS_ALERT_NOPERM); $app->redirect( $referrer ); } // continue } else { $app->enqueueMessage(_HWDVIDS_ALERT_NOPERM); $app->redirect( $referrer ); } } $row->load( $rowid ); $old_category = $row->category_id; $file_name_org = $_FILES['thumbnail_file']['name']; $file_ext = substr($file_name_org, strrpos($file_name_org, '.') + 1); $thumbnail = ''; if ($_FILES['thumbnail_file']['tmp_name'] !== "") { if ($row->video_type == "local" || $row->video_type == "swf" || $row->video_type == "mp4") { $videocode = $row->video_id; $thumbnail = $file_ext; } else { $videocode = "tp-".$row->id; $thumbnail = "tp-".$row->id.".".$file_ext; } $base_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS; $upload_result = hwd_vs_tools::uploadFile("thumbnail_file", $videocode, $base_Dir, 2, "jpg,jpeg", 1); if ($upload_result[0] == "0") { $msg = $upload_result[1]; $app->enqueueMessage($msg); $app->redirect( JURI::root( true ) . '/index.php?option=com_hwdvideoshare&Itemid='.$Itemid.'&task=editvideo&video_id='.$row->id ); } else { require_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'thumbnail.inc.php'); $thumb_path_s = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.$videocode.'.'.$file_ext; $thumb_path_l = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.'l_'.$videocode.'.'.$file_ext; $twidth_s = round($c->con_thumb_n); $theight_s = round($c->con_thumb_n*$c->tar_fb); $twidth_l = round($c->con_thumb_l); $theight_l = round($c->con_thumb_l*$c->tar_fb); list($width, $height, $type, $attr) = @getimagesize($thumb_path_s); $ratio = $width/$height; //echo $thumb_path_s."<br />".$ratio."<br />".$width."<br />".$height."<br />".$c->tar_fb."<br />".$twidth_s."<br />".$theight_s; if ($ratio > 1) { $resized_l = new Thumbnail($thumb_path_s); $resized_l->resize($twidth_l,$twidth_l); $resized_l->cropFromCenter($twidth_l, $theight_l); $resized_l->save($thumb_path_l); $resized_l->destruct(); $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize($twidth_s,$twidth_s); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } else { $resized_l = new Thumbnail($thumb_path_s); $resized_l->resize($twidth_l,2000); $resized_l->cropFromCenter($twidth_l, $theight_l); $resized_l->save($thumb_path_l); $resized_l->destruct(); $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize($twidth_s,1000); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } } } else { //echo "No thumbnail uploaded"; } $title = hwd_vs_tools::generatePostTitle(); $description = hwd_vs_tools::generatePostDescription(); $tags = hwd_vs_tools::generatePostTags(); $password = Jrequest::getVar( 'hwdvspassword', '' ); if (!empty($password)) { $password = md5($password); $_POST['password'] = $password; } $_POST['id'] = $rowid; $_POST['title'] = $title; $_POST['description'] = $description; $_POST['category_id'] = JRequest::getInt( 'category_id', 0 ); $_POST['tags'] = $tags; if (!empty($thumbnail)) { $_POST['thumbnail'] = $thumbnail; } // bind it to the table if (!$row->bind($_POST)) { echo "<script type=\"text/javascript\">alert('".$row->getError()."');window.history.go(-1);</script>\n"; exit(); } // Make sure the record is valid if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); echo "<script type=\"text/javascript\">alert('".$row->getError()."');window.history.go(-1);</script>\n"; exit(); } // store it in the db if (!$row->store()) { echo "<script type=\"text/javascript\">alert('".$row->getError()."');window.history.go(-1);</script>\n"; exit(); } require_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'maintenance_recount.class.php'); hwd_vs_recount::recountVideosInCategory($row->category_id); hwd_vs_recount::recountVideosInCategory($old_category_id); $msg = _HWDVIDS_ALERT_VIDEDITSAVED; $app->enqueueMessage($msg); $app->redirect( $referrer ); }
/** * save categories */ function savecategories() { global $option; $db = & JFactory::getDBO(); $app = & JFactory::getApplication(); $c = hwd_vs_Config::get_instance(); $access_lev_u = Jrequest::getVar( 'access_lev_u', '0' ); $access_lev_v = Jrequest::getVar( 'access_lev_v', '0' ); $row = new hwdvids_cats($db); if (isset($_FILES['thumbnail_file']['error'])) { $file_name_org = $_FILES['thumbnail_file']['name']; $file_ext = substr($file_name_org, strrpos($file_name_org, '.') + 1); $thumbnail_url = JURI::root( true ).'/hwdvideos/thumbs/category'.$_POST['id'].'.'.$file_ext; $base_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS; $thumbnail_name = 'category'.$_POST['id']; $upload_result = hwd_vs_tools::uploadFile("thumbnail_file", $thumbnail_name, $base_Dir, 2, "jpg,jpeg", 1); if ($upload_result[0] == "0") { $msg = $upload_result[1]; $app->enqueueMessage($msg); } else { include_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'thumbnail.inc.php'); $thumb_path_s = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.$thumbnail_name.'.'.$file_ext; $twidth_s = round($c->con_thumb_n); $theight_s = round($c->con_thumb_n*$c->tar_fb); list($width, $height, $type, $attr) = @getimagesize($thumb_path_s); $ratio = $height/$width; if ($ratio < $c->tar_fb) { $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize(1000, $theight_s); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } else { $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize($twidth_s,1000); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } } // update db with new thumbnail $db->SetQuery("UPDATE #__hwdvidscategories SET thumbnail = '$thumbnail_url' WHERE id = ".intval($_POST['id'])); $db->Query(); if ( !$db->query() ) { echo "<script> alert('".$db->getErrorMsg()."'); window.history.go(-1); </script>\n"; exit(); } $msg = "Thumbnail was successfully uploaded"; $app->enqueueMessage($msg); $app->redirect( 'index.php?option=com_hwdvideoshare&Itemid='.$Itemid.'&task=editcatA&hidemainmenu=1&cid='.$_POST['id'] ); } else { if (intval($_POST['id']) !== 0 && (intval($_POST['id']) == intval($_POST['parent']))) { $app->enqueueMessage(_HWDVIDS_ALERT_PARENTNOTSELF); $app->redirect( JURI::root( true ) . '/administrator/index.php?option='.$option.'&task=categories' ); } $_POST['category_name'] = Jrequest::getVar( 'category_name', 'no name supplied' ); $_POST['category_description'] = Jrequest::getVar( 'category_description', 'no name supplied' ); $_POST['access_lev_u'] = @implode(",", $access_lev_u); $_POST['access_lev_v'] = @implode(",", $access_lev_v); } // bind it to the table if (!$row -> bind($_POST)) { echo "<script> alert('" .$row -> getError() ."'); window.history.go(-1); </script>\n"; exit(); } if(empty($row->category_name)) { $app->enqueueMessage(_HWDVIDS_NOTITLE); $app->redirect( JURI::root( true ) . '/administrator/index.php?option='.$option.'&task=categories' ); } // store it in the db if (!$row -> store()) { echo "<script> alert('" .$row -> getError() ."'); window.history.go(-1); </script>\n"; exit(); } $row->checkin(); // perform maintenance include(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'maintenance_recount.class.php'); hwd_vs_recount::recountSubcatsInCategory(); $app->enqueueMessage(_HWDVIDS_ALERT_CATSAVED); $app->redirect( JURI::root( true ) . '/administrator/index.php?option='.$option.'&task=categories' ); }
/** * edit videos */ function editvideos($cid) { global $option; $db =& JFactory::getDBO(); $my = & JFactory::getUser(); $app = & JFactory::getApplication(); $row = new hwdvids_video( $db ); $row->load( $cid ); $c = hwd_vs_Config::get_instance(); // get view count require_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'maintenance_recount.class.php'); hwd_vs_recount::recountVideoViews($row->id); $db->SetQuery("SELECT *" . "\n FROM #__hwdvidsvideos" . "\n WHERE id = $cid"); $row = $db->loadObject(); $db->SetQuery("SELECT category_name" . "\n FROM #__hwdvidscategories" . "\n WHERE id = $row->category_id"); $cat = $db->loadObject(); if ($row->user_id == 0) { $usr->username = "******"; } else { $db->SetQuery("SELECT username" . "\n FROM #__users" . "\n WHERE id = $row->user_id"); $usr = $db->loadObject(); } $db->SetQuery( "SELECT count(*)" . "\nFROM #__hwdvidsfavorites" . "\nWHERE videoid = $cid" ); $favs = $db->loadResult(); echo $db->getErrorMsg(); if (empty($favs)) {$favs = 0;} $db->SetQuery( "SELECT count(*)" . "\nFROM #__hwdvidsflagged_videos" . "\nWHERE videoid = $cid" ); $flagged = $db->loadResult(); echo $db->getErrorMsg(); if (empty($flagged)) {$flagged = 0;} $upld_thumbnail = JRequest::getInt( 'upld_thumbnail', 0, 'post' ); if ($upld_thumbnail == "1") { $file_name_org = $_FILES['thumbnail_file']['name']; $file_ext = substr($file_name_org, strrpos($file_name_org, '.') + 1); if ($row->video_type == "local" || $row->video_type == "swf" || $row->video_type == "mp4") { $videocode = $row->video_id; $thumbnail = $file_ext; } else { $videocode = "tp-".$row->id; $thumbnail = "tp-".$row->id.".".$file_ext; } $base_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS; $upload_result = hwd_vs_tools::uploadFile("thumbnail_file", $videocode, $base_Dir, 2, "jpg,jpeg", 1); if ($upload_result[0] == "0") { $msg = $upload_result[1]; $app->enqueueMessage($msg); $app->redirect( 'index.php?option=com_hwdvideoshare&Itemid='.$Itemid.'&task=editvidsA&hidemainmenu=1&cid='.$row->id ); } else { include_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'thumbnail.inc.php'); $thumb_path_s = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.$videocode.'.'.$file_ext; $thumb_path_l = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.'l_'.$videocode.'.'.$file_ext; $twidth_s = round($c->con_thumb_n); $theight_s = round($c->con_thumb_n*$c->tar_fb); $twidth_l = round($c->con_thumb_l); $theight_l = round($c->con_thumb_l*$c->tar_fb); list($width, $height, $type, $attr) = @getimagesize($thumb_path_s); $ratio = $width/$height; //echo $thumb_path_s."<br />".$ratio."<br />".$width."<br />".$height."<br />".$c->tar_fb."<br />".$twidth_s."<br />".$theight_s; if ($ratio > 1) { $resized_l = new Thumbnail($thumb_path_s); $resized_l->resize($twidth_l,$twidth_l); $resized_l->cropFromCenter($twidth_l, $theight_l); $resized_l->save($thumb_path_l); $resized_l->destruct(); $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize($twidth_s,$twidth_s); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } else { $resized_l = new Thumbnail($thumb_path_s); $resized_l->resize($twidth_l,2000); $resized_l->cropFromCenter($twidth_l, $theight_l); $resized_l->save($thumb_path_l); $resized_l->destruct(); $resized_s = new Thumbnail($thumb_path_s); $resized_s->resize($twidth_s,1000); $resized_s->cropFromCenter($twidth_s, $theight_s); $resized_s->save($thumb_path_s); $resized_s->destruct(); } } // update db with new thumbnail $db->SetQuery("UPDATE #__hwdvidsvideos SET thumbnail = '$thumbnail' WHERE id = $row->id"); $db->Query(); if ( !$db->query() ) { echo "<script> alert('".$db->getErrorMsg()."'); window.history.go(-1); </script>\n"; exit(); } $msg = "Thumbnail was successfully uploaded"; $app->enqueueMessage($msg); $app->redirect( 'index.php?option=com_hwdvideoshare&Itemid='.$Itemid.'&task=editvidsA&hidemainmenu=1&cid='.$row->id ); } hwdvids_HTML::editvideos($row, $cat, $usr, $favs, $flagged); }
function crop($imagePath, $thumbnailPath, $dimensions) { $crop = false; $newSize = trim(intval($dimensions[0])) > 0 ? trim(intval($dimensions[0])) : 100; $thumb = new Thumbnail($imagePath); if ($thumb->error) { echo $imagePath . ":" . $thumb->errmsg . "<br />"; return false; } $minLength = min($thumb->getCurrentWidth(), $thumb->getCurrentHeight()); $maxLength = max($thumb->getCurrentWidth(), $thumb->getCurrentHeight()); // Image is smaller than the specified size so we just rename it and save if ($maxLength <= $newSize) { $thumb->save($thumbnailPath, $this->quality); //Just rename and save without processing } else { // At least one side is larger than specified thumbnail size // Both sides are larger than resize length so first we scale and if image is not square we crop if ($minLength > $newSize) { // Scale smaller size to desired new size if ($thumb->getCurrentWidth() < $thumb->getCurrentHeight()) { $thumb->resize($newSize, 0); $crop = true; } elseif ($thumb->getCurrentWidth() > $thumb->getCurrentHeight()) { $thumb->resize(0, $newSize); $crop = true; } else { $thumb->resize($newSize, $newSize); } if ($crop) { $thumb->cropFromCenter($newSize); } // One size is smaller than the new size, so we only crop the larger size to the new size } else { $cropX = intval(($thumb->getCurrentWidth() - $newSize) / 2); $cropY = intval(($thumb->getCurrentHeight() - $newSize) / 2); $thumb->crop($cropX, $cropY, $newSize, $newSize); } $thumb->save($thumbnailPath, $this->quality); } $thumb->destruct(); if (file_exists($thumbnailPath)) { return true; } return false; }
/** * Outputs frontpage HTML * * @param string $option the joomla component name * @param array $rows array of video data * @param array $rowsfeatured array of featured video data * @param object $pageNav page navigation object * @param int $total the total video count * @return Nothing */ function updateChannel() { global $Itemid, $mainframe; $db = & JFactory::getDBO(); $my = & JFactory::getUser(); $c = hwd_vs_Config::get_instance(); $id = JRequest::getInt( 'id', 0 ); $row = new hwdvids_channel($db); $row->load( $id ); if ($row->user_id != $my->id) { $mainframe->enqueueMessage(_HWDVIDS_ALERT_NOPERM); $mainframe->redirect( JRoute::_("index.php?option=com_hwdvideoshare&Itemid=$Itemid&task=channels") ); } $channel_description = Jrequest::getVar( 'channel_description', _HWDVS_UNKNOWN ); $_POST['channel_description'] = $channel_description; $file_name_org = $_FILES['thumbnail_file']['name']; $file_ext = substr($file_name_org, strrpos($file_name_org, '.') + 1); $thumbnail = ''; if ($_FILES['thumbnail_file']['tmp_name'] !== "") { $videocode = "ch-".$row->id; $base_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS; $upload_result = hwd_vs_tools::uploadFile("thumbnail_file", $videocode, $base_Dir, 2, "jpg,jpeg,png,gif", 1); if ($upload_result[0] == "0") { $msg = $upload_result[1]; $mainframe->enqueueMessage($msg); $mainframe->redirect( JURI::root( true ) . '/index.php?option=com_hwdvideoshare&Itemid='.$Itemid.'&task=editvideo&video_id='.$row->id ); } else { require_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'libraries'.DS.'thumbnail.inc.php'); $thumb_path = JPATH_SITE.DS.'hwdvideos'.DS.'thumbs'.DS.$videocode.'.'.$file_ext; $twidth_s = round($c->con_thumb_n); $theight_s = round($c->con_thumb_n*$c->tar_fb); list($width, $height, $type, $attr) = @getimagesize($thumb_path); $ratio = $width/$height; //echo $thumb_path."<br />".$ratio."<br />".$width."<br />".$height."<br />".$c->tar_fb."<br />".$twidth_s."<br />".$theight_s; if ($ratio > 1) { $resized = new Thumbnail($thumb_path); $resized->resize($twidth_s,$twidth_s); $resized->cropFromCenter($twidth_s, $theight_s); $resized->save($thumb_path); $resized->destruct(); } else { $resized = new Thumbnail($thumb_path); $resized->resize($twidth_s,1000); $resized->cropFromCenter($twidth_s, $theight_s); $resized->save($thumb_path); $resized->destruct(); } } $_POST['channel_thumbnail'] = $videocode.'.'.$file_ext; } else { //echo "No thumbnail uploaded"; } // bind it to the table if (!$row -> bind($_POST)) { echo "<script> alert('" .$row -> getError() ."'); window.history.go(-1); </script>\n"; exit(); } // store it in the db if (!$row -> store()) { echo "<script> alert('" .$row -> getError() ."'); window.history.go(-1); </script>\n"; exit(); } $msg = "Channel saved"; $mainframe->enqueueMessage($msg); $mainframe->redirect( JRoute::_("index.php?option=com_hwdvideoshare&Itemid=$Itemid&task=viewchannel&user_id=$my->id") ); }