From: Hans-Christoph Steiner
Date: Wed, 19 Jul 2017 07:55:45 +0000 (+0200)
Subject: wp-droid: move deprecated Wordpress plugin to its own repo
X-Git-Tag: 0.8~9^2~5
X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3e67634a276b4f40b136cfb1a89751adbf92b55c;p=fdroidserver.git
wp-droid: move deprecated Wordpress plugin to its own repo
closes #325
---
diff --git a/MANIFEST.in b/MANIFEST.in
index 320ffe47..a5945d70 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -26,8 +26,3 @@ include tests/run-tests
include tests/update.TestCase
include tests/urzip.apk
include tests/urzip-badsig.apk
-include wp-fdroid/AndroidManifest.xml
-include wp-fdroid/android-permissions.php
-include wp-fdroid/readme.txt
-include wp-fdroid/strings.xml
-include wp-fdroid/wp-fdroid.php
diff --git a/wp-fdroid/AndroidManifest.xml b/wp-fdroid/AndroidManifest.xml
deleted file mode 100644
index 83559288..00000000
--- a/wp-fdroid/AndroidManifest.xml
+++ /dev/null
@@ -1,2711 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/wp-fdroid/android-permissions.php b/wp-fdroid/android-permissions.php
deleted file mode 100644
index c59bc6d4..00000000
--- a/wp-fdroid/android-permissions.php
+++ /dev/null
@@ -1,114 +0,0 @@
-android_manifest_file_path = $android_manifest_file_path_in;
- $this->android_strings_file_path = $android_strings_file_path_in;
- $this->cache_file_path = $cache_file_path_in;
- }
-
- // Returns an associative array with android permissions and data about them
- function get_permissions_array() {
-
- // Check status of cache
- $android_manifest_file_stat = stat($this->android_manifest_file_path);
- $android_manifest_file_mtime = $android_manifest_file_stat['mtime'];
- $android_strings_file_stat = stat($this->android_strings_file_path);
- $android_strings_file_mtime = $android_strings_file_stat['mtime'];
- $cache_file_mtime = 0;
- if(file_exists($this->cache_file_path)) {
- $cache_file_stat = stat($this->cache_file_path);
- $cache_file_mtime = $cache_file_stat['mtime'];
- }
-
- // If the cache is fresh, use it instead
- if($android_manifest_file_mtime < $cache_file_mtime && $android_strings_file_mtime < $cache_file_mtime ) {
- $cache_file_handle = fopen($this->cache_file_path, 'r');
- $cache_file_content = fread($cache_file_handle, filesize($this->cache_file_path));
- fclose($cache_file_handle);
-
- $permissions = unserialize($cache_file_content);
-
- return $permissions;
- }
-
- // We are updating the cache, touch the file (note: race condition possible between stating the cache file above and this line...)
- touch($this->cache_file_path);
-
- // Get permission raw data from XML
- $manifestDoc = new DOMDocument;
- $manifestDoc->load($this->android_manifest_file_path);
- $manifestXpath = new DOMXPath($manifestDoc);
-
- $stringsDoc = new DOMDocument;
- $stringsDoc->load($this->android_strings_file_path);
- $stringsXpath = new DOMXPath($stringsDoc);
-
- $comment = '';
- foreach ($manifestXpath->query('node()') as $node) {
- // Save permissions and permission groups from tags
- if($node->nodeName == 'permission-group' || $node->nodeName == 'permission') {
- $name = $node->attributes->getNamedItem('name')->value;
- $name = substr(strrchr($name,'.'), 1);
-
- // Lookup the human readable title
- $labelObject = $node->attributes->getNamedItem('label');
- $labelString = $name;
- if( $labelObject !== NULL ) {
- $labelName = substr(strrchr($labelObject->value,'/'),1);
- $labelStringObject = $stringsXpath->query('//string[@name="'.$labelName.'"]');
- $labelString = ucfirst($labelStringObject->item(0)->nodeValue);
- }
-
- // Lookup the human readable description
- $descriptionObject = $node->attributes->getNamedItem('description');
- $descriptionString = '(Description missing)';
- if($descriptionObject !== NULL) {
- $descriptionName = substr(strrchr($descriptionObject->value,'/'),1);
- $descriptionStringObject = $stringsXpath->query('//string[@name="'.$descriptionName.'"]');
- $descriptionString = ucfirst($descriptionStringObject->item(0)->nodeValue);
- }
-
- $permissions[$node->nodeName][$name]['label'] = stripslashes($labelString);
- $permissions[$node->nodeName][$name]['description'] = stripslashes($descriptionString);
- $permissions[$node->nodeName][$name]['comment'] = stripslashes(str_replace(array("\r\n", "\r", "\n", "\t", ' '), '', $comment));
-
- if($node->nodeName == 'permission') {
- $permissionGroupObject = $node->attributes->getNamedItem('permissionGroup');
- $permissionGroup = 'none';
- if($permissionGroupObject !== NULL) {
- $permissionGroup = substr(strrchr($permissionGroupObject->value,'.'), 1);
- }
-
- $permissions[$node->nodeName][$name]['permissionGroup'] = $permissionGroup;
- $permissions[$node->nodeName][$name]['protectionLevel'] = $node->attributes->getNamedItem('protectionLevel')->value;
- }
- }
-
- // Cache descriptions from comments preceding the tags
- if($node->nodeName == '#comment') {
- $comment .= $node->textContent;
- }
- elseif($node->nodeName != '#text') {
- $comment = '';
- }
- }
-
- // Update cache with serialized permissions
- $cache_file_handle = fopen($this->cache_file_path, 'w');
- fwrite($cache_file_handle, serialize($permissions));
- fclose($cache_file_handle);
-
- return $permissions;
- }
-}
-?>
diff --git a/wp-fdroid/readme.txt b/wp-fdroid/readme.txt
deleted file mode 100644
index 0dfba563..00000000
--- a/wp-fdroid/readme.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-=== WP FDroid ===
-Contributors: CiaranG
-Tags: android, repository
-Requires at least: 2.9
-Tested up to: 2.9
-Stable tag: 0.1
-
-Provides the ability to browse the contents of an FDroid repository.
-
-== Description ==
-
-This plugin provides the ability to browse the contents of an FDroid
-repository. The repository browser can be inserted into the site by
-creating a page containing the 'fdroidrepo' shortcode.
-
-License: GPL v3
-
-== Installation ==
-
-1. Download and extract the zip file.
-2. Upload the plugin directory to /wp-content/plugins on your server.
-3. Go to the Plugins screen in your Wordpress Admin and activate it.
-
-== Frequently Asked Questions ==
-
-= Is this finished? =
-
-No it isn't. I'm working on it.
-
-== Screenshots ==
-
-1. There isn't one yet actually.
-
diff --git a/wp-fdroid/strings.xml b/wp-fdroid/strings.xml
deleted file mode 100644
index 7b785ec5..00000000
--- a/wp-fdroid/strings.xml
+++ /dev/null
@@ -1,3389 +0,0 @@
-
-
-
-
- B
-
- KB
-
- MB
-
- GB
-
- TB
-
- PB
-
- %1$s %2$s
-
-
- <untitled>
-
-
- \u2026
-
-
- \u2025
-
-
- (No phone number)
-
-
- (Unknown)
-
-
- Voicemail
-
-
- MSISDN1
-
-
-
- Connection problem or invalid MMI code.
-
- Operation is restricted to fixed dialing numbers only.
-
-
- Service was enabled.
-
- Service was enabled for:
-
- Service has been disabled.
-
- Registration was successful.
-
- Erasure was successful.
-
- Incorrect password.
-
- MMI complete.
-
- The old PIN you typed is not correct.
-
- The PUK you typed is not correct.
-
- The PINs you entered do not match.
-
- Type a PIN that is 4 to 8 numbers.
-
- Type a PUK that is 8 numbers or longer.
-
- Your SIM card is PUK-locked. Type the PUK code to unlock it.
- Type PUK2 to unblock SIM card.
-
-
- Incoming Caller ID
-
- Outgoing Caller ID
-
- Call forwarding
-
- Call waiting
-
- Call barring
-
- Password change
-
- PIN change
- Calling number present
- Calling number restricted
- Three way calling
- Rejection of undesired annoying calls
- Calling number delivery
- Do not disturb
-
-
- Caller ID defaults to restricted. Next call: Restricted
-
- Caller ID defaults to restricted. Next call: Not restricted
-
- Caller ID defaults to not restricted. Next call: Restricted
-
- Caller ID defaults to not restricted. Next call: Not restricted
-
-
-
- Service not provisioned.
-
- The caller ID setting cannot be changed.
-
-
- Restricted access changed
-
- Data service is blocked.
-
- Emergency service is blocked.
-
- Voice service is blocked.
-
- All Voice services are blocked.
-
- SMS service is blocked.
-
- Voice/Data services are blocked.
-
- Voice/SMS services are blocked.
-
- All Voice/Data/SMS services are blocked.
-
-
-
- Voice
-
- Data
-
- FAX
-
- SMS
-
- Async
-
- Sync
-
- Packet
-
- PAD
-
-
-
- Roaming Indicator On
- Roaming Indicator Off
- Roaming Indicator Flashing
- Out of Neighborhood
- Out of Building
- Roaming - Preferred System
- Roaming - Available System
- Roaming - Alliance Partner
- Roaming - Premium Partner
- Roaming - Full Service Functionality
- Roaming - Partial Service Functionality
- Roaming Banner On
- Roaming Banner Off
- Searching for Service
-
-
-
-
- {0} : Not forwarded
-
- {0} : {1}
-
- {0} : {1} after {2} seconds
-
- {0} : Not forwarded
-
- {0} : Not forwarded
-
-
-
- Feature code complete.
-
- Connection problem or invalid feature code.
-
-
- OK
-
- A network error occurred.
-
- The URL could not be found.
-
- The site authentication scheme is not supported.
-
- Authentication was unsuccessful.
-
- Authentication via the proxy server was unsuccessful.
-
- The connection to the server was unsuccessful.
-
- The server couldn\'t communicate. Try again later.
-
- The connection to the server timed out.
-
- The page contains too many server redirects.
-
- The protocol is not supported.
-
- A secure connection could not be established.
-
- The page could not be opened because the URL is invalid.
-
- The file could not be accessed.
-
- The requested file was not found.
-
- Too many requests are being processed. Try again later.
-
-
-
- Sign-in error for %1$s
-
-
-
- Sync
-
- Sync
-
- Too many %s deletes.
-
-
- Tablet storage is full! Delete some files to free space.
-
- Phone storage is full! Delete some files to free space.
-
-
-
- Me
-
-
-
- Tablet options
-
- Phone options
-
- Silent mode
-
- Turn on wireless
-
- Turn off wireless
-
- Screen lock
-
- Power off
-
- Ringer off
-
- Ringer vibrate
-
- Ringer on
-
-
- Shutting down\u2026
-
-
- Your tablet will shut down.
-
- Your phone will shut down.
-
-
- Would you like to shut down?
-
-
- Recent
-
- No recent applications.
-
-
- Tablet options
-
- Phone options
-
-
- Screen lock
-
-
- Power off
-
-
- Silent mode
-
-
- Sound is OFF
-
-
- Sound is ON
-
-
- Airplane mode
-
-
- Airplane mode is ON
-
-
- Airplane mode is OFF
-
-
- 999+
-
-
- Safe mode
-
-
- Android System
-
-
- Services that cost you money
-
- Allow applications to do things
- that can cost you money.
-
-
- Your messages
-
- Read and write your SMS,
- e-mail, and other messages.
-
-
- Your personal information
-
- Direct access to your contacts
- and calendar stored on the tablet.
-
- Direct access to your contacts
- and calendar stored on the phone.
-
-
- Your location
-
- Monitor your physical location
-
-
- Network communication
-
- Allow applications to access
- various network features.
-
-
- Your accounts
-
- Access the available accounts.
-
-
- Hardware controls
-
- Direct access to hardware on
- the handset.
-
-
- Phone calls
-
- Monitor, record, and process
- phone calls.
-
-
- System tools
-
- Lower-level access and control
- of the system.
-
-
- Development tools
-
- Features only needed for
- application developers.
-
-
- Storage
-
- Access the USB storage.
-
- Access the SD card.
-
-
-
-
- disable or modify status bar
-
- Allows application to disable
- the status bar or add and remove system icons.
-
-
- status bar
-
- Allows the application to be the status bar.
-
-
- expand/collapse status bar
-
- Allows application to
- expand or collapse the status bar.
-
-
- intercept outgoing calls
-
- Allows application to
- process outgoing calls and change the number to be dialed. Malicious
- applications may monitor, redirect, or prevent outgoing calls.
-
-
- receive SMS
-
- Allows application to receive
- and process SMS messages. Malicious applications may monitor
- your messages or delete them without showing them to you.
-
-
- receive MMS
-
- Allows application to receive
- and process MMS messages. Malicious applications may monitor
- your messages or delete them without showing them to you.
-
-
- receive emergency broadcasts
-
- Allows application to receive
- and process emergency broadcast messages. This permission is only available
- to system applications.
-
-
- send SMS messages
-
- Allows application to send SMS
- messages. Malicious applications may cost you money by sending
- messages without your confirmation.
-
-
- send SMS messages with no confirmation
-
- Allows application to send SMS
- messages. Malicious applications may cost you money by sending
- messages without your confirmation.
-
-
- read SMS or MMS
-
- Allows application to read
- SMS messages stored on your tablet or SIM card. Malicious applications
- may read your confidential messages.
-
- Allows application to read
- SMS messages stored on your phone or SIM card. Malicious applications
- may read your confidential messages.
-
-
- edit SMS or MMS
-
- Allows application to write
- to SMS messages stored on your tablet or SIM card. Malicious applications
- may delete your messages.
-
- Allows application to write
- to SMS messages stored on your phone or SIM card. Malicious applications
- may delete your messages.
-
-
- receive WAP
-
- Allows application to receive
- and process WAP messages. Malicious applications may monitor
- your messages or delete them without showing them to you.
-
-
- retrieve running applications
-
- Allows application to retrieve
- information about currently and recently running tasks. May allow
- malicious applications to discover private information about other applications.
-
-
- reorder running applications
-
- Allows an application to move
- tasks to the foreground and background. Malicious applications can force
- themselves to the front without your control.
-
-
- stop running applications
-
- Allows an application to remove
- tasks and kill their applications. Malicious applications can disrupt
- the behavior of other applications.
-
-
- enable application debugging
-
- Allows an application to turn
- on debugging for another application. Malicious applications can use this
- to kill other applications.
-
-
- change your UI settings
-
- Allows an application to
- change the current configuration, such as the locale or overall font
- size.
-
-
- enable car mode
-
- Allows an application to
- enable the car mode.
-
-
- kill background processes
-
- Allows an application to
- kill background processes of other applications, even if memory
- isn\'t low.
-
-
- force stop other applications
-
- Allows an application to
- forcibly stop other applications.
-
-
- force application to close
-
- Allows an application to force any
- activity that is in the foreground to close and go back.
- Should never be needed for normal applications.
-
-
- retrieve system internal state
-
- Allows application to retrieve
- internal state of the system. Malicious applications may retrieve
- a wide variety of private and secure information that they should
- never normally need.
-
-
- retrieve screen content
-
- Allows application to retrieve
- the content of the active window. Malicious applications may retrieve
- the entire window content and examine all its text except passwords.
-
-
- partial shutdown
-
- Puts the activity manager into a shutdown
- state. Does not perform a complete shutdown.
-
-
- prevent app switches
-
- Prevents the user from switching to
- another application.
-
-
- monitor and control all application launching
-
- Allows an application to
- monitor and control how the system launches activities.
- Malicious applications may completely compromise the system. This
- permission is only needed for development, never for normal
- use.
-
-
- send package removed broadcast
-
- Allows an application to
- broadcast a notification that an application package has been removed.
- Malicious applications may use this to kill any other running
- application.
-
-
- send SMS-received broadcast
-
- Allows an application to
- broadcast a notification that an SMS message has been received.
- Malicious applications may use this to forge incoming SMS messages.
-
-
- send WAP-PUSH-received broadcast
-
- Allows an application to
- broadcast a notification that a WAP PUSH message has been received.
- Malicious applications may use this to forge MMS message receipt or to
- silently replace the content of any web page with malicious variants.
-
-
- limit number of running processes
-
- Allows an application
- to control the maximum number of processes that will run. Never
- needed for normal applications.
-
-
- make all background applications close
-
- Allows an application
- to control whether activities are always finished as soon as they
- go to the background. Never needed for normal applications.
-
-
- modify battery statistics
-
- Allows the modification of
- collected battery statistics. Not for use by normal applications.
-
-
- control system backup and restore
-
- Allows the application to control the system\'s backup and restore mechanism. Not for use by normal applications.
-
-
- confirm a full backup or restore operation
-
- Allows the application to launch the full backup confirmation UI. Not to be used by any application.
-
-
- display unauthorized windows
-
- Allows the creation of
- windows that are intended to be used by the internal system
- user interface. Not for use by normal applications.
-
-
- display system-level alerts
-
- Allows an application to
- show system alert windows. Malicious applications can take over the
- entire screen.
-
-
- modify global animation speed
-
- Allows an application to change
- the global animation speed (faster or slower animations) at any time.
-
-
- manage application tokens
-
- Allows applications to
- create and manage their own tokens, bypassing their normal
- Z-ordering. Should never be needed for normal applications.
-
-
- press keys and control buttons
-
- Allows an application to deliver
- its own input events (key presses, etc.) to other applications. Malicious
- applications can use this to take over the tablet.
-
- Allows an application to deliver
- its own input events (key presses, etc.) to other applications. Malicious
- applications can use this to take over the phone.
-
-
- record what you type and actions you take
-
- Allows applications to watch the
- keys you press even when interacting with another application (such
- as entering a password). Should never be needed for normal applications.
-
-
- bind to an input method
-
- Allows the holder to bind to the top-level
- interface of an input method. Should never be needed for normal applications.
-
-
- bind to a text service
-
- Allows the holder to bind to the top-level
- interface of a text service(e.g. SpellCheckerService). Should never be needed for normal applications.
-
-
- bind to a VPN service
-
- Allows the holder to bind to the top-level
- interface of a Vpn service. Should never be needed for normal applications.
-
-
- bind to a wallpaper
-
- Allows the holder to bind to the top-level
- interface of a wallpaper. Should never be needed for normal applications.
-
-
- bind to a widget service
-
- Allows the holder to bind to the top-level
- interface of a widget service. Should never be needed for normal applications.
-
-
- interact with a device admin
-
- Allows the holder to send intents to
- a device administrator. Should never be needed for normal applications.
-
-
- change screen orientation
-
- Allows an application to change
- the rotation of the screen at any time. Should never be needed for
- normal applications.
-
-
- change pointer speed
-
- Allows an application to change
- the mouse or trackpad pointer speed at any time. Should never be needed for
- normal applications.
-
-
- send Linux signals to applications
-
- Allows application to request that the
- supplied signal be sent to all persistent processes.
-
-
- make application always run
-
- Allows an application to make
- parts of itself persistent, so the system can\'t use it for other
- applications.
-
-
- delete applications
-
- Allows an application to delete
- Android packages. Malicious applications can use this to delete important applications.
-
-
- delete other applications\' data
-
- Allows an application to clear user data.
-
- delete other applications\' caches
-
- Allows an application to delete
- cache files.
-
-
- measure application storage space
-
- Allows an application to retrieve
- its code, data, and cache sizes
-
-
- directly install applications
-
- Allows an application to install new or updated
- Android packages. Malicious applications can use this to add new applications with arbitrarily
- powerful permissions.
-
-
- delete all application cache data
-
- Allows an application to free tablet storage
- by deleting files in application cache directory. Access is very
- restricted usually to system process.
-
- Allows an application to free phone storage
- by deleting files in application cache directory. Access is very
- restricted usually to system process.
-
-
- Move application resources
-
- Allows an application to move application resources from internal to external media and vice versa.
-
-
- read sensitive log data
-
- Allows an application to read from the
- system\'s various log files. This allows it to discover general
- information about what you are doing with the tablet, potentially
- including personal or private information.
-
- Allows an application to read from the
- system\'s various log files. This allows it to discover general
- information about what you are doing with the phone, potentially
- including personal or private information.
-
-
- use any media decoder for playback
-
- Allows an application to use any installed
- media decoder to decode for playback.
-
-
- read/write to resources owned by diag
-
- Allows an application to read and write to
- any resource owned by the diag group; for example, files in /dev. This could
- potentially affect system stability and security. This should be ONLY be used
- for hardware-specific diagnostics by the manufacturer or operator.
-
-
- enable or disable application components
-
- Allows an application to change whether a
- component of another application is enabled or not. Malicious applications can use this
- to disable important tablet capabilities. Care must be used with this permission, as it is
- possible to get application components into an unusable, inconsistent, or unstable state.
-
-
- Allows an application to change whether a
- component of another application is enabled or not. Malicious applications can use this
- to disable important phone capabilities. Care must be used with this permission, as it is
- possible to get application components into an unusable, inconsistent, or unstable state.
-
-
-
- set preferred applications
-
- Allows an application to
- modify your preferred applications. This can allow malicious applications
- to silently change the applications that are run, spoofing your
- existing applications to collect private data from you.
-
-
- modify global system settings
-
- Allows an application to modify the
- system\'s settings data. Malicious applications can corrupt your system\'s
- configuration.
-
- modify secure system settings
- Allows an application to modify the
- system\'s secure settings data. Not for use by normal applications.
-
-
- modify the Google services map
-
- Allows an application to modify the
- Google services map. Not for use by normal applications.
-
-
- automatically start at boot
-
- Allows an application to
- have itself started as soon as the system has finished booting.
- This can make it take longer to start the tablet and allow the
- application to slow down the overall tablet by always running.
-
- Allows an application to
- have itself started as soon as the system has finished booting.
- This can make it take longer to start the phone and allow the
- application to slow down the overall phone by always running.
-
-
- send sticky broadcast
-
- Allows an application to send
- sticky broadcasts, which remain after the broadcast ends.
- Malicious applications can make the tablet slow or unstable by causing it
- to use too much memory.
-
- Allows an application to send
- sticky broadcasts, which remain after the broadcast ends.
- Malicious applications can make the phone slow or unstable by causing it
- to use too much memory.
-
-
- read contact data
-
- Allows an application to read all
- of the contact (address) data stored on your tablet. Malicious applications
- can use this to send your data to other people.
-
- Allows an application to read all
- of the contact (address) data stored on your phone. Malicious applications
- can use this to send your data to other people.
-
-
- write contact data
-
- Allows an application to modify the
- contact (address) data stored on your tablet. Malicious
- applications can use this to erase or modify your contact data.
-
- Allows an application to modify the
- contact (address) data stored on your phone. Malicious
- applications can use this to erase or modify your contact data.
-
-
- read your profile data
-
- Allows the application to read personal
- profile information stored on your device, such as your name and contact information. This
- means the application can identify you and send your profile information to others.
-
-
- write to your profile data
-
- Allows the application to change or add
- to personal profile information stored on your device, such as your name and contact
- information. This means other applications can identify you and send your profile
- information to others.
-
-
- read your social stream
- Allows the application to access
- and sync social updates from you and your friends. Malicious apps can use this to read
- private communications between you and your friends on social networks.
-
-
- write to your social stream
- Allows the application to display
- social updates from your friends. Malicious apps can use this to pretend to be a friend
- and trick you into revealing passwords or other confidential information.
-
-
-
- read calendar events plus confidential information
-
- Allows an application to read all calendar
- events stored on your tablet, including those of friends or coworkers. A malicious application with
- this permission can extract personal information from these calendars without the owners\' knowledge.
-
- Allows an application to read all calendar
- events stored on your phone, including those of friends or coworkers. A malicious application with
- this permission can extract personal information from these calendars without the owners\' knowledge.
-
-
- add or modify calendar events and send email to guests without owners\' knowledge
-
- Allows an application to send event invitations as the calendar owner and add, remove,
- change events that you can modify on your device, including those of friends or co-workers. A malicious application with this permission
- can send spam emails that appear to come from calendar owners, modify events without the owners\' knowledge, or add fake events.
-
-
- mock location sources for testing
-
- Create mock location sources for testing.
- Malicious applications can use this to override the location and/or status returned by real
- location sources such as GPS or Network providers.
-
-
- access extra location provider commands
-
- Access extra location provider commands.
- Malicious applications could use this to interfere with the operation of the GPS
- or other location sources.
-
-
- permission to install a location provider
-
- Create mock location sources for testing.
- Malicious applications can use this to override the location and/or status returned by real
- location sources such as GPS or Network providers or monitor and report your location to an external source.
-
-
- fine (GPS) location
-
- Access fine location sources such as the
- Global Positioning System on the tablet, where available.
- Malicious applications can use this to determine where you are, and may
- consume additional battery power.
-
- Access fine location sources such as the
- Global Positioning System on the phone, where available.
- Malicious applications can use this to determine where you are, and may
- consume additional battery power.
-
-
- coarse (network-based) location
-
- Access coarse location sources such as the cellular
- network database to determine an approximate tablet location, where available. Malicious
- applications can use this to determine approximately where you are.
-
- Access coarse location sources such as the cellular
- network database to determine an approximate phone location, where available. Malicious
- applications can use this to determine approximately where you are.
-
-
- access SurfaceFlinger
-
- Allows application to use
- SurfaceFlinger low-level features.
-
-
- read frame buffer
-
- Allows application to
- read the content of the frame buffer.
-
-
- change your audio settings
-
- Allows application to modify
- global audio settings such as volume and routing.
-
-
- record audio
-
- Allows application to access
- the audio record path.
-
-
- take pictures and videos
-
- Allows application to take pictures and videos
- with the camera. This allows the application at any time to collect
- images the camera is seeing.
-
-
- permanently disable tablet
-
- permanently disable phone
-
- Allows the application to
- disable the entire tablet permanently. This is very dangerous.
-
- Allows the application to
- disable the entire phone permanently. This is very dangerous.
-
-
- force tablet reboot
-
- force phone reboot
-
- Allows the application to
- force the tablet to reboot.
-
- Allows the application to
- force the phone to reboot.
-
-
- mount and unmount filesystems
-
- Allows the application to mount and
- unmount filesystems for removable storage.
-
-
- format external storage
-
- Allows the application to format removable storage.
-
-
- get information on internal storage
-
- Allows the application to get information on internal storage.
-
-
- create internal storage
-
- Allows the application to create internal storage.
-
-
- destroy internal storage
-
- Allows the application to destroy internal storage.
-
-
- mount / unmount internal storage
-
- Allows the application to mount / unmount internal storage.
-
-
- rename internal storage
-
- Allows the application to rename internal storage.
-
-
- control vibrator
-
- Allows the application to control
- the vibrator.
-
-
- control flashlight
-
- Allows the application to control
- the flashlight.
-
-
- manage preferences and permissions for USB devices
-
- Allows the application to manage preferences and permissions for USB devices.
-
-
- implement MTP protocol
-
- Allows access to the kernel MTP driver to implement the MTP USB protocol.
-
-
- test hardware
-
- Allows the application to control
- various peripherals for the purpose of hardware testing.
-
-
- directly call phone numbers
-
- Allows the application to call
- phone numbers without your intervention. Malicious applications may
- cause unexpected calls on your phone bill. Note that this does not
- allow the application to call emergency numbers.
-
-
- directly call any phone numbers
-
- Allows the application to call
- any phone number, including emergency numbers, without your intervention.
- Malicious applications may place unnecessary and illegal calls to emergency
- services.
-
-
- directly start CDMA tablet setup
-
- directly start CDMA phone setup
-
- Allows the application to start CDMA provisioning.
- Malicious applications may unnecessarily start CDMA provisioning
-
-
- control location update notifications
-
- Allows enabling/disabling location
- update notifications from the radio. Not for use by normal applications.
-
-
- access checkin properties
-
- Allows read/write access to
- properties uploaded by the checkin service. Not for use by normal
- applications.
-
-
- choose widgets
-
- Allows the application to tell the system
- which widgets can be used by which application. With this permission,
- applications can give access to personal data to other applications.
- Not for use by normal applications.
-
-
- modify phone state
-
- Allows the application to control the
- phone features of the device. An application with this permission can switch
- networks, turn the phone radio on and off and the like without ever notifying
- you.
-
-
- read phone state and identity
-
- Allows the application to access the phone
- features of the device. An application with this permission can determine the phone
- number and serial number of this phone, whether a call is active, the number that call
- is connected to and the like.
-
-
- prevent tablet from sleeping
-
- prevent phone from sleeping
-
- Allows an application to prevent
- the tablet from going to sleep.
-
- Allows an application to prevent
- the phone from going to sleep.
-
-
- power tablet on or off
-
- power phone on or off
-
- Allows the application to turn the
- tablet on or off.
-
- Allows the application to turn the
- phone on or off.
-
-
- run in factory test mode
-
- Run as a low-level manufacturer test,
- allowing complete access to the tablet hardware. Only available
- when a tablet is running in manufacturer test mode.
-
- Run as a low-level manufacturer test,
- allowing complete access to the phone hardware. Only available
- when a phone is running in manufacturer test mode.
-
-
- set wallpaper
-
- Allows the application
- to set the system wallpaper.
-
-
- set wallpaper size hints
-
- Allows the application
- to set the system wallpaper size hints.
-
-
- reset system to factory defaults
-
- Allows an application to completely
- reset the system to its factory settings, erasing all data,
- configuration, and installed applications.
-
-
- set time
-
- Allows an application to change
- the tablet\'s clock time.
-
- Allows an application to change
- the phone\'s clock time.
-
-
- set time zone
-
- Allows an application to change
- the tablet\'s time zone.
-
- Allows an application to change
- the phone\'s time zone.
-
-
- act as the AccountManagerService
-
- Allows an
- application to make calls to AccountAuthenticators
-
-
- discover known accounts
-
- Allows an application to get
- the list of accounts known by the tablet.
-
- Allows an application to get
- the list of accounts known by the phone.
-
-
- act as an account authenticator
-
- Allows an application
- to use the account authenticator capabilities of the
- AccountManager, including creating accounts and getting and
- setting their passwords.
-
-
- manage the accounts list
-
- Allows an application to
- perform operations like adding, and removing accounts and deleting
- their password.
-
-
- use the authentication
- credentials of an account
-
- Allows an application to
- request authentication tokens.
-
-
- view network state
-
- Allows an application to view
- the state of all networks.
-
-
- full Internet access
-
- Allows an application to
- create network sockets.
-
-
- change/intercept network settings and traffic
-
- Allows an application to change network settings and to intercept and inspect all network traffic,
- for example to change the proxy and port of any APN. Malicious applications could monitor, redirect, or modify network
- packets without your knowledge.
-
-
- change network connectivity
-
- Allows an application to change
- the state of network connectivity.
-
-
- Change tethered connectivity
-
- Allows an application to change
- the state of tethered network connectivity.
-
-
- change background data usage setting
-
- Allows an application to change
- the background data usage setting.
-
-
- view Wi-Fi state
-
- Allows an application to view
- the information about the state of Wi-Fi.
-
-
- change Wi-Fi state
-
- Allows an application to connect
- to and disconnect from Wi-Fi access points, and to make changes to
- configured Wi-Fi networks.
-
-
- allow Wi-Fi Multicast
- reception
-
- Allows an application to
- receive packets not directly addressed to your device. This can be
- useful when discovering services offered near by. It uses more power
- than the non-multicast mode.
-
-
- view WiMAX state
- Allows an application to view
- the information about the state of WiMAX.
- change WiMAX state
- Allows an application to connect
- to and disconnect from WiMAX network.
- bluetooth administration
-
- Allows an application to configure
- the local Bluetooth tablet, and to discover and pair with remote
- devices.
-
- Allows an application to configure
- the local Bluetooth phone, and to discover and pair with remote
- devices.
-
-
- create Bluetooth connections
-
- Allows an application to view
- configuration of the local Bluetooth tablet, and to make and accept
- connections with paired devices.
-
- Allows an application to view
- configuration of the local Bluetooth phone, and to make and accept
- connections with paired devices.
-
-
- control Near Field Communication
-
- Allows an application to communicate
- with Near Field Communication (NFC) tags, cards, and readers.
-
-
- disable keylock
-
- Allows an application to disable
- the keylock and any associated password security. A legitimate example of
- this is the phone disabling the keylock when receiving an incoming phone call,
- then re-enabling the keylock when the call is finished.
-
-
- read sync settings
-
- Allows an application to read the sync settings,
- such as whether sync is enabled for Contacts.
-
-
- write sync settings
-
- Allows an application to modify the sync
- settings, such as whether sync is enabled for Contacts.
-
-
- read sync statistics
-
- Allows an application to read the sync stats; e.g., the
- history of syncs that have occurred.
-
-
- read subscribed feeds
-
- Allows an application to get details about the currently synced feeds.
-
-
- write subscribed feeds
-
- Allows an application to modify
- your currently synced feeds. This could allow a malicious application to
- change your synced feeds.
-
-
- read user defined dictionary
-
- Allows an application to read any private
- words, names and phrases that the user may have stored in the user dictionary.
-
-
- write to user defined dictionary
-
- Allows an application to write new words into the
- user dictionary.
-
-
- modify/delete USB storage contents
-
- modify/delete SD card contents
-
- Allows an application to write to the USB storage.
-
- Allows an application to write to the SD card.
-
-
- modify/delete internal media storage contents
-
- Allows an application to modify the contents of the internal media storage.
-
-
- access the cache filesystem
-
- Allows an application to read and write the cache filesystem.
-
-
- make/receive Internet calls
-
- Allows an application to use the SIP service to make/receive Internet calls.
-
-
- read historical network usage
-
- Allows an application to read historical network usage for specific networks and applications.
-
-
- manage network policy
-
- Allows an application to manage network policies and define application-specific rules.
-
-
- modify network usage accounting
-
- Allows modification of how network usage is accounted against applications. Not for use by normal applications.
-
-
-
-
- Set password rules
-
- Control the length and the characters
- allowed in screen-unlock passwords
-
- Monitor screen-unlock attempts
-
- Monitor the number of incorrect passwords
- entered when unlocking the screen, and lock the tablet or erase all the tablet\'s
- data if too many incorrect passwords are entered
-
- Monitor the number of incorrect passwords
- entered when unlocking the screen, and lock the phone or erase all the phone\'s
- data if too many incorrect passwords are entered
-
- Change the screen-unlock password
-
- Change the screen-unlock password
-
- Lock the screen
-
- Control how and when the screen locks
-
- Erase all data
-
- Erase the tablet\'s data without warning,
- by performing a factory data reset
-
- Erase the phone\'s data without warning,
- by performing a factory data reset
- Set the device global proxy
-
- Set the device global proxy
- to be used while policy is enabled. Only the first device admin
- sets the effective global proxy.
-
- Set lock-screen password expiration
-
- Control how frequently the lock-screen password must be
- changed
-
- Set storage encryption
-
- Require that stored application data be encrypted
-
-
- Disable cameras
-
- Prevent use of all device cameras
-
-
-
-
- - Home
- - Mobile
- - Work
- - Work Fax
- - Home Fax
- - Pager
- - Other
- - Custom
-
-
-
-
-
- - Home
- - Work
- - Other
- - Custom
-
-
-
-
-
- - Home
- - Work
- - Other
- - Custom
-
-
-
-
-
- - Home
- - Work
- - Other
- - Custom
-
-
-
-
-
- - Work
- - Other
- - Custom
-
-
-
-
-
- - AIM
- - Windows Live
- - Yahoo
- - Skype
- - QQ
- - Google Talk
- - ICQ
- - Jabber
-
-
-
- Custom
-
- Home
-
- Mobile
-
- Work
-
- Work Fax
-
- Home Fax
-
- Pager
-
- Other
-
- Callback
-
- Car
-
- Company Main
-
- ISDN
-
- Main
-
- Other Fax
-
- Radio
-
- Telex
-
- TTY TDD
-
- Work Mobile
-
- Work Pager
-
- Assistant
-
- MMS
-
-
- Custom
-
- Birthday
-
- Anniversary
-
- Other
-
-
- Custom
-
- Home
-
- Work
-
- Other
-
- Mobile
-
-
- Custom
-
- Home
-
- Work
-
- Other
-
-
- Custom
-
- Home
-
- Work
-
- Other
-
-
- Custom
-
- AIM
-
- Windows Live
-
- Yahoo
-
- Skype
-
- QQ
-
- Google Talk
-
- ICQ
-
- Jabber
-
- NetMeeting
-
-
- Work
-
- Other
-
- Custom
-
-
- Custom
-
- Assistant
-
- Brother
-
- Child
-
- Domestic Partner
-
- Father
-
- Friend
-
- Manager
-
- Mother
-
- Parent
-
- Partner
-
- Referred by
-
- Relative
-
- Sister
-
- Spouse
-
-
- Custom
-
- Home
-
- Work
-
- Other
-
-
- Enter PIN code
-
-
- Enter PUK and new PIN code
-
-
- PUK code
-
- New Pin Code
-
-
- Touch to enter password
-
-
- Enter password to unlock
-
-
- Enter PIN to unlock
-
-
- Incorrect PIN code!
-
-
- To unlock, press Menu then 0.
-
-
- Emergency number
-
-
-
-
- No service.
-
-
- Screen locked.
-
-
- Press Menu to unlock or place emergency call.
-
-
- Press Menu to unlock.
-
-
- Draw pattern to unlock
-
- Emergency call
-
- Return to call
-
- Correct!
-
- Sorry, try again
-
- Sorry, try again
-
-
- Charging, %d %%
-
- Charged.
-
- %d %%
-
-
- Connect your charger.
-
-
- No SIM card.
-
- No SIM card in tablet.
-
- No SIM card in phone.
-
- Please insert a SIM card.
-
- The SIM card is missing or not readable. Please insert a SIM card.
-
- Your SIM card is permanently disabled.\n
- Please contact your wireless service provider to obtain another SIM card.
-
-
- Previous track button
-
- Next track button
-
- Pause button
-
- Play button
-
- Stop button
-
-
- Emergency calls only
-
-
- Network locked
-
-
-
- SIM card is PUK-locked.
-
- Please see the User Guide or contact Customer Care.
-
-
- SIM card is locked.
-
-
- Unlocking SIM card\u2026
-
-
-
- You have incorrectly drawn your unlock pattern %d times.
- \n\nPlease try again in %d seconds.
-
-
-
-
- You have incorrectly entered your password %d times.
- \n\nPlease try again in %d seconds.
-
-
-
-
- You have incorrectly entered your PIN %d times.
- \n\nPlease try again in %d seconds.
-
-
-
-
- You have incorrectly drawn your unlock pattern %d times.
- After %d more unsuccessful attempts,
- you will be asked to unlock your tablet using your Google sign-in.\n\n
- Please try again in %d seconds.
-
-
-
-
- You have incorrectly drawn your unlock pattern %d times.
- After %d more unsuccessful attempts,
- you will be asked to unlock your phone using your Google sign-in.\n\n
- Please try again in %d seconds.
-
-
-
-
- You have incorrectly attempted to unlock the tablet %d times.
- After %d more unsuccessful attempts,
- the tablet will be reset to factory default and all user data will be lost.
-
-
-
-
- You have incorrectly attempted to unlock the phone %d times.
- After %d more unsuccessful attempts,
- the phone will be reset to factory default and all user data will be lost.
-
-
-
-
- You have incorrectly attempted to unlock the tablet %d times.
- The tablet will now be reset to factory default.
-
-
-
-
- You have incorrectly attempted to unlock the phone %d times.
- The phone will now be reset to factory default.
-
-
-
- Try again in %d seconds.
-
-
- Forgot pattern?
-
-
- Account unlock
-
- Too many pattern attempts!
-
- To unlock, sign in with your Google account
-
- Username (email)
-
- Password
-
- Sign in
-
- Invalid username or password.
-
- Forgot your username or password\?\nVisit google.com/accounts/recovery
-
-
- Checking...
-
- Unlock
-
- Sound on
-
- Sound off
-
-
- Pattern started
-
- Pattern cleared
-
- Cell added
-
- Pattern completed
-
-
-
- \?123
-
- ABC
-
- ALT
-
-
- "%-l %P "
-
-
- "%-l %p "
-
-
- Factory test failed
-
- The FACTORY_TEST action
- is only supported for packages installed in /system/app.
-
- No package was found that provides the
- FACTORY_TEST action.
-
- Reboot
-
-
- Mozilla/5.0 (Linux; U; Android %s )
- AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 %s Safari/534.30
-
- "Mobile "
-
-
- The page at \'%s \' says:
-
- JavaScript
-
- Navigate away from this page?\n\n%s \n\nSelect OK to continue, or Cancel to stay on the current page.
-
-
- Confirm
-
-
- Tip: double-tap to zoom in and out.
-
-
- AutoFill
-
- Setup AutoFill
-
-
- \u0020
-
- $1$2$3
-
-
- ,\u0020
-
- $1$2$3
-
-
- attention|attn
-
-
- province|region|other|provincia|bairro|suburb
-
-
- company|business|organization|organisation|department|firma|firmenname|empresa|societe|société|ragione.?sociale|ä¼ç¤¾|название.?компании|åä½|å
¬å¸
-
-
- address.?line|address1|addr1|street|strasse|straÃe|hausnummer|housenumber|house.?name|direccion|dirección|adresse|indirizzo|使1|morada|endereço|ÐдÑеÑ|å°å
-
-
- address|adresse|indirizzo|使|å°å
-
-
- address.?line2|address2|addr2|street|suite|unit|adresszusatz|ergänzende.?angaben|direccion2|colonia|adicional|addresssuppl|complementnom|appartement|indirizzo2|使2
-
-
- address.?line3|address3|addr3|street|line3|municipio|batiment|residence|indirizzo3
-
-
- country|location|å½|å½å®¶
-
-
- zip|postal|post code|pcode|^1z$|postleitzahl|cp|cdp|cap|éµä¾¿çªå·|codigo|codpos|cep|ÐоÑÑовÑй.?ÐндекÑ|鮿¿ç¼ç |é®ç¼|éµéåè
-
-
- zip|^-$|post2|codpos2
-
-
- city|town|ort|stadt|suburb|ciudad|provincia|localidad|poblacion|ville|commune|localita|å¸åºçºæ|cidade|ÐоÑод|å¸|åå
-
-
- state|county|region|province|land|county|principality|é½éåºç|estado|provincia|облаÑÑÑ|ç|å°å
-
-
- same as
-
-
- use my
-
-
- bill
-
-
- ship
-
-
- e.?mail|ã¡ã¼ã«ã¢ãã¬ã¹|ÐлекÑÑонной.?ÐоÑÑÑ|é®ä»¶|é®ç®±|é»éµå°å
-
-
- user.?name|user.?id|vollständiger.?name|ç¨æ·å
-
-
- ^name|full.?name|your.?name|customer.?name|firstandlastname|nombre.*y.*apellidos|^nom|ãåå|æ°å|^nome|å§å
-
-
- ^name|^nom|^nome
-
-
-
- irst.*name|initials|fname|first$|vorname|nombre|forename|prénom|prenom|å|nome|ÐмÑ
-
-
- middle.*initial|m\\.i\\.|mi$
-
-
- middle.*name|mname|middle$|apellido.?materno|lastlastname
-
-
- last.*name|lname|surname|last$|nachname|apellidos|famille|^nom|cognome|å§|morada|apelidos|surename|sobrenome|ФамилиÑ
-
-
- phone|telefonnummer|telefono|teléfono|telfixe|é»è©±|telefone|telemovel|ÑелеÑон|çµè¯
-
-
- area.*code|acode|area
-
-
- prefix|preselection|ddd
-
-
- suffix
-
-
- ext|ramal
-
-
- card.?holder|name.?on.?card|ccname|owner|karteninhaber|nombre.*tarjeta|nom.*carte|nome.*cart|åå|ÐмÑ.*каÑÑÑ|ä¿¡ç¨å¡å¼æ·å|弿·å|æå¡äººå§å|æå¡äººå§å
-
-
- name
-
-
- verification|card identification|cvn|security code|cvv code|cvc
-
-
- number|card.?#|card.?no|ccnum|nummer|credito|numero|número|numéro|ã«ã¼ãçªå·|ÐомеÑ.*каÑÑÑ|ä¿¡ç¨å¡å·|ä¿¡ç¨å¡å·ç |ä¿¡ç¨å¡å¡è
-
-
- expir|exp.*month|exp.*date|ccmonth|gueltig|gültig|monat|fecha|date.*exp|scadenza|æå¹æé|validade|СÑок дейÑÑÐ²Ð¸Ñ ÐºÐ°ÑÑÑ|æ
-
-
- exp|^/|year|ablaufdatum|gueltig|gültig|yahr|fecha|scadenza|æå¹æé|validade|СÑок дейÑÑÐ²Ð¸Ñ ÐºÐ°ÑÑÑ|å¹´|æææ
-
-
- ^card
-
-
- fax|télécopie|telecopie|ãã¡ãã¯ã¹|ÑакÑ|ä¼ ç|å³ç
-
-
- country.*code|ccode|_cc
-
-
- ^\\($
-
-
- ^-$|^\\)$
-
-
- ^-$
-
-
- Province
-
-
- Postal code
-
-
- State
-
-
- ZIP code
-
-
- County
-
-
- Island
-
-
- District
-
-
- Department
-
-
- Prefecture
-
-
- Parish
-
-
- Area
-
-
- Emirate
-
-
- read Browser\'s history and bookmarks
-
- Allows the application to read all
- the URLs that the Browser has visited, and all of the Browser\'s bookmarks.
-
- write Browser\'s history and bookmarks
-
- Allows an application to modify the
- Browser\'s history or bookmarks stored on your tablet. Malicious applications
- can use this to erase or modify your Browser\'s data.
-
- Allows an application to modify the
- Browser\'s history or bookmarks stored on your phone. Malicious applications
- can use this to erase or modify your Browser\'s data.
-
-
- set alarm in alarm clock
-
- Allows the application to set an alarm in
- an installed alarm clock application. Some alarm clock applications may
- not implement this feature.
-
-
- add voicemail
-
- Allows the application to add messages
- to your voicemail inbox.
-
-
- Modify Browser geolocation permissions
-
- Allows an application to modify the
- Browser\'s geolocation permissions. Malicious applications
- can use this to allow sending location information to arbitrary web sites.
-
-
- verify packages
-
- Allows the application to verify a package is
- installable.
-
-
- bind to a package verifier
-
- Allows the holder to make requests of
- package verifiers. Should never be needed for normal applications.
-
-
- Do you want the browser to remember this password?
-
- Not now
-
- Remember
-
- Never
-
-
- You do not have permission to open this page.
-
-
- Text copied to clipboard.
-
-
- More
-
- Menu+
-
- space
-
- enter
-
- delete
-
-
-
-
- Search
-
- Search
-
- Search query
-
- Clear query
-
- Submit query
-
- Voice search
-
-
- 1 month ago
-
- Before 1 month ago
-
-
-
- - 1 second ago
- %d seconds ago
-
-
-
-
- - 1 minute ago
- %d minutes ago
-
-
-
-
- - 1 hour ago
- %d hours ago
-
-
-
-
- - Last
%d days
-
-
-
- Last month
-
-
- Older
-
-
-
- - yesterday
- %d days ago
-
-
-
-
- - in 1 second
- - in
%d seconds
-
-
-
-
- - in 1 minute
- - in
%d minutes
-
-
-
-
- - in 1 hour
- - in
%d hours
-
-
-
-
- - tomorrow
- - in
%d days
-
-
-
-
- - 1 sec ago
- %d secs ago
-
-
-
-
- - 1 min ago
- %d mins ago
-
-
-
-
- - 1 hour ago
- %d hours ago
-
-
-
-
- - yesterday
- %d days ago
-
-
-
-
- - in 1 sec
- - in
%d secs
-
-
-
-
- - in 1 min
- - in
%d mins
-
-
-
-
- - in 1 hour
- - in
%d hours
-
-
-
-
- - tomorrow
- - in
%d days
-
-
-
- on %s
-
- at %s
-
- in %s
-
-
- day
-
- days
-
- hour
-
- hours
-
- min
-
- mins
-
- sec
-
- secs
-
- week
-
- weeks
-
- year
-
- years
-
-
-
- Cannot play video
-
- Sorry, this video is not valid for streaming to this device.
-
- Sorry, this video cannot be played.
-
- OK
-
-
-
-
-
- "%1$s , %2$s "
-
-
-
- "noon"
-
- "Noon"
-
- "midnight"
-
- "Midnight"
-
-
-
-
-
-
-
-
-
-
-
-
- %1$02d :%2$02d
-
-
- %1$d :%2$02d :%3$02d
-
-
- Select all
-
-
- Cut
-
-
- Copy
-
-
- Paste
-
-
- Replace\u2026
-
-
- Delete
-
-
- Copy URL
-
-
- Select text...
-
-
- Text selection
-
-
- add to dictionary
-
-
- delete
-
-
- Input method
-
-
- Text actions
-
-
- Low on space
-
- Tablet storage space is getting low.
-
- Phone storage space is getting low.
-
-
- OK
-
- Cancel
-
- OK
-
- Cancel
-
- Attention
-
-
- Loading...
-
-
- ON
-
- OFF
-
-
- Complete action using
-
- Use by default for this action.
-
- Clear default in Home Settings > Applications > Manage applications.
-
- Select an action
-
- Select an application for the USB device
-
- No applications can perform this action.
-
-
-
- Unfortunately, %1$s has stopped.
-
- Unfortunately, the process %1$s has
- stopped.
-
-
-
- %2$s is not responding.\n\nWould you like to close it?
-
- Activity %1$s is not responding.\n\nWould you like to close it?
-
- %1$s is not responding. Would you like to close it?
-
- Process %1$s is not responding.\n\nWould you like to close it?
-
- OK
-
- Report
-
- Wait
-
- Application redirected
-
- %1$s is now running.
-
- %1$s was originally launched.
-
- Scale
-
- Always show
-
- Re-enable this with Settings > Applications > Manage applications.
-
-
- The application %1$s
- (process %2$s ) has violated its self-enforced StrictMode policy.
-
- The process %1$s has
- has violated its self-enforced StrictMode policy.
-
-
- Android is upgrading...
-
-
- Optimizing application
- %1$d of
- %2$d .
-
-
- Starting applications.
-
-
- Finishing boot.
-
-
- %1$s running
-
-
- Select to switch to application
-
-
- Switch applications?
-
-
- Another application is already running
- that must be stopped before you can start a new one.
-
- Return to %1$s
- Don\'t start the new application.
-
- Start %1$s
- Stop the old application without saving.
-
-
- Select an action for text
-
-
- Ringer volume
-
- Media volume
-
- Playing through Bluetooth
-
- Silent ringtone selected
-
- In-call volume
-
- Bluetooth in-call volume
-
- Alarm volume
-
- Notification volume
-
- Volume
-
-
- Bluetooth volume
-
- Ringtone volume
-
- Call volume
-
- Media volume
-
- Notification volume
-
-
-
- Default ringtone
-
- Default ringtone (%1$s )
-
- Silent
-
- Ringtones
-
- Unknown ringtone
-
-
-
- - Wi-Fi network available
- - Wi-Fi networks available
-
-
-
- - Open Wi-Fi network available
- - Open Wi-Fi networks available
-
-
-
- Sign in to Wi-Fi network
-
-
- %1$s
-
-
- Couldn\'t connect to Wi-Fi
-
- \u0020has a poor internet connection.
-
-
- AndroidAP
-
-
- Wi-Fi Direct
- Start Wi-Fi Direct operation. This will turn off Wi-Fi client/hotspot operation.
- Couldn\'t start Wi-Fi Direct
- Wi-Fi Direct connection setup request from %1$s . Click OK to accept.
- Wi-Fi Direct connection setup request from %1$s . Enter pin to proceed.
- WPS pin %1$s needs to be entered on the peer device %2$s for connection setup to proceed
- Wi-Fi Direct is on
- Touch for settings
-
-
- Insert character
-
-
-
- Unknown application
-
- Sending SMS messages
-
- A large number of SMS messages are being sent. Select \"OK\" to continue, or \"Cancel\" to stop sending.
-
- OK
-
- Cancel
-
-
-
- SIM card removed
-
- The mobile network will be unavailable until you restart with a valid SIM card inserted.
-
- Done
-
- SIM card added
-
- You must restart your device to access the mobile network.
-
- Restart
-
-
-
-
- Set time
-
- Set date
-
- Set
-
-
-
- Default
-
- %1$s , %2$s
-
- No permissions required
-
- Hide
-
- Show all
-
-
-
- USB Mass Storage
-
-
- USB connected
-
- You have connected to your computer via USB. Touch the button below if you want to copy files between your computer and your Android\u2018s USB storage.
-
- You have connected to your computer via USB. Touch the button below if you want to copy files between your computer and your Android\u2018s SD card.
-
- Turn on USB storage
-
- There is a problem using your USB storage for USB mass storage.
-
- There is a problem using your SD card for USB mass storage.
-
- USB connected
-
- Select to copy files to/from your computer.
-
-
- Turn off USB storage
-
- Select to turn off USB storage.
-
-
-
-
- USB storage in use
-
- Before turning off USB storage, make sure you have unmounted (\u201cejected\u201d) your Android\u2018s USB storage from your computer.
-
- Before turning off USB storage, make sure you have unmounted (\u201cejected\u201d) your Android\u2018s SD card from your computer.
-
- Turn off USB storage
-
- There was a problem turning off USB storage. Check to make sure you have unmounted the USB host, then try again.
-
-
- Turn on USB storage
-
- If you turn on USB storage, some applications you are using will stop and may be unavailable until you turn off USB storage.
-
- USB operation unsuccessful
-
- OK
-
-
- Connected as a media device
-
- Connected as a camera
-
- Connected as an installer
-
- Connected to a USB accessory
-
- Touch for other USB options
-
-
-
-
- Format USB storage
-
- Format SD card
-
- Format USB storage, erasing all files stored there? Action cannot be reversed!
-
- Are you sure you want to format the SD card? All data on your card will be lost.
-
- Format
-
-
- USB debugging connected
-
- Select to disable USB debugging.
-
-
-
-
-
-
- ""
-
-
- Select input method
-
- Configure input methods
-
- \u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ
- \u00200123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
-
- candidates
-
-
-
- Preparing USB storage
-
- Preparing SD card
- Checking for errors.
-
-
- Blank USB storage
-
- Blank SD card
-
- USB storage blank or has unsupported filesystem.
- SD card blank or has unsupported filesystem.
-
-
- Damaged USB storage
-
- Damaged SD card
-
- USB storage damaged. You may have to reformat it.
- SD card damaged. You may have to reformat it.
-
-
- USB storage unexpectedly removed
-
- SD card unexpectedly removed
-
- Unmount USB storage before removing to avoid data loss.
- Unmount SD card before removing to avoid data loss.
-
-
- USB storage safe to remove
-
- SD card safe to remove
-
- You can safely remove USB storage.
- You can safely remove SD card.
-
-
- Removed USB storage
-
- Removed SD card
-
- USB storage removed. Insert new media.
- SD card removed. Insert a new one.
-
-
- No matching activities found
-
-
-
- update component usage statistics
-
- Allows the modification of collected component usage statistics. Not for use by normal applications.
-
-
-
- Allows to invoke default container service to copy content. Not for use by normal applications.
-
- Allows to invoke default container service to copy content. Not for use by normal applications.
-
-
- Tap twice for zoom control
-
-
-
- Error inflating widget
-
-
- Go
-
-
- Search
-
-
- Send
-
-
- Next
-
-
- Done
-
-
- Prev
-
-
- Execute
-
-
-
-
-
-
- Dial number\nusing %s
-
-
- Create contact\nusing %s
-
-
-
-
-
-
-
- The following one or more applications request permission to access your account, now and in the future.
- Do you want to allow this request?
- Access Request
- Allow
- Deny
- Permission Requested
- Permission Requested\nfor account %s
-
-
- Input method
-
- Sync
-
- Accessibility
-
- Wallpaper
-
- Change wallpaper
-
-
- /data/eri.xml
-
-
- VPN is activated.
-
- VPN is activated by %s
-
- Tap to manage the network.
-
- Connected to %s . Tap to manage the network.
-
-
-
- Choose file
-
- No file chosen
-
- Reset
-
- Submit
-
-
-
- Car mode enabled
- Select to exit car mode.
-
-
-
- Tethering or hotspot active
- Touch to configure
-
-
- Back
- Next
-
-
- Skip
-
-
-
- High mobile data use
- Touch to learn more about mobile data use
-
-
-
- Mobile data limit exceeded
- Touch to learn more about mobile data use
-
-
- No matches
-
-
- Find on page
-
-
-
-
- - 1 match
-
- %d of %d
-
-
-
- Done
-
-
-
- Unmounting USB storage...
-
- Unmounting SD card...
-
- Erasing USB storage...
-
- Erasing SD card...
-
- Couldn\'t erase USB storage.
-
- Couldn\'t erase SD card.
-
- SD card was removed before being unmounted.
-
- USB storage is currently being checked.
-
- SD card is currently being checked.
-
- SD card has been removed.
-
- USB storage is currently in use by a computer.
-
- SD card is currently in use by a computer.
-
- External media in unknown state.
-
-
-
- Share
-
- Find
-
- Web Search
-
-
- Location request from %s
-
- Location request
-
- Requested by %1$s (%2$s )
-
- Yes
-
- No
-
-
- Delete limit exceeded
-
- There are %1$d deleted items for %2$s , account %3$s . What would you like to do?
-
- Delete the items.
-
- Undo the deletes.
-
- Do nothing for now.
-
-
- Select an account
-
- "Add an account"
- "Which account would you like to use?"
-
-
- Add account
-
-
-
- Increment
-
- Decrement
-
- %s tap and hold.
-
- Slide up to increment and down to decrement.
-
-
-
- Increment minute
-
- Decrement minute
-
- Increment hour
-
- Decrement hour
-
- Set PM
-
- Set AM
-
-
-
- Increment month
-
- Decrement month
-
- Increment day
-
- Decrement day
-
- Increment year
-
- Decrement year
-
-
-
- checked
-
- not checked
-
-
-
- selected
-
- not selected
-
-
-
- on
-
- off
-
-
-
- pressed
-
- not pressed
-
-
-
- Alt
-
- Cancel
-
- Delete
-
- Done
-
- Mode change
-
- Shift
-
- Enter
-
-
-
- Choose an application
-
-
-
- Share with
-
- Share with %s
-
-
-
-
- "Sliding handle. Tap and hold."
-
-
- Up for %s .
-
- Down for %s .
-
- "Left for %s .
-
- Right for %s .
-
-
- Unlock
-
- Camera
-
- Silent
-
- Sound on
-
-
- Swipe to unlock.
-
-
- Plug in a headset to hear password keys spoken aloud.
-
- Dot.
-
-
- Navigate home
-
- Navigate up
-
- More options
-
-
- Internal Storage
-
-
- SD Card
-
-
- USB storage
-
-
- Edit...
-
-
- Data usage warning
-
- Touch to view usage and settings
-
-
- 2G-3G data disabled
-
- 4G data disabled
-
- Mobile data disabled
-
- Wi-Fi data disabled
-
- Touch to enable
-
-
- 2G-3G data limit exceeded
-
- 4G data limit exceeded
-
- Mobile data limit exceeded
-
- Wi-Fi data limit exceeded
-
- %s over specified limit
-
-
- Background data restricted
-
- Touch to remove restriction
-
-
-
- Security certificate
-
- This certificate is valid.
-
- Issued to:
-
- Common name:
-
- Organization:
-
- Organizational unit:
-
- Issued by:
-
- Validity:
-
- Issued on:
-
- Expires on:
-
- Serial number:
-
- Fingerprints:
-
- SHA-256 fingerprint:
-
- SHA-1 fingerprint:
-
-
- See all...
-
- Select activity
-
-
- Share with...
-
-
-
-
- Device locked.
-
-
- ", "
-
-
- Sending...
-
-
- Launch Browser?
-
-
- Accept Call?
-
-
diff --git a/wp-fdroid/wp-fdroid.php b/wp-fdroid/wp-fdroid.php
deleted file mode 100644
index f225232f..00000000
--- a/wp-fdroid/wp-fdroid.php
+++ /dev/null
@@ -1,1017 +0,0 @@
-';
- if(isset($app[2]) && trim($app[2])) {
- echo ' ';
- }
- echo '';
- echo $app[1].' ';
- if(isset($app[3]) && trim($app[3])) {
- echo ''.$app[3].'
';
- }
- echo '';
- }
- fclose($handle);
- }
- echo $after_widget;
- }
-
- function update($new_instance, $old_instance) {
- $instance = array();
- $instance['title'] = (!empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
- return $instance;
- }
-
- function form($instance) {
- if (isset($instance['title'])) {
- $title = $instance['title'];
- }
- else {
- $title = __('New title', 'text_domain');
- }
- ?>
-
-
-
-
- inited=false;
- $this->site_path=getenv('DOCUMENT_ROOT');
- add_action('widgets_init', function() {
- register_widget('FDroidLatestWidget');
- });
- }
-
-
- // Register additional query variables. (Handler for the 'query_vars' filter)
- function queryvars($qvars) {
- $qvars[]='fdfilter';
- $qvars[]='fdcategory';
- $qvars[]='fdid';
- $qvars[]='fdpage';
- $qvars[]='fdstyle';
- return $qvars;
- }
-
-
- // Lazy initialise. All non-trivial members should call this before doing anything else.
- function lazyinit() {
- if(!$this->inited) {
- load_plugin_textdomain($this->textdom, PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)), dirname(plugin_basename(__FILE__)));
-
- $this->inited=true;
- }
- }
-
- // Gets a required query parameter by name.
- function getrequiredparam($name) {
- global $wp_query;
- if(!isset($wp_query->query_vars[$name]))
- wp_die("Missing parameter ".$name,"Error");
- return $wp_query->query_vars[$name];
- }
-
- // Handler for the 'fdroidrepo' shortcode.
- // $attribs - shortcode attributes
- // $content - optional content enclosed between the starting and
- // ending shortcode
- // Returns the generated content.
- function do_shortcode($attribs,$content=null) {
- global $wp_query,$wp_rewrite;
- $this->lazyinit();
-
- // Init local query vars
- foreach($this->queryvars(array()) as $qv) {
- if(array_key_exists($qv,$wp_query->query_vars)) {
- $query_vars[$qv] = $wp_query->query_vars[$qv];
- } else {
- $query_vars[$qv] = null;
- }
- }
-
- // Sanity check and standardise all query variables...
- if(!isset($query_vars['fdpage']) || !is_numeric($query_vars['fdpage']) || $query_vars['fdpage'] <= 0) {
- $query_vars['fdpage'] = 1;
- } else {
- $query_vars['fdpage'] = strval(intval($query_vars['fdpage']));
- }
- if(isset($query_vars['fdstyle']) && ($query_vars['fdstyle'] != 'list' && $query_vars['fdstyle'] != 'grid')) {
- $query_vars['fdstyle'] = 'list';
- }
- if(isset($query_vars['fdcategory'])) {
- if($query_vars['fdcategory'] == 'All categories') {
- unset($query_vars['fdcategory']);
- } else {
- $query_vars['fdcategory'] = sanitize_text_field($query_vars['fdcategory']);
- }
- }
- if(isset($query_vars['fdfilter'])) {
- $query_vars['fdfilter'] = sanitize_text_field($query_vars['fdfilter']);
- } else {
- if(isset($attribs['search'])) {
- $query_vars['fdfilter'] = '';
- }
- }
- if(isset($query_vars['fdid'])) {
- $query_vars['fdid'] = sanitize_text_field($query_vars['fdid']);
- }
-
- $out = '';
-
- if($query_vars['fdid']!==null) {
- $out.=$this->get_app($query_vars);
- } else {
- $out.=''."\n";
-
- $out.=$this->get_apps($query_vars);
- }
-
- return $out;
- }
-
-
- // Get a URL for a full description of a license, as given by one of our
- // pre-defined license abbreviations. This is a temporary function, as this
- // needs to be data-driven so the same information can be used by the client,
- // the web site and the documentation.
- function getlicenseurl($license) {
- switch($license) {
- case 'MIT':
- return 'https://www.gnu.org/licenses/license-list.html#X11License';
- case 'NewBSD':
- return 'https://www.gnu.org/licenses/license-list.html#ModifiedBSD';
- case 'FreeBSD':
- return 'https://www.gnu.org/licenses/license-list.html#FreeBSD';
- case 'BSD':
- return 'https://www.gnu.org/licenses/license-list.html#OriginalBSD';
- case 'GPLv3':
- case 'GPLv3+':
- return 'https://www.gnu.org/licenses/license-list.html#GNUGPLv3';
- case 'GPLv2':
- case 'GPLv2+':
- return 'https://www.gnu.org/licenses/license-list.html#GPLv2';
- case 'AGPLv3':
- case 'AGPLv3+':
- return 'https://www.gnu.org/licenses/license-list.html#AGPLv3.0';
- case 'LGPL':
- return 'https://www.gnu.org/licenses/license-list.html#LGPL';
- case 'LGPLv3':
- return 'https://www.gnu.org/licenses/license-list.html#LGPLv3';
- case 'LGPLv2.1':
- return 'https://www.gnu.org/licenses/license-list.html#LGPLv2.1';
- case 'Apache2':
- return 'https://www.gnu.org/licenses/license-list.html#apache2';
- case 'WTFPL':
- return 'https://www.gnu.org/licenses/license-list.html#WTFPL';
- case 'ISC':
- return 'https://www.gnu.org/licenses/license-list.html#ISC';
- case 'Expat':
- return 'https://www.gnu.org/licenses/license-list.html#Expat';
- case 'Artistic2':
- return 'https://www.gnu.org/licenses/license-list.html#ArtisticLicense2';
- case 'CC0':
- return 'https://www.gnu.org/licenses/license-list.html#CC0';
- case 'PublicDomain':
- return 'https://www.gnu.org/licenses/license-list.html#PublicDomain';
- case 'Unlicense':
- return 'https://www.gnu.org/licenses/license-list.html#Unlicense';
- case 'MPL':
- return 'https://www.gnu.org/licenses/license-list.html#MPL';
- case 'MPL2':
- return 'https://www.gnu.org/licenses/license-list.html#MPL-2.0';
- case 'NCSA':
- return 'https://www.gnu.org/licenses/license-list.html#NCSA';
- case 'Zlib':
- return 'https://www.gnu.org/licenses/license-list.html#ZLib';
- case 'EPL':
- return 'https://www.gnu.org/licenses/license-list.html#EPL';
- case 'EUPL':
- return 'https://www.gnu.org/licenses/license-list.html#EUPL';
- default:
- return null;
- }
- }
- function androidversion($sdkLevel) {
- switch ($sdkLevel) {
- case 24: return "7.0";
- case 23: return "6.0";
- case 22: return "5.1";
- case 21: return "5.0";
- case 20: return "4.4W";
- case 19: return "4.4";
- case 18: return "4.3";
- case 17: return "4.2";
- case 16: return "4.1";
- case 15: return "4.0.3";
- case 14: return "4.0";
- case 13: return "3.2";
- case 12: return "3.1";
- case 11: return "3.0";
- case 10: return "2.3.3";
- case 9: return "2.3";
- case 8: return "2.2";
- case 7: return "2.1";
- case 6: return "2.0.1";
- case 5: return "2.0";
- case 4: return "1.6";
- case 3: return "1.5";
- case 2: return "1.1";
- case 1: return "1.0";
- default: return "?";
- }
- }
-
- function get_app($query_vars) {
- global $permissions_data;
- $permissions_object = new AndroidPermissions($this->site_path.'/wp-content/plugins/wp-fdroid/AndroidManifest.xml',
- $this->site_path.'/wp-content/plugins/wp-fdroid/strings.xml',
- sys_get_temp_dir().'/android-permissions.cache');
- $permissions_data = $permissions_object->get_permissions_array();
-
- // Get app data
- $xml = simplexml_load_file($this->site_path.'/repo/index.xml');
- foreach($xml->children() as $app) {
-
- $attrs=$app->attributes();
- if($attrs['id']==$query_vars['fdid']) {
- $apks=array();;
- foreach($app->children() as $el) {
- switch($el->getName()) {
- case "name":
- $name=$el;
- break;
- case "icon":
- $icon=$el;
- break;
- case "summary":
- $summary=$el;
- break;
- case "desc":
- $desc=$el;
- break;
- case "license":
- $license=$el;
- break;
- case "author":
- $author=$el;
- break;
- case "email":
- $email=$el;
- break;
- case "source":
- $source=$el;
- break;
- case "tracker":
- $issues=$el;
- break;
- case "changelog":
- $changelog=$el;
- break;
- case "donate":
- $donate=$el;
- break;
- case "flattr":
- $flattr=$el;
- break;
- case "web":
- $web=$el;
- break;
- case "antifeatures":
- $antifeatures=$el;
- break;
- case "requirements":
- $requirements=$el;
- break;
- case "package":
- $thisapk=array();
- foreach($el->children() as $pel) {
- switch($pel->getName()) {
- case "version":
- $thisapk['version']=$pel;
- break;
- case "vercode":
- $thisapk['vercode']=$pel;
- break;
- case "added":
- $thisapk['added']=$pel;
- break;
- case "apkname":
- $thisapk['apkname']=$pel;
- break;
- case "srcname":
- $thisapk['srcname']=$pel;
- break;
- case "hash":
- $thisapk['hash']=$pel;
- break;
- case "size":
- $thisapk['size']=$pel;
- break;
- case "sdkver":
- $thisapk['sdkver']=$pel;
- break;
- case "maxsdkver":
- $thisapk['maxsdkver']=$pel;
- break;
- case "nativecode":
- $thisapk['nativecode']=$pel;
- break;
- case "permissions":
- $thisapk['permissions']=$pel;
- break;
- }
- }
- $apks[]=$thisapk;
-
- }
- }
-
- // Generate app diff data
- foreach(array_reverse($apks, true) as $key=>$apk) {
- if(isset($previous)) {
- // Apk size
- $apks[$key]['diff']['size'] = $apk['size']-$previous['size'];
- }
-
- // Permissions
- $permissions = explode(',',$apk['permissions']);
- $permissionsPrevious = isset($previous['permissions'])?explode(',',$previous['permissions']):array();
- $apks[$key]['diff']['permissions']['added'] = array_diff($permissions, $permissionsPrevious);
- $apks[$key]['diff']['permissions']['removed'] = array_diff($permissionsPrevious, $permissions);
-
- $previous = $apk;
- }
-
- // Output app information
- $out='";
-
- $out.=str_replace('href="fdroid.app:', 'href="/repository/browse/?fdid=', $desc);
-
- if(isset($antifeatures)) {
- $antifeaturesArray = explode(',',$antifeatures);
- foreach($antifeaturesArray as $antifeature) {
- $antifeatureDescription = $this->get_antifeature_description($antifeature);
- $out.=''.$antifeatureDescription['name'].' ';
- $out.=$antifeatureDescription['description'].' more...
';
- }
- }
-
- $out.="";
- $licenseurl=$this->getlicenseurl($license);
- $out.="License: ";
- if($licenseurl)
- $out.='';
- $out.=$license;
- if($licenseurl)
- $out.=' ';
-
- if(isset($requirements)) {
- $out.='Additional requirements: '.$requirements;
- }
- $out.="
";
-
- $out.="";
- if(strlen($web)>0)
- $out.='Website: '.$web.' ';
- if(isset($author) && strlen($author)>0)
- if(isset($email) && strlen($email)>0)
- $out.='Author(s): '.$author.' ';
- else
- $out.='Author(s): '.$author.' ';
- if(strlen($issues)>0)
- $out.='Issue Tracker: '.$issues.' ';
- if(strlen($source)>0)
- $out.='Source Code: '.$source.' ';
- if(strlen($changelog)>0)
- $out.='Changelog: '.$changelog.' ';
- if(isset($donate) && strlen($donate)>0)
- $out.='Donate: '.$donate.' ';
- if(isset($flattr) && strlen($flattr)>0)
- $out.='Flattr: ';
- $out.="
";
-
- $out.="For full details and additional technical information, see ";
- $out.="this application's page on the F-Droid wiki.
";
-
- $out.='';
-
- $out.="Packages ";
-
- $out.='';
- $out.="Although APK downloads are available below to give ";
- $out.="you the choice, you should be aware that by installing that way you ";
- $out.="will not receive update notifications, and it's a less secure way ";
- $out.="to download. ";
- $out.="We recommend that you install the F-Droid client and use that.
";
-
- $i=0;
- foreach($apks as $apk) {
- $first = $i+1==count($apks);
- $out.="Version ".$apk['version']." ";
- $out.=" - Added on ".$apk['added']." ";
-
- $hasminsdk = isset($apk['sdkver']);
- $hasmaxsdk = isset($apk['maxsdkver']);
- if($hasminsdk && $hasmaxsdk) {
- $out.="
This version requires Android ".$this->androidversion($apk['sdkver'])." up to ".$this->androidversion($apk['maxsdkver'])."
";
- } elseif($hasminsdk) {
- $out.="This version requires Android ".$this->androidversion($apk['sdkver'])." or newer.
";
- } elseif($hasmaxsdk) {
- $out.="This version requires Android ".$this->androidversion($apk['maxsdkver'])." or old.
";
- }
-
- $hasabis = isset($apk['nativecode']);
- if($hasabis) {
- $abis = str_replace(',', ' ', $apk['nativecode']);
- $out.="This version uses native code and is built for: ".$abis."
";
- }
-
- // Is this source or binary?
- $srcbuild = isset($apk['srcname']) && file_exists($this->site_path.'/repo/'.$apk['srcname']);
-
- $out.="This version is built and signed by ";
- if($srcbuild) {
- $out.="F-Droid, and guaranteed to correspond to the source tarball below.
";
- } else {
- $out.="the original developer.
";
- }
- $out.='download apk ';
- $out.=$this->human_readable_size($apk['size']);
- $diffSize = $apk['diff']['size'];
- if(abs($diffSize) > 500) {
- $out.=' (';
- $out.=$diffSize>0?'+':'';
- $out.=$this->human_readable_size($diffSize, 1).') ';
- }
- if(file_exists($this->site_path.'/repo/'.$apk['apkname'].'.asc')) {
- $out.=' GPG Signature ';
- }
- if($srcbuild) {
- $out.='source tarball ';
- $out.=$this->human_readable_size(filesize($this->site_path.'/repo/'.$apk['srcname']));
- if(file_exists($this->site_path.'/repo/'.$apk['srcname'].'.asc')) {
- $out.=' GPG Signature ';
- }
- }
-
- if(isset($apk['permissions'])) {
- // Permissions diff link
- if($first == false) {
- $permissionsAddedCount = count($apk['diff']['permissions']['added']);
- $permissionsRemovedCount = count($apk['diff']['permissions']['removed']);
- $divIdDiff='permissionsDiff'.$i;
- if($permissionsAddedCount || $permissionsRemovedCount) {
- $out.='permissions diff ';
- $out.=' (';
- if($permissionsAddedCount)
- $out.='+'.$permissionsAddedCount;
- if($permissionsAddedCount && $permissionsRemovedCount)
- $out.='/';
- if($permissionsRemovedCount)
- $out.='-'.$permissionsRemovedCount;
- $out.=') ';
- }
- else
- {
- $out.='no permission changes ';
- }
- }
-
- // Permissions list link
- $permissionsListString = $this->get_permission_list_string(explode(',',$apk['permissions']), $permissions_data, $summary);
- /*if($i==0)
- $divStyleDisplay='block';
- else*/
- $divStyleDisplay='none';
- $divId='permissions'.$i;
- $out.='view permissions ';
- $out.=' ['.$summary.'] ';
- $out.=' ';
-
- // Permissions list
- $out.='';
- $out.=$permissionsListString;
- $out.='
';
-
- // Permissions diff
- {
- $out.='';
- $permissionsRemoved = $apk['diff']['permissions']['removed'];
- usort($permissionsRemoved, "permissions_cmp");
-
- // Added permissions
- if($permissionsAddedCount) {
- $out.='
ADDED ';
- $out.=$this->get_permission_list_string($apk['diff']['permissions']['added'], $permissions_data, $summary);
- }
-
- // Removed permissions
- if($permissionsRemovedCount) {
- $out.='REMOVED ';
- $out.=$this->get_permission_list_string($apk['diff']['permissions']['removed'], $permissions_data, $summary);
- }
-
- $out.='';
- }
- }
- else {
- $out.='no extra permissions needed ';
- }
-
- $out.='';
- $i++;
- }
-
- $out.='Index
';
-
- return $out;
- }
- }
- return "Application not found
";
- }
-
- private function get_permission_list_string($permissions, $permissions_data, &$summary) {
- $out='';
- usort($permissions, "permissions_cmp");
- $permission_group_last = '';
- foreach($permissions as $permission) {
- $permission_group = $permissions_data['permission'][$permission]['permissionGroup'];
- if($permission_group != $permission_group_last) {
- $permission_group_label = $permissions_data['permission-group'][$permission_group]['label'];
- if($permission_group_label=='') $permission_group_label = 'Extra/Custom';
- $out.=''.strtoupper($permission_group_label).' ';
- $permission_group_last = $permission_group;
- }
-
- $out.=$this->get_permission_protection_level_icon($permissions_data['permission'][$permission]['protectionLevel']).' ';
- $out.=''.$permissions_data['permission'][$permission]['label'].' ['.$permission.'
] ';
- if($permissions_data['permission'][$permission]['description']) $out.=$permissions_data['permission'][$permission]['description'].' ';
- //$out.=$permissions_data['permission'][$permission]['comment'].' ';
- $out.=' ';
-
- if(!isset($summaryCount[$permissions_data['permission'][$permission]['protectionLevel']]))
- $summaryCount[$permissions_data['permission'][$permission]['protectionLevel']] = 0;
- $summaryCount[$permissions_data['permission'][$permission]['protectionLevel']]++;
- }
-
- $summary = '';
- if(isset($summaryCount)) {
- foreach($summaryCount as $protectionLevel => $count) {
- $summary .= $this->get_permission_protection_level_icon($protectionLevel, 'regular').' '.$count;
- $summary .= ', ';
- }
- }
- $summary = substr($summary,0,-2);
-
- return $out;
- }
-
- private function get_permission_protection_level_icon($protection_level, $size='adjusted') {
- $iconString = '';
- if($protection_level=='dangerous') {
- $iconString .= '⚠ '; // WARNING SIGN
- }
- elseif($protection_level=='normal') {
- $iconString .= 'ⓘ '; // CIRCLED LATIN SMALL LETTER I
- }
- elseif($protection_level=='signature') {
- $iconString .= '✽ '; // HEAVY TEARDROP-SPOKED ASTERISK
- }
- elseif($protection_level=='signatureOrSystem') {
- $iconString .= '⚛ '; // ATOM SYMBOL
- }
- else {
- $iconString .= '⚙ '; // GEAR
- }
-
- return $iconString;
- }
-
- private function human_readable_size($size, $minDiv=0) {
- $si_prefix = array('bytes','kB','MB');
- $div = 1024;
-
- for($i=0;(abs($size) > $div && $i < count($si_prefix)) || $i<$minDiv;$i++) {
- $size /= $div;
- }
-
- return round($size,max(0,$i-1)).' '.$si_prefix[$i];
- }
-
- private function get_antifeature_description($antifeature) {
- // Anti feature names and descriptions
- $antifeatureDescription['Ads']['name'] = 'Advertising';
- $antifeatureDescription['Ads']['description'] = 'This application contains advertising.';
- $antifeatureDescription['Tracking']['name'] = 'Tracks You';
- $antifeatureDescription['Tracking']['description'] = 'This application tracks and reports your activity to somewhere.';
- $antifeatureDescription['NonFreeNet']['name'] = 'Non-Free Network Services';
- $antifeatureDescription['NonFreeNet']['description'] = 'This application promotes a non-Free network service.';
- $antifeatureDescription['NonFreeAdd']['name'] = 'Non-Free Addons';
- $antifeatureDescription['NonFreeAdd']['description'] = 'This application promotes non-Free add-ons.';
- $antifeatureDescription['NonFreeDep']['name'] = 'Non-Free Dependencies';
- $antifeatureDescription['NonFreeDep']['description'] = 'This application depends on another non-Free application.';
- $antifeatureDescription['UpstreamNonFree']['name'] = 'Upstream Non-Free';
- $antifeatureDescription['UpstreamNonFree']['description'] = 'The upstream source code is non-free.';
- $antifeatureDescription['NonFreeAssets']['name'] = 'Non-Free Assets';
- $antifeatureDescription['NonFreeAssets']['description'] = 'This application contains non-free assets.';
- $antifeatureDescription['KnownVuln']['name'] = 'Known Vulnerability';
- $antifeatureDescription['KnownVuln']['description'] = 'This application known security vulnerabilities.';
-
- if(isset($antifeatureDescription[$antifeature])) {
- return $antifeatureDescription[$antifeature];
- }
- return array('name'=>$antifeature);
- }
-
-
- function get_apps($query_vars) {
-
- $xml = simplexml_load_file($this->site_path."/repo/index.xml");
- $matches = $this->show_apps($xml,$query_vars,$numpages);
-
- $out='';
-
- if(($query_vars['fdfilter']===null || $query_vars['fdfilter']!='') && $numpages>0)
- {
- $out.='';
- if($query_vars['fdfilter']===null) {
-
- $categories = array('All categories');
- $handle = fopen(getenv('DOCUMENT_ROOT').'/repo/categories.txt', 'r');
- if ($handle) {
- while (($buffer = fgets($handle, 4096)) !== false) {
- $categories[] = rtrim($buffer);
- }
- fclose($handle);
- }
-
- $out.=''."\n";
- }
- else {
- $out.='Applications matching "'.esc_attr($query_vars['fdfilter']).'"';
- }
- $out.="
";
-
- $out.='';
- $out.='
List | ';
- $out.='
Grid ';
- $out.='
';
-
- $out.=' ';
- }
-
- if($numpages>0) {
- $out.=$matches;
-
- $out.='';
-
- $out.='
';
- $out.=' Page '.$query_vars['fdpage'].' of '.$numpages.' ';
- $out.='
';
-
- $out.='';
- if($numpages>1) {
- for($i=1;$i<=$numpages;$i++) {
- if($i == $query_vars['fdpage']) {
- $out.='
'.$i.' ';
- } else {
- $out.='
';
- $out.=$i;
- $out.=' ';
- }
- $out.=' ';
- }
- $out.=' ';
- }
- $out.='
';
-
- $out.='';
- if($query_vars['fdpage']!=$numpages) {
- $out.='
next> ';
- }
- $out.='
';
-
- $out.='';
- } else if($query_vars['fdfilter']!='') {
- $out.='No matches
';
- }
-
- return $out;
- }
-
-
- function makeformdata($query_vars) {
-
- $out='';
-
- $out.=' ';
- foreach($query_vars as $name => $value) {
- if($value !== null && $name != 'fdfilter' && $name != 'fdpage')
- $out.=' ';
- }
-
- return $out;
- }
-
-
- function show_apps($xml,$query_vars,&$numpages) {
-
- $skipped=0;
- $got=0;
- $total=0;
-
- if($query_vars['fdstyle']=='grid') {
- $outputter = new FDOutGrid();
- } else {
- $outputter = new FDOutList();
- }
-
- $out = "";
-
- $out.=$outputter->outputStart();
-
- foreach($xml->children() as $app) {
-
- if($app->getName() == 'repo') continue;
- $appinfo['attrs']=$app->attributes();
- $appinfo['id']=$appinfo['attrs']['id'];
- foreach($app->children() as $el) {
- switch($el->getName()) {
- case "name":
- $appinfo['name']=$el;
- break;
- case "icon":
- $appinfo['icon']=$el;
- break;
- case "summary":
- $appinfo['summary']=$el;
- break;
- case "desc":
- $appinfo['description']=$el;
- break;
- case "license":
- $appinfo['license']=$el;
- break;
- case "category":
- $appinfo['category']=$el;
- break;
- }
- }
-
- if(($query_vars['fdfilter']===null || $query_vars['fdfilter']!='' && (stristr($appinfo['name'],$query_vars['fdfilter']) || stristr($appinfo['id'],$query_vars['fdfilter']) || stristr($appinfo['summary'],$query_vars['fdfilter']) || stristr($appinfo['description'],$query_vars['fdfilter']))) && (!isset($query_vars['fdcategory']) || $query_vars['fdcategory'] && $query_vars['fdcategory']==$appinfo['category'])) {
- if($skipped<($query_vars['fdpage']-1)*$outputter->perpage) {
- $skipped++;
- } else if($got<$outputter->perpage) {
- $out.=$outputter->outputEntry($query_vars, $appinfo);
- $got++;
- }
- $total++;
- }
-
- }
-
- $out.=$outputter->outputEnd();
-
- $numpages = ceil((float)$total/$outputter->perpage);
-
- return $out;
- }
-}
-
-// Class to output app entries in a detailed list format
-class FDOutList
-{
- var $perpage=30;
-
- function FDOutList() {
- }
-
- function outputStart() {
- return '';
- }
-
- function outputEntry($query_vars, $appinfo) {
- $out="";
- $out.=' '."\n";
- $out.='';
- $out.='\n";
- $out.=' ';
-
- return $out;
- }
-
- function outputEnd() {
- return '';
- }
-}
-
-// Class to output app entries in a compact grid format
-class FDOutGrid
-{
- var $perpage=80;
-
- var $itemCount = 0;
-
- function FDOutGrid() {
- }
-
- function outputStart() {
- return "\n".''."\n";
- }
-
- function outputEntry($query_vars, $appinfo) {
- $link=makelink($query_vars, array('fdid'=>$appinfo['id']));
-
- $out='';
-
- if($this->itemCount%4 == 0 && $this->itemCount > 0)
- {
- $out.=' '."\n";
- }
-
- $out.='';
- $out.='';
- $out.='
";
- $out.='';
- $out.=" \n";
-
- $this->itemCount++;
- return $out;
- }
-
- function outputEnd() {
- return '
'."\n";
- }
-}
-
-function permissions_cmp($a, $b) {
- global $permissions_data;
-
- $aProtectionLevel = $permissions_data['permission'][$a]['protectionLevel'];
- $bProtectionLevel = $permissions_data['permission'][$b]['protectionLevel'];
-
- if($aProtectionLevel != $bProtectionLevel) {
- if(strlen($aProtectionLevel)==0) return 1;
- if(strlen($bProtectionLevel)==0) return -1;
-
- return strcmp($aProtectionLevel, $bProtectionLevel);
- }
-
- $aGroup = $permissions_data['permission'][$a]['permissionGroup'];
- $bGroup = $permissions_data['permission'][$b]['permissionGroup'];
-
- if($aGroup != $bGroup) {
- return strcmp($aGroup, $bGroup);
- }
-
- return strcmp($a, $b);
-}
-
-// Make a link to this page, with the current query vars attached and desired params added/modified
-function makelink($query_vars, $params=array()) {
- $link=get_permalink();
-
- $p = array_merge($query_vars, $params);
-
- // Page 1 is the default, don't clutter urls with it...
- if($p['fdpage'] == 1)
- unset($p['fdpage']);
- // Likewise for list style...
- if($p['fdstyle'] == 'list')
- unset($p['fdstyle']);
-
- $vars=linkify($p);
- if(strlen($vars)==0)
- return $link;
- if(strpos($link,'?')===false)
- $link.='?';
- else
- $link.='&';
- return $link.$vars;
-}
-
-// Return the key value pairs in http-get-parameter format as a string
-function linkify($vars) {
- $retvar = '';
- foreach($vars as $k => $v) {
- if($k!==null && $v!==null && $v!='')
- $retvar .= $k.'='.urlencode($v).'&';
- }
- return substr($retvar,0,-1);
-}
-
-$wp_fdroid = new FDroid();
-
-
-?>