123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <?php
- /**
- * Elgg Market Plugin
- * @package market
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author slyhne
- * @copyright slyhne 2010-2015
- * @link http://tiger-inc.eu
- * @version 1.10
- */
- elgg_register_event_handler('init','system','market_init');
- function market_init() {
- elgg_register_library('market', elgg_get_plugins_path() . 'market/lib/market.php');
- // Add a site navigation item
- $item = new ElggMenuItem('market', elgg_echo('market:title'), 'market/category');
- elgg_register_menu_item('site', $item);
- // Extend owner block menu
- elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'market_owner_block_menu');
- elgg_register_plugin_hook_handler('register', 'menu:page', 'market_page_menu');
- // Extend system CSS with our own styles
- elgg_extend_view('css/elgg','market/css');
- elgg_extend_view('css/admin','market/admincss');
- // register the market's JavaScript
- $market_js = elgg_get_simplecache_url('js', 'market');
- elgg_register_simplecache_view('js/market');
- elgg_register_js('market', $market_js, 'footer');
- // Add a new widget
- elgg_register_widget_type(
- 'market',
- elgg_echo('market:widget'),
- elgg_echo('market:widget:description')
- );
- // Register a page handler, so we can have nice URLs
- elgg_register_page_handler('market','market_page_handler');
- // override the default url to view a market object
- elgg_register_plugin_hook_handler('entity:url', 'object', 'market_set_url');
- // Register entity type
- elgg_register_entity_type('object', 'market');
- // Register granular notification for this type
- elgg_register_notification_event('object', 'market', array('create'));
- // Listen to notification events and supply a more useful message
- elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'market_notify_message');
- // Setup cron job to delete old market posts
- elgg_register_plugin_hook_handler('cron', 'daily', 'market_expire_cron_hook');
- // Register actions
- $action_url = elgg_get_plugins_path() . "market/actions/";
- elgg_register_action("market/save", "{$action_url}save.php");
- elgg_register_action("market/delete", "{$action_url}delete.php");
- elgg_register_action("market/delete_img", "{$action_url}delete_img.php");
- }
- // market page handler; allows the use of fancy URLs
- function market_page_handler($page) {
- $pages = dirname(__FILE__) . '/pages/market';
- if (!isset($page[1])) {
- $page[1] = 'all';
- }
- if (!isset($page[2])) {
- $page[2] = 'all';
- }
-
- // Show market sidebar at top of sidebar
- elgg_extend_view("page/elements/sidebar", "market/sidebar");
- $page_type = $page[0];
- switch ($page_type) {
- case 'owned':
- set_input('username', $page[1]);
- include "$pages/owned.php";
- break;
- /*
- case 'friends':
- set_input('username' , $page[1]);
- include "$pages/friends.php";
- break;
- */
- case 'view':
- set_input('marketpost', $page[1]);
- include "$pages/view.php";
- break;
- case 'image':
- set_input('guid', $page[1]);
- set_input('imagenum', $page[2]);
- set_input('size', $page[3]);
- set_input('tu', $page[4]);
- include "$pages/image.php";
- break;
- case 'imagepopup':
- set_input('guid', $page[1]);
- set_input('imagenum', $page[2]);
- include "$pages/imagepopup.php";
- break;
- case 'add':
- elgg_load_library('market');
- include "$pages/add.php";
- break;
- case 'edit':
- elgg_load_library('market');
- set_input('guid', $page[1]);
- include "$pages/edit.php";
- break;
- case 'category':
- set_input('cat', $page[1]);
- set_input('type', $page[2]);
- include "$pages/category.php";
- break;
- case 'terms':
- include "$pages/terms.php";
- break;
- default:
- set_input('cat', $page[1]);
- set_input('type', $page[2]);
- include "$pages/category.php";
- break;
- }
- return true;
- }
- // Populates the ->getURL() method for market objects
- function market_set_url($hook, $type, $url, $params) {
- $entity = $params['entity'];
- if (elgg_instanceof($entity, 'object', 'market')) {
- $friendly_title = elgg_get_friendly_title($entity->title);
- return "market/view/{$entity->guid}/{$friendly_title}";
- }
- }
- // Add to the user block menu
- function market_owner_block_menu($hook, $type, $return, $params) {
- if (elgg_instanceof($params['entity'], 'user')) {
- $url = "market/owned/{$params['entity']->username}";
- $item = new ElggMenuItem('market', elgg_echo('market'), $url);
- $return[] = $item;
- }
- return $return;
- }
- /**
- * Add a page menu menu.
- *
- * @param string $hook
- * @param string $type
- * @param array $return
- * @param array $params
- */
- function market_page_menu($hook, $type, $return, $params) {
- if (elgg_is_logged_in()) {
- // only show buttons in market pages
- if (elgg_in_context('market')) {
- $user = elgg_get_logged_in_user_entity();
- $page_owner = elgg_get_page_owner_entity();
- if (!$page_owner) {
- $page_owner = elgg_get_logged_in_user_entity();
- }
-
- if ($page_owner != $user) {
- $usertitle = elgg_echo('market:user', array($page_owner->name));
- $return[] = new ElggMenuItem('market_owner', $usertitle, 'market/owned/' . $page_owner->username);
- //$friendstitle = elgg_echo('market:user:friends', array($page_owner->name));
- //$return[] = new ElggMenuItem('2userfriends', $friendstitle, 'market/friends/' . $page_owner->username);
- } else {
- $return[] = new ElggMenuItem('market_owner', elgg_echo('market:mine'), 'market/owned/' . $user->username);
- }
- }
- }
- return $return;
- }
- // Cron function to delete old market posts
- function market_expire_cron_hook($hook, $entity_type, $returnvalue, $params) {
- elgg_load_library('market');
- $market_ttl = elgg_get_plugin_setting('market_expire','market');
- if ($market_ttl == 0) {
- return true;
- }
- $time_limit = strtotime("-$market_ttl months");
- $ret = elgg_set_ignore_access(TRUE);
-
- $entities = elgg_get_entities(array(
- 'type' => 'object',
- 'subtype' => 'market',
- 'created_time_upper' => $time_limit,
- ));
- foreach ($entities as $entity) {
- $date = date('j/n-Y', $entity->time_created);
- $title = $entity->title;
- $owner = $entity->getOwnerEntity();
- notify_user($owner->guid,
- elgg_get_site_entity()->guid,
- elgg_echo('market:expire:subject'),
- elgg_echo('market:expire:body', array($owner->name, $title, $date, $market_ttl)),
- NULL,
- 'site');
- // Delete market post incl. pictures
- market_delete_post($entity);
- }
-
- $ret = elgg_set_ignore_access(FALSE);
-
- }
- /**
- * Returns the body of a notification message
- *
- * @param string $hook
- * @param string $entity_type
- * @param string $returnvalue
- * @param array $params
- */
- function market_notify_message($hook, $entity_type, $returnvalue, $params) {
- $entity = $params['entity'];
- $to_entity = $params['to_entity'];
- $method = $params['method'];
- if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'market')) {
- $descr = elgg_get_excerpt($entity->description);
- $title = $entity->title;
- $owner = $entity->getOwnerEntity();
- $market_type = elgg_echo("market:type:{$entity->market_type}");
- return elgg_echo('market:notification', array(
- $owner->name,
- $market_type,
- $title,
- $descr,
- $entity->getURL()
- ));
- }
- return null;
- }
|