public function sort(&$sort, &$order, $params)
 {
     if (is_null($sort)) {
         $sort = 'name';
     }
     return ExtensionManager::fetch(array(), array(), $sort . ' ' . $order);
 }
 public function view()
 {
     header('Content-Type: text/xml');
     $response = new XMLElement('response');
     $id = $_GET['id'];
     $version = Symphony::Configuration()->get('version', 'symphony');
     // remove text followed by numbers e.g. 2.3beta2 or 2.3rc1
     $version = preg_replace("/[a-z]+[0-9]+/i", '', $version);
     // remove text e.g. 2.3beta
     $version = preg_replace("/[a-z]+/i", '', $version);
     $symphony_version = self::normaliseVersionNumber($version);
     $response->setAttribute('symphony-version', $symphony_version);
     if (empty($id)) {
         $response->setAttribute('error', '404');
         echo $response->generate();
         die;
     }
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, sprintf('http://symphonyextensions.com/api/extensions/%s/', $id));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_USERAGENT, 'extension_status; Symphony ' . Symphony::Configuration()->get('version', 'symphony'));
     curl_setopt($ch, CURLOPT_REFERER, URL);
     $xml = curl_exec($ch);
     if (!$xml) {
         $response->setAttribute('error', '404');
         echo $response->generate();
         die;
     }
     $extension = simplexml_load_string($xml);
     $compatibility = $extension->xpath("//compatibility/symphony[@version='" . $symphony_version . "']");
     $extensions = ExtensionManager::fetch();
     $current_version = $extensions[$id]['version'];
     $response->setAttribute('current-local-version', $current_version);
     if (count($compatibility) == 0) {
         $response->setAttribute('compatible-version-exists', 'no');
     } else {
         $latest_version = $compatibility[0]->attributes()->use;
         $github_url = $extension->xpath("//link[@rel='github:page']/@href");
         $extension_url = $extension->xpath("//link[@rel='site:extension']/@href");
         $response->setAttribute('compatible-version-exists', 'yes');
         $response->setAttribute('latest-url', (string) $github_url[0] . '/tree/' . $latest_version);
         $response->setAttribute('latest', $latest_version);
         $response->setAttribute('can-update', version_compare($latest_version, $current_version, '>') ? 'yes' : 'no');
         $response->setAttribute('extension-url', 'http://symphonyextensions.com' . (string) $extension_url[0]);
     }
     echo $response->generate();
     die;
 }