function sql_addAlphaToWhereClause(&$clauses, $column) { $alpha = httpVar('alpha'); if ($alpha && $alpha != 'All') { sql_addToWhereClause($clauses, $clauses ? 'AND' : 'WHERE', $column, '~*', "^[" . addslashes($alpha) . "]"); } }
function i18n_setLanguage($lang) { global $common_language; if ($lang == 'C') { setcookie('synchrotronLanguage', '', 0, $auth_path); unset($GLOBALS['common_language']); unset($common_language); unset($_COOKIE['synchrotronLanguage']); return; } $db = db_connection(); sql_addToWhereClause($where, 'WHERE', 'code', '=', $lang); $query = db_query($db, "select id from languages {$where};"); if (db_numRows($query) > 0) { list($common_language) = db_row($query, 0); $common_language = intval($common_language); } }
function processProviderAssets($assets, $packageBasePath, $provider, $providerId, $config) { global $verbose; $metadataPath = $config['metadata']; if (empty($metadataPath)) { $metadataPath = 'metadata.desktop'; } $recreateCategoriesFile = false; $categories = array(); $db = db_connection('write'); foreach ($assets as $asset => $path) { if ($verbose) { print "Processing {$providerId} {$asset} at {$path}\n"; } if (!is_file("{$path}/{$metadataPath}")) { if ($verbose) { print "No such thing as {$path}/{$metadataPath}, perhaps it was deleted?\n"; } deleteAsset($providerId, $asset); continue; } $metadata = new INIFile("{$path}/{$metadataPath}"); $plugin = $metadata->getValue('X-KDE-PluginInfo-Name', 'Desktop Entry'); if (empty($plugin)) { print "No X-KDE-PluginInfo-Name entry in {$path}/{$metadataPath}\n"; continue; } $packageFile = $metadata->getValue('X-Synchrotron-ContentUrl', 'Desktop Entry'); $externalPackage = !empty($packageFile); if (!$externalPackage) { $packageFile = createPackage($plugin, $path, $packageBasePath, $config); } if (!$packageFile) { deleteAsset($providerId, $asset); continue; } $category = $metadata->getValue('X-KDE-PluginInfo-Category', 'Desktop Entry'); if (empty($category)) { $category = 'Miscelaneous'; } if (isset($categories[$category])) { $categoryId = $categories[$category]; } else { unset($where); sql_addToWhereClause($where, '', 'provider', '=', $providerId); global $db_type; if ($db_type == 'postgres') { sql_addToWhereClause($where, 'and', 'name', 'ILIKE', $category); } else { sql_addToWhereClause($where, 'and', 'name', 'LIKE', $category); } $query = db_query($db, "SELECT id FROM categories WHERE {$where}"); if (db_numRows($query) < 1) { unset($fields, $values); sql_addIntToInsert($fields, $values, 'provider', $providerId); sql_addScalarToInsert($fields, $values, 'name', $category); db_insert($db, 'categories', $fields, $values); $query = db_query($db, "SELECT id FROM categories WHERE {$where}"); $recreateCategoriesFile = true; } list($categoryId) = db_row($query, 0); $categories[$category] = $categoryId; } unset($where); sql_addToWhereClause($where, '', 'provider', '=', $providerId); sql_addToWhereClause($where, 'and', 'id', '=', $plugin); $query = db_query($db, "select * from content where {$where};"); if (db_numRows($query) > 0) { // just update the field unset($fields); sql_addScalarToUpdate($fields, 'version', $metadata->getValue('X-KDE-PluginInfo-Version', 'Desktop Entry')); sql_addScalarToUpdate($fields, 'author', $metadata->getValue('X-KDE-PluginInfo-Author', 'Desktop Entry')); sql_addScalarToUpdate($fields, 'homepage', $metadata->getValue('X-KDE-PluginInfo-Website', 'Desktop Entry')); //FIXME: get preview image from asset dir! sql_addScalarToUpdate($fields, 'preview', <image path>); sql_addScalarToUpdate($fields, 'name', $metadata->getValue('Name', 'Desktop Entry')); // FIXME: i18n sql_addScalarToUpdate($fields, 'description', $metadata->getValue('Comment', 'Desktop Entry')); sql_addIntToUpdate($fields, 'category', $categoryId); sql_addRawToUpdate($fields, 'updated', 'current_timestamp'); sql_addScalarToUpdate($fields, 'package', $packageFile); sql_addBoolToUpdate($fields, 'externalPackage', $externalPackage); db_update($db, 'content', $fields, $where); } else { // new asset! unset($fields, $values); sql_addIntToInsert($fields, $values, 'provider', $providerId); sql_addScalarToInsert($fields, $values, 'id', $plugin); sql_addScalarToInsert($fields, $values, 'version', $metadata->getValue('X-KDE-PluginInfo-Version', 'Desktop Entry')); sql_addScalarToInsert($fields, $values, 'author', $metadata->getValue('X-KDE-PluginInfo-Author', 'Desktop Entry')); sql_addScalarToInsert($fields, $values, 'homepage', $metadata->getValue('X-KDE-PluginInfo-Website', 'Desktop Entry')); //FIXME: get preview image from asset dir! sql_addScalarToInsert($fields, $values, 'preview', <image path>); sql_addScalarToInsert($fields, $values, 'name', $metadata->getValue('Name', 'Desktop Entry')); // FIXME: i18n sql_addScalarToInsert($fields, $values, 'description', $metadata->getValue('Comment', 'Desktop Entry')); sql_addIntToInsert($fields, $values, 'category', $categoryId); sql_addScalarToInsert($fields, $values, 'package', $packageFile); sql_addBoolToInsert($fields, $values, 'externalPackage', $externalPackage); db_insert($db, 'content', $fields, $values); } } if ($recreateCategoriesFile) { createCategoriesFile($provider); } }
printHeader(0, $pagesize); printFooter(); exit; } $categories = $_GET['categories']; if (!empty($categories)) { $categories = explode('x', $categories); $catsIn = array(); foreach ($categories as $category) { $category = intval($category); if ($category > 0) { array_push($catsIn, $category); } } if (!empty($catsIn)) { sql_addToWhereClause($where, 'and', 'category', 'in', '(' . implode(', ', $catsIn) . ')', false, false); } } unset($limit); if ($pagesize > 0) { $limit = "LIMIT {$pagesize}"; } unset($offset); if ($page > 0) { $offset = 'OFFSET ' . $page * $pagesize; } unset($orderBy); if (empty($sortMode) || $sortMode == 'new') { $orderBy = 'ORDER BY c.updated DESC'; } else { if ($sortMode == 'alpha') {
$contentId = $_GET['contentid']; if (empty($contentId)) { printHeader(101, _("Content ID not provided")); printFooter(); exit; } // we don't care about the item id, really, because we only ever have one // //$itemId = $_GET['itemid']; $db = db_connection(); unset($where); sql_addToWhereClause($where, '', 'p.name', '=', $provider); sql_addToWhereClause($where, 'and', 'c.id', '=', $contentId); $items = db_query($db, "SELECT c.package, c.externalPackage FROM content c LEFT JOIN providers p ON (c.provider = p.id) WHERE {$where};"); if (db_numrows($items) < 1) { printHeader(101, _("Content ID '{$contentId}' not fond")); printFooter(); exit; } printHeader(100); list($package, $external) = db_row($items, 0); if (db_boolean($external)) { $url = $package; } else { $url = "{$common_baseURL}/{$provider}/files/{$package}"; } print " <content details=\"download\"><downloadlink>{$url}</downloadlink></content>\n"; printFooter(); // record the request as a download unset($where); sql_addToWhereClause($where, '', 'id', '=', $contentId); db_query($db, "UPDATE content SET downloads = downloads + 1 WHERE {$where};");
if (!canAccessApi($_SERVER['REMOTE_ADDR'])) { printHeader(200, _("Too many requests from {$_SERVER['REMOTE_ADDR']}")); printFooter(); exit; } $provider = $_GET['provider']; if (empty($provider)) { printHeader(200, _("Invalid provider")); printFooter(); exit; } $contentId = $_GET['contentid']; if (empty($contentId)) { printHeader(200, _("Content ID not provided")); printFooter(); exit; } $db = db_connection(); unset($where); sql_addToWhereClause($where, '', 'p.name', '=', $provider); sql_addToWhereClause($where, 'and', 'c.id', '=', $contentId); $items = db_query($db, "SELECT c.id, c.name, c.version, c.description, c.updated, c.created, c.author, c.homepage, c.downloads, c.preview FROM content c LEFT JOIN providers p ON (c.provider = p.id) WHERE {$where};"); if (db_numrows($items) < 1) { printHeader(200, _("Content ID '{$contentId}' not fond")); printFooter(); exit; } printHeader(100); list($id, $name, $version, $description, $updated, $created, $author, $homepage, $downloads, $preview) = db_row($items, 0); printItem($id, $name, $version, $description, $updated, $created, '', $author, $homepage, $downloads, $preview); printFooter();