aboutsummaryrefslogtreecommitdiff
path: root/app/Models/Share.php
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-09-26 14:36:30 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-09-26 14:36:30 +0200
commit147a3d21bbe78ae66c7134ac0c355472a92e1159 (patch)
tree7f8ca64ccc0939c8c9aef145a8fd86cc2e52640b /app/Models/Share.php
parent7e949d50320317b5c3b5a2da2bdaf324e794b2f7 (diff)
parentc14162221365077bcaeecde7127806190490dd58 (diff)
Merge branch 'dev'
Diffstat (limited to 'app/Models/Share.php')
-rw-r--r--app/Models/Share.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/app/Models/Share.php b/app/Models/Share.php
new file mode 100644
index 000000000..b146db722
--- /dev/null
+++ b/app/Models/Share.php
@@ -0,0 +1,44 @@
+<?php
+
+class FreshRSS_Share {
+
+ static public function generateUrl($options, $selected, $link, $title) {
+ $share = $options[$selected['type']];
+ $matches = array(
+ '~URL~',
+ '~TITLE~',
+ '~LINK~',
+ );
+ $replaces = array(
+ $selected['url'],
+ self::transformData($title, self::getTransform($share, 'title')),
+ self::transformData($link, self::getTransform($share, 'link')),
+ );
+ $url = str_replace($matches, $replaces, $share['url']);
+ return $url;
+ }
+
+ static private function transformData($data, $transform) {
+ if (!is_array($transform)) {
+ return $data;
+ }
+ if (count($transform) === 0) {
+ return $data;
+ }
+ foreach ($transform as $action) {
+ $data = call_user_func($action, $data);
+ }
+ return $data;
+ }
+
+ static private function getTransform($options, $type) {
+ $transform = $options['transform'];
+
+ if (array_key_exists($type, $transform)) {
+ return $transform[$type];
+ }
+
+ return $transform;
+ }
+
+}