[ 'name' => 'Filter by username (optional)', 'type' => 'text', 'defaultValue' => 'unsplash' ], 'm' => [ 'name' => 'Max number of photos', 'type' => 'number', 'defaultValue' => 20, 'required' => true ], 'prev_q' => [ 'name' => 'Preview quality', 'type' => 'list', 'values' => [ 'full' => 'full', 'regular' => 'regular', 'small' => 'small', 'thumb' => 'thumb', ], 'defaultValue' => 'regular' ], 'w' => [ 'name' => 'Max download width (optional)', 'exampleValue' => 1920, 'type' => 'number', 'defaultValue' => 1920, ], 'jpg_q' => [ 'name' => 'Max JPEG quality (optional)', 'exampleValue' => 75, 'type' => 'number', 'defaultValue' => 75, ] ]]; public function collectData() { $filteredUser = $this->getInput('u'); $width = $this->getInput('w'); $max = $this->getInput('m'); $previewQuality = $this->getInput('prev_q'); $jpgQuality = $this->getInput('jpg_q'); $url = 'https://unsplash.com/napi'; if (strlen($filteredUser) > 0) { $url .= '/users/' . $filteredUser; } $url .= '/photos?page=1&per_page=' . $max; $api_response = getContents($url); $json = json_decode($api_response, true); foreach ($json as $json_item) { $item = []; // Get image URI $uri = $json_item['urls']['raw'] . '&fm=jpg'; if ($jpgQuality > 0) { $uri .= '&q=' . $jpgQuality; } if ($width > 0) { $uri .= '&w=' . $width . '&fit=max'; } $uri .= '.jpg'; // only for format hint $item['uri'] = $uri; // Get title from description if (is_null($json_item['description'])) { $item['title'] = 'Unsplash picture from ' . $json_item['user']['name']; } else { $item['title'] = $json_item['description']; } $item['timestamp'] = $json_item['created_at']; $content = 'User: @' . $json_item['user']['username'] . ''; if (isset($json_item['location']['name'])) { $content .= ' | Location: ' . $json_item['location']['name']; } $content .= ' | Image on Unsplash
Image from '
                . $filteredUser
                . ''; $item['content'] = $content; $this->items[] = $item; } } public function getName() { $filteredUser = $this->getInput('u') ?? ''; if (strlen($filteredUser) > 0) { return $filteredUser . ' - ' . self::NAME; } else { return self::NAME; } } }