Created
June 25, 2018 01:02
-
-
Save xbansh33/420040546a876a59d5644bfde6fafbcb to your computer and use it in GitHub Desktop.
edited version of components/OssnComments/ossn_com.php to allow images in comments to be clicked without resizing the img
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Open Source Social Network | |
* | |
* @package Open Source Social Network | |
* @author Open Social Website Core Team <info@softlab24.com> | |
* @copyright 2014-2017 SOFTLAB24 LIMITED | |
* @license Open Source Social Network License (OSSN LICENSE) http://www.opensource-socialnetwork.org/licence | |
* @link https://www.opensource-socialnetwork.org/ | |
*/ | |
define('__OSSN_COMMENTS__', ossn_route()->com . 'OssnComments/'); | |
require_once(__OSSN_COMMENTS__ . 'classes/OssnComments.php'); | |
require_once(__OSSN_COMMENTS__ . 'libs/comments.php'); | |
/** | |
* Initialize Comments Component | |
* | |
* @return void; | |
* @access private | |
*/ | |
function ossn_comments() { | |
if(ossn_isLoggedin()) { | |
ossn_register_action('post/comment', __OSSN_COMMENTS__ . 'actions/post/comment.php'); | |
ossn_register_action('post/entity/comment', __OSSN_COMMENTS__ . 'actions/post/entity/comment.php'); | |
ossn_register_action('delete/comment', __OSSN_COMMENTS__ . 'actions/comment/delete.php'); | |
ossn_register_action('comment/edit', __OSSN_COMMENTS__ . 'actions/comment/edit.php'); | |
} | |
ossn_add_hook('post', 'comments', 'ossn_post_comments'); | |
ossn_add_hook('post', 'comments:entity', 'ossn_post_comments_entity'); | |
ossn_extend_view('js/opensource.socialnetwork', 'js/OssnComments'); | |
ossn_extend_view('css/ossn.default', 'css/comments'); | |
ossn_register_page('comment', 'ossn_comment_page'); | |
if(ossn_isLoggedin()) { | |
ossn_register_callback('comment', 'load', 'ossn_comment_menu'); | |
ossn_register_callback('comment', 'load', 'ossn_comment_edit_menu'); | |
ossn_register_callback('post', 'delete', 'ossn_post_comments_delete'); | |
ossn_register_callback('wall', 'load:item', 'ossn_wall_comment_menu'); | |
ossn_register_callback('entity', 'load:comment:share:like', 'ossn_entity_comment_link'); | |
ossn_register_callback('comment', 'delete', 'ossn_comment_notifications_delete'); | |
} | |
} | |
/** | |
* Delete like notifiactions | |
* | |
* Orphan notification after posting/comment has been deleted #609 | |
* | |
* @param string $callback A callback name | |
* @param string $type A callback type | |
* @param array $vars Option values | |
* | |
* @return void | |
*/ | |
function ossn_comment_notifications_delete($callback, $type, $vars) { | |
$delete = new OssnNotifications; | |
if(isset($vars['comment']) && !empty($vars['comment'])) { | |
$delete->deleteNotification(array( | |
'item_guid' => $vars['comment'], | |
'type' => array( | |
'comments:post', | |
'like:annotation', | |
'comments:entity:file:profile:photo', | |
'comments:entity:file:profile:cover', | |
'comments:entity:file:ossn:aphoto' | |
) | |
)); | |
} | |
} | |
/** | |
* Entity comment link | |
* | |
* @param string $callback A callback name | |
* @param string $type A callback type | |
* @param array $params Option values | |
* | |
* @return void | |
*/ | |
function ossn_entity_comment_link($callback, $type, $params) { | |
$guid = $params['entity']->guid; | |
ossn_unregister_menu('comment', 'entityextra'); | |
if(!empty($guid) && ossn_isLoggedIn()) { | |
ossn_register_menu_item('entityextra', array( | |
'name' => 'comment', | |
'class' => "comment-post", | |
'href' => "javascript:void(0)", | |
'data-guid' => $guid, | |
'text' => ossn_print('comment:comment') | |
)); | |
} | |
ossn_trigger_callback('comment', 'entityextra:menu', $params); | |
} | |
/** | |
* Add a comment menu item in post | |
* | |
* @return void | |
*/ | |
function ossn_wall_comment_menu($callback, $type, $params) { | |
$guid = $params['post']->guid; | |
ossn_unregister_menu('comment', 'postextra'); | |
ossn_unregister_menu('commentall', 'postextra'); | |
if(!empty($guid)) { | |
$comment = new OssnComments; | |
ossn_register_menu_item('postextra', array( | |
'name' => 'comment', | |
'class' => "comment-post", | |
'href' => "javascript:void(0)", | |
'data-guid' => $guid, | |
'text' => ossn_print('comment:comment') | |
)); | |
if($comment->countComments($guid) > 5) { | |
ossn_register_menu_item('postextra', array( | |
'name' => 'commentall', | |
'href' => ossn_site_url("post/view/{$guid}"), | |
'text' => ossn_print('comment:view:all') | |
)); | |
} | |
} | |
} | |
/** | |
* View comments bar on wall posts | |
* | |
* @return mix data; | |
* @access private | |
*/ | |
function ossn_post_comments($hook, $type, $return, $params) { | |
return ossn_plugin_view('comments/post/comments', $params); | |
} | |
/** | |
* View comments bar on entity | |
* | |
* @return mix data; | |
* @access private | |
*/ | |
function ossn_post_comments_entity($hook, $type, $return, $params) { | |
return ossn_plugin_view('comments/post/comments_entity', $params); | |
} | |
/** | |
* Delete post comments | |
* | |
* @return void; | |
* @access private | |
*/ | |
function ossn_post_comments_delete($event, $type, $params) { | |
$delete = new OssnComments; | |
$delete->commentsDeleteAll($params); | |
} | |
/** | |
* Delete comment menu | |
* | |
* @param string $name Name of Callback | |
* @param strign $type Callback type | |
* @param array $params A option values | |
* | |
* @return void | |
* @access private | |
*/ | |
function ossn_comment_menu($name, $type, $params) { | |
//unset previous comment menu item | |
//Post owner can not delete others comments #607 | |
//Pull request #601 , refactoring | |
ossn_unregister_menu('delete', 'comments'); | |
$user = ossn_loggedin_user(); | |
$OssnComment = new OssnComments; | |
if(is_object($params)) { | |
$params = get_object_vars($params); | |
} | |
$comment = $OssnComment->getComment($params['id']); | |
if($comment->type == 'comments:post') { | |
if(com_is_active('OssnWall')) { | |
$ossnwall = new OssnWall; | |
$post = $ossnwall->GetPost($comment->subject_guid); | |
//check if type is group | |
if($post->type == 'group') { | |
$group = ossn_get_group_by_guid($post->owner_guid); | |
} | |
//group admins must be able to delete ANY comment in their own group #170 | |
//just show menu if group owner is loggedin | |
if((ossn_loggedin_user()->guid == $post->owner_guid) || $user->guid == $comment->owner_guid || (ossn_loggedin_user()->guid == $group->owner_guid)) { | |
ossn_unregister_menu('delete', 'comments'); | |
ossn_register_menu_item('comments', array( | |
'name' => 'delete', | |
'href' => ossn_site_url("action/delete/comment?comment={$params['id']}", true), | |
'class' => 'ossn-delete-comment', | |
'text' => ossn_print('comment:delete'), | |
'priority' => 200 | |
)); | |
} | |
} | |
} | |
//this section is for entity comment only | |
if(ossn_isLoggedin() && $comment->type == 'comments:entity') { | |
$entity = ossn_get_entity($comment->subject_guid); | |
if(($user->guid == $params['owner_guid']) || ossn_isAdminLoggedin() || ($comment->type == 'comments:entity' && $entity->type = 'user' && $user->guid == $entity->owner_guid)) { | |
ossn_unregister_menu('delete', 'comments'); | |
ossn_register_menu_item('comments', array( | |
'name' => 'delete', | |
'href' => ossn_site_url("action/delete/comment?comment={$params['id']}", true), | |
'class' => 'ossn-delete-comment', | |
'text' => ossn_print('comment:delete'), | |
'priority' => 200 | |
)); | |
} | |
} | |
} | |
/** | |
* Comment Edit Menu | |
* | |
* @param string $name Name of Callback | |
* @param strign $type Callback type | |
* @param array $params A option values | |
* | |
* @return void; | |
*/ | |
function ossn_comment_edit_menu($name, $type, $comment) { | |
ossn_unregister_menu('edit', 'comments'); | |
$user = ossn_loggedin_user(); | |
if(empty($comment['id'])){ | |
return false; | |
} | |
$comment = (object)$comment; | |
if(ossn_isLoggedin()) { | |
if(($user->guid == $comment->owner_guid) || $user->canModerate()) { | |
ossn_unregister_menu('edit', 'comments'); | |
ossn_register_menu_item('comments', array( | |
'name' => 'edit', | |
'href' => 'javascript:void(0);', | |
'data-guid' => $comment->id, | |
'class' => 'ossn-edit-comment', | |
'text' => ossn_print('edit') | |
)); | |
} | |
} | |
} | |
/** | |
* Comment page for viewing comment photos | |
* | |
* @access private; | |
*/ | |
function ossn_comment_page($pages) { | |
$page = $pages[0]; | |
switch($page) { | |
case 'image': | |
if(!empty($pages[1]) && !empty($pages[2])) { | |
$file = ossn_get_userdata("annotation/{$pages[1]}/comment/photo/{$pages[2]}"); | |
if(is_file($file)) { | |
$etag = md5($pages[2]); | |
header("Etag: $etag"); | |
if(isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") { | |
header("HTTP/1.1 304 Not Modified"); | |
exit; | |
} | |
//$image = ossn_resize_image($file, 300, 300); | |
//$filesize = strlen($image); | |
$filesize = filesize($file); | |
header("Content-type: image/jpeg"); | |
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true); | |
header("Pragma: public"); | |
header("Cache-Control: public"); | |
header("Content-Length: $filesize"); | |
header("ETag: \"$etag\""); | |
//echo $image; | |
readfile($file); | |
} else { | |
ossn_error_page(); | |
} | |
} else { | |
ossn_error_page(); | |
} | |
break; | |
case 'attachment': | |
header('Content-Type: application/json'); | |
if(isset($_FILES['file']['tmp_name']) && ($_FILES['file']['error'] == UPLOAD_ERR_OK && $_FILES['file']['size'] !== 0) && ossn_isLoggedin()) { | |
if(preg_match("/image/i", $_FILES['file']['type'])) { | |
$file = $_FILES['file']['tmp_name']; | |
$unique = time() . '-' . substr(md5(time()), 0, 6) . '.jpg'; | |
$newfile = ossn_get_userdata("tmp/photos/{$unique}"); | |
$dir = ossn_get_userdata("tmp/photos/"); | |
if(!is_dir($dir)) { | |
mkdir($dir, 0755, true); | |
} | |
if(move_uploaded_file($file, $newfile)) { | |
$file = base64_encode(ossn_string_encrypt($newfile)); | |
echo json_encode(array( | |
'file' => base64_encode($file), | |
'type' => 1 | |
)); | |
exit; | |
} | |
} | |
} | |
echo json_encode(array( | |
'type' => 0 | |
)); | |
break; | |
case 'staticimage': | |
$image = base64_decode(input('image')); | |
if(!empty($image)) { | |
$file = ossn_string_decrypt(base64_decode($image)); | |
header('content-type: image/jpeg'); | |
$file = rtrim(ossn_validate_filepath($file), '/'); | |
if(is_file($file)) { | |
echo file_get_contents($file); | |
} else { | |
ossn_error_page(); | |
} | |
} else { | |
ossn_error_page(); | |
} | |
break; | |
case 'edit': | |
$comment = ossn_get_annotation($pages[1]); | |
if(!ossn_is_xhr()) { | |
ossn_error_page(); | |
} | |
if(!$comment) { | |
header("HTTP/1.0 404 Not Found"); | |
} | |
$user = ossn_loggedin_user(); | |
if($comment->owner_guid == $user->guid || $user->canModerate()) { | |
$params = array( | |
'title' => ossn_print('edit'), | |
'contents' => ossn_view_form('comment/edit', array( | |
'action' => ossn_site_url('action/comment/edit'), | |
'component' => 'OssnComments', | |
'params' => array( | |
'comment' => $comment | |
) | |
), false), | |
'callback' => '#ossn-comment-edit-save' | |
); | |
echo ossn_plugin_view('output/ossnbox', $params); | |
} | |
break; | |
} | |
} | |
/** | |
* Comment view | |
* | |
* @param array $vars Options | |
* @param string $template Template name | |
* @return mixed data | |
*/ | |
function ossn_comment_view($params, $template = 'comment') { | |
$vars = ossn_call_hook('comment:view', 'template:params', $params, $params); | |
return ossn_plugin_view("comments/templates/{$template}", $vars); | |
} | |
ossn_register_callback('ossn', 'init', 'ossn_comments'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment