diff options
Diffstat (limited to 'mod/reportedcontent')
| -rw-r--r-- | mod/reportedcontent/actions/add.php | 49 | ||||
| -rw-r--r-- | mod/reportedcontent/actions/archive.php | 38 | ||||
| -rw-r--r-- | mod/reportedcontent/actions/delete.php | 41 | ||||
| -rw-r--r-- | mod/reportedcontent/add.php | 36 | ||||
| -rw-r--r-- | mod/reportedcontent/index.php | 32 | ||||
| -rw-r--r-- | mod/reportedcontent/languages/en.php | 47 | ||||
| -rw-r--r-- | mod/reportedcontent/manifest.xml | 10 | ||||
| -rw-r--r-- | mod/reportedcontent/start.php | 69 | ||||
| -rw-r--r-- | mod/reportedcontent/views/default/reportedcontent/css.php | 91 | ||||
| -rw-r--r-- | mod/reportedcontent/views/default/reportedcontent/form.php | 74 | ||||
| -rw-r--r-- | mod/reportedcontent/views/default/reportedcontent/listing.php | 43 | ||||
| -rw-r--r-- | mod/reportedcontent/views/default/reportedcontent/owner_block.php | 9 | ||||
| -rw-r--r-- | mod/reportedcontent/views/default/reportedcontent/user_report.php | 6 | 
13 files changed, 545 insertions, 0 deletions
diff --git a/mod/reportedcontent/actions/add.php b/mod/reportedcontent/actions/add.php new file mode 100644 index 000000000..76cefa4c8 --- /dev/null +++ b/mod/reportedcontent/actions/add.php @@ -0,0 +1,49 @@ +<?php + +	/** +	 * Elgg report action +	 *  +	 * @package ElggReportContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ + +		$title = get_input('title'); +		$description = get_input('description'); +		$address = get_input('address'); +		$access = ACCESS_PRIVATE; //this is private and only admins can see it +		 +		if ($title && $address) { +			 +			$entity = new ElggObject; +			$entity->subtype = "reported_content"; +			$entity->owner_guid = $_SESSION['user']->getGUID(); +		    $entity->title = $title; +		    $entity->address = $address; +		    $entity->description = $description; +		    $entity->access_id = $access; +		 +    		if ($entity->save()) { +     			if (!trigger_plugin_hook('reportedcontent:add', $reported->type, array('entity'=>$reported), true)) { +     				$entity->delete(); +     				register_error(elgg_echo('reportedcontent:failed')); +     			} else { +	    			system_message(elgg_echo('reportedcontent:success')); +	    			$entity->state = "active"; +     			} +    			forward($address); +    		} else { +    			register_error(elgg_echo('reportedcontent:failed')); +    			forward($address); +    		} +    		 +		} else { +    		 +    		register_error(elgg_echo('reportedcontent:failed')); +    	    forward($address); +    	     +	    } + +?>
\ No newline at end of file diff --git a/mod/reportedcontent/actions/archive.php b/mod/reportedcontent/actions/archive.php new file mode 100644 index 000000000..a550abc2a --- /dev/null +++ b/mod/reportedcontent/actions/archive.php @@ -0,0 +1,38 @@ +<?php + +	/** +	 * Elgg reported content: archive action +	 *  +	 * @package ElggReportedContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider Ltd <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ + +	// Make sure we're logged in and are admin +	    admin_gatekeeper(); + +	// Get input data +		$guid = (int) get_input('item'); +		 +	// Make sure we actually have permission to edit +		$reported = get_entity($guid); +		if ($reported->getSubtype() == "reported_content" && $reported->canEdit()) { +	 +		// change the state +				if (!trigger_plugin_hook('reportedcontent:archive', $reported->type, array('entity'=>$reported), true)) { + 					system_message(elgg_echo("reportedcontent:notarchived")); + 					forward("pg/reportedcontent/"); +		 		} +		        $reported->state = "archived"; +				 +		// Success message +				system_message(elgg_echo("reportedcontent:archived")); +				 +		// Forward back to the reported content page +				forward("pg/reportedcontent/"); +		 +		} +		 +?>
\ No newline at end of file diff --git a/mod/reportedcontent/actions/delete.php b/mod/reportedcontent/actions/delete.php new file mode 100644 index 000000000..cff42b025 --- /dev/null +++ b/mod/reportedcontent/actions/delete.php @@ -0,0 +1,41 @@ +<?php + +	/** +	 * Elgg reported content: delete action +	 *  +	 * @package ElggReportedCOntent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider Ltd <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ + +	// Make sure we're logged in and are admin +	    admin_gatekeeper(); + +	// Get input data +		$guid = (int) get_input('item'); +		 +	// Make sure we actually have permission to edit +		$reported = get_entity($guid); +		if ($reported->getSubtype() == "reported_content" && $reported->canEdit()) { +	 +		// Delete it! +				if (!trigger_plugin_hook('reportedcontent:delete', $reported->type, array('entity'=>$reported), true)) { +	 				register_error(elgg_echo("reportedcontent:notdeleted")); +	 				forward("pg/reportedcontent/"); +	 			} +				$rowsaffected = $reported->delete(); +				if ($rowsaffected > 0) { +		// Success message +					system_message(elgg_echo("reportedcontent:deleted")); +				} else { +					register_error(elgg_echo("reportedcontent:notdeleted")); +				} +				 +		// Forward back to the reported content page +				forward("pg/reportedcontent/"); +		 +		} +		 +?>
\ No newline at end of file diff --git a/mod/reportedcontent/add.php b/mod/reportedcontent/add.php new file mode 100644 index 000000000..02892b4eb --- /dev/null +++ b/mod/reportedcontent/add.php @@ -0,0 +1,36 @@ +<?php + +	/** +	 * Elgg reported content send report page +	 *  +	 * @package ElggReportedContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ + +	// Start engine +		require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); +		 +	// You need to be logged in for this one +		gatekeeper(); +		 +	// Get the current page's owner +		$page_owner = page_owner_entity(); +		if ($page_owner === false || is_null($page_owner)) { +			$page_owner = $_SESSION['user']; +			set_page_owner($page_owner->getGUID()); +		} +			 +		$area2 .= elgg_view_title(elgg_echo('reportedcontent:this'), false); +		 +	    $area2 .= elgg_view('reportedcontent/form'); +		 +	// Format page +		$body = elgg_view_layout('two_column_left_sidebar', '', $area2); +		 +	// Draw it +		page_draw(elgg_echo('reportedcontent:add'),$body); + +?>
\ No newline at end of file diff --git a/mod/reportedcontent/index.php b/mod/reportedcontent/index.php new file mode 100644 index 000000000..45c49866b --- /dev/null +++ b/mod/reportedcontent/index.php @@ -0,0 +1,32 @@ +<?php +	/** +	 * Elgg Reported content +	 *  +	 * @package ElggReportedContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider Ltd +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.com/ +	 */ + +	require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + +	admin_gatekeeper(); +	set_context('admin'); +	// Set admin user for user block +		set_page_owner($_SESSION['guid']); + +		 +	$title = elgg_view_title(elgg_echo('reportedcontent')); +	 +	$reported = elgg_get_entities(array('types' => 'object', 'subtypes' => 'reported_content', 'limit' => 9999)); +	 +	$area2 = elgg_view("reportedcontent/listing", array('entity' => $reported)); +	 +	if(!$reported)   +	    $reported = elgg_echo("reportedcontent:none"); +		 +// Display main admin menu +	page_draw(elgg_echo('reportedcontent'),elgg_view_layout("two_column_left_sidebar", '', $title . $area2)); + +?>
\ No newline at end of file diff --git a/mod/reportedcontent/languages/en.php b/mod/reportedcontent/languages/en.php new file mode 100644 index 000000000..00cc73e0e --- /dev/null +++ b/mod/reportedcontent/languages/en.php @@ -0,0 +1,47 @@ +<?php +	/** +	 * Elgg reported content plugin language pack +	 *  +	 * @package ElggReportedContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider Ltd +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.com/ +	 */ + +	$english = array( +	 +		/** +		 * Menu items and titles +		 */ +	 +			'item:object:reported_content' => 'Reported items', +			'reportedcontent' => 'Reported content', +			'reportedcontent:this' => 'Report this', +			'reportedcontent:none' => 'There is no reported content', +			'reportedcontent:report' => 'Report to admin', +			'reportedcontent:title' => 'Page title', +			'reportedcontent:deleted' => 'The reported content has been deleted', +			'reportedcontent:notdeleted' => 'We were not able to delete that report', +			'reportedcontent:delete' => 'Delete it', +			'reportedcontent:areyousure' => 'Are you sure you want to delete?', +			'reportedcontent:archive' => 'Archive it', +			'reportedcontent:archived' => 'The report has been archived', +			'reportedcontent:visit' => 'Visit reported item', +			'reportedcontent:by' => 'Report by', +			'reportedcontent:objecttitle' => 'Object title', +			'reportedcontent:objecturl' => 'Object url', +			'reportedcontent:reason' => 'Reason for report', +			'reportedcontent:description' => 'Why are you reporting this?', +			'reportedcontent:address' => 'Location of the item', +			'reportedcontent:success' => 'Your report has been sent to the site admin', +			'reportedcontent:failing' => 'Your report could not be sent', +			'reportedcontent:report' => 'Report this',  +			'reportedcontent:moreinfo' => 'More info', +	 +			'reportedcontent:failed' => 'Sorry, the attempt to report this content has failed.', +			'reportedcontent:notarchived' => 'We were not able to archive that report', +	); +					 +	add_translation("en",$english); +?>
\ No newline at end of file diff --git a/mod/reportedcontent/manifest.xml b/mod/reportedcontent/manifest.xml new file mode 100644 index 000000000..1d127cde3 --- /dev/null +++ b/mod/reportedcontent/manifest.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest> +	<field key="author" value="Curverider" /> +	<field key="version" value="1.7" /> +	<field key="description" value="Adds the option for users to report content and for admins to check it out." /> +	<field key="website" value="http://www.elgg.org/" /> +	<field key="copyright" value="(C) Curverider 2008-2010" /> +	<field key="licence" value="GNU Public License version 2" /> +	<field key="elgg_version" value="2010030101" /> +</plugin_manifest> diff --git a/mod/reportedcontent/start.php b/mod/reportedcontent/start.php new file mode 100644 index 000000000..d8ee7369e --- /dev/null +++ b/mod/reportedcontent/start.php @@ -0,0 +1,69 @@ +<?php +	/** +	 * Elgg Reported content. +	 *  +	 * @package ElggReportedContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider Ltd +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.com/ +	 */ + +	/** +	 * Initialise the Reported content and set up the menus. +	 * +	 */ +	function reportedcontent_init() +	{ +		global $CONFIG; +		 +		// Register a page handler, so we can have nice URLs +		register_page_handler('reportedcontent','reportedcontent_page_handler'); +		 +		// Extend CSS +		elgg_extend_view('css','reportedcontent/css'); +				 +		// Extend context menu and owner_block with report content link +		if (isloggedin()) { +		    elgg_extend_view('profile/menu/links','reportedcontent/user_report'); +			elgg_extend_view('owner_block/extend', 'reportedcontent/owner_block'); +		} +	} +	 +	/** +	 * Adding the reported content to the admin menu +	 * +	 */ +	function reportedcontent_pagesetup() +	{ +		if (get_context() == 'admin' && isadminloggedin()) { +			global $CONFIG; +			add_submenu_item(elgg_echo('reportedcontent'), $CONFIG->wwwroot . 'pg/reportedcontent/'); +		} +	} +	 +	/** +	 * Reported content page handler +	 * +	 * @param array $page Array of page elements, forwarded by the page handling mechanism +	 */ +	function reportedcontent_page_handler($page)  +	{ +		global $CONFIG; +		 +		// only interested in one page for now +		include($CONFIG->pluginspath . "reportedcontent/index.php");  +	} +	 +	 +	 +	// Initialise Reported Content +	register_elgg_event_handler('init','system','reportedcontent_init'); +	register_elgg_event_handler('pagesetup','system','reportedcontent_pagesetup'); +	 +	//register action +	register_action('reportedcontent/add',false,$CONFIG->pluginspath . "reportedcontent/actions/add.php"); +	register_action('reportedcontent/delete',false,$CONFIG->pluginspath . "reportedcontent/actions/delete.php"); +	register_action('reportedcontent/archive',false,$CONFIG->pluginspath . "reportedcontent/actions/archive.php"); +	 +?>
\ No newline at end of file diff --git a/mod/reportedcontent/views/default/reportedcontent/css.php b/mod/reportedcontent/views/default/reportedcontent/css.php new file mode 100644 index 000000000..061a5e5f6 --- /dev/null +++ b/mod/reportedcontent/views/default/reportedcontent/css.php @@ -0,0 +1,91 @@ +<?php + +	/** +	 * Elgg reported content CSS +	 *  +	 * @package reportedcontent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ + +?> +/* *************************************** +PAGE-OWNER BLOCK +*************************************** */ +#owner_block_report_this { +	padding:5px 0 0 0; +} +#owner_block_report_this a { +	font-size: 90%; +	color:#999999; +	padding:0 0 4px 20px; +	background: url(<?php echo $vars['url']; ?>_graphics/icon_reportthis.gif) no-repeat left top; +} +#owner_block_report_this a:hover { +	color: #0054a7; +} + +/* *************************************** +	ADMIN AREA - REPORTED CONTENT +*************************************** */ +.reportedcontent_content { +	margin:0 0 5px 0; +	padding:0 7px 4px 10px; +	-webkit-border-radius: 5px; +	-moz-border-radius: 5px; +} +.reportedcontent_content p.reportedcontent_detail, +.reportedcontent_content p { +	margin:0; +} +.active_report { +	border:1px solid #D3322A; +	background:#F7DAD8; +} +.archived_report { +	border:1px solid #666666; +	background:#dedede; +} +a.archive_report_button { +	float:right; +	font: 12px/100% Arial, Helvetica, sans-serif; +	font-weight: bold; +	color: #ffffff; +	background:#4690d6; +	border: 1px solid #4690d6; +	-webkit-border-radius: 4px; +	-moz-border-radius: 4px; +	width: auto; +	padding: 4px; +	margin:15px 0 0 20px; +	cursor: pointer; +} +a.archive_report_button:hover { +	background: #0054a7; +	border: 1px solid #0054a7; +	text-decoration: none; +} +a.delete_report_button { +	float:right; +	font: 12px/100% Arial, Helvetica, sans-serif; +	font-weight: bold; +	color: #ffffff; +	background:#999999; +	border: 1px solid #999999; +	-webkit-border-radius: 4px; +	-moz-border-radius: 4px; +	width: auto; +	padding: 4px; +	margin:15px 0 0 20px; +	cursor: pointer; +} +a.delete_report_button:hover { +	background: #333333; +	border: 1px solid #333333; +	text-decoration:none; +} +.reportedcontent_content .collapsible_box { +	background: white; +} diff --git a/mod/reportedcontent/views/default/reportedcontent/form.php b/mod/reportedcontent/views/default/reportedcontent/form.php new file mode 100644 index 000000000..73fbd5c93 --- /dev/null +++ b/mod/reportedcontent/views/default/reportedcontent/form.php @@ -0,0 +1,74 @@ +<?php + +	/** +	 * Elgg report content plugin form +	 *  +	 * @package ElggReportContent +	 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 +	 * @author Curverider <info@elgg.com> +	 * @copyright Curverider Ltd 2008-2010 +	 * @link http://elgg.org/ +	 */ +			 +			$guid = 0; +			$title = get_input('title',""); +			$description = ""; +			$address = get_input('address',""); +			if ($address == "previous") +				$address = $_SERVER['HTTP_REFERER']; +			$tags = array(); +			$access_id = ACCESS_PRIVATE; +			$shares = array(); +			$owner = $vars['user']; + +?> +<div class="contentWrapper"> +	<form action="<?php echo $vars['url']; ?>action/reportedcontent/add" method="post"> +	<?php echo elgg_view('input/securitytoken'); ?> +	 +		<p> +			<label> +				<?php 	echo elgg_echo('reportedcontent:title'); ?> +				<?php + +						echo elgg_view('input/text',array( +								'internalname' => 'title', +								'value' => $title, +						));  +				 +				?> +			</label> +		</p> +		<p> +			<label> +				<?php 	echo elgg_echo('reportedcontent:address'); ?> +				<?php + +						echo elgg_view('input/url',array( +								'internalname' => 'address', +								'value' => $address, +						));  +				 +				?> +			</label> +		</p> +		<p class="longtext_editarea"> +			<label> +				<?php 	echo elgg_echo('reportedcontent:description'); ?> +				<br /> +				<?php + +						echo elgg_view('input/longtext',array( +								'internalname' => 'description', +								'value' => $description, +						));  +				 +				?> +			</label> +		</p> +		<p> +			<input type="submit" value="<?php echo elgg_echo('reportedcontent:report'); ?>" /> +		</p> +	 +	</form> +</div> diff --git a/mod/reportedcontent/views/default/reportedcontent/listing.php b/mod/reportedcontent/views/default/reportedcontent/listing.php new file mode 100644 index 000000000..5d3d3d997 --- /dev/null +++ b/mod/reportedcontent/views/default/reportedcontent/listing.php @@ -0,0 +1,43 @@ + +<?php + +	echo "<div class=\"contentWrapper\">"; + +	if($vars['entity']){ + +		foreach($vars['entity'] as $report){ + +			//get the user making the report +			$user = get_user($report->owner_guid)->name; +			$user_url = get_user($report->owner_guid)->getURL(); + +			//find out if the report is current or archive +			if($report->state == 'archived'){ +				$reportedcontent_background = "archived_report"; +			}else{ +				$reportedcontent_background = "active_report"; +			} + +			echo "<div class=\"reportedcontent_content {$reportedcontent_background}\">"; +			echo "<p class=\"reportedcontent_detail\">"; +			if($report->state != 'archived') { +			  $url =  elgg_add_action_tokens_to_url($vars['url'] . "action/reportedcontent/archive?item=" . $report->guid ); +				  echo "<a class=\"archive_report_button\" href=\"$url\">" . elgg_echo('reportedcontent:archive') . "</a>"; +			} +		$url = elgg_add_action_tokens_to_url($vars['url'] . "action/reportedcontent/delete?item=" . $report->guid); +			echo "<a class=\"delete_report_button\" href=\"$url\" onclick=\"return confirm('" . elgg_echo('reportedcontent:areyousure') . "')\">" . elgg_echo('reportedcontent:delete') . "</a></p>"; + +			echo "<p class=\"reportedcontent_detail\"><b>" . elgg_echo('reportedcontent:by') . ": </b><a href=\"{$user_url}\">" . $user . "</a>, " . friendly_time($report->time_created) . "</p>"; +			echo "<p class=\"reportedcontent_detail\"><b>" . elgg_echo('reportedcontent:objecttitle') . ": </b>" . $report->title . "</p>"; +			echo "<p class=\"reportedcontent_detail\"><b>" . elgg_echo('reportedcontent:objecturl') . ": </b><a href=\"{$report->address}\">" . elgg_echo('reportedcontent:visit')  . "</a></p>"; +			echo "<p><a class=\"collapsibleboxlink\">" . elgg_echo('reportedcontent:moreinfo') . "</a></p>"; +			echo "<div class=\"collapsible_box\">"; +			echo "<p class=\"reportedcontent_detail\"><b>" . elgg_echo('reportedcontent:reason') . ": </b>" .$report->description . "</p>"; +			echo "</div></div>"; + + +		} + +	} +	echo "</div>"; +?> diff --git a/mod/reportedcontent/views/default/reportedcontent/owner_block.php b/mod/reportedcontent/views/default/reportedcontent/owner_block.php new file mode 100644 index 000000000..3624a86d2 --- /dev/null +++ b/mod/reportedcontent/views/default/reportedcontent/owner_block.php @@ -0,0 +1,9 @@ +<?php + +$label = elgg_echo('reportedcontent:report'); +$url = "'" . $vars['url'] . "mod/reportedcontent/add.php?address='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)"; + +?> +<div id="owner_block_report_this"> +<a href="javascript:location.href=<?php echo $url; ?>"><?php echo $label ?></a> +</div> diff --git a/mod/reportedcontent/views/default/reportedcontent/user_report.php b/mod/reportedcontent/views/default/reportedcontent/user_report.php new file mode 100644 index 000000000..ee6c7cbf8 --- /dev/null +++ b/mod/reportedcontent/views/default/reportedcontent/user_report.php @@ -0,0 +1,6 @@ + +<p class="user_menu_profile"> +<?php +	echo "<a href=\"javascript:location.href='". $CONFIG->wwwroot . "mod/reportedcontent/add.php?address='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)\">" . elgg_echo('reportedcontent:report') . "</a>"; +?> +</p>
\ No newline at end of file  | 
