$entity->extended_address = $extended_address; $entity->locality = $locality; $entity->region = $region; $entity->postal_code = $postal_code; $entity->country_code = $country_iso; if ($entity->country_code && is_callable(array('hypeJunction\\Geo\\Countries', 'getCountries'))) { $countries = call_user_func(array('hypeJunction\\Geo\\Countries', 'getCountries'), 'iso', 'name', 'name'); $country = $countries[$country_iso]; } $entity->country = $country; $entity->phone = get_input('phone'); $entity->website = get_input('website'); $entity->twitter = get_input('twitter'); $tools = get_input('tools', array()); $entity->checkins = elgg_extract('checkins', $tools, false); if ($entity->save()) { $entity->location = implode(', ', array_filter(array($street_address, $extended_address, $locality, $region, $postal_code, $country))); if (!empty($_FILES['icon']['name']) && $_FILES['icon']['error'] == UPLOAD_ERR_OK && substr_count($_FILES['icon']['type'], 'image/')) { IconHandler::makeIcons($entity, $_FILES['icon']['tmp_name']); } if ($river) { elgg_create_river_item(array('view' => 'framework/river/places/create', 'action_type' => 'create', 'subject_guid' => $entity->owner_guid, 'object_guid' => $entity->guid)); } elgg_clear_sticky_form('places/edit'); system_message(elgg_echo('places:edit:success', array($entity->title))); $forward_url = $entity->getURL(); } else { register_error(elgg_echo('places:edit:error')); $forward_url = REFERER; } forward($forward_url);
<?php namespace hypeJunction\Gallery; use ElggFile; use hypeJunction\Filestore\IconHandler; $guid = get_input('guid'); $entity = get_entity($guid); if (!$entity instanceof ElggFile || !$entity->canEdit()) { register_error(elgg_echo('gallery:tools:crop:error')); forward(REFERER); } $icon_sizes = get_icon_sizes($entity); unset($icon_sizes['master']); $result = IconHandler::makeIcons($entity, null, array('icon_sizes' => $icon_sizes, 'coords' => $coords)); if (!$result) { register_error($exception); } else { system_message(elgg_echo('gallery:tools:crop:success')); } if (elgg_is_xhr) { print json_encode($coords); } forward(REFERER);
/** * Digital products pagehandler * * @param array $page Array of URL segments * @param string $handler Handler name * @return boolean */ function page_handler($page, $handler) { elgg_push_breadcrumb(elgg_echo('places'), $handler); $context = elgg_extract(0, $page, 'all'); switch ($context) { case 'all': case 'featured': elgg_register_title_button('places', 'create'); $title = elgg_echo("places:{$context}"); elgg_push_breadcrumb($title); $vars = array('filter_context' => $context); $content = elgg_view('framework/places/list', $vars); $filter = elgg_view('framework/places/filter', $vars); $sidebar = elgg_view('framework/places/sidebar', $vars); break; case 'owner': $username = $page[1]; if ($username) { $user = get_user_by_username($username); } else { if (elgg_is_logged_in()) { $user = elgg_get_logged_in_user_entity(); } } elgg_set_page_owner_guid($user->guid); if (elgg_get_logged_in_user_guid() == $user->guid) { elgg_register_title_button('places', 'create'); $title = elgg_echo('places:mine'); } else { $title = elgg_echo('places:owner', array($user->name)); } elgg_push_breadcrumb($user->name, $handler . '/owner/' . $user->username); $vars = array('filter_context' => $context); $content = elgg_view('framework/places/list', $vars); $filter = elgg_view('framework/places/filter', $vars); $sidebar = elgg_view('framework/places/sidebar', $vars); break; case 'group': $group = get_entity($page[1]); if (!elgg_instanceof($group, 'group')) { return false; } elgg_set_page_owner_guid($group->guid); if ($group->canWriteToContainer(0, 'object', Place::SUBTYPE)) { elgg_register_title_button('places', 'create'); } elgg_push_breadcrumb($group->name, $handler . '/group/' . $group->guid); $content = elgg_view('framework/places/group', $vars); $filter = false; $sidebar = false; break; case 'bookmarked': gatekeeper(); $username = $page[1]; if ($username) { $user = get_user_by_username($username); } else { if (elgg_is_logged_in()) { $user = elgg_get_logged_in_user_entity(); } } if (!$user->canEdit()) { return false; } elgg_set_page_owner_guid($user->guid); if (elgg_get_logged_in_user_guid() == $user->guid) { elgg_register_title_button('places', 'create'); $title = elgg_echo('places:bookmarked:mine'); } else { $title = elgg_echo('places:bookmarked:owner', array($user->name)); } elgg_push_breadcrumb($user->name, $handler . '/owner/' . $user->username); elgg_push_breadcrumb($title, $handler . '/bookmarked/' . $user->username); $vars = array('filter_context' => $context); $content = elgg_view('framework/places/list', $vars); $filter = elgg_view('framework/places/filter', $vars); $sidebar = elgg_view('framework/places/sidebar', $vars); break; case 'view': case 'profile': $entity_guid = $page[1]; $entity = get_entity($entity_guid); if (!$entity instanceof Place) { return false; } $container = $entity->getContainerEntity(); if (elgg_instanceof($container, 'group')) { elgg_set_page_owner_guid($container->guid); group_gatekeeper(true); elgg_push_breadcrumb($container->name, $handler . '/group/' . $container->guid); } else { $owner = $entity->getOwnerEntity(); elgg_push_breadcrumb($owner->name, $handler . '/owner/' . $owner->username); } elgg_set_page_owner_guid($entity->guid); $title = $entity->title; elgg_push_breadcrumb($title); $header_override = ''; $content = elgg_view('framework/places/profile', array('entity' => $entity)); $sidebar = elgg_view('framework/places/sidebar', array('entity' => $entity)); $filter = false; break; case 'create': $container_guid = $page[1]; $container = get_entity($container_guid); if (elgg_instanceof($container) && !$container->canWriteToContainer(0, 'object', Place::SUBTYPE)) { return false; } $title = elgg_echo('places:create'); $content = elgg_view('framework/places/edit', array('container' => $container)); $filter = false; $sidebar = elgg_view('framework/places/sidebar', array('container' => $container)); break; case 'edit': $entity_guid = $page[1]; $entity = get_entity($entity_guid); if (!$entity instanceof Place || !$entity->canEdit()) { return false; } $title = elgg_echo('places:edit', array($entity->title)); $content = elgg_view('framework/places/edit', array('entity' => $entity)); $filter = false; $sidebar = elgg_view('framework/places/sidebar', array('entity' => $entity)); break; case 'icon': $guid = elgg_extract(1, $page, 0); $size = elgg_extract(2, $page, 'medium'); $entity = get_entity($guid); $config = get_icon_sizes($entity); if (!array_key_exists($size, $config)) { $size = 'medium'; } IconHandler::outputRawIcon($entity->guid, $size); break; } if ($content) { if (elgg_is_xhr()) { echo $content; } else { $layout = elgg_view_layout('content', array('header_override' => isset($header_override) ? $header_override : null, 'title' => $title, 'content' => $content, 'filter' => $filter, 'sidebar' => $sidebar)); echo elgg_view_page($title, $layout); } return true; } return false; }
/** * Create new entities from file uploads * * @param string $input Name of the file input * @return void */ protected static function entityFactory($input) { if (!isset(self::$config['filestore_prefix'])) { $prefix = "file/"; } $uploads = self::$uploads[$input]; $handled_uploads = array(); $entities = array(); foreach ($uploads as $key => $upload) { if ($upload->error) { $handled_uploads[] = $upload; continue; } $filehandler = new ElggFile(); if (is_array(self::$attributes)) { foreach (self::$attributes as $key => $value) { $filehandler->{$key} = $value; } } $filestorename = elgg_strtolower(time() . $upload->name); $filehandler->setFilename($prefix . $filestorename); $filehandler->title = $upload->name; $filehandler->originalfilename = $upload->name; $filehandler->filesize = $upload->size; $filehandler->mimetype = $upload->mimetype; $filehandler->simpletype = $upload->simpletype; $filehandler->open("write"); $filehandler->close(); move_uploaded_file($upload->path, $filehandler->getFilenameOnFilestore()); if ($filehandler->save()) { $upload->guid = $filehandler->getGUID(); $upload->file = $filehandler; if ($filehandler->simpletype == "image") { IconHandler::makeIcons($filehandler); } $entities[] = $filehandler; } else { $upload->error = elgg_echo('upload:error:unknown'); } $handled_uploads[] = $upload; } self::$uploads[$input] = $handled_uploads; self::$files[$input] = $entities; }
/** * {@inheritdoc} */ public function put(ParameterBag $params) { $decoded = ""; if ($params->contents) { if (empty($params->filename) || empty($params->mimetype)) { throw new GraphException("You need to provide a filename and content type with encoded file contents", HttpResponse::HTTP_BAD_REQUEST); } for ($i = 0; $i < ceil(strlen($params->contents) / 256); $i++) { $decoded = $decoded . base64_decode(substr($params->contents, $i * 256, 256)); } if (!$decoded) { throw new GraphException("File contents can not be empty and must be encoded with base64", HttpResponse::HTTP_BAD_REQUEST); } if (empty($params->checksum) || md5($decoded) != $params->checksum) { throw new GraphException("Checksum mismatch", HttpResponse::HTTP_BAD_REQUEST); } } $owner_guid = $params->owner_guid ?: elgg_get_logged_in_user_guid(); $owner = get_entity($owner_guid); if (!$owner->canEdit()) { throw new GraphException("You are not allowed to upload files on users's behalf", HttpResponse::HTTP_FORBIDDEN); } $container_guid = $params->container_guid ?: elgg_get_logged_in_user_guid(); $container = get_entity($container_guid); if (!$container->canWriteToContainer($owner->guid, 'object', 'file')) { throw new GraphException("You are not allowed to upload files to this container", HttpResponse::HTTP_FORBIDDEN); } $file_guid = $params->guid ?: 0; if ($file_guid) { $file = get_entity($file_guid); } else { if ($decoded) { $file = new ElggFile(); $file->subtype = 'file'; $file->owner_guid = $owner->guid; $file->container_guid = $container->guid; $file->title = $params->title ?: $params->filename; $file->access_id = ACCESS_PRIVATE; $file->origin = 'graph'; } } $attrs = array('title', 'description', 'access_id'); foreach ($attrs as $attr) { if (isset($params->{$attr}) && $this->request->get($attr) !== null) { $file->{$attr} = $params->{$attr}; } } if (!$file instanceof \ElggFile) { throw new GraphException("Unable to load or create a file entity"); } if ($decoded) { $file->setFilename("file/{$params->filename}"); if (!$file->exists()) { $file->open('write'); $file->close(); } file_put_contents($file->getFilenameOnFilestore(), $decoded); $file->originalfilename = $params->filename; $mimetype = $file->detectMimeType(null, $params->mimetype); $file->setMimeType($mimetype); $file->simpletype = elgg_get_file_simple_type($mimetype); } $guid = $file->save(); if (!$guid) { $file->delete(); throw new GraphException("File could not be saved with given parameters", HttpResponse::HTTP_BAD_REQUEST); } if ($file->simpletype == 'image') { IconHandler::makeIcons($file); } return array('nodes' => array($file)); }