Changeset 2103033
- Timestamp:
- 06/09/2019 09:23:11 PM (7 years ago)
- Location:
- utubevideo-gallery
- Files:
-
- 765 added
- 24 edited
-
tags/2.0.4 (added)
-
tags/2.0.4/.babelrc (added)
-
tags/2.0.4/.git (added)
-
tags/2.0.4/.git/COMMIT_EDITMSG (added)
-
tags/2.0.4/.git/FETCH_HEAD (added)
-
tags/2.0.4/.git/HEAD (added)
-
tags/2.0.4/.git/ORIG_HEAD (added)
-
tags/2.0.4/.git/TAG_EDITMSG (added)
-
tags/2.0.4/.git/config (added)
-
tags/2.0.4/.git/description (added)
-
tags/2.0.4/.git/hooks (added)
-
tags/2.0.4/.git/hooks/applypatch-msg.sample (added)
-
tags/2.0.4/.git/hooks/commit-msg.sample (added)
-
tags/2.0.4/.git/hooks/fsmonitor-watchman.sample (added)
-
tags/2.0.4/.git/hooks/post-update.sample (added)
-
tags/2.0.4/.git/hooks/pre-applypatch.sample (added)
-
tags/2.0.4/.git/hooks/pre-commit.sample (added)
-
tags/2.0.4/.git/hooks/pre-push.sample (added)
-
tags/2.0.4/.git/hooks/pre-rebase.sample (added)
-
tags/2.0.4/.git/hooks/pre-receive.sample (added)
-
tags/2.0.4/.git/hooks/prepare-commit-msg.sample (added)
-
tags/2.0.4/.git/hooks/update.sample (added)
-
tags/2.0.4/.git/index (added)
-
tags/2.0.4/.git/info (added)
-
tags/2.0.4/.git/info/exclude (added)
-
tags/2.0.4/.git/logs (added)
-
tags/2.0.4/.git/logs/HEAD (added)
-
tags/2.0.4/.git/logs/refs (added)
-
tags/2.0.4/.git/logs/refs/heads (added)
-
tags/2.0.4/.git/logs/refs/heads/master (added)
-
tags/2.0.4/.git/logs/refs/remotes (added)
-
tags/2.0.4/.git/logs/refs/remotes/origin (added)
-
tags/2.0.4/.git/logs/refs/remotes/origin/master (added)
-
tags/2.0.4/.git/logs/refs/stash (added)
-
tags/2.0.4/.git/objects (added)
-
tags/2.0.4/.git/objects/01 (added)
-
tags/2.0.4/.git/objects/01/7c9b189cce5c74baf93000f281c641ef0a6c4c (added)
-
tags/2.0.4/.git/objects/01/b43a64a405e98f944e5ea40f82e1cd1c41bfe6 (added)
-
tags/2.0.4/.git/objects/01/e5a45a7664a0d7b2ddcb9bd00934d4c1a921d6 (added)
-
tags/2.0.4/.git/objects/02 (added)
-
tags/2.0.4/.git/objects/02/5cc7064f4d3b1afda884acb70337645eb25c03 (added)
-
tags/2.0.4/.git/objects/03 (added)
-
tags/2.0.4/.git/objects/03/32dc4ea93d05d33f926d5f043db243ee1472b4 (added)
-
tags/2.0.4/.git/objects/05 (added)
-
tags/2.0.4/.git/objects/05/08f72de9764649b0dade6c2ff7b41f0611e386 (added)
-
tags/2.0.4/.git/objects/05/d833f6ec3e63943dd115461cf0c5844116e55e (added)
-
tags/2.0.4/.git/objects/06 (added)
-
tags/2.0.4/.git/objects/06/581f787da52136a9622d384c76f6149a83410f (added)
-
tags/2.0.4/.git/objects/06/b9922a69e000afdd916b5ee98da20f4eefe429 (added)
-
tags/2.0.4/.git/objects/07 (added)
-
tags/2.0.4/.git/objects/07/78725c62ff5a4ab7eb6542a89729756015e4cc (added)
-
tags/2.0.4/.git/objects/07/aaa551a32c2bbbaf1790a4d6e73503879668f2 (added)
-
tags/2.0.4/.git/objects/08 (added)
-
tags/2.0.4/.git/objects/08/29256c6287ae10ef94490f93d948a5d2500fcd (added)
-
tags/2.0.4/.git/objects/09 (added)
-
tags/2.0.4/.git/objects/09/0db6ddb5fcf0a8aa0bcf3cd99b53e798f173f3 (added)
-
tags/2.0.4/.git/objects/0a (added)
-
tags/2.0.4/.git/objects/0a/0bfda4ac85fe65cd29c817dd1206d068398031 (added)
-
tags/2.0.4/.git/objects/0e (added)
-
tags/2.0.4/.git/objects/0e/37fba373bc66a573ceb9f9a833af43ace6e274 (added)
-
tags/2.0.4/.git/objects/0e/93dc0f82c686475fdc1c7517c8df1069e62d15 (added)
-
tags/2.0.4/.git/objects/10 (added)
-
tags/2.0.4/.git/objects/10/97fcb9017134ffd70ee8df3e1003da03cefe3e (added)
-
tags/2.0.4/.git/objects/11 (added)
-
tags/2.0.4/.git/objects/11/0efe7beba88a2bf0fd86373bee7c36bbf3206a (added)
-
tags/2.0.4/.git/objects/11/5ad8d9d81fcd4e9a304ba8c1e86b7e036a8287 (added)
-
tags/2.0.4/.git/objects/12 (added)
-
tags/2.0.4/.git/objects/12/cc90596493a172cbb69c66bff12b3965c0bb34 (added)
-
tags/2.0.4/.git/objects/13 (added)
-
tags/2.0.4/.git/objects/13/b02b8a79915888528a31e5d15a14bb5b3fc746 (added)
-
tags/2.0.4/.git/objects/13/bbe7e717fedb9c1a071f03bad493eb6bc3abab (added)
-
tags/2.0.4/.git/objects/13/bd5bf30b0f67203af718de62cc9d4dee2ab582 (added)
-
tags/2.0.4/.git/objects/13/e149ff1f1f61447d9f9c267cc2fc3a1d4b64cf (added)
-
tags/2.0.4/.git/objects/14 (added)
-
tags/2.0.4/.git/objects/14/3ab0e25cfaf39d153efb6bf096520a6af7b5d7 (added)
-
tags/2.0.4/.git/objects/16 (added)
-
tags/2.0.4/.git/objects/16/c42ff19addeef4593c1818101319b5ad90437b (added)
-
tags/2.0.4/.git/objects/17 (added)
-
tags/2.0.4/.git/objects/17/914279af9d54f47b8a90d3013619a58171a6c7 (added)
-
tags/2.0.4/.git/objects/17/f08b5945d6b5ed2a7f78caf28682abfa185cd8 (added)
-
tags/2.0.4/.git/objects/18 (added)
-
tags/2.0.4/.git/objects/18/b71d2b1113a5410cda62aef9e5816dd138f96c (added)
-
tags/2.0.4/.git/objects/1c (added)
-
tags/2.0.4/.git/objects/1c/7afd40fad7f8029ceae9261b705d76f37dc849 (added)
-
tags/2.0.4/.git/objects/1c/fbba42eb3d48991dd07f0a98eeae7505b1fcb4 (added)
-
tags/2.0.4/.git/objects/1d (added)
-
tags/2.0.4/.git/objects/1d/2130164df92bcc5d91e3ef89d63cddcc5e4b3f (added)
-
tags/2.0.4/.git/objects/1d/2e941f87ac7e91ae23021b334b35c21ae1161b (added)
-
tags/2.0.4/.git/objects/1e (added)
-
tags/2.0.4/.git/objects/1e/8411c7a7bcd8848f6eb4e0230ea24b3f6a905a (added)
-
tags/2.0.4/.git/objects/1f (added)
-
tags/2.0.4/.git/objects/1f/d37d5f0a50d4a887c80ab1a79f12dac0852822 (added)
-
tags/2.0.4/.git/objects/20 (added)
-
tags/2.0.4/.git/objects/20/7e2296c1f73509353f9d28746bd7db74c727e6 (added)
-
tags/2.0.4/.git/objects/20/91b5180fc6884695242bcf9b8704ab2cdccca9 (added)
-
tags/2.0.4/.git/objects/20/e582733a002f22fb0d26f2b93de01a9d95d495 (added)
-
tags/2.0.4/.git/objects/20/feff8c3c682e429229d9f5748aebaa7a99febe (added)
-
tags/2.0.4/.git/objects/21 (added)
-
tags/2.0.4/.git/objects/21/4902660974566f78edae3aee8463dd7b1d6c71 (added)
-
tags/2.0.4/.git/objects/21/a621c815584d8bf6ff98c71a697914fee514f5 (added)
-
tags/2.0.4/.git/objects/22 (added)
-
tags/2.0.4/.git/objects/22/7c4d8697179a359950871fba05eb193e3da773 (added)
-
tags/2.0.4/.git/objects/25 (added)
-
tags/2.0.4/.git/objects/25/13b2208808a7f697df742a1ce6f22e4b7bb56c (added)
-
tags/2.0.4/.git/objects/25/482eb5bf3287dc45ca244ca07ca013c479462c (added)
-
tags/2.0.4/.git/objects/25/4dbaff5507594a3497c67f46e0df0c599662ce (added)
-
tags/2.0.4/.git/objects/25/71ae2b08ad0f1300b2f824d64c4d940f2d1f42 (added)
-
tags/2.0.4/.git/objects/26 (added)
-
tags/2.0.4/.git/objects/26/1c1eb9377cde571363b04df95f3624e3fa0d2b (added)
-
tags/2.0.4/.git/objects/27 (added)
-
tags/2.0.4/.git/objects/27/2ef491cb7fade270bbb77233f433687b499da1 (added)
-
tags/2.0.4/.git/objects/28 (added)
-
tags/2.0.4/.git/objects/28/bda77cd9cb356a0c529a97087f72bd39dc7b72 (added)
-
tags/2.0.4/.git/objects/28/e7fdd425a01da57399d1763385761080ff674f (added)
-
tags/2.0.4/.git/objects/2a (added)
-
tags/2.0.4/.git/objects/2a/aff59ec49aa7eb5706d3baec562baf6dae104f (added)
-
tags/2.0.4/.git/objects/2b (added)
-
tags/2.0.4/.git/objects/2b/6a59cb92bea9a796cf4a29cb44c3596dd462f5 (added)
-
tags/2.0.4/.git/objects/2d (added)
-
tags/2.0.4/.git/objects/2d/2d53d62a3448f2dc99f6888ff47b1411a92f45 (added)
-
tags/2.0.4/.git/objects/30 (added)
-
tags/2.0.4/.git/objects/30/9b2bacbc95d816b882b45f8a8e1f0642d925bb (added)
-
tags/2.0.4/.git/objects/31 (added)
-
tags/2.0.4/.git/objects/31/8a0055ce3ea83789aea26a0ef51c0058075ced (added)
-
tags/2.0.4/.git/objects/32 (added)
-
tags/2.0.4/.git/objects/32/1b27d0b317b8ef8abce57cdba34910e8744d6b (added)
-
tags/2.0.4/.git/objects/33 (added)
-
tags/2.0.4/.git/objects/33/3fa24c7882a5c0eaa55dcb482260e93fd2041e (added)
-
tags/2.0.4/.git/objects/33/bb3a22eda54cb9c0afc7e6389ca3a17197cc37 (added)
-
tags/2.0.4/.git/objects/34 (added)
-
tags/2.0.4/.git/objects/34/1160540b57d6041895b8a77c538cb61fb38adf (added)
-
tags/2.0.4/.git/objects/35 (added)
-
tags/2.0.4/.git/objects/35/30810085fbedeb83cf4647c0d39a005be51f5d (added)
-
tags/2.0.4/.git/objects/35/331ce6f53c83c6a7c93092cf28852285e8c540 (added)
-
tags/2.0.4/.git/objects/35/3c5a6b45ba8c8e91d84f6e95d234dcebbf267b (added)
-
tags/2.0.4/.git/objects/37 (added)
-
tags/2.0.4/.git/objects/37/ea30fec8e2fccd2ac5cbd605f45b60c8b5b007 (added)
-
tags/2.0.4/.git/objects/39 (added)
-
tags/2.0.4/.git/objects/39/2ecb21d23b05e4c84fdc15ed9f79fe572f3e3e (added)
-
tags/2.0.4/.git/objects/3a (added)
-
tags/2.0.4/.git/objects/3a/72c667ee45519376edbff87394dc2546facae1 (added)
-
tags/2.0.4/.git/objects/3b (added)
-
tags/2.0.4/.git/objects/3b/576d6065529d487825233b2115e09b885f19ff (added)
-
tags/2.0.4/.git/objects/3c (added)
-
tags/2.0.4/.git/objects/3c/ef0fc1df4a92bd07ccf1b2125c104413685e8d (added)
-
tags/2.0.4/.git/objects/3d (added)
-
tags/2.0.4/.git/objects/3d/89d214578c13c518f0e97d40623e2e6191bfde (added)
-
tags/2.0.4/.git/objects/3e (added)
-
tags/2.0.4/.git/objects/3e/c01445a31303bd876db9cbeaa8e2e73a3f0404 (added)
-
tags/2.0.4/.git/objects/3f (added)
-
tags/2.0.4/.git/objects/3f/25316cc49bb34e3ec66f5bb70bee0440a77987 (added)
-
tags/2.0.4/.git/objects/43 (added)
-
tags/2.0.4/.git/objects/43/3b5fc96d6b501b32d1c7868e4c99e8870c2429 (added)
-
tags/2.0.4/.git/objects/44 (added)
-
tags/2.0.4/.git/objects/44/4005f0d77b52d2c9dafd365b75c6c1d0fcd064 (added)
-
tags/2.0.4/.git/objects/44/ade33cf0ad5c7a387127f58e629f532e1e824f (added)
-
tags/2.0.4/.git/objects/45 (added)
-
tags/2.0.4/.git/objects/45/036587346cde95eeaa956622d5a94fc1e49433 (added)
-
tags/2.0.4/.git/objects/46 (added)
-
tags/2.0.4/.git/objects/46/02c7782c87bb2a6352f5d94e99563ce38a18a1 (added)
-
tags/2.0.4/.git/objects/48 (added)
-
tags/2.0.4/.git/objects/48/b5870c10256060504d0f0b8358dc6abd82e880 (added)
-
tags/2.0.4/.git/objects/4c (added)
-
tags/2.0.4/.git/objects/4c/7ea5fdd1bd65aa77981acce4565b47a52bec04 (added)
-
tags/2.0.4/.git/objects/4c/9cd74908734c18f08458fa3d756ad649ea9b03 (added)
-
tags/2.0.4/.git/objects/4c/e5a3834b83b2ca68a263828e9f7f9625b52ef9 (added)
-
tags/2.0.4/.git/objects/4d (added)
-
tags/2.0.4/.git/objects/4d/b5e164a89b24c142835c338b11556ea1ff5ea7 (added)
-
tags/2.0.4/.git/objects/4f (added)
-
tags/2.0.4/.git/objects/4f/bbd6648ccbdfab8a933959de143056bf66b2f2 (added)
-
tags/2.0.4/.git/objects/4f/d0165d84ca5d97956f56259c6e7a09efb1492b (added)
-
tags/2.0.4/.git/objects/53 (added)
-
tags/2.0.4/.git/objects/53/d71214f766addc3f77e340a9873add98260573 (added)
-
tags/2.0.4/.git/objects/56 (added)
-
tags/2.0.4/.git/objects/56/070395be3b92a280d4ee979ccd347e88ab8a81 (added)
-
tags/2.0.4/.git/objects/56/99580b31dbd281d54b305b364e2a77f874ba7f (added)
-
tags/2.0.4/.git/objects/58 (added)
-
tags/2.0.4/.git/objects/58/3bb63022ead1e90eaa6013594a3253fb9d6d67 (added)
-
tags/2.0.4/.git/objects/59 (added)
-
tags/2.0.4/.git/objects/59/e04b359c8575a7ac518998f76aa58bab0f3bf0 (added)
-
tags/2.0.4/.git/objects/5a (added)
-
tags/2.0.4/.git/objects/5a/5272883308e81bc0a116e1639186934e6d90d5 (added)
-
tags/2.0.4/.git/objects/5b (added)
-
tags/2.0.4/.git/objects/5b/d28e290247960f81d6013ca00cf650b968dc2a (added)
-
tags/2.0.4/.git/objects/5b/df852699492650235e9c280b82fa0322788b61 (added)
-
tags/2.0.4/.git/objects/5c (added)
-
tags/2.0.4/.git/objects/5c/e227422a1f73c5511cfd57fcfca3d179cbf4e8 (added)
-
tags/2.0.4/.git/objects/5d (added)
-
tags/2.0.4/.git/objects/5d/d0e07e0ebbc84a1ef26a6795e6cb4e5561bea1 (added)
-
tags/2.0.4/.git/objects/5f (added)
-
tags/2.0.4/.git/objects/5f/f4072b7ba6381fa365f963ed6c4eac8220f63b (added)
-
tags/2.0.4/.git/objects/60 (added)
-
tags/2.0.4/.git/objects/60/515ecc35e080336e45217878cd08f810bc9fcb (added)
-
tags/2.0.4/.git/objects/60/a75c7df85ebf2b9b2d86e5e8957cd94774d583 (added)
-
tags/2.0.4/.git/objects/62 (added)
-
tags/2.0.4/.git/objects/62/4958ba256e8d01ed659b7649630cfd592a2a1e (added)
-
tags/2.0.4/.git/objects/63 (added)
-
tags/2.0.4/.git/objects/63/9e36b49e6ce8e1923be081e11ad43cf242758c (added)
-
tags/2.0.4/.git/objects/63/e0fb72070eee72c99e5c7cc70c6d0123e59166 (added)
-
tags/2.0.4/.git/objects/67 (added)
-
tags/2.0.4/.git/objects/67/d9c7f045874f98a27dc253d7771874bb0fd44f (added)
-
tags/2.0.4/.git/objects/68 (added)
-
tags/2.0.4/.git/objects/68/4a833e26713555185b4efece90903688d0c219 (added)
-
tags/2.0.4/.git/objects/69 (added)
-
tags/2.0.4/.git/objects/69/85778737ef548fa671ec283a7204fa12756e92 (added)
-
tags/2.0.4/.git/objects/69/a89939f2c13a778bb422b751d75477e63c91eb (added)
-
tags/2.0.4/.git/objects/6a (added)
-
tags/2.0.4/.git/objects/6a/e8b7cc80e5516d931271f162f4f94a698c9281 (added)
-
tags/2.0.4/.git/objects/6b (added)
-
tags/2.0.4/.git/objects/6b/16d16256d00320924fcc14eb693b52e8cdf5c0 (added)
-
tags/2.0.4/.git/objects/6b/5980d0a3d61163025da490c52e72833b4901ea (added)
-
tags/2.0.4/.git/objects/6b/62d614c16c56b16952d283127c137adcfdd1dd (added)
-
tags/2.0.4/.git/objects/6b/9ea4d70c232422c6469d71afeff59a0729fa2d (added)
-
tags/2.0.4/.git/objects/6c (added)
-
tags/2.0.4/.git/objects/6c/c330e381b31c90cfb369721ccd5b301f28fde7 (added)
-
tags/2.0.4/.git/objects/6e (added)
-
tags/2.0.4/.git/objects/6e/68030e56be9b1f4dfa82329eec834a12c1ed48 (added)
-
tags/2.0.4/.git/objects/6e/c52253bf9eba5958c47d1aa6227efc331e2360 (added)
-
tags/2.0.4/.git/objects/6f (added)
-
tags/2.0.4/.git/objects/6f/5296d977bca76a96d576b327a2a10ad4cb417a (added)
-
tags/2.0.4/.git/objects/6f/a696e6df1a2dd36dfa59fcaa77514281af3cd6 (added)
-
tags/2.0.4/.git/objects/6f/e67be6fcb2f7c98b464662b9fbfd795f973ba0 (added)
-
tags/2.0.4/.git/objects/70 (added)
-
tags/2.0.4/.git/objects/70/580a68fac1fb3c45a5be33949fe4213a38a92c (added)
-
tags/2.0.4/.git/objects/70/d3374aae665bbe0dee154b974770d319571d76 (added)
-
tags/2.0.4/.git/objects/71 (added)
-
tags/2.0.4/.git/objects/71/1bdb232ecf2a4f3b865a1fac5c9fe5dc8bbbdf (added)
-
tags/2.0.4/.git/objects/71/687152802ad3253238631f3b5f4240ff02fe8e (added)
-
tags/2.0.4/.git/objects/71/bf212f925115bc156f3ae90bb4463e696bb72f (added)
-
tags/2.0.4/.git/objects/74 (added)
-
tags/2.0.4/.git/objects/74/851120d4709098fd64b52ee6880d7750f840d0 (added)
-
tags/2.0.4/.git/objects/79 (added)
-
tags/2.0.4/.git/objects/79/757e0759de10d7d22bf01df41fc9ade8c3df69 (added)
-
tags/2.0.4/.git/objects/7d (added)
-
tags/2.0.4/.git/objects/7d/c23537217429e9ffd062e6474ed1d8f58c64d0 (added)
-
tags/2.0.4/.git/objects/7e (added)
-
tags/2.0.4/.git/objects/7e/23736c2cb4d984b89ea637c45009446314e289 (added)
-
tags/2.0.4/.git/objects/7e/af9e187ad3d101b0d9b560f7045216d3750e52 (added)
-
tags/2.0.4/.git/objects/80 (added)
-
tags/2.0.4/.git/objects/80/5b219f5d7310c65fd16cb3d1fcd2eac626292e (added)
-
tags/2.0.4/.git/objects/81 (added)
-
tags/2.0.4/.git/objects/81/c6cad4ae587e273a05f3cc41d544f3d92f14a9 (added)
-
tags/2.0.4/.git/objects/82 (added)
-
tags/2.0.4/.git/objects/82/5169d24204893afef60d2732e86078dc6c6109 (added)
-
tags/2.0.4/.git/objects/82/fc260b334513b9656d30d18cf03a42f16fa10c (added)
-
tags/2.0.4/.git/objects/83 (added)
-
tags/2.0.4/.git/objects/83/4d5feaae423cacf8c979cf9e6868ce8a67ea22 (added)
-
tags/2.0.4/.git/objects/83/a90f5db92849ecd7e666e968ab922a8ab43c91 (added)
-
tags/2.0.4/.git/objects/83/fcb34890c9ab44ff8cf6405d3ebbf674041e52 (added)
-
tags/2.0.4/.git/objects/84 (added)
-
tags/2.0.4/.git/objects/84/27a0f02446047913dbb285709adce25dfe619e (added)
-
tags/2.0.4/.git/objects/85 (added)
-
tags/2.0.4/.git/objects/85/186ef45ff4fdda6c52e66d806a605ed6b5c22d (added)
-
tags/2.0.4/.git/objects/87 (added)
-
tags/2.0.4/.git/objects/87/558ddfe80fb35b551d53a5b523c31c1cfea6d1 (added)
-
tags/2.0.4/.git/objects/87/ebc537e76e6de99d0df829e7ea7a35a9f633ea (added)
-
tags/2.0.4/.git/objects/87/f1a0025efa81f247c908fcc0da53e15aa15470 (added)
-
tags/2.0.4/.git/objects/88 (added)
-
tags/2.0.4/.git/objects/88/f90da62a68de71ec71b0295445f55c28452b8d (added)
-
tags/2.0.4/.git/objects/8b (added)
-
tags/2.0.4/.git/objects/8b/75d0524ed50adf56ee0f430a1eae098f365357 (added)
-
tags/2.0.4/.git/objects/8b/97ac3c651ae0b100595563c0ea63108082a7e3 (added)
-
tags/2.0.4/.git/objects/8c (added)
-
tags/2.0.4/.git/objects/8c/9bb230fa96b5c7646ff28c9bbd704b507da5b0 (added)
-
tags/2.0.4/.git/objects/8d (added)
-
tags/2.0.4/.git/objects/8d/71bc0f3ef8b9a8661b4189b390d72239fdfaee (added)
-
tags/2.0.4/.git/objects/8e (added)
-
tags/2.0.4/.git/objects/8e/f2e564a5dc869ec818c11e54479ec20dc9b82d (added)
-
tags/2.0.4/.git/objects/8f (added)
-
tags/2.0.4/.git/objects/8f/d90ef0fe388d0282a25f15568f61867672edd5 (added)
-
tags/2.0.4/.git/objects/8f/fcf9f979247ad7e9ddc80abfaa16b2fc6bf70f (added)
-
tags/2.0.4/.git/objects/90 (added)
-
tags/2.0.4/.git/objects/90/dbcc916c9242f45bcac0174e36f5f3e3f9a0fc (added)
-
tags/2.0.4/.git/objects/92 (added)
-
tags/2.0.4/.git/objects/92/2d7cb53dfd9c188d8268da50a4a8d1fead6a34 (added)
-
tags/2.0.4/.git/objects/97 (added)
-
tags/2.0.4/.git/objects/97/020f4faedb4195bbb0537128dd448f674eb12f (added)
-
tags/2.0.4/.git/objects/9a (added)
-
tags/2.0.4/.git/objects/9a/3139e5ea2257086803e1f8227647b42b72f220 (added)
-
tags/2.0.4/.git/objects/9b (added)
-
tags/2.0.4/.git/objects/9b/d200e348b5277deef7705d75f9475c89ebd76e (added)
-
tags/2.0.4/.git/objects/9b/d72a12cf5e8bbde91ec26e3dadaa4c6483dd5a (added)
-
tags/2.0.4/.git/objects/9c (added)
-
tags/2.0.4/.git/objects/9c/6cb6ef0192e5f2573a53c6c7d1e3048e92a457 (added)
-
tags/2.0.4/.git/objects/9e (added)
-
tags/2.0.4/.git/objects/9e/35819cb396668f96f9ae5c914634c34b666956 (added)
-
tags/2.0.4/.git/objects/a0 (added)
-
tags/2.0.4/.git/objects/a0/0f404862825b7a748e4275cd17601323edbcc3 (added)
-
tags/2.0.4/.git/objects/a0/46754a79bc613375b9df841594bdccc3a3e7bc (added)
-
tags/2.0.4/.git/objects/a0/5c98c59318e78ac396e26154febf7ce1a82adc (added)
-
tags/2.0.4/.git/objects/a0/eb8591d3a787a31b3b0e084472822dbc3d5554 (added)
-
tags/2.0.4/.git/objects/a1 (added)
-
tags/2.0.4/.git/objects/a1/c8fce8aebc92babf3ed9da6d1947971eadcea8 (added)
-
tags/2.0.4/.git/objects/a1/cd0e5506fd5d9f2a2122485ccd9ef1d8ad5721 (added)
-
tags/2.0.4/.git/objects/a5 (added)
-
tags/2.0.4/.git/objects/a5/6d87506b706f80d295146daa77b974f03dc06c (added)
-
tags/2.0.4/.git/objects/a6 (added)
-
tags/2.0.4/.git/objects/a6/f140b42711b820e443ba6feed984a8296e6f5c (added)
-
tags/2.0.4/.git/objects/a7 (added)
-
tags/2.0.4/.git/objects/a7/464c02943d23c0b0891b7d56e5656df2a30e96 (added)
-
tags/2.0.4/.git/objects/a7/cb1c2e12c7e18563b9621c1397374fb547f407 (added)
-
tags/2.0.4/.git/objects/a8 (added)
-
tags/2.0.4/.git/objects/a8/ee063345b76cfbdfdf3cc489818b2d524af2b7 (added)
-
tags/2.0.4/.git/objects/aa (added)
-
tags/2.0.4/.git/objects/aa/0693d4478bdb90f8f9fb5bd57a886e40971d08 (added)
-
tags/2.0.4/.git/objects/aa/a89820a2b6af4e21a55e9d637207e41148bb82 (added)
-
tags/2.0.4/.git/objects/aa/fad3ad459837b0b8188ceced826a3af9967f80 (added)
-
tags/2.0.4/.git/objects/ac (added)
-
tags/2.0.4/.git/objects/ac/5df95834bc5457b2f2d64d2d2195e4a6100361 (added)
-
tags/2.0.4/.git/objects/ac/94c48ac565f456271f273bec9bb86ea69396fd (added)
-
tags/2.0.4/.git/objects/ac/aa45a8518097fcf77eada969439a09ab452e4b (added)
-
tags/2.0.4/.git/objects/ad (added)
-
tags/2.0.4/.git/objects/ad/21d0b091b9d2a43ee4eb94510bd11ffbb7e63c (added)
-
tags/2.0.4/.git/objects/ad/7667ab7ec30031e2c724614636177bf99baa99 (added)
-
tags/2.0.4/.git/objects/ae (added)
-
tags/2.0.4/.git/objects/ae/eb2a69801d66e590b258bb354440b5045cba47 (added)
-
tags/2.0.4/.git/objects/af (added)
-
tags/2.0.4/.git/objects/af/0d0d327cd170e19f93972a191843838e1215f2 (added)
-
tags/2.0.4/.git/objects/af/4c22092dfb22d737cac1e5691738ced5462780 (added)
-
tags/2.0.4/.git/objects/af/5c74d0244b1c9a2e79eb31a19a07f7fe1899de (added)
-
tags/2.0.4/.git/objects/b0 (added)
-
tags/2.0.4/.git/objects/b0/17086e9cc85586256dafcecd04c8caf13239ab (added)
-
tags/2.0.4/.git/objects/b0/7dbbd70254778b996677c93b03d81a7735b520 (added)
-
tags/2.0.4/.git/objects/b1 (added)
-
tags/2.0.4/.git/objects/b1/c23e11aef8f9c7f71474d75c0a3c319162ff5a (added)
-
tags/2.0.4/.git/objects/b4 (added)
-
tags/2.0.4/.git/objects/b4/925f65ef7773afaa48bde0da351dba6f243812 (added)
-
tags/2.0.4/.git/objects/b4/a6ce1bf0a0fe119fdd93a6f656f5c40f01038c (added)
-
tags/2.0.4/.git/objects/b6 (added)
-
tags/2.0.4/.git/objects/b6/ace7237e07b2b304eb2b6ced0bcb118d1587b7 (added)
-
tags/2.0.4/.git/objects/b6/d19462e664e86ca11a8f458ac21a5aa9fa5534 (added)
-
tags/2.0.4/.git/objects/b7 (added)
-
tags/2.0.4/.git/objects/b7/3e71db6847b61f8ecab96e16e02300c552bc63 (added)
-
tags/2.0.4/.git/objects/b8 (added)
-
tags/2.0.4/.git/objects/b8/a229775366eebc015b03d4745f5cba876e29bf (added)
-
tags/2.0.4/.git/objects/b9 (added)
-
tags/2.0.4/.git/objects/b9/eea9b13417f20c62864467b33d9a93fd752a74 (added)
-
tags/2.0.4/.git/objects/bb (added)
-
tags/2.0.4/.git/objects/bb/229d92cfd731ee623073ca2fe5069cc8920f60 (added)
-
tags/2.0.4/.git/objects/bf (added)
-
tags/2.0.4/.git/objects/bf/6a27c5c99fe1165d16653c6c26aa6e30082752 (added)
-
tags/2.0.4/.git/objects/c1 (added)
-
tags/2.0.4/.git/objects/c1/c0050dc0795ff6cfcdaa983e70bc053a3d48e2 (added)
-
tags/2.0.4/.git/objects/c2 (added)
-
tags/2.0.4/.git/objects/c2/2d09f634d010142cbfcfa048fe15457ccb60ba (added)
-
tags/2.0.4/.git/objects/c2/bfe48d32dee24378bfb04763eea785acffb5ea (added)
-
tags/2.0.4/.git/objects/c3 (added)
-
tags/2.0.4/.git/objects/c3/a18ae102f6f7251b91fb6d127b4fab8bcaf83f (added)
-
tags/2.0.4/.git/objects/c4 (added)
-
tags/2.0.4/.git/objects/c4/e5f18791ba439b8cf610047478c55b4bf8503c (added)
-
tags/2.0.4/.git/objects/c5 (added)
-
tags/2.0.4/.git/objects/c5/24882cdcdd46b5e18e39ec0fc21a802d8ab6af (added)
-
tags/2.0.4/.git/objects/c7 (added)
-
tags/2.0.4/.git/objects/c7/63301774c6ef1068073018f721fa59c76ad346 (added)
-
tags/2.0.4/.git/objects/c9 (added)
-
tags/2.0.4/.git/objects/c9/3fa9ac1bd4b829b8e360fb469d3c02b8d8d508 (added)
-
tags/2.0.4/.git/objects/c9/54528b95e6101f81fc3b9b6a51d65470b1fd1a (added)
-
tags/2.0.4/.git/objects/c9/b4b5cbcd4af5bfbbb651401878f5a5055a1096 (added)
-
tags/2.0.4/.git/objects/c9/dec8a4f93d5f36c3cd15c804d77358bcbf6a81 (added)
-
tags/2.0.4/.git/objects/ca (added)
-
tags/2.0.4/.git/objects/ca/cc3e309c14b0766ee654035c8398d91df3427e (added)
-
tags/2.0.4/.git/objects/cb (added)
-
tags/2.0.4/.git/objects/cb/43b9f9255048bfc88f47845389103a0d5c8e90 (added)
-
tags/2.0.4/.git/objects/cc (added)
-
tags/2.0.4/.git/objects/cc/10379c3de59cd1e55331ede8fd55a673e14304 (added)
-
tags/2.0.4/.git/objects/cc/fb773ff4ee0cfa65a611461be97d99a59910b4 (added)
-
tags/2.0.4/.git/objects/cd (added)
-
tags/2.0.4/.git/objects/cd/f703a4d9ceba50068c803b7d58428a3483d75e (added)
-
tags/2.0.4/.git/objects/ce (added)
-
tags/2.0.4/.git/objects/ce/76ffd19dceb714d5579d7a5b7651a671280eba (added)
-
tags/2.0.4/.git/objects/d2 (added)
-
tags/2.0.4/.git/objects/d2/263c5242c7e81f0fe0462e5273ca9fbc92db6c (added)
-
tags/2.0.4/.git/objects/d3 (added)
-
tags/2.0.4/.git/objects/d3/a5ed5543c46453dea25604a46899ffea438b47 (added)
-
tags/2.0.4/.git/objects/d3/d6c6d16443872c2107a3a2e8282de52cad5e2e (added)
-
tags/2.0.4/.git/objects/d4 (added)
-
tags/2.0.4/.git/objects/d4/46055e02c03250114c87294ef30ea556e4882d (added)
-
tags/2.0.4/.git/objects/d4/a6413491c7d1d6fb495c1abc0eeb3acebacf72 (added)
-
tags/2.0.4/.git/objects/d5 (added)
-
tags/2.0.4/.git/objects/d5/2d48bacb40a1883fea8d38c06dab9dedc8585f (added)
-
tags/2.0.4/.git/objects/d6 (added)
-
tags/2.0.4/.git/objects/d6/a6a5f65e251583ce2dc9348778353e99215e64 (added)
-
tags/2.0.4/.git/objects/d6/ff6e318a4b1965bbe8517c6263060d397751a5 (added)
-
tags/2.0.4/.git/objects/d7 (added)
-
tags/2.0.4/.git/objects/d7/0c319e195dceedddf2cb7542a5d22d67873aa6 (added)
-
tags/2.0.4/.git/objects/d7/1c711f42b4d027dadfcb9f9014e632981f3ec2 (added)
-
tags/2.0.4/.git/objects/d8 (added)
-
tags/2.0.4/.git/objects/d8/b93f4db85622de6f56b4e7351db0fa7a738b11 (added)
-
tags/2.0.4/.git/objects/d9 (added)
-
tags/2.0.4/.git/objects/d9/1f3efc1ec1dd44cbbc5f7481d3f82398a33377 (added)
-
tags/2.0.4/.git/objects/d9/ecbccccad5054ccaef89bbea37590623fe7337 (added)
-
tags/2.0.4/.git/objects/da (added)
-
tags/2.0.4/.git/objects/da/fe329a42407f28cf4e2b87d700fe927c2333b2 (added)
-
tags/2.0.4/.git/objects/db (added)
-
tags/2.0.4/.git/objects/db/5206a8c11f5b417e2d852e1722cbfb9bad99a1 (added)
-
tags/2.0.4/.git/objects/db/a67a09ccd17e1620c5f125a80f4993342f33b2 (added)
-
tags/2.0.4/.git/objects/db/b210bd76a76fd98b4bbbedf4f4093a5fe7b6af (added)
-
tags/2.0.4/.git/objects/dc (added)
-
tags/2.0.4/.git/objects/dc/8daf888f1c1d7cc01255cda339fe806595ece0 (added)
-
tags/2.0.4/.git/objects/e4 (added)
-
tags/2.0.4/.git/objects/e4/713c7a7e3ca9f7c8b91a8f3147d21ce67fff1f (added)
-
tags/2.0.4/.git/objects/e5 (added)
-
tags/2.0.4/.git/objects/e5/7e0c41211f208669c144e7807e87140530fd28 (added)
-
tags/2.0.4/.git/objects/e6 (added)
-
tags/2.0.4/.git/objects/e6/26bec9391389bc97296fe7bd46b22475b2ea99 (added)
-
tags/2.0.4/.git/objects/e9 (added)
-
tags/2.0.4/.git/objects/e9/8fbd482462a3b662f248b8e553ac931295ee81 (added)
-
tags/2.0.4/.git/objects/ea (added)
-
tags/2.0.4/.git/objects/ea/f910bc5a9324f6ce783141a359e98b28ea8095 (added)
-
tags/2.0.4/.git/objects/ed (added)
-
tags/2.0.4/.git/objects/ed/3b39979f9119a1e0d3d75877cb51954a6efb1a (added)
-
tags/2.0.4/.git/objects/ef (added)
-
tags/2.0.4/.git/objects/ef/20519fd3f60d57ad98651414652940ae1a70ee (added)
-
tags/2.0.4/.git/objects/ef/8b08159c9b87ed034b215ab7988be9073c0f89 (added)
-
tags/2.0.4/.git/objects/f0 (added)
-
tags/2.0.4/.git/objects/f0/1ae521947c7124e1a0040225bc7bd7c14c218d (added)
-
tags/2.0.4/.git/objects/f0/34e9b5ad1435ae0f31a487d4d59fdc036432ca (added)
-
tags/2.0.4/.git/objects/f4 (added)
-
tags/2.0.4/.git/objects/f4/857e6588234e15e5e7ee03883bc045db265e38 (added)
-
tags/2.0.4/.git/objects/f4/9ffee72e1ad7eefa75e615d2b2a50da15de095 (added)
-
tags/2.0.4/.git/objects/f5 (added)
-
tags/2.0.4/.git/objects/f5/35f89e3b0ff14a757c0aeb1a1ca0c41c898a40 (added)
-
tags/2.0.4/.git/objects/f7 (added)
-
tags/2.0.4/.git/objects/f7/f76c5a9d379fb5f365d85b9554354cf82a3ed7 (added)
-
tags/2.0.4/.git/objects/f8 (added)
-
tags/2.0.4/.git/objects/f8/9b34b7ad311f10c963a3962f5e0a28161560ed (added)
-
tags/2.0.4/.git/objects/fa (added)
-
tags/2.0.4/.git/objects/fa/14276bc9d31b0ae13aa2947926051e5c980661 (added)
-
tags/2.0.4/.git/objects/fa/b370c0e480a9719a9dac2de2f5a329d7043e82 (added)
-
tags/2.0.4/.git/objects/fb (added)
-
tags/2.0.4/.git/objects/fb/02db4b1b8365f357a40341b4e55db7b0d2119f (added)
-
tags/2.0.4/.git/objects/fb/166fb091a15ed5c2f53711125d58c9393bebe4 (added)
-
tags/2.0.4/.git/objects/fb/736450b0d3a7ff16f7fdd28f9ad625ebab2f60 (added)
-
tags/2.0.4/.git/objects/fb/dfeec00027a13d4d938c070d68a94aa58b8c95 (added)
-
tags/2.0.4/.git/objects/fc (added)
-
tags/2.0.4/.git/objects/fc/322ef2748214d911c9daf99174df8cee958e5d (added)
-
tags/2.0.4/.git/objects/fc/64f9bbcc74f9070cc856fafa8a1764b3b094df (added)
-
tags/2.0.4/.git/objects/fd (added)
-
tags/2.0.4/.git/objects/fd/e30000c14d396932973e3cf23e11e68304e15d (added)
-
tags/2.0.4/.git/objects/fe (added)
-
tags/2.0.4/.git/objects/fe/ae6c770d58fbb1d83b73a8d1332606c4b4a780 (added)
-
tags/2.0.4/.git/objects/ff (added)
-
tags/2.0.4/.git/objects/ff/85f989cd226d7334cc670254ec56189cf9dfa8 (added)
-
tags/2.0.4/.git/objects/ff/c65f8af02649c11b519f7f52442a538dfb153e (added)
-
tags/2.0.4/.git/objects/info (added)
-
tags/2.0.4/.git/objects/pack (added)
-
tags/2.0.4/.git/objects/pack/pack-aad9054380e31a34f3a24c94c791018bd328d997.idx (added)
-
tags/2.0.4/.git/objects/pack/pack-aad9054380e31a34f3a24c94c791018bd328d997.pack (added)
-
tags/2.0.4/.git/refs (added)
-
tags/2.0.4/.git/refs/heads (added)
-
tags/2.0.4/.git/refs/heads/master (added)
-
tags/2.0.4/.git/refs/remotes (added)
-
tags/2.0.4/.git/refs/remotes/origin (added)
-
tags/2.0.4/.git/refs/remotes/origin/master (added)
-
tags/2.0.4/.git/refs/stash (added)
-
tags/2.0.4/.git/refs/tags (added)
-
tags/2.0.4/.git/refs/tags/1.9.8 (added)
-
tags/2.0.4/.git/refs/tags/2.0.0 (added)
-
tags/2.0.4/.git/refs/tags/2.0.1 (added)
-
tags/2.0.4/.git/refs/tags/2.0.2 (added)
-
tags/2.0.4/.git/refs/tags/2.0.3 (added)
-
tags/2.0.4/.git/refs/tags/2.0.4 (added)
-
tags/2.0.4/.gitignore (added)
-
tags/2.0.4/LICENSE.md (added)
-
tags/2.0.4/README.md (added)
-
tags/2.0.4/class (added)
-
tags/2.0.4/class/CodeClouds (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/APIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/AlbumAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/AlbumOrderAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/GalleryAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/GalleryDataAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/PlaylistAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/SettingsAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/VideoAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/VideoOrderAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/VimeoPlaylistAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/API/YouTubePlaylistAPIv1.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Dashboard.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Entity (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Entity/Album.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Entity/Gallery.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Entity/Playlist.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Entity/Video.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Repository (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Repository/AlbumRepository.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Repository/GalleryRepository.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Repository/PlaylistRepository.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Repository/VideoRepository.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Service (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Service/Thumbnail.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/Service/Utility.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/UI (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/UI.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/UI/GalleryView.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/UI/PanelView.php (added)
-
tags/2.0.4/class/CodeClouds/UTubeVideoGallery/utvVideoGen.php (added)
-
tags/2.0.4/language (added)
-
tags/2.0.4/language/en_US.po (added)
-
tags/2.0.4/language/readme.txt (added)
-
tags/2.0.4/package-lock.json (added)
-
tags/2.0.4/package.json (added)
-
tags/2.0.4/postcss.config.js (added)
-
tags/2.0.4/public (added)
-
tags/2.0.4/public/css (added)
-
tags/2.0.4/public/css/app.min.css (added)
-
tags/2.0.4/public/css/dashboard.min.css (added)
-
tags/2.0.4/public/css/jquery-ui-1.10.3.custom.min.css (added)
-
tags/2.0.4/public/img (added)
-
tags/2.0.4/public/img/block-loader.gif (added)
-
tags/2.0.4/public/img/cancel3.png (added)
-
tags/2.0.4/public/img/cancel3@2x.png (added)
-
tags/2.0.4/public/img/checkf.png (added)
-
tags/2.0.4/public/img/hex-loader.gif (added)
-
tags/2.0.4/public/img/loader.gif (added)
-
tags/2.0.4/public/img/missing.jpg (added)
-
tags/2.0.4/public/img/ok3.png (added)
-
tags/2.0.4/public/img/ok3@2x.png (added)
-
tags/2.0.4/public/img/play_icon.png (added)
-
tags/2.0.4/public/img/play_icon_blue.png (added)
-
tags/2.0.4/public/img/play_icon_blue@2x.png (added)
-
tags/2.0.4/public/img/play_icon_red.png (added)
-
tags/2.0.4/public/img/play_icon_red@2x.png (added)
-
tags/2.0.4/public/img/resource (added)
-
tags/2.0.4/public/img/resource/1471741703_Significon-YouTube.png (added)
-
tags/2.0.4/public/img/resource/cancel.png (added)
-
tags/2.0.4/public/img/resource/cancel3-large.png (added)
-
tags/2.0.4/public/img/resource/check.png (added)
-
tags/2.0.4/public/img/resource/ok.png (added)
-
tags/2.0.4/public/img/resource/ok3-large.png (added)
-
tags/2.0.4/public/img/resource/play.vimeo.png (added)
-
tags/2.0.4/public/img/resource/play.youtube.png (added)
-
tags/2.0.4/public/img/test6.png (added)
-
tags/2.0.4/public/img/utubevideo_icon.png (added)
-
tags/2.0.4/public/img/utubevideo_icon_16x16.png (added)
-
tags/2.0.4/public/js (added)
-
tags/2.0.4/public/js/app.min.js (added)
-
tags/2.0.4/public/js/app.min.js.map (added)
-
tags/2.0.4/public/js/dashboard.min.js (added)
-
tags/2.0.4/public/js/dashboard.min.js.map (added)
-
tags/2.0.4/readme.txt (added)
-
tags/2.0.4/screenshot-1.png (added)
-
tags/2.0.4/screenshot-2.png (added)
-
tags/2.0.4/screenshot-3.png (added)
-
tags/2.0.4/screenshot-4.png (added)
-
tags/2.0.4/screenshot-5.png (added)
-
tags/2.0.4/screenshot-6.png (added)
-
tags/2.0.4/src (added)
-
tags/2.0.4/src/js (added)
-
tags/2.0.4/src/js/app.js (added)
-
tags/2.0.4/src/js/component (added)
-
tags/2.0.4/src/js/component/Dashboard (added)
-
tags/2.0.4/src/js/component/Dashboard/AlbumAddTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/AlbumEditTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/AlbumTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/AlbumTable.js (added)
-
tags/2.0.4/src/js/component/Dashboard/Dashboard.js (added)
-
tags/2.0.4/src/js/component/Dashboard/GalleryAddTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/GalleryEditTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/GalleryTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/GalleryTable.js (added)
-
tags/2.0.4/src/js/component/Dashboard/PlaylistAddTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/PlaylistEditTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/PlaylistTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/PlaylistTable.js (added)
-
tags/2.0.4/src/js/component/Dashboard/SettingsTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/VideoAddTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/VideoEditTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/VideoTabView.js (added)
-
tags/2.0.4/src/js/component/Dashboard/VideoTable.js (added)
-
tags/2.0.4/src/js/component/Gallery (added)
-
tags/2.0.4/src/js/component/Gallery/AlbumThumbnail.js (added)
-
tags/2.0.4/src/js/component/Gallery/AlbumThumbnails.js (added)
-
tags/2.0.4/src/js/component/Gallery/AlbumView.js (added)
-
tags/2.0.4/src/js/component/Gallery/BreadCrumb.js (added)
-
tags/2.0.4/src/js/component/Gallery/Gallery.js (added)
-
tags/2.0.4/src/js/component/Gallery/PageHandle.js (added)
-
tags/2.0.4/src/js/component/Gallery/Paging.js (added)
-
tags/2.0.4/src/js/component/Gallery/VideoThumbnail.js (added)
-
tags/2.0.4/src/js/component/Gallery/VideoThumbnails.js (added)
-
tags/2.0.4/src/js/component/Gallery/VideoView.js (added)
-
tags/2.0.4/src/js/component/Panel (added)
-
tags/2.0.4/src/js/component/Panel/Description.js (added)
-
tags/2.0.4/src/js/component/Panel/PageHandle.js (added)
-
tags/2.0.4/src/js/component/Panel/Paging.js (added)
-
tags/2.0.4/src/js/component/Panel/Panel.js (added)
-
tags/2.0.4/src/js/component/Panel/PanelThumbnails.js (added)
-
tags/2.0.4/src/js/component/Panel/Thumbnail.js (added)
-
tags/2.0.4/src/js/component/Panel/TitleControls.js (added)
-
tags/2.0.4/src/js/component/Panel/VideoPlayer.js (added)
-
tags/2.0.4/src/js/component/Panel/VimeoVideo.js (added)
-
tags/2.0.4/src/js/component/Panel/YouTubeVideo.js (added)
-
tags/2.0.4/src/js/component/shared (added)
-
tags/2.0.4/src/js/component/shared/ActionBar.js (added)
-
tags/2.0.4/src/js/component/shared/AlbumThumbnailSelection.js (added)
-
tags/2.0.4/src/js/component/shared/BasicLink.js (added)
-
tags/2.0.4/src/js/component/shared/Breadcrumbs.js (added)
-
tags/2.0.4/src/js/component/shared/Button.js (added)
-
tags/2.0.4/src/js/component/shared/CancelButton.js (added)
-
tags/2.0.4/src/js/component/shared/Card.js (added)
-
tags/2.0.4/src/js/component/shared/Column.js (added)
-
tags/2.0.4/src/js/component/shared/Columns.js (added)
-
tags/2.0.4/src/js/component/shared/FieldHint.js (added)
-
tags/2.0.4/src/js/component/shared/Form.js (added)
-
tags/2.0.4/src/js/component/shared/FormField.js (added)
-
tags/2.0.4/src/js/component/shared/FormFieldAction.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/ActionCell.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/ActionHeaderCell.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/BulkActions.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/Cell.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/HeaderCell.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/Row.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/RowDraggable.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/Table.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/TableBody.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/TableBodyDraggable.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/TableHeader.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/TableStatus.js (added)
-
tags/2.0.4/src/js/component/shared/GriddleDND/index.js (added)
-
tags/2.0.4/src/js/component/shared/Iframe.js (added)
-
tags/2.0.4/src/js/component/shared/InfoLine.js (added)
-
tags/2.0.4/src/js/component/shared/Label.js (added)
-
tags/2.0.4/src/js/component/shared/Loader.js (added)
-
tags/2.0.4/src/js/component/shared/NumberInput.js (added)
-
tags/2.0.4/src/js/component/shared/Pane.js (added)
-
tags/2.0.4/src/js/component/shared/PlaylistLegend.js (added)
-
tags/2.0.4/src/js/component/shared/PlaylistMultiSelect.js (added)
-
tags/2.0.4/src/js/component/shared/PlaylistPreviewItem.js (added)
-
tags/2.0.4/src/js/component/shared/PlaylistVideoSelection.js (added)
-
tags/2.0.4/src/js/component/shared/ResponsiveIframe.js (added)
-
tags/2.0.4/src/js/component/shared/SecondaryButton.js (added)
-
tags/2.0.4/src/js/component/shared/SectionHeader.js (added)
-
tags/2.0.4/src/js/component/shared/SelectBox.js (added)
-
tags/2.0.4/src/js/component/shared/SubmitButton.js (added)
-
tags/2.0.4/src/js/component/shared/TableRowActions.js (added)
-
tags/2.0.4/src/js/component/shared/Tabs.js (added)
-
tags/2.0.4/src/js/component/shared/TextBoxInput.js (added)
-
tags/2.0.4/src/js/component/shared/TextInput.js (added)
-
tags/2.0.4/src/js/component/shared/Thumbnails.js (added)
-
tags/2.0.4/src/js/component/shared/Toggle.js (added)
-
tags/2.0.4/src/js/component/shared/URLInput.js (added)
-
tags/2.0.4/src/js/component/shared/UserFeedback.js (added)
-
tags/2.0.4/src/js/dashboard.js (added)
-
tags/2.0.4/src/js/service (added)
-
tags/2.0.4/src/js/service/GalleryService.js (added)
-
tags/2.0.4/src/js/service/SharedService.js (added)
-
tags/2.0.4/src/scss (added)
-
tags/2.0.4/src/scss/app (added)
-
tags/2.0.4/src/scss/app.scss (added)
-
tags/2.0.4/src/scss/app/_gallery.scss (added)
-
tags/2.0.4/src/scss/app/_override.scss (added)
-
tags/2.0.4/src/scss/app/_panel.scss (added)
-
tags/2.0.4/src/scss/app/_shared.scss (added)
-
tags/2.0.4/src/scss/app/_utility.scss (added)
-
tags/2.0.4/src/scss/dashboard (added)
-
tags/2.0.4/src/scss/dashboard.scss (added)
-
tags/2.0.4/src/scss/dashboard/_ccgriddle.scss (added)
-
tags/2.0.4/src/scss/dashboard/_components.scss (added)
-
tags/2.0.4/src/scss/dashboard/_inputs.scss (added)
-
tags/2.0.4/src/scss/dashboard/_layout.scss (added)
-
tags/2.0.4/src/scss/dashboard/_tabs.scss (added)
-
tags/2.0.4/src/scss/dashboard/_utility.scss (added)
-
tags/2.0.4/uninstall.php (added)
-
tags/2.0.4/utubevideo.php (added)
-
tags/2.0.4/webpack.config.js (added)
-
trunk/.git/COMMIT_EDITMSG (modified) (1 diff)
-
trunk/.git/FETCH_HEAD (modified) (1 diff)
-
trunk/.git/ORIG_HEAD (modified) (1 diff)
-
trunk/.git/TAG_EDITMSG (added)
-
trunk/.git/config (modified) (1 diff)
-
trunk/.git/index (modified) (previous)
-
trunk/.git/logs/HEAD (modified) (1 diff)
-
trunk/.git/logs/refs/heads/master (modified) (1 diff)
-
trunk/.git/logs/refs/remotes/origin/master (modified) (1 diff)
-
trunk/.git/objects/01 (added)
-
trunk/.git/objects/01/7c9b189cce5c74baf93000f281c641ef0a6c4c (added)
-
trunk/.git/objects/01/b43a64a405e98f944e5ea40f82e1cd1c41bfe6 (added)
-
trunk/.git/objects/01/e5a45a7664a0d7b2ddcb9bd00934d4c1a921d6 (added)
-
trunk/.git/objects/06/b9922a69e000afdd916b5ee98da20f4eefe429 (added)
-
trunk/.git/objects/0a (added)
-
trunk/.git/objects/0a/0bfda4ac85fe65cd29c817dd1206d068398031 (added)
-
trunk/.git/objects/0e/93dc0f82c686475fdc1c7517c8df1069e62d15 (added)
-
trunk/.git/objects/11/0efe7beba88a2bf0fd86373bee7c36bbf3206a (added)
-
trunk/.git/objects/12 (added)
-
trunk/.git/objects/12/cc90596493a172cbb69c66bff12b3965c0bb34 (added)
-
trunk/.git/objects/13/bbe7e717fedb9c1a071f03bad493eb6bc3abab (added)
-
trunk/.git/objects/16 (added)
-
trunk/.git/objects/16/c42ff19addeef4593c1818101319b5ad90437b (added)
-
trunk/.git/objects/18 (added)
-
trunk/.git/objects/18/b71d2b1113a5410cda62aef9e5816dd138f96c (added)
-
trunk/.git/objects/1e (added)
-
trunk/.git/objects/1e/8411c7a7bcd8848f6eb4e0230ea24b3f6a905a (added)
-
trunk/.git/objects/1f (added)
-
trunk/.git/objects/1f/d37d5f0a50d4a887c80ab1a79f12dac0852822 (added)
-
trunk/.git/objects/21/4902660974566f78edae3aee8463dd7b1d6c71 (added)
-
trunk/.git/objects/31 (added)
-
trunk/.git/objects/31/8a0055ce3ea83789aea26a0ef51c0058075ced (added)
-
trunk/.git/objects/35/331ce6f53c83c6a7c93092cf28852285e8c540 (added)
-
trunk/.git/objects/3b (added)
-
trunk/.git/objects/3b/576d6065529d487825233b2115e09b885f19ff (added)
-
trunk/.git/objects/3c (added)
-
trunk/.git/objects/3c/ef0fc1df4a92bd07ccf1b2125c104413685e8d (added)
-
trunk/.git/objects/3d (added)
-
trunk/.git/objects/3d/89d214578c13c518f0e97d40623e2e6191bfde (added)
-
trunk/.git/objects/4c/7ea5fdd1bd65aa77981acce4565b47a52bec04 (added)
-
trunk/.git/objects/56/99580b31dbd281d54b305b364e2a77f874ba7f (added)
-
trunk/.git/objects/5a (added)
-
trunk/.git/objects/5a/5272883308e81bc0a116e1639186934e6d90d5 (added)
-
trunk/.git/objects/69/a89939f2c13a778bb422b751d75477e63c91eb (added)
-
trunk/.git/objects/6a (added)
-
trunk/.git/objects/6a/e8b7cc80e5516d931271f162f4f94a698c9281 (added)
-
trunk/.git/objects/6b/5980d0a3d61163025da490c52e72833b4901ea (added)
-
trunk/.git/objects/6e/c52253bf9eba5958c47d1aa6227efc331e2360 (added)
-
trunk/.git/objects/6f/5296d977bca76a96d576b327a2a10ad4cb417a (added)
-
trunk/.git/objects/6f/e67be6fcb2f7c98b464662b9fbfd795f973ba0 (added)
-
trunk/.git/objects/70 (added)
-
trunk/.git/objects/70/580a68fac1fb3c45a5be33949fe4213a38a92c (added)
-
trunk/.git/objects/70/d3374aae665bbe0dee154b974770d319571d76 (added)
-
trunk/.git/objects/74 (added)
-
trunk/.git/objects/74/851120d4709098fd64b52ee6880d7750f840d0 (added)
-
trunk/.git/objects/79 (added)
-
trunk/.git/objects/79/757e0759de10d7d22bf01df41fc9ade8c3df69 (added)
-
trunk/.git/objects/81 (added)
-
trunk/.git/objects/81/c6cad4ae587e273a05f3cc41d544f3d92f14a9 (added)
-
trunk/.git/objects/83/fcb34890c9ab44ff8cf6405d3ebbf674041e52 (added)
-
trunk/.git/objects/87/558ddfe80fb35b551d53a5b523c31c1cfea6d1 (added)
-
trunk/.git/objects/87/ebc537e76e6de99d0df829e7ea7a35a9f633ea (added)
-
trunk/.git/objects/88 (added)
-
trunk/.git/objects/88/f90da62a68de71ec71b0295445f55c28452b8d (added)
-
trunk/.git/objects/8e (added)
-
trunk/.git/objects/8e/f2e564a5dc869ec818c11e54479ec20dc9b82d (added)
-
trunk/.git/objects/a0/0f404862825b7a748e4275cd17601323edbcc3 (added)
-
trunk/.git/objects/a5 (added)
-
trunk/.git/objects/a5/6d87506b706f80d295146daa77b974f03dc06c (added)
-
trunk/.git/objects/a6 (added)
-
trunk/.git/objects/a6/f140b42711b820e443ba6feed984a8296e6f5c (added)
-
trunk/.git/objects/a7/464c02943d23c0b0891b7d56e5656df2a30e96 (added)
-
trunk/.git/objects/aa/0693d4478bdb90f8f9fb5bd57a886e40971d08 (added)
-
trunk/.git/objects/ac/5df95834bc5457b2f2d64d2d2195e4a6100361 (added)
-
trunk/.git/objects/ad (added)
-
trunk/.git/objects/ad/21d0b091b9d2a43ee4eb94510bd11ffbb7e63c (added)
-
trunk/.git/objects/ad/7667ab7ec30031e2c724614636177bf99baa99 (added)
-
trunk/.git/objects/b4/925f65ef7773afaa48bde0da351dba6f243812 (added)
-
trunk/.git/objects/b6/d19462e664e86ca11a8f458ac21a5aa9fa5534 (added)
-
trunk/.git/objects/b9 (added)
-
trunk/.git/objects/b9/eea9b13417f20c62864467b33d9a93fd752a74 (added)
-
trunk/.git/objects/c2 (added)
-
trunk/.git/objects/c2/2d09f634d010142cbfcfa048fe15457ccb60ba (added)
-
trunk/.git/objects/c2/bfe48d32dee24378bfb04763eea785acffb5ea (added)
-
trunk/.git/objects/c5 (added)
-
trunk/.git/objects/c5/24882cdcdd46b5e18e39ec0fc21a802d8ab6af (added)
-
trunk/.git/objects/c7 (added)
-
trunk/.git/objects/c7/63301774c6ef1068073018f721fa59c76ad346 (added)
-
trunk/.git/objects/c9/54528b95e6101f81fc3b9b6a51d65470b1fd1a (added)
-
trunk/.git/objects/cc/fb773ff4ee0cfa65a611461be97d99a59910b4 (added)
-
trunk/.git/objects/d6/a6a5f65e251583ce2dc9348778353e99215e64 (added)
-
trunk/.git/objects/dc (added)
-
trunk/.git/objects/dc/8daf888f1c1d7cc01255cda339fe806595ece0 (added)
-
trunk/.git/objects/e5 (added)
-
trunk/.git/objects/e5/7e0c41211f208669c144e7807e87140530fd28 (added)
-
trunk/.git/objects/ef/20519fd3f60d57ad98651414652940ae1a70ee (added)
-
trunk/.git/objects/f4/857e6588234e15e5e7ee03883bc045db265e38 (added)
-
trunk/.git/objects/f5 (added)
-
trunk/.git/objects/f5/35f89e3b0ff14a757c0aeb1a1ca0c41c898a40 (added)
-
trunk/.git/objects/fb/166fb091a15ed5c2f53711125d58c9393bebe4 (added)
-
trunk/.git/objects/fb/dfeec00027a13d4d938c070d68a94aa58b8c95 (added)
-
trunk/.git/objects/fc/322ef2748214d911c9daf99174df8cee958e5d (added)
-
trunk/.git/objects/ff/85f989cd226d7334cc670254ec56189cf9dfa8 (added)
-
trunk/.git/refs/heads/master (modified) (1 diff)
-
trunk/.git/refs/remotes/origin/master (modified) (1 diff)
-
trunk/.git/refs/tags/2.0.3 (added)
-
trunk/.git/refs/tags/2.0.4 (added)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/AlbumAPIv1.php (modified) (6 diffs)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/AlbumOrderAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/GalleryAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/GalleryDataAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/PlaylistAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/SettingsAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/VideoAPIv1.php (modified) (6 diffs)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/VideoOrderAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/VimeoPlaylistAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/API/YouTubePlaylistAPIv1.php (modified) (1 diff)
-
trunk/class/CodeClouds/UTubeVideoGallery/Repository/VideoRepository.php (modified) (5 diffs)
-
trunk/class/CodeClouds/UTubeVideoGallery/Service/Thumbnail.php (modified) (8 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/utubevideo.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
utubevideo-gallery/trunk/.git/COMMIT_EDITMSG
r2013784 r2103033 1 Compatibility fix for NextGEN Gallery 1 Updated plugin version and WordPress dependecies -
utubevideo-gallery/trunk/.git/FETCH_HEAD
r2087886 r2103033 1 cacc3e309c14b0766ee654035c8398d91df3427e branch 'master' of https://github.com/d man25560/utubevideogallery1 cacc3e309c14b0766ee654035c8398d91df3427e branch 'master' of https://github.com/dustinscarberry/utubevideogallery -
utubevideo-gallery/trunk/.git/ORIG_HEAD
r2087886 r2103033 1 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 1 cacc3e309c14b0766ee654035c8398d91df3427e -
utubevideo-gallery/trunk/.git/config
r2003169 r2103033 7 7 ignorecase = true 8 8 [remote "origin"] 9 url = https://github.com/d man25560/utubevideogallery.git9 url = https://github.com/dustinscarberry/utubevideogallery.git 10 10 fetch = +refs/heads/*:refs/remotes/origin/* 11 11 [branch "master"] -
utubevideo-gallery/trunk/.git/logs/HEAD
r2087886 r2103033 10 10 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 Dustin Scarberry <dustin@codeclouds.net> 1557291324 -0400 reset: moving to HEAD 11 11 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 cacc3e309c14b0766ee654035c8398d91df3427e Dustin Scarberry <dustin@codeclouds.net> 1557291350 -0400 pull: Fast-forward 12 cacc3e309c14b0766ee654035c8398d91df3427e 70580a68fac1fb3c45a5be33949fe4213a38a92c Dustin Scarberry <dustin@codeclouds.net> 1560099301 -0400 commit: Fixed issue preventing delete of empty albums 13 70580a68fac1fb3c45a5be33949fe4213a38a92c 0a0bfda4ac85fe65cd29c817dd1206d068398031 Dustin Scarberry <dustin@codeclouds.net> 1560099324 -0400 commit: Added try/catch to api endpoints 14 0a0bfda4ac85fe65cd29c817dd1206d068398031 70d3374aae665bbe0dee154b974770d319571d76 Dustin Scarberry <dustin@codeclouds.net> 1560104154 -0400 commit: Better error handling for video creation 15 70d3374aae665bbe0dee154b974770d319571d76 8ef2e564a5dc869ec818c11e54479ec20dc9b82d Dustin Scarberry <dustin@codeclouds.net> 1560104255 -0400 commit: Fixed typo 16 8ef2e564a5dc869ec818c11e54479ec20dc9b82d fbdfeec00027a13d4d938c070d68a94aa58b8c95 Dustin Scarberry <dustin@codeclouds.net> 1560104425 -0400 commit: Fixed typo 17 fbdfeec00027a13d4d938c070d68a94aa58b8c95 6ae8b7cc80e5516d931271f162f4f94a698c9281 Dustin Scarberry <dustin@codeclouds.net> 1560112151 -0400 commit: Further exception handling 18 6ae8b7cc80e5516d931271f162f4f94a698c9281 017c9b189cce5c74baf93000f281c641ef0a6c4c Dustin Scarberry <dustin@codeclouds.net> 1560113923 -0400 commit: Updated plugin version and WordPress dependecies -
utubevideo-gallery/trunk/.git/logs/refs/heads/master
r2087886 r2103033 6 6 2b6a59cb92bea9a796cf4a29cb44c3596dd462f5 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 Dustin Scarberry <dustin@codeclouds.net> 1557195783 -0400 pull: Fast-forward 7 7 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 cacc3e309c14b0766ee654035c8398d91df3427e Dustin Scarberry <dustin@codeclouds.net> 1557291350 -0400 pull: Fast-forward 8 cacc3e309c14b0766ee654035c8398d91df3427e 70580a68fac1fb3c45a5be33949fe4213a38a92c Dustin Scarberry <dustin@codeclouds.net> 1560099301 -0400 commit: Fixed issue preventing delete of empty albums 9 70580a68fac1fb3c45a5be33949fe4213a38a92c 0a0bfda4ac85fe65cd29c817dd1206d068398031 Dustin Scarberry <dustin@codeclouds.net> 1560099324 -0400 commit: Added try/catch to api endpoints 10 0a0bfda4ac85fe65cd29c817dd1206d068398031 70d3374aae665bbe0dee154b974770d319571d76 Dustin Scarberry <dustin@codeclouds.net> 1560104154 -0400 commit: Better error handling for video creation 11 70d3374aae665bbe0dee154b974770d319571d76 8ef2e564a5dc869ec818c11e54479ec20dc9b82d Dustin Scarberry <dustin@codeclouds.net> 1560104255 -0400 commit: Fixed typo 12 8ef2e564a5dc869ec818c11e54479ec20dc9b82d fbdfeec00027a13d4d938c070d68a94aa58b8c95 Dustin Scarberry <dustin@codeclouds.net> 1560104425 -0400 commit: Fixed typo 13 fbdfeec00027a13d4d938c070d68a94aa58b8c95 6ae8b7cc80e5516d931271f162f4f94a698c9281 Dustin Scarberry <dustin@codeclouds.net> 1560112151 -0400 commit: Further exception handling 14 6ae8b7cc80e5516d931271f162f4f94a698c9281 017c9b189cce5c74baf93000f281c641ef0a6c4c Dustin Scarberry <dustin@codeclouds.net> 1560113923 -0400 commit: Updated plugin version and WordPress dependecies -
utubevideo-gallery/trunk/.git/logs/refs/remotes/origin/master
r2087886 r2103033 5 5 2b6a59cb92bea9a796cf4a29cb44c3596dd462f5 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 Dustin Scarberry <dustin@codeclouds.net> 1557195783 -0400 pull: fast-forward 6 6 a1c8fce8aebc92babf3ed9da6d1947971eadcea8 cacc3e309c14b0766ee654035c8398d91df3427e Dustin Scarberry <dustin@codeclouds.net> 1557291350 -0400 pull: fast-forward 7 cacc3e309c14b0766ee654035c8398d91df3427e 0a0bfda4ac85fe65cd29c817dd1206d068398031 Dustin Scarberry <dustin@codeclouds.net> 1560099330 -0400 update by push 8 0a0bfda4ac85fe65cd29c817dd1206d068398031 70d3374aae665bbe0dee154b974770d319571d76 Dustin Scarberry <dustin@codeclouds.net> 1560104159 -0400 update by push 9 70d3374aae665bbe0dee154b974770d319571d76 8ef2e564a5dc869ec818c11e54479ec20dc9b82d Dustin Scarberry <dustin@codeclouds.net> 1560104267 -0400 update by push 10 8ef2e564a5dc869ec818c11e54479ec20dc9b82d fbdfeec00027a13d4d938c070d68a94aa58b8c95 Dustin Scarberry <dustin@codeclouds.net> 1560104432 -0400 update by push 11 fbdfeec00027a13d4d938c070d68a94aa58b8c95 6ae8b7cc80e5516d931271f162f4f94a698c9281 Dustin Scarberry <dustin@codeclouds.net> 1560112346 -0400 update by push 12 6ae8b7cc80e5516d931271f162f4f94a698c9281 017c9b189cce5c74baf93000f281c641ef0a6c4c Dustin Scarberry <dustin@codeclouds.net> 1560113960 -0400 update by push -
utubevideo-gallery/trunk/.git/refs/heads/master
r2087886 r2103033 1 cacc3e309c14b0766ee654035c8398d91df3427e 1 017c9b189cce5c74baf93000f281c641ef0a6c4c -
utubevideo-gallery/trunk/.git/refs/remotes/origin/master
r2087886 r2103033 1 cacc3e309c14b0766ee654035c8398d91df3427e 1 017c9b189cce5c74baf93000f281c641ef0a6c4c -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/AlbumAPIv1.php
r2003169 r2103033 97 97 public function getItem(WP_REST_Request $req) 98 98 { 99 //check for valid albumID 100 if (!$req['albumID']) 101 return $this->errorResponse(__('Invalid album ID', 'utvg')); 102 103 //sanitize data 104 $albumID = sanitize_key($req['albumID']); 105 106 //get album 107 $albumRepository = new AlbumRepository(); 108 $album = $albumRepository->getItem($albumID); 109 110 //check if album exists 111 if (!$album) 112 return $this->errorResponse(__('The specified album resource was not found', 'utvg')); 113 114 return $this->response($album); 99 try 100 { 101 //check for valid albumID 102 if (!$req['albumID']) 103 return $this->errorResponse(__('Invalid album ID', 'utvg')); 104 105 //sanitize data 106 $albumID = sanitize_key($req['albumID']); 107 108 //get album 109 $albumRepository = new AlbumRepository(); 110 $album = $albumRepository->getItem($albumID); 111 112 //check if album exists 113 if (!$album) 114 return $this->errorResponse(__('The specified album resource was not found', 'utvg')); 115 116 return $this->response($album); 117 } 118 catch (\Exception $e) 119 { 120 return $this->errorResponse($e->getMessage()); 121 } 115 122 } 116 123 … … 118 125 public function createItem(WP_REST_Request $req) 119 126 { 120 //create repository 121 $albumRepository = new AlbumRepository(); 122 123 //gather data fields 124 $title = sanitize_text_field($req['title']); 125 $videoSorting = ($req['videoSorting'] == 'desc' ? 'desc' : 'asc'); 126 $galleryID = sanitize_key($req['galleryID']); 127 128 //check for required fields 129 if (empty($title) || empty($videoSorting) || !isset($galleryID)) 130 return $this->errorResponse(__('Invalid parameters', 'utvg')); 131 132 //get next album sort position 133 $nextSortPosition = $albumRepository->getNextSortPositionByGallery($galleryID); 134 135 //generate slug and store for possible use in future 136 $slug = $this->generateSlug($title, $wpdb); 137 138 //insert new album 139 $albumID = $albumRepository->createItem( 140 $title, 141 $slug, 142 $videoSorting, 143 $nextSortPosition, 144 $galleryID 145 ); 146 147 //if successfull album creation.. 148 if ($albumID) 149 return $this->response(null, 201); 150 else 151 return $this->errorResponse(__('A database error has occurred', 'utvg')); 127 try 128 { 129 //create repository 130 $albumRepository = new AlbumRepository(); 131 132 //gather data fields 133 $title = sanitize_text_field($req['title']); 134 $videoSorting = ($req['videoSorting'] == 'desc' ? 'desc' : 'asc'); 135 $galleryID = sanitize_key($req['galleryID']); 136 137 //check for required fields 138 if (empty($title) || empty($videoSorting) || !isset($galleryID)) 139 throw new \Exception(__('Invalid parameters', 'utvg')); 140 //return $this->errorResponse(__('Invalid parameters', 'utvg')); 141 142 //get next album sort position 143 $nextSortPosition = $albumRepository->getNextSortPositionByGallery($galleryID); 144 145 //generate slug and store for possible use in future 146 $slug = $this->generateSlug($title, $wpdb); 147 148 //insert new album 149 $albumID = $albumRepository->createItem( 150 $title, 151 $slug, 152 $videoSorting, 153 $nextSortPosition, 154 $galleryID 155 ); 156 157 //if successfull album creation.. 158 if ($albumID) 159 return $this->response(null, 201); 160 else 161 return $this->errorResponse(__('A database error has occurred', 'utvg')); 162 } 163 catch (\Exception $e) 164 { 165 return $this->errorResponse($e->getMessage()); 166 } 152 167 } 153 168 … … 155 170 public function deleteItem(WP_REST_Request $req) 156 171 { 157 //check for valid albumID 158 if (!$req['albumID']) 159 return $this->errorResponse(__('Invalid album ID', 'utvg')); 160 161 //sanitize fields 162 $albumID = sanitize_key($req['albumID']); 163 164 //get all videos in album 165 $videoRepository = new VideoRepository(); 166 $albumVideos = $videoRepository->getItemsByAlbum($albumID); 167 168 //delete album and videos from database 169 $albumRepository = new AlbumRepository(); 170 171 if ( 172 !$videoRepository->deleteItemsByAlbum($albumID) 173 || !$albumRepository->deleteItem($albumID) 174 ) 175 return $this->errorResponse(__('A database error has occurred', 'utvg')); 176 177 //delete thumbnails 178 $thumbnailPath = wp_upload_dir(); 179 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 180 181 //delete video thumbnails 182 foreach ($videos as $video) 183 { 184 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 185 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 186 } 187 188 return $this->response(null); 172 try 173 { 174 //check for valid albumID 175 if (!$req['albumID']) 176 return $this->errorResponse(__('Invalid album ID', 'utvg')); 177 178 //sanitize fields 179 $albumID = sanitize_key($req['albumID']); 180 181 //get all videos in album 182 $videoRepository = new VideoRepository(); 183 $albumVideos = $videoRepository->getItemsByAlbum($albumID); 184 185 //delete album and videos from database 186 $albumRepository = new AlbumRepository(); 187 188 if ( 189 !$videoRepository->deleteItemsByAlbum($albumID) 190 || !$albumRepository->deleteItem($albumID) 191 ) 192 return $this->errorResponse(__('A database error has occurred', 'utvg')); 193 194 //delete thumbnails 195 $thumbnailPath = wp_upload_dir(); 196 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 197 198 //delete video thumbnails 199 foreach ($videos as $video) 200 { 201 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 202 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 203 } 204 205 return $this->response(null); 206 } 207 catch (\Exception $e) 208 { 209 return $this->errorResponse($e->getMessage()); 210 } 189 211 } 190 212 … … 192 214 public function updateItem(WP_REST_Request $req) 193 215 { 194 //check for valid albumID 195 if (!$req['albumID']) 196 return $this->errorResponse(__('Invalid album ID', 'utvg')); 197 198 //gather data fields 199 $albumID = sanitize_key($req['albumID']); 200 $title = sanitize_text_field($req['title']); 201 $thumbnail = sanitize_text_field($req['thumbnail']); 202 203 if (isset($req['videoSorting'])) 204 $videoSorting = $req['videoSorting'] == 'desc' ? 'desc' : 'asc'; 205 else 206 $videoSorting = null; 207 208 if (isset($req['published'])) 209 $published = $req['published'] ? true : false; 210 else 211 $published = null; 212 213 $galleryID = sanitize_key($req['galleryID']); 214 $currentTime = current_time('timestamp'); 215 216 //create updatedFields array 217 $updatedFields = []; 218 219 //set optional update fields 220 if ($title != null) 221 $updatedFields['ALB_NAME'] = $title; 222 223 if ($thumbnail != null) 224 $updatedFields['ALB_THUMB'] = $thumbnail; 225 226 if ($videoSorting != null) 227 $updatedFields['ALB_SORT'] = $videoSorting; 228 229 if ($published !== null) 230 $updatedFields['ALB_PUBLISH'] = $published; 231 232 if ($galleryID != null) 233 $updatedFields['DATA_ID'] = $galleryID; 234 235 //set required update fields 236 $updatedFields['ALB_UPDATEDATE'] = $currentTime; 237 238 //update album 239 $albumRepository = new AlbumRepository(); 240 241 if ($albumRepository->updateItem($albumID, $updatedFields)) 242 return $this->response(null); 243 else 244 return $this->errorResponse(__('A database error has occurred', 'utvg')); 216 try 217 { 218 //check for valid albumID 219 if (!$req['albumID']) 220 return $this->errorResponse(__('Invalid album ID', 'utvg')); 221 222 //gather data fields 223 $albumID = sanitize_key($req['albumID']); 224 $title = sanitize_text_field($req['title']); 225 $thumbnail = sanitize_text_field($req['thumbnail']); 226 227 if (isset($req['videoSorting'])) 228 $videoSorting = $req['videoSorting'] == 'desc' ? 'desc' : 'asc'; 229 else 230 $videoSorting = null; 231 232 if (isset($req['published'])) 233 $published = $req['published'] ? true : false; 234 else 235 $published = null; 236 237 $galleryID = sanitize_key($req['galleryID']); 238 $currentTime = current_time('timestamp'); 239 240 //create updatedFields array 241 $updatedFields = []; 242 243 //set optional update fields 244 if ($title != null) 245 $updatedFields['ALB_NAME'] = $title; 246 247 if ($thumbnail != null) 248 $updatedFields['ALB_THUMB'] = $thumbnail; 249 250 if ($videoSorting != null) 251 $updatedFields['ALB_SORT'] = $videoSorting; 252 253 if ($published !== null) 254 $updatedFields['ALB_PUBLISH'] = $published; 255 256 if ($galleryID != null) 257 $updatedFields['DATA_ID'] = $galleryID; 258 259 //set required update fields 260 $updatedFields['ALB_UPDATEDATE'] = $currentTime; 261 262 //update album 263 $albumRepository = new AlbumRepository(); 264 265 if ($albumRepository->updateItem($albumID, $updatedFields)) 266 return $this->response(null); 267 else 268 return $this->errorResponse(__('A database error has occurred', 'utvg')); 269 } 270 catch (\Exception $e) 271 { 272 return $this->errorResponse($e->getMessage()); 273 } 245 274 } 246 275 … … 248 277 public function getAllItems(WP_REST_Request $req) 249 278 { 250 //check for valid gallery id 251 if (!$req['galleryID']) 252 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 253 254 //sanitize data 255 $galleryID = sanitize_key($req['galleryID']); 256 257 //get albums 258 $albumRepository = new AlbumRepository(); 259 $albums = $albumRepository->getItemsByGallery($galleryID); 260 261 return $this->response($albums); 279 try 280 { 281 //check for valid gallery id 282 if (!$req['galleryID']) 283 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 284 285 //sanitize data 286 $galleryID = sanitize_key($req['galleryID']); 287 288 //get albums 289 $albumRepository = new AlbumRepository(); 290 $albums = $albumRepository->getItemsByGallery($galleryID); 291 292 return $this->response($albums); 293 } 294 catch (\Exception $e) 295 { 296 return $this->errorResponse($e->getMessage()); 297 } 262 298 } 263 299 … … 265 301 public function getAnyAllItems(WP_REST_Request $req) 266 302 { 267 //get albums 268 $albumRepository = new AlbumRepository(); 269 $albums = $albumRepository->getItems(); 270 271 return $this->response($albums); 303 try 304 { 305 //get albums 306 $albumRepository = new AlbumRepository(); 307 $albums = $albumRepository->getItems(); 308 309 return $this->response($albums); 310 } 311 catch (\Exception $e) 312 { 313 return $this->errorResponse($e->getMessage()); 314 } 272 315 } 273 316 -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/AlbumOrderAPIv1.php
r2003169 r2103033 33 33 public function updateItem(WP_REST_Request $req) 34 34 { 35 global $wpdb; 35 try 36 { 37 global $wpdb; 36 38 37 if (!$req['albumids'])38 return $this->errorResponse(__('Invalid data', 'utvg'));39 if (!$req['albumids']) 40 return $this->errorResponse(__('Invalid data', 'utvg')); 39 41 40 $albumCount = count($req['albumids']);42 $albumCount = count($req['albumids']); 41 43 42 for ($i = 0; $i < $albumCount; $i++) 44 for ($i = 0; $i < $albumCount; $i++) 45 { 46 $albumID = sanitize_key($req['albumids'][$i]); 47 48 if (!$albumID) 49 return $this->errorResponse(__('Invalid data value', 'utvg')); 50 51 $wpdb->update( 52 $wpdb->prefix . 'utubevideo_album', 53 ['ALB_POS' => $i], 54 ['ALB_ID' => $albumID] 55 ); 56 } 57 58 return $this->response(null); 59 } 60 catch (\Exception $e) 43 61 { 44 $albumID = sanitize_key($req['albumids'][$i]); 45 46 if (!$albumID) 47 return $this->errorResponse(__('Invalid data value', 'utvg')); 48 49 $wpdb->update( 50 $wpdb->prefix . 'utubevideo_album', 51 ['ALB_POS' => $i], 52 ['ALB_ID' => $albumID] 53 ); 62 return $this->errorResponse($e->getMessage()); 54 63 } 55 56 return $this->response(null);57 64 } 58 65 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/GalleryAPIv1.php
r2003169 r2103033 81 81 public function getItem(WP_REST_Request $req) 82 82 { 83 //check for valid galleryID 84 if (!$req['galleryID']) 85 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 86 87 //sanitize data 88 $galleryID = sanitize_key($req['galleryID']); 89 90 //get gallery 91 $galleryRepository = new GalleryRepository(); 92 $gallery = $galleryRepository->getItem($galleryID); 93 94 if (!$gallery) 95 return $this->errorResponse(__('The specified gallery resource was not found', 'utvg')); 96 97 return $this->response($gallery); 83 try 84 { 85 //check for valid galleryID 86 if (!$req['galleryID']) 87 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 88 89 //sanitize data 90 $galleryID = sanitize_key($req['galleryID']); 91 92 //get gallery 93 $galleryRepository = new GalleryRepository(); 94 $gallery = $galleryRepository->getItem($galleryID); 95 96 if (!$gallery) 97 return $this->errorResponse(__('The specified gallery resource was not found', 'utvg')); 98 99 return $this->response($gallery); 100 } 101 catch (\Exception $e) 102 { 103 return $this->errorResponse($e->getMessage()); 104 } 98 105 } 99 106 100 107 public function createItem(WP_REST_Request $req) 101 108 { 102 //gather data fields 103 $title = sanitize_text_field($req['title']); 104 $albumSorting = sanitize_text_field($req['albumSorting'] == 'desc' ? 'desc' : 'asc'); 105 $thumbnailType = sanitize_text_field($req['thumbnailType'] == 'square' ? 'square' : 'rectangle'); 106 $displayType = sanitize_text_field($req['displayType'] == 'video' ? 'video' : 'album'); 107 108 //check for required fields 109 if ( 110 empty($title) 111 || empty($albumSorting) 112 || empty($thumbnailType) 113 || empty($displayType) 114 ) 115 return $this->errorResponse(__('Invalid parameters', 'utvg')); 116 117 //insert new gallery 118 $galleryRepository = new GalleryRepository(); 119 $galleryID = $galleryRepository->createItem( 120 $title, 121 $albumSorting, 122 $thumbnailType, 123 $displayType 124 ); 125 126 if ($galleryID) 127 return $this->response($galleryID, 201); 128 else 129 return $this->errorResponse(__('A database error has occurred', 'utvg')); 109 try 110 { 111 //gather data fields 112 $title = sanitize_text_field($req['title']); 113 $albumSorting = sanitize_text_field($req['albumSorting'] == 'desc' ? 'desc' : 'asc'); 114 $thumbnailType = sanitize_text_field($req['thumbnailType'] == 'square' ? 'square' : 'rectangle'); 115 $displayType = sanitize_text_field($req['displayType'] == 'video' ? 'video' : 'album'); 116 117 //check for required fields 118 if ( 119 empty($title) 120 || empty($albumSorting) 121 || empty($thumbnailType) 122 || empty($displayType) 123 ) 124 return $this->errorResponse(__('Invalid parameters', 'utvg')); 125 126 //insert new gallery 127 $galleryRepository = new GalleryRepository(); 128 $galleryID = $galleryRepository->createItem( 129 $title, 130 $albumSorting, 131 $thumbnailType, 132 $displayType 133 ); 134 135 if ($galleryID) 136 return $this->response($galleryID, 201); 137 else 138 return $this->errorResponse(__('A database error has occurred', 'utvg')); 139 } 140 catch (\Exception $e) 141 { 142 return $this->errorResponse($e->getMessage()); 143 } 144 130 145 } 131 146 132 147 public function deleteItem(WP_REST_Request $req) 133 148 { 134 //check for valid galleryID 135 if (!$req['galleryID']) 136 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 137 138 //sanitize fields 139 $galleryID = sanitize_key($req['galleryID']); 140 141 //create repositories 142 $galleryRepository = new GalleryRepository(); 143 $albumRepository = new AlbumRepository(); 144 $videoRepository = new VideoRepository(); 145 146 //get videos for thumbnail deletion 147 $videos = $videoRepository->getItemsByGallery($galleryID); 148 149 //delete gallery, albums, and videos from database 150 if ( 151 !$videoRepository->deleteItemsByGallery($galleryID) 152 || !$albumRepository->deleteItemsByGallery($galleryID) 153 || !$galleryRepository->deleteItem($galleryID) 154 ) 155 return $this->errorResponse(__('A database error has occured', 'utvg')); 156 157 //delete video thumbnails 158 $thumbnailPath = wp_upload_dir(); 159 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 160 161 foreach ($videos as $video) 162 { 163 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 164 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 165 } 166 167 return $this->response(null); 149 try 150 { 151 //check for valid galleryID 152 if (!$req['galleryID']) 153 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 154 155 //sanitize fields 156 $galleryID = sanitize_key($req['galleryID']); 157 158 //create repositories 159 $galleryRepository = new GalleryRepository(); 160 $albumRepository = new AlbumRepository(); 161 $videoRepository = new VideoRepository(); 162 163 //get videos for thumbnail deletion 164 $videos = $videoRepository->getItemsByGallery($galleryID); 165 166 //delete gallery, albums, and videos from database 167 if ( 168 !$videoRepository->deleteItemsByGallery($galleryID) 169 || !$albumRepository->deleteItemsByGallery($galleryID) 170 || !$galleryRepository->deleteItem($galleryID) 171 ) 172 return $this->errorResponse(__('A database error has occured', 'utvg')); 173 174 //delete video thumbnails 175 $thumbnailPath = wp_upload_dir(); 176 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 177 178 foreach ($videos as $video) 179 { 180 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 181 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 182 } 183 184 return $this->response(null); 185 } 186 catch (\Exception $e) 187 { 188 return $this->errorResponse($e->getMessage()); 189 } 168 190 } 169 191 170 192 public function updateItem(WP_REST_Request $req) 171 193 { 172 //check for valid galleryID 173 if (!$req['galleryID']) 174 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 175 176 //gather data fields 177 $galleryID = sanitize_key($req['galleryID']); 178 $title = sanitize_text_field($req['title']); 179 180 if (isset($req['albumSorting'])) 181 $albumSorting = $req['albumSorting'] == 'desc' ? 'desc' : 'asc'; 182 else 183 $albumSorting = null; 184 185 $thumbnailType = sanitize_text_field($req['thumbnailType']); 186 $displayType = sanitize_text_field($req['displayType']); 187 $currentTime = current_time('timestamp'); 188 189 //create updatedFields array 190 $updatedFields = []; 191 192 //set optional update fields 193 if ($title != null) 194 $updatedFields['DATA_NAME'] = $title; 195 196 if ($thumbnailType != null) 197 $updatedFields['DATA_THUMBTYPE'] = $thumbnailType; 198 199 if ($displayType != null) 200 $updatedFields['DATA_DISPLAYTYPE'] = $displayType; 201 202 if ($albumSorting != null) 203 $updatedFields['DATA_SORT'] = $albumSorting; 204 205 //set required update fields 206 $updatedFields['DATA_UPDATEDATE'] = $currentTime; 207 208 //update gallery 209 $galleryRepository = new GalleryRepository(); 210 211 if ($galleryRepository->updateItem($galleryID, $updatedFields)) 212 return $this->response(null); 213 else 214 return $this->errorResponse(__('A database error has occurred', 'utvg')); 194 try 195 { 196 //check for valid galleryID 197 if (!$req['galleryID']) 198 return $this->errorResponse(__('Invalid gallery ID', 'utvg')); 199 200 //gather data fields 201 $galleryID = sanitize_key($req['galleryID']); 202 $title = sanitize_text_field($req['title']); 203 204 if (isset($req['albumSorting'])) 205 $albumSorting = $req['albumSorting'] == 'desc' ? 'desc' : 'asc'; 206 else 207 $albumSorting = null; 208 209 $thumbnailType = sanitize_text_field($req['thumbnailType']); 210 $displayType = sanitize_text_field($req['displayType']); 211 $currentTime = current_time('timestamp'); 212 213 //create updatedFields array 214 $updatedFields = []; 215 216 //set optional update fields 217 if ($title != null) 218 $updatedFields['DATA_NAME'] = $title; 219 220 if ($thumbnailType != null) 221 $updatedFields['DATA_THUMBTYPE'] = $thumbnailType; 222 223 if ($displayType != null) 224 $updatedFields['DATA_DISPLAYTYPE'] = $displayType; 225 226 if ($albumSorting != null) 227 $updatedFields['DATA_SORT'] = $albumSorting; 228 229 //set required update fields 230 $updatedFields['DATA_UPDATEDATE'] = $currentTime; 231 232 //update gallery 233 $galleryRepository = new GalleryRepository(); 234 235 if ($galleryRepository->updateItem($galleryID, $updatedFields)) 236 return $this->response(null); 237 else 238 return $this->errorResponse(__('A database error has occurred', 'utvg')); 239 } 240 catch (\Exception $e) 241 { 242 return $this->errorResponse($e->getMessage()); 243 } 215 244 } 216 245 217 246 public function getAllItems(WP_REST_Request $req) 218 247 { 219 //get galleries 220 $galleryRepository = new GalleryRepository(); 221 $galleries = $galleryRepository->getItems(); 222 223 return $this->response($galleries); 248 try 249 { 250 //get galleries 251 $galleryRepository = new GalleryRepository(); 252 $galleries = $galleryRepository->getItems(); 253 254 return $this->response($galleries); 255 } 256 catch (\Exception $e) 257 { 258 return $this->errorResponse($e->getMessage()); 259 } 224 260 } 225 261 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/GalleryDataAPIv1.php
r2003169 r2103033 34 34 public function getItem(WP_REST_Request $req) 35 35 { 36 $data = new stdClass(); 37 $thumbnailDirectory = wp_upload_dir(); 38 $thumbnailDirectory = $thumbnailDirectory['baseurl']; 39 global $wpdb; 36 try 37 { 38 $data = new stdClass(); 39 $thumbnailDirectory = wp_upload_dir(); 40 $thumbnailDirectory = $thumbnailDirectory['baseurl']; 41 global $wpdb; 40 42 41 //get gallery data42 $gallery = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_dataset WHERE DATA_ID = "' . $req['galleryID'] . '"');43 $gallery = $gallery[0];43 //get gallery data 44 $gallery = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_dataset WHERE DATA_ID = "' . $req['galleryID'] . '"'); 45 $gallery = $gallery[0]; 44 46 45 $data->ID = $gallery->DATA_ID;46 $data->name = $gallery->DATA_NAME;47 $data->displaytype = $gallery->DATA_DISPLAYTYPE;48 $data->thumbnailType = $gallery->DATA_THUMBTYPE;49 $data->albumsort = $gallery->DATA_SORT;50 $data->albums = [];47 $data->ID = $gallery->DATA_ID; 48 $data->name = $gallery->DATA_NAME; 49 $data->displaytype = $gallery->DATA_DISPLAYTYPE; 50 $data->thumbnailType = $gallery->DATA_THUMBTYPE; 51 $data->albumsort = $gallery->DATA_SORT; 52 $data->albums = []; 51 53 52 //get video albums53 $albums = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_album WHERE ALB_PUBLISH = 1 && DATA_ID = ' . $gallery->DATA_ID);54 //get video albums 55 $albums = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_album WHERE ALB_PUBLISH = 1 && DATA_ID = ' . $gallery->DATA_ID); 54 56 55 foreach ($albums as $album)56 {57 $albumData = new stdClass();58 $albumData->ID = $album->ALB_ID;59 $albumData->title = $album->ALB_NAME;60 $albumData->slug = $album->ALB_SLUG;61 $albumData->thumbnail = $thumbnailDirectory . '/utubevideo-cache/' . $album->ALB_THUMB . '.jpg';62 $albumData->sort = $album->ALB_SORT;63 $albumData->position = $album->ALB_POS;64 $albumData->videos = [];57 foreach ($albums as $album) 58 { 59 $albumData = new stdClass(); 60 $albumData->ID = $album->ALB_ID; 61 $albumData->title = $album->ALB_NAME; 62 $albumData->slug = $album->ALB_SLUG; 63 $albumData->thumbnail = $thumbnailDirectory . '/utubevideo-cache/' . $album->ALB_THUMB . '.jpg'; 64 $albumData->sort = $album->ALB_SORT; 65 $albumData->position = $album->ALB_POS; 66 $albumData->videos = []; 65 67 66 //get videos for album67 $videos = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_video WHERE ALB_ID = ' . $album->ALB_ID . ' && VID_PUBLISH = 1 ORDER BY VID_POS ' . $album->ALB_SORT);68 //get videos for album 69 $videos = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'utubevideo_video WHERE ALB_ID = ' . $album->ALB_ID . ' && VID_PUBLISH = 1 ORDER BY VID_POS ' . $album->ALB_SORT); 68 70 69 foreach ($videos as $video)70 {71 $videoData = new stdClass();72 $videoData->ID = $video->VID_ID;73 $videoData->title = $video->VID_NAME;74 $videoData->description = $video->VID_DESCRIPTION;75 $videoData->slugID = $video->VID_URL;76 $videoData->thumbnail = $thumbnailDirectory . '/utubevideo-cache/' . $video->VID_URL . $video->VID_ID . '.jpg';77 $videoData->source = $video->VID_SOURCE;78 $videoData->quality = $video->VID_QUALITY;79 $videoData->chrome = $video->VID_CHROME == 1 ? true : false;80 $videoData->startTime = $video->VID_STARTTIME;81 $videoData->endTime = $video->VID_ENDTIME;71 foreach ($videos as $video) 72 { 73 $videoData = new stdClass(); 74 $videoData->ID = $video->VID_ID; 75 $videoData->title = $video->VID_NAME; 76 $videoData->description = $video->VID_DESCRIPTION; 77 $videoData->slugID = $video->VID_URL; 78 $videoData->thumbnail = $thumbnailDirectory . '/utubevideo-cache/' . $video->VID_URL . $video->VID_ID . '.jpg'; 79 $videoData->source = $video->VID_SOURCE; 80 $videoData->quality = $video->VID_QUALITY; 81 $videoData->chrome = $video->VID_CHROME == 1 ? true : false; 82 $videoData->startTime = $video->VID_STARTTIME; 83 $videoData->endTime = $video->VID_ENDTIME; 82 84 83 $albumData->videos[] = $videoData; 85 $albumData->videos[] = $videoData; 86 } 87 88 $data->albums[] = $albumData; 84 89 } 85 90 86 $data->albums[] = $albumData;91 return $data; 87 92 } 88 89 return $data; 93 catch (\Exception $e) 94 { 95 return $this->errorResponse($e->getMessage()); 96 } 90 97 } 91 98 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/PlaylistAPIv1.php
r2003169 r2103033 80 80 public function getItem(WP_REST_Request $req) 81 81 { 82 //check for valid playlistID 83 if (!$req['playlistID']) 84 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 85 86 //get playlist 87 $playlistRepository = new PlaylistRepository(); 88 $playlist = $playlistRepository->getItem($req['playlistID']); 89 90 //check if playlist exists 91 if (!$playlist) 92 return $this->errorResponse(__('The specified video resource was not found', 'utvg')); 93 94 return $this->response($playlist); 82 try 83 { 84 //check for valid playlistID 85 if (!$req['playlistID']) 86 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 87 88 //get playlist 89 $playlistRepository = new PlaylistRepository(); 90 $playlist = $playlistRepository->getItem($req['playlistID']); 91 92 //check if playlist exists 93 if (!$playlist) 94 return $this->errorResponse(__('The specified video resource was not found', 'utvg')); 95 96 return $this->response($playlist); 97 } 98 catch (\Exception $e) 99 { 100 return $this->errorResponse($e->getMessage()); 101 } 95 102 } 96 103 97 104 public function createItem(WP_REST_Request $req) 98 105 { 99 //create repository 100 $playlistRepository = new PlaylistRepository(); 101 102 //gather data fields 103 $title = sanitize_text_field($req['title']); 104 $source = sanitize_text_field($req['source']); 105 $sourceID = sanitize_text_field($req['sourceID']); 106 $videoQuality = sanitize_text_field($req['videoQuality']); 107 $showControls = $req['showControls'] ? 0 : 1; 108 $albumID = sanitize_key($req['albumID']); 109 110 //check for required fields 111 if (empty($title) 112 || empty($source) 113 || empty($sourceID) 114 || empty($videoQuality) 115 || empty($albumID) 116 ) 117 return $this->errorResponse(__('Invalid parameters', 'utvg')); 118 119 //insert new playlist 120 $playlistID = $playlistRepository->createItem( 121 $title, 122 $source, 123 $sourceID, 124 $videoQuality, 125 $showControls, 126 $albumID 127 ); 128 129 //if successfull playlist creation.. 130 if ($playlistID) 131 return $this->response((object)['id' => $playlistID], 201); 132 else 133 return $this->errorResponse(__('A database error has occurred', 'utvg')); 106 try 107 { 108 //create repository 109 $playlistRepository = new PlaylistRepository(); 110 111 //gather data fields 112 $title = sanitize_text_field($req['title']); 113 $source = sanitize_text_field($req['source']); 114 $sourceID = sanitize_text_field($req['sourceID']); 115 $videoQuality = sanitize_text_field($req['videoQuality']); 116 $showControls = $req['showControls'] ? 0 : 1; 117 $albumID = sanitize_key($req['albumID']); 118 119 //check for required fields 120 if (empty($title) 121 || empty($source) 122 || empty($sourceID) 123 || empty($videoQuality) 124 || empty($albumID) 125 ) 126 throw new \Exception(__('Invalid parameters', 'utvg')); 127 128 //insert new playlist 129 $playlistID = $playlistRepository->createItem( 130 $title, 131 $source, 132 $sourceID, 133 $videoQuality, 134 $showControls, 135 $albumID 136 ); 137 138 //if successfull playlist creation.. 139 if ($playlistID) 140 return $this->response((object)['id' => $playlistID], 201); 141 else 142 throw new \Exception(__('Database Error: Playlist failed to save', 'utvg')); 143 } 144 catch (\Exception $e) 145 { 146 return $this->errorResponse($e->getMessage()); 147 } 134 148 } 135 149 136 150 public function deleteItem(WP_REST_Request $req) 137 151 { 138 //check for valid playlistID 139 if (!$req['playlistID']) 140 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 141 142 //sanitize fields 143 $playlistID = sanitize_key($req['playlistID']); 144 145 //get playlist 146 $playlistRepository = new PlaylistRepository(); 147 $playlist = $playlistRepository->getItem($playlistID); 148 149 //check if playlist exists 150 if (!$playlist) 151 return $this->errorResponse(__('Playlist does not exist', 'utvg')); 152 153 //get playlist videos 154 $videoRepository = new VideoRepository(); 155 $playlistVideos = $videoRepository->getItemsByPlaylist($playlistID); 156 157 //delete videos 158 foreach ($playlistVideos as $video) 159 { 160 if (!$videoRepository->deleteItem($video->getID())) 152 try 153 { 154 //check for valid playlistID 155 if (!$req['playlistID']) 156 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 157 158 //sanitize fields 159 $playlistID = sanitize_key($req['playlistID']); 160 161 //get playlist 162 $playlistRepository = new PlaylistRepository(); 163 $playlist = $playlistRepository->getItem($playlistID); 164 165 //check if playlist exists 166 if (!$playlist) 167 return $this->errorResponse(__('Playlist does not exist', 'utvg')); 168 169 //get playlist videos 170 $videoRepository = new VideoRepository(); 171 $playlistVideos = $videoRepository->getItemsByPlaylist($playlistID); 172 173 //delete videos 174 foreach ($playlistVideos as $video) 175 { 176 if (!$videoRepository->deleteItem($video->getID())) 177 return $this->errorResponse(__('A database error has occurred', 'utvg')); 178 179 //delete video thumbnail 180 $thumbnailPath = wp_upload_dir(); 181 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 182 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 183 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 184 } 185 186 //delete playlist 187 if (!$playlistRepository->deleteItem($playlistID)) 161 188 return $this->errorResponse(__('A database error has occurred', 'utvg')); 162 189 163 //delete video thumbnail 164 $thumbnailPath = wp_upload_dir(); 165 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 166 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 167 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 168 } 169 170 //delete playlist 171 if (!$playlistRepository->deleteItem($playlistID)) 172 return $this->errorResponse(__('A database error has occurred', 'utvg')); 173 174 return $this->response(null); 190 return $this->response(null); 191 } 192 catch (\Exception $e) 193 { 194 return $this->errorResponse($e->getMessage()); 195 } 175 196 } 176 197 177 198 public function updateItem(WP_REST_Request $req) 178 199 { 179 //check for valid playlistID 180 if (!$req['playlistID']) 181 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 182 183 //gather data fields 184 $playlistID = sanitize_key($req['playlistID']); 185 $title = sanitize_text_field($req['title']); 186 $videoQuality = sanitize_text_field($req['videoQuality']); 187 188 if (isset($req['showControls'])) 189 $showControls = $req['showControls'] ? 0 : 1; 190 else 191 $showControls = null; 192 193 $currentTime = current_time('timestamp'); 194 195 //create updatedFields array 196 $updatedFields = []; 197 198 //set optional update fields 199 if ($title != null) 200 $updatedFields['PLAY_TITLE'] = $title; 201 202 if ($videoQuality != null) 203 $updatedFields['PLAY_QUALITY'] = $videoQuality; 204 205 if ($showControls != null) 206 $updatedFields['PLAY_CHROME'] = $showControls; 207 208 //set required update fields 209 $updatedFields['PLAY_UPDATEDATE'] = $currentTime; 210 211 $playlistRepository = new PlaylistRepository(); 212 213 if ($playlistRepository->updateItem($playlistID, $updatedFields)) 214 return $this->response(null); 215 else 216 return $this->errorResponse(__('A database error has occurred', 'utvg')); 200 try 201 { 202 //check for valid playlistID 203 if (!$req['playlistID']) 204 return $this->errorResponse(__('Invalid playlist ID', 'utvg')); 205 206 //gather data fields 207 $playlistID = sanitize_key($req['playlistID']); 208 $title = sanitize_text_field($req['title']); 209 $videoQuality = sanitize_text_field($req['videoQuality']); 210 211 if (isset($req['showControls'])) 212 $showControls = $req['showControls'] ? 0 : 1; 213 else 214 $showControls = null; 215 216 $currentTime = current_time('timestamp'); 217 218 //create updatedFields array 219 $updatedFields = []; 220 221 //set optional update fields 222 if ($title != null) 223 $updatedFields['PLAY_TITLE'] = $title; 224 225 if ($videoQuality != null) 226 $updatedFields['PLAY_QUALITY'] = $videoQuality; 227 228 if ($showControls != null) 229 $updatedFields['PLAY_CHROME'] = $showControls; 230 231 //set required update fields 232 $updatedFields['PLAY_UPDATEDATE'] = $currentTime; 233 234 $playlistRepository = new PlaylistRepository(); 235 236 if ($playlistRepository->updateItem($playlistID, $updatedFields)) 237 return $this->response(null); 238 else 239 return $this->errorResponse(__('A database error has occurred', 'utvg')); 240 } 241 catch (\Exception $e) 242 { 243 return $this->errorResponse($e->getMessage()); 244 } 217 245 } 218 246 219 247 public function getAllItems(WP_REST_Request $req) 220 248 { 221 $playlistRepository = new PlaylistRepository(); 222 $playlists = $playlistRepository->getItems(); 223 224 return $this->response($playlists); 249 try 250 { 251 $playlistRepository = new PlaylistRepository(); 252 $playlists = $playlistRepository->getItems(); 253 254 return $this->response($playlists); 255 } 256 catch (\Exception $e) 257 { 258 return $this->errorResponse($e->getMessage()); 259 } 225 260 } 226 261 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/SettingsAPIv1.php
r2003169 r2103033 44 44 public function getItem(WP_REST_Request $req) 45 45 { 46 $pluginSettings = get_option('utubevideo_main_opts'); 46 try 47 { 48 $pluginSettings = get_option('utubevideo_main_opts'); 47 49 48 $settingData = new stdClass();49 $settingData->version = $pluginSettings['version'];50 $settingData->popupPlayerWidth = $pluginSettings['playerWidth'];51 $settingData->playerControlsTheme = $pluginSettings['playerControlTheme'];52 $settingData->playerControlsColor = $pluginSettings['playerProgressColor'];53 $settingData->popupPlayerOverlayOpacity = $pluginSettings['fancyboxOverlayOpacity'];54 $settingData->popupPlayerOverlayColor = $pluginSettings['fancyboxOverlayColor'];55 $settingData->thumbnailWidth = $pluginSettings['thumbnailWidth'];56 $settingData->thumbnailVerticalPadding = $pluginSettings['thumbnailVerticalPadding'];57 $settingData->thumbnailHorizontalPadding = $pluginSettings['thumbnailPadding'];58 $settingData->thumbnailBorderRadius = $pluginSettings['thumbnailBorderRadius'];59 $settingData->youtubeAPIKey = $pluginSettings['youtubeApiKey'];60 $settingData->youtubeAutoplay = $pluginSettings['youtubeAutoplay'] ? true : false;61 $settingData->youtubeHideDetails = $pluginSettings['youtubeDetailsHide'] ? true : false;62 $settingData->vimeoAutoplay = $pluginSettings['vimeoAutoplay'] ? true : false;63 $settingData->vimeoHideDetails = $pluginSettings['vimeoDetailsHide'] ? true : false;64 $settingData->removeVideoPopupScript = $pluginSettings['skipMagnificPopup'] == 'yes' ? true : false;65 $settingData->showVideoDescription = $pluginSettings['showVideoDescription'] ? true : false;50 $settingData = new stdClass(); 51 $settingData->version = $pluginSettings['version']; 52 $settingData->popupPlayerWidth = $pluginSettings['playerWidth']; 53 $settingData->playerControlsTheme = $pluginSettings['playerControlTheme']; 54 $settingData->playerControlsColor = $pluginSettings['playerProgressColor']; 55 $settingData->popupPlayerOverlayOpacity = $pluginSettings['fancyboxOverlayOpacity']; 56 $settingData->popupPlayerOverlayColor = $pluginSettings['fancyboxOverlayColor']; 57 $settingData->thumbnailWidth = $pluginSettings['thumbnailWidth']; 58 $settingData->thumbnailVerticalPadding = $pluginSettings['thumbnailVerticalPadding']; 59 $settingData->thumbnailHorizontalPadding = $pluginSettings['thumbnailPadding']; 60 $settingData->thumbnailBorderRadius = $pluginSettings['thumbnailBorderRadius']; 61 $settingData->youtubeAPIKey = $pluginSettings['youtubeApiKey']; 62 $settingData->youtubeAutoplay = $pluginSettings['youtubeAutoplay'] ? true : false; 63 $settingData->youtubeHideDetails = $pluginSettings['youtubeDetailsHide'] ? true : false; 64 $settingData->vimeoAutoplay = $pluginSettings['vimeoAutoplay'] ? true : false; 65 $settingData->vimeoHideDetails = $pluginSettings['vimeoDetailsHide'] ? true : false; 66 $settingData->removeVideoPopupScript = $pluginSettings['skipMagnificPopup'] == 'yes' ? true : false; 67 $settingData->showVideoDescription = $pluginSettings['showVideoDescription'] ? true : false; 66 68 67 //get php version68 preg_match('/^(.*?)-(.*)/', PHP_VERSION, $matches);69 $settingData->phpVersion = isset($matches[1]) ? $matches[1] : '';69 //get php version 70 preg_match('/^(.*?)-(.*)/', PHP_VERSION, $matches); 71 $settingData->phpVersion = isset($matches[1]) ? $matches[1] : ''; 70 72 71 //get WordPress version72 $settingData->wpVersion = get_bloginfo('version');73 //get WordPress version 74 $settingData->wpVersion = get_bloginfo('version'); 73 75 74 //get gd status75 $settingData->gdEnabled = extension_loaded('gd');76 //get gd status 77 $settingData->gdEnabled = extension_loaded('gd'); 76 78 77 //get imagemagick status78 $settingData->imageMagickEnabled = extension_loaded('imagick');79 //get imagemagick status 80 $settingData->imageMagickEnabled = extension_loaded('imagick'); 79 81 80 return $this->response($settingData); 82 return $this->response($settingData); 83 } 84 catch (\Exception $e) 85 { 86 return $this->errorResponse($e->getMessage()); 87 } 81 88 } 82 89 83 90 public function updateItem(WP_REST_Request $req) 84 91 { 85 $pluginSettings = get_option('utubevideo_main_opts'); 92 try 93 { 94 $pluginSettings = get_option('utubevideo_main_opts'); 86 95 87 //gather data fields88 $playerControlsColor = sanitize_text_field($req['playerControlsColor']);89 $playerControlsTheme = sanitize_text_field($req['playerControlsTheme']);90 $popupPlayerWidth = sanitize_text_field($req['popupPlayerWidth']);91 $popupPlayerOverlayColor = sanitize_text_field($req['popupPlayerOverlayColor']);92 $popupPlayerOverlayOpacity = sanitize_text_field($req['popupPlayerOverlayOpacity']);93 $thumbnailBorderRadius = sanitize_text_field($req['thumbnailBorderRadius']);94 $thumbnailWidth = sanitize_text_field($req['thumbnailWidth']);95 $thumbnailHorizontalPadding = sanitize_text_field($req['thumbnailHorizontalPadding']);96 $thumbnailVerticalPadding = sanitize_text_field($req['thumbnailVerticalPadding']);97 $youtubeAPIKey = sanitize_text_field($req['youtubeAPIKey']);96 //gather data fields 97 $playerControlsColor = sanitize_text_field($req['playerControlsColor']); 98 $playerControlsTheme = sanitize_text_field($req['playerControlsTheme']); 99 $popupPlayerWidth = sanitize_text_field($req['popupPlayerWidth']); 100 $popupPlayerOverlayColor = sanitize_text_field($req['popupPlayerOverlayColor']); 101 $popupPlayerOverlayOpacity = sanitize_text_field($req['popupPlayerOverlayOpacity']); 102 $thumbnailBorderRadius = sanitize_text_field($req['thumbnailBorderRadius']); 103 $thumbnailWidth = sanitize_text_field($req['thumbnailWidth']); 104 $thumbnailHorizontalPadding = sanitize_text_field($req['thumbnailHorizontalPadding']); 105 $thumbnailVerticalPadding = sanitize_text_field($req['thumbnailVerticalPadding']); 106 $youtubeAPIKey = sanitize_text_field($req['youtubeAPIKey']); 98 107 99 if (isset($req['removeVideoPopupScript']))100 $removeVideoPopupScript = $req['removeVideoPopupScript'] ? 'yes' : 'no';101 else102 $removeVideoPopupScript = null;108 if (isset($req['removeVideoPopupScript'])) 109 $removeVideoPopupScript = $req['removeVideoPopupScript'] ? 'yes' : 'no'; 110 else 111 $removeVideoPopupScript = null; 103 112 104 if (isset($req['vimeoAutoplay']))105 $vimeoAutoplay = $req['vimeoAutoplay'] ? 1 : 0;106 else107 $vimeoAutoplay = null;113 if (isset($req['vimeoAutoplay'])) 114 $vimeoAutoplay = $req['vimeoAutoplay'] ? 1 : 0; 115 else 116 $vimeoAutoplay = null; 108 117 109 if (isset($req['vimeoHideDetails']))110 $vimeoHideDetails = $req['vimeoHideDetails'] ? 1 : 0;111 else112 $vimeoHideDetails = null;118 if (isset($req['vimeoHideDetails'])) 119 $vimeoHideDetails = $req['vimeoHideDetails'] ? 1 : 0; 120 else 121 $vimeoHideDetails = null; 113 122 114 if (isset($req['youtubeAutoplay']))115 $youtubeAutoplay = $req['youtubeAutoplay'] ? 1 : 0;116 else117 $youtubeAutoplay = null;123 if (isset($req['youtubeAutoplay'])) 124 $youtubeAutoplay = $req['youtubeAutoplay'] ? 1 : 0; 125 else 126 $youtubeAutoplay = null; 118 127 119 if (isset($req['youtubeHideDetails']))120 $youtubeHideDetails = $req['youtubeHideDetails'] ? 1 : 0;121 else122 $youtubeHideDetails = null;128 if (isset($req['youtubeHideDetails'])) 129 $youtubeHideDetails = $req['youtubeHideDetails'] ? 1 : 0; 130 else 131 $youtubeHideDetails = null; 123 132 124 if (isset($req['showVideoDescription']))125 $showVideoDescription = $req['showVideoDescription'] ? true : false;126 else127 $showVideoDescription = null;133 if (isset($req['showVideoDescription'])) 134 $showVideoDescription = $req['showVideoDescription'] ? true : false; 135 else 136 $showVideoDescription = null; 128 137 129 //set optional update fields130 if ($playerControlsColor)131 $pluginSettings['playerProgressColor'] = $playerControlsColor;138 //set optional update fields 139 if ($playerControlsColor) 140 $pluginSettings['playerProgressColor'] = $playerControlsColor; 132 141 133 if ($playerControlsTheme)134 $pluginSettings['playerControlTheme'] = $playerControlsTheme;142 if ($playerControlsTheme) 143 $pluginSettings['playerControlTheme'] = $playerControlsTheme; 135 144 136 if ($popupPlayerWidth > 0)137 $pluginSettings['playerWidth'] = $popupPlayerWidth;145 if ($popupPlayerWidth > 0) 146 $pluginSettings['playerWidth'] = $popupPlayerWidth; 138 147 139 if ($popupPlayerOverlayColor)140 $pluginSettings['fancyboxOverlayColor'] = $popupPlayerOverlayColor;148 if ($popupPlayerOverlayColor) 149 $pluginSettings['fancyboxOverlayColor'] = $popupPlayerOverlayColor; 141 150 142 if ($popupPlayerOverlayOpacity)143 $pluginSettings['fancyboxOverlayOpacity'] = $popupPlayerOverlayOpacity;151 if ($popupPlayerOverlayOpacity) 152 $pluginSettings['fancyboxOverlayOpacity'] = $popupPlayerOverlayOpacity; 144 153 145 if ($thumbnailBorderRadius !== null)146 $pluginSettings['thumbnailBorderRadius'] = $thumbnailBorderRadius;154 if ($thumbnailBorderRadius !== null) 155 $pluginSettings['thumbnailBorderRadius'] = $thumbnailBorderRadius; 147 156 148 if ($thumbnailWidth > 0)149 $pluginSettings['thumbnailWidth'] = $thumbnailWidth;157 if ($thumbnailWidth > 0) 158 $pluginSettings['thumbnailWidth'] = $thumbnailWidth; 150 159 151 if ($thumbnailHorizontalPadding > 0)152 $pluginSettings['thumbnailPadding'] = $thumbnailHorizontalPadding;160 if ($thumbnailHorizontalPadding > 0) 161 $pluginSettings['thumbnailPadding'] = $thumbnailHorizontalPadding; 153 162 154 if ($thumbnailVerticalPadding > 0)155 $pluginSettings['thumbnailVerticalPadding'] = $thumbnailVerticalPadding;163 if ($thumbnailVerticalPadding > 0) 164 $pluginSettings['thumbnailVerticalPadding'] = $thumbnailVerticalPadding; 156 165 157 if ($youtubeAPIKey !== null)158 $pluginSettings['youtubeApiKey'] = $youtubeAPIKey;166 if ($youtubeAPIKey !== null) 167 $pluginSettings['youtubeApiKey'] = $youtubeAPIKey; 159 168 160 if ($removeVideoPopupScript)161 $pluginSettings['skipMagnificPopup'] = $removeVideoPopupScript;169 if ($removeVideoPopupScript) 170 $pluginSettings['skipMagnificPopup'] = $removeVideoPopupScript; 162 171 163 if ($vimeoAutoplay !== null)164 $pluginSettings['vimeoAutoplay'] = $vimeoAutoplay;172 if ($vimeoAutoplay !== null) 173 $pluginSettings['vimeoAutoplay'] = $vimeoAutoplay; 165 174 166 if ($vimeoHideDetails !== null)167 $pluginSettings['vimeoDetailsHide'] = $vimeoHideDetails;175 if ($vimeoHideDetails !== null) 176 $pluginSettings['vimeoDetailsHide'] = $vimeoHideDetails; 168 177 169 if ($youtubeAutoplay !== null)170 $pluginSettings['youtubeAutoplay'] = $youtubeAutoplay;178 if ($youtubeAutoplay !== null) 179 $pluginSettings['youtubeAutoplay'] = $youtubeAutoplay; 171 180 172 if ($youtubeHideDetails !== null)173 $pluginSettings['youtubeDetailsHide'] = $youtubeHideDetails;181 if ($youtubeHideDetails !== null) 182 $pluginSettings['youtubeDetailsHide'] = $youtubeHideDetails; 174 183 175 if ($showVideoDescription !== null)176 $pluginSettings['showVideoDescription'] = $showVideoDescription;184 if ($showVideoDescription !== null) 185 $pluginSettings['showVideoDescription'] = $showVideoDescription; 177 186 178 update_option('utubevideo_main_opts', $pluginSettings);187 update_option('utubevideo_main_opts', $pluginSettings); 179 188 180 return $this->response(null); 189 return $this->response(null); 190 } 191 catch (\Exception $e) 192 { 193 return $this->errorResponse($e->getMessage()); 194 } 181 195 } 182 196 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/VideoAPIv1.php
r2003169 r2103033 102 102 public function getItem(WP_REST_Request $req) 103 103 { 104 //check for valid videoID 105 if (!$req['videoID']) 106 return $this->errorResponse(__('Invalid video ID', 'utvg')); 107 108 //sanitize data 109 $videoID = sanitize_key($req['videoID']); 110 111 //get video 112 $videoRepository = new VideoRepository(); 113 $video = $videoRepository->getItem($videoID); 114 115 //check if video exists 116 if (!$video) 117 return $this->errorResponse(__('The specified video resource was not found', 'utvg')); 118 119 return $this->response($video); 104 try 105 { 106 //check for valid videoID 107 if ($req['videoID'] === false) 108 throw new \Exception(__('Invalid video ID', 'utvg')); 109 110 //sanitize data 111 $videoID = sanitize_key($req['videoID']); 112 113 //get video 114 $videoRepository = new VideoRepository(); 115 $video = $videoRepository->getItem($videoID); 116 117 //check if video exists 118 if (!$video) 119 throw new \Exception(__('Database Error: The video does not exist', 'utvg')); 120 121 return $this->response($video); 122 } 123 catch (\Exception $e) 124 { 125 return $this->errorResponse($e->getMessage()); 126 } 120 127 } 121 128 … … 123 130 public function createItem(WP_REST_Request $req) 124 131 { 125 //create repository 126 $videoRepository = new VideoRepository(); 127 128 //gather data fields 129 $sourceID = sanitize_text_field($req['sourceID']); 130 $title = sanitize_text_field($req['title']); 131 $description = sanitize_text_field($req['description']); 132 $quality = sanitize_text_field($req['quality']); 133 $showControls = ($req['controls'] ? 1 : 0); 134 $startTime = sanitize_text_field($req['startTime']); 135 $endTime = sanitize_text_field($req['endTime']); 136 $source = sanitize_text_field($req['source']); 137 $albumID = sanitize_key($req['albumID']); 138 $playlistID = sanitize_key($req['playlistID']); 139 140 //check for required fields 141 if ( 142 empty($sourceID) 143 || empty($quality) 144 || !isset($showControls) 145 || empty($source) 146 || !isset($albumID) 147 ) 148 return $this->errorResponse(__('Invalid parameters', 'utvg')); 149 150 //get next video sort position 151 $nextSortPosition = $videoRepository->getNextSortPositionByAlbum($albumID); 152 153 //check if value exists 154 if ($nextSortPosition === false) 155 return $this->errorResponse(__('A database error has occured', 'utvg')); 156 157 //get video thumbnail type 158 $thumbnailType = $videoRepository->getThumbnailTypeByAlbum($albumID); 159 160 if (!$thumbnailType) 161 return $this->errorResponse(__('A database error has occured', 'utvg')); 162 163 //insert new video 164 $videoID = $videoRepository->createItem( 165 $source, 166 $title, 167 $description, 168 $sourceID, 169 $thumbnailType, 170 $quality, 171 $showControls, 172 $startTime, 173 $endTime, 174 $nextSortPosition, 175 $albumID, 176 $playlistID 177 ); 178 179 //if successfull video creation.. 180 if ($videoID) 181 { 182 $thumbnail = new Thumbnail($videoID); 183 184 if (!$thumbnail->save()) 132 try 133 { 134 //create repository 135 $videoRepository = new VideoRepository(); 136 137 //gather data fields 138 $sourceID = sanitize_text_field($req['sourceID']); 139 $title = sanitize_text_field($req['title']); 140 $description = sanitize_text_field($req['description']); 141 $quality = sanitize_text_field($req['quality']); 142 $showControls = ($req['controls'] ? 1 : 0); 143 $startTime = sanitize_text_field($req['startTime']); 144 $endTime = sanitize_text_field($req['endTime']); 145 $source = sanitize_text_field($req['source']); 146 $albumID = sanitize_key($req['albumID']); 147 $playlistID = sanitize_key($req['playlistID']); 148 149 //check for required fields 150 if ( 151 empty($sourceID) 152 || empty($quality) 153 || !isset($showControls) 154 || empty($source) 155 || !isset($albumID) 156 ) 157 throw new \Exception(__('Invalid parameters', 'utvg')); 158 159 //get next video sort position 160 $nextSortPosition = $videoRepository->getNextSortPositionByAlbum($albumID); 161 162 //get video thumbnail type 163 $thumbnailType = $videoRepository->getThumbnailTypeByAlbum($albumID); 164 165 //insert new video 166 $videoID = $videoRepository->createItem( 167 $source, 168 $title, 169 $description, 170 $sourceID, 171 $thumbnailType, 172 $quality, 173 $showControls, 174 $startTime, 175 $endTime, 176 $nextSortPosition, 177 $albumID, 178 $playlistID 179 ); 180 181 //if successfull video creation.. 182 if ($videoID) 185 183 { 186 //delete video on failure 187 if (!$videoRepository->deleteItem($videoID)) 188 return $this->errorResponse(__('A database error has occurred', 'utvg')); 189 190 //return error message 191 return $this->errorResponse(__('Video thumbnail failed to save', 'utvg')); 184 $thumbnail = new Thumbnail($videoID); 185 $thumbnail->save(); 186 return $this->response(null, 201); 192 187 } 193 194 return $this->response(null, 201); 195 } 196 else 197 return $this->errorResponse(__('A database error has occurred', 'utvg')); 188 else 189 throw new \Exception(__('Database Error: Video creation failed', 'utvg')); 190 } 191 catch (\Exception $e) 192 { 193 //delete video from db due to error if needed 194 if (isset($videoID) && $videoID !== false) 195 $videoRepository->deleteItem($videoID); 196 197 return $this->errorResponse($e->getMessage()); 198 } 198 199 } 199 200 … … 201 202 public function deleteItem(WP_REST_Request $req) 202 203 { 203 //check for valid videoID 204 if (!$req['videoID']) 205 return $this->errorResponse(__('Invalid video ID', 'utvg')); 206 207 //sanitize data 208 $videoID = sanitize_key($req['videoID']); 209 210 //get video 211 $videoRepository = new VideoRepository(); 212 $video = $videoRepository->getItem($videoID); 213 214 //check if video exists 215 if (!$video) 216 return $this->errorResponse(__('Video does not exist', 'utvg')); 217 218 //delete video 219 if (!$videoRepository->deleteItem($videoID)) 220 return $this->errorResponse(__('A database error has occurred', 'utvg')); 221 222 //delete video thumbnail 223 $thumbnailPath = wp_upload_dir(); 224 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 225 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 226 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 227 228 return $this->response(null); 204 try 205 { 206 //check for valid videoID 207 if (!$req['videoID']) 208 throw new \Exception(__('Invalid video ID', 'utvg')); 209 210 //sanitize data 211 $videoID = sanitize_key($req['videoID']); 212 213 //get video 214 $videoRepository = new VideoRepository(); 215 $video = $videoRepository->getItem($videoID); 216 217 //check if video exists 218 if (!$video) 219 throw new \Exception(__('Database Error: Video does not exist', 'utvg')); 220 221 //delete video 222 if (!$videoRepository->deleteItem($videoID)) 223 throw new \Exception(__('Database Error: Failed to delete video', 'utvg')); 224 225 //delete video thumbnail 226 $thumbnailPath = wp_upload_dir(); 227 $thumbnailPath = $thumbnailPath['basedir'] . '/utubevideo-cache/'; 228 unlink($thumbnailPath . $video->getThumbnail() . '.jpg'); 229 unlink($thumbnailPath . $video->getThumbnail() . '@2x.jpg'); 230 231 return $this->response(null); 232 } 233 catch (\Exception $e) 234 { 235 return $this->errorResponse($e->getMessage()); 236 } 229 237 } 230 238 … … 232 240 public function updateItem(WP_REST_Request $req) 233 241 { 234 //check for valid videoID235 if (!$req['videoID'])236 return $this->errorResponse(__('Invalid video ID', 'utvg'));237 238 //gather data fields239 $videoID = sanitize_key($req['videoID']); 240 $title = sanitize_text_field($req['title']);241 $description = sanitize_text_field($req['description']);242 $quality = sanitize_text_field($req['quality']);243 $startTime = sanitize_text_field($req['startTime']);244 $endTime = sanitize_text_field($req['endTime']);245 246 if (isset($req['controls']))247 $controls = $req['controls'] ? 1 : 0; 248 else249 $controls = null;250 251 if (isset($req['published']))252 $published = $req['published'] ? 1 : 0; 253 else254 $published = null;255 256 $albumID = sanitize_key($req['albumID']);257 $currentTime = current_time('timestamp'); 258 $skipThumbnailRender = $req['skipThumbnailRender'] ? true : false;259 260 //create updatedFields array261 $updatedFields = []; 262 263 //set optional update fields264 if ($title != null) 265 $updatedFields['VID_NAME'] = $title;266 267 if ($description != null)268 $updatedFields['VID_DESCRIPTION'] = $description; 269 270 if ($quality != null)271 $updatedFields['VID_QUALITY'] = $quality; 272 273 if ($controls !== null)274 $updatedFields['VID_CHROME'] = $controls; 275 276 if ($startTime != null)277 $updatedFields['VID_STARTTIME'] = $startTime; 278 279 if ($endTime != null)280 $updatedFields['VID_ENDTIME'] = $endTime; 281 282 if ($published !== null)283 $updatedFields['VID_PUBLISH'] = $published; 284 285 if ($albumID != null)286 $updatedFields['ALB_ID'] = $albumID; 287 288 //set required update fields289 $updatedFields['VID_UPDATEDATE'] = $currentTime; 290 $updatedFields['VID_THUMBTYPE'] = 'default';291 292 //update video293 $videoRepository = new VideoRepository(); 294 295 if ($videoRepository->updateItem($videoID, $updatedFields))296 { 297 if ( !$skipThumbnailRender)242 try 243 { 244 //check for valid videoID 245 if (!$req['videoID']) 246 throw new \Exception(__('Invalid video ID', 'utvg')); 247 248 //gather data fields 249 $videoID = sanitize_key($req['videoID']); 250 $title = sanitize_text_field($req['title']); 251 $description = sanitize_text_field($req['description']); 252 $quality = sanitize_text_field($req['quality']); 253 $startTime = sanitize_text_field($req['startTime']); 254 $endTime = sanitize_text_field($req['endTime']); 255 256 if (isset($req['controls'])) 257 $controls = $req['controls'] ? 1 : 0; 258 else 259 $controls = null; 260 261 if (isset($req['published'])) 262 $published = $req['published'] ? 1 : 0; 263 else 264 $published = null; 265 266 $albumID = sanitize_key($req['albumID']); 267 $currentTime = current_time('timestamp'); 268 $skipThumbnailRender = $req['skipThumbnailRender'] ? true : false; 269 270 //create updatedFields array 271 $updatedFields = []; 272 273 //set optional update fields 274 if ($title != null) 275 $updatedFields['VID_NAME'] = $title; 276 277 if ($description != null) 278 $updatedFields['VID_DESCRIPTION'] = $description; 279 280 if ($quality != null) 281 $updatedFields['VID_QUALITY'] = $quality; 282 283 if ($controls !== null) 284 $updatedFields['VID_CHROME'] = $controls; 285 286 if ($startTime != null) 287 $updatedFields['VID_STARTTIME'] = $startTime; 288 289 if ($endTime != null) 290 $updatedFields['VID_ENDTIME'] = $endTime; 291 292 if ($published !== null) 293 $updatedFields['VID_PUBLISH'] = $published; 294 295 if ($albumID != null) 296 $updatedFields['ALB_ID'] = $albumID; 297 298 //set required update fields 299 $updatedFields['VID_UPDATEDATE'] = $currentTime; 300 $updatedFields['VID_THUMBTYPE'] = 'default'; 301 302 //update video 303 $videoRepository = new VideoRepository(); 304 305 if ($videoRepository->updateItem($videoID, $updatedFields)) 298 306 { 299 //resave thumbnail 300 $thumbnail = new Thumbnail($videoID); 301 302 if (!$thumbnail->save()) 303 return $this->errorResponse(__('Video thumbnail refresh failed', 'utvg')); 307 if (!$skipThumbnailRender) 308 { 309 //refresh video thumbnail 310 $thumbnail = new Thumbnail($videoID); 311 $thumbnail->save(); 312 } 313 314 return $this->response(null); 304 315 } 305 306 return $this->response(null); 307 } 308 else 309 return $this->errorResponse(__('A database error has occurred', 'utvg')); 316 else 317 throw new \Exception(__('Database Error: Failed to update video', 'utvg')); 318 } 319 catch (\Exception $e) 320 { 321 return $this->errorResponse($e->getMessage()); 322 } 310 323 } 311 324 … … 313 326 public function getAllItems(WP_REST_Request $req) 314 327 { 315 //check for valid videoID 316 if (!$req['albumID']) 317 return $this->errorResponse(__('Invalid album ID', 'utvg')); 318 319 //sanitize data 320 $albumID = sanitize_key($req['albumID']); 321 322 //get videos 323 $videoRepository = new VideoRepository(); 324 $videos = $videoRepository->getItemsByAlbum($albumID); 325 326 return $this->response($videos); 328 try 329 { 330 //check for valid videoID 331 if ($req['albumID'] === false) 332 throw new \Exception(__('Invalid album ID', 'utvg')); 333 334 //sanitize data 335 $albumID = sanitize_key($req['albumID']); 336 337 //get videos 338 $videoRepository = new VideoRepository(); 339 $videos = $videoRepository->getItemsByAlbum($albumID); 340 341 return $this->response($videos); 342 } 343 catch (\Exception $e) 344 { 345 return $this->errorResponse($e->getMessage()); 346 } 327 347 } 328 348 … … 330 350 public function getAnyAllItems(WP_REST_Request $req) 331 351 { 332 //get videos 333 $videoRepository = new VideoRepository(); 334 $videos = $videoRepository->getItems(); 335 336 return $this->response($videos); 352 try 353 { 354 //get videos 355 $videoRepository = new VideoRepository(); 356 $videos = $videoRepository->getItems(); 357 358 return $this->response($videos); 359 } 360 catch (\Exception $e) 361 { 362 return $this->errorResponse($e->getMessage()); 363 } 337 364 } 338 365 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/VideoOrderAPIv1.php
r2003169 r2103033 33 33 public function updateItem(WP_REST_Request $req) 34 34 { 35 global $wpdb; 35 try 36 { 37 global $wpdb; 36 38 37 if (!$req['videoids'])38 return $this->errorResponse(__('Invalid data', 'utvg'));39 if (!$req['videoids']) 40 return $this->errorResponse(__('Invalid data', 'utvg')); 39 41 40 $videoCount = count($req['videoids']);42 $videoCount = count($req['videoids']); 41 43 42 for ($i = 0; $i < $videoCount; $i++) 44 for ($i = 0; $i < $videoCount; $i++) 45 { 46 $videoID = sanitize_key($req['videoids'][$i]); 47 48 if (!$videoID) 49 return $this->errorResponse(__('Invalid data value', 'utvg')); 50 51 $wpdb->update( 52 $wpdb->prefix . 'utubevideo_video', 53 ['VID_POS' => $i], 54 ['VID_ID' => $videoID] 55 ); 56 } 57 58 return $this->response(null); 59 } 60 catch (\Exception $e) 43 61 { 44 $videoID = sanitize_key($req['videoids'][$i]); 45 46 if (!$videoID) 47 return $this->errorResponse(__('Invalid data value', 'utvg')); 48 49 $wpdb->update( 50 $wpdb->prefix . 'utubevideo_video', 51 ['VID_POS' => $i], 52 ['VID_ID' => $videoID] 53 ); 54 } 55 56 return $this->response(null); 62 return $this->errorResponse($e->getMessage()); 63 } 57 64 } 58 65 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/VimeoPlaylistAPIv1.php
r2003169 r2103033 44 44 public function getAllItems(WP_REST_Request $req) 45 45 { 46 //initialize return object 47 $returnData = new stdClass(); 48 $returnData->title = ''; 49 $returnData->videos = []; 46 try 47 { 48 //initialize return object 49 $returnData = new stdClass(); 50 $returnData->title = ''; 51 $returnData->videos = []; 50 52 51 //check for valid sourceID52 if (!$req['sourceID'])53 return $this->errorResponse(__('Invalid source ID', 'utvg'));53 //check for valid sourceID 54 if (!$req['sourceID']) 55 return $this->errorResponse(__('Invalid source ID', 'utvg')); 54 56 55 //gather data fields56 $sourceID = sanitize_text_field($req['sourceID']);57 //gather data fields 58 $sourceID = sanitize_text_field($req['sourceID']); 57 59 58 //retrieve playlist base data 59 $data = Utility::queryAPI( 60 'https://vimeo.com/api/v2/album/' 61 . $sourceID 62 . '/info.json' 63 ); 64 65 //check data fetch 66 if (!$data) 67 return $this->errorResponse(__('Vimeo API call failed', 'utvg')); 68 69 //retrieve playlist title 70 if (isset($data->title)) 71 $returnData->title = $data->title; 72 73 //retreive playlist total videos 74 if ($data->total_videos >= 60) 75 $pages = 3; 76 else 77 $pages = ceil($data->total_videos / 20); 78 79 //get base videos data 80 $baseVideoData = []; 81 82 for ($i = 1; $i <= $pages; $i++) 83 { 84 $videoData = Utility::queryAPI( 60 //retrieve playlist base data 61 $data = Utility::queryAPI( 85 62 'https://vimeo.com/api/v2/album/' 86 63 . $sourceID 87 . '/videos.json?page=' 88 . $i 64 . '/info.json' 89 65 ); 90 66 91 if (!$videoData) 67 //check data fetch 68 if (!$data) 92 69 return $this->errorResponse(__('Vimeo API call failed', 'utvg')); 93 70 94 $baseVideoData = array_merge($baseVideoData, $videoData); 71 //retrieve playlist title 72 if (isset($data->title)) 73 $returnData->title = $data->title; 74 75 //retreive playlist total videos 76 if ($data->total_videos >= 60) 77 $pages = 3; 78 else 79 $pages = ceil($data->total_videos / 20); 80 81 //get base videos data 82 $baseVideoData = []; 83 84 for ($i = 1; $i <= $pages; $i++) 85 { 86 $videoData = Utility::queryAPI( 87 'https://vimeo.com/api/v2/album/' 88 . $sourceID 89 . '/videos.json?page=' 90 . $i 91 ); 92 93 if (!$videoData) 94 return $this->errorResponse(__('Vimeo API call failed', 'utvg')); 95 96 $baseVideoData = array_merge($baseVideoData, $videoData); 97 } 98 99 //filter videos and add them to return data 100 foreach ($baseVideoData as $video) 101 { 102 $duration = gmdate('H:i:s', $video->duration); 103 104 //map video 105 $videoData = new stdClass(); 106 $videoData->sourceID = $video->id; 107 $videoData->title = $video->title; 108 $videoData->description = ''; 109 $videoData->thumbnail = $video->thumbnail_large; 110 $videoData->duration = $duration; 111 112 $returnData->videos[] = $videoData; 113 } 114 115 return $this->response($returnData); 95 116 } 96 97 //filter videos and add them to return data 98 foreach ($baseVideoData as $video) 117 catch (\Exception $e) 99 118 { 100 $duration = gmdate('H:i:s', $video->duration); 101 102 //map video 103 $videoData = new stdClass(); 104 $videoData->sourceID = $video->id; 105 $videoData->title = $video->title; 106 $videoData->description = ''; 107 $videoData->thumbnail = $video->thumbnail_large; 108 $videoData->duration = $duration; 109 110 $returnData->videos[] = $videoData; 119 return $this->errorResponse($e->getMessage()); 111 120 } 112 113 return $this->response($returnData);114 121 } 115 122 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/API/YouTubePlaylistAPIv1.php
r2003169 r2103033 43 43 public function getAllItems(WP_REST_Request $req) 44 44 { 45 //initialize return object 46 $returnData = new stdClass(); 47 $returnData->title = ''; 48 $returnData->videos = []; 45 try 46 { 47 //initialize return object 48 $returnData = new stdClass(); 49 $returnData->title = ''; 50 $returnData->videos = []; 49 51 50 //check for a possibly valid api key before continuing51 if (Utility::isNullOrEmpty($this->_options['youtubeApiKey']))52 return $this->errorResponse(__('YouTube API key is missing', 'utvg'));52 //check for a possibly valid api key before continuing 53 if (Utility::isNullOrEmpty($this->_options['youtubeApiKey'])) 54 return $this->errorResponse(__('YouTube API key is missing', 'utvg')); 53 55 54 //check for valid sourceID55 if (!$req['sourceID'])56 return $this->errorResponse(__('Invalid source ID', 'utvg'));56 //check for valid sourceID 57 if (!$req['sourceID']) 58 return $this->errorResponse(__('Invalid source ID', 'utvg')); 57 59 58 //gather data fields59 $sourceID = sanitize_text_field($req['sourceID']);60 //gather data fields 61 $sourceID = sanitize_text_field($req['sourceID']); 60 62 61 //retrieve playlist title 62 $data = Utility::queryAPI( 63 'https://www.googleapis.com/youtube/v3/playlists?key=' 64 . $this->_options['youtubeApiKey'] 65 . '&part=snippet&id=' 66 . $sourceID 67 ); 68 69 if ($data) 70 { 71 if (isset($data->items[0]->snippet->title)) 72 $returnData->title = $data->items[0]->snippet->title; 73 } 74 75 //get base video data 76 $nextPageToken = true; 77 $baseVideosData = []; 78 79 while ($nextPageToken) 80 { 63 //retrieve playlist title 81 64 $data = Utility::queryAPI( 82 'https://www.googleapis.com/youtube/v3/playlist Items?key='65 'https://www.googleapis.com/youtube/v3/playlists?key=' 83 66 . $this->_options['youtubeApiKey'] 84 . '&part=snippet ,contentDetails,status&maxResults=50&playlistId='67 . '&part=snippet&id=' 85 68 . $sourceID 86 . (strlen($nextPageToken) > 1 ? '&pageToken=' . $nextPageToken : '')87 69 ); 88 70 89 71 if ($data) 90 72 { 91 if (isset($data->items)) 92 $baseVideosData = array_merge($baseVideosData, $data->items); 73 if (isset($data->items[0]->snippet->title)) 74 $returnData->title = $data->items[0]->snippet->title; 75 } 93 76 94 if (isset($data->nextPageToken)) 95 $nextPageToken = $data->nextPageToken; 96 else 97 $nextPageToken = false; 77 //get base video data 78 $nextPageToken = true; 79 $baseVideosData = []; 80 81 while ($nextPageToken) 82 { 83 $data = Utility::queryAPI( 84 'https://www.googleapis.com/youtube/v3/playlistItems?key=' 85 . $this->_options['youtubeApiKey'] 86 . '&part=snippet,contentDetails,status&maxResults=50&playlistId=' 87 . $sourceID 88 . (strlen($nextPageToken) > 1 ? '&pageToken=' . $nextPageToken : '') 89 ); 90 91 if ($data) 92 { 93 if (isset($data->items)) 94 $baseVideosData = array_merge($baseVideosData, $data->items); 95 96 if (isset($data->nextPageToken)) 97 $nextPageToken = $data->nextPageToken; 98 else 99 $nextPageToken = false; 100 } 98 101 } 102 103 //create search id string to query video details for filtering info 104 $videoIDsList = []; 105 $videoIDSetList = []; 106 107 foreach ($baseVideosData as $video) 108 { 109 if (isset($video->snippet->resourceId->videoId)) 110 $videoIDsList[] = $video->snippet->resourceId->videoId; 111 112 if (count($videoIDsList) == 50) 113 { 114 $videoIDSetList[] = $videoIDsList; 115 $videoIDsList = []; 116 } 117 } 118 119 if (count($videoIDsList) > 0) 120 $videoIDSetList[] = $videoIDsList; 121 122 $finalVideoData = []; 123 124 //get final video data to filter with 125 foreach ($videoIDSetList as $list) 126 { 127 $data = Utility::queryAPI( 128 'https://www.googleapis.com/youtube/v3/videos?key=' 129 . $this->_options['youtubeApiKey'] 130 . '&part=contentDetails,snippet,status&id=' 131 . implode(',', $list) 132 ); 133 134 if ($data && isset($data->items)) 135 $finalVideoData = array_merge($finalVideoData, $data->items); 136 } 137 138 //filter videos and add them to return data 139 foreach ($finalVideoData as $video) 140 { 141 if ( 142 !Utility::hasValue($video->status->uploadStatus, 'rejected') 143 && Utility::hasValue($video->status->embeddable, true) 144 && Utility::hasValue($video->status->privacyStatus, 'public') 145 ) 146 { 147 //convert duration 148 $duration = new DateTime('@0'); 149 $duration->add(new DateInterval($video->contentDetails->duration)); 150 $duration = $duration->format('H:i:s'); 151 152 //get best thumbnail 153 $thumbnailSources = $video->snippet->thumbnails; 154 end($thumbnailSources); 155 $thumbnailKey = key($thumbnailSources); 156 $thumbnailURL = $thumbnailSources->{$thumbnailKey}->url; 157 158 //map video 159 $videoData = new stdClass(); 160 $videoData->sourceID = $video->id; 161 $videoData->title = $video->snippet->title; 162 $videoData->description = $video->snippet->description; 163 $videoData->thumbnail = $thumbnailURL; 164 $videoData->duration = $duration; 165 166 $returnData->videos[] = $videoData; 167 } 168 } 169 170 return $this->response($returnData); 99 171 } 100 101 //create search id string to query video details for filtering info 102 $videoIDsList = []; 103 $videoIDSetList = []; 104 105 foreach ($baseVideosData as $video) 172 catch (\Exception $e) 106 173 { 107 if (isset($video->snippet->resourceId->videoId)) 108 $videoIDsList[] = $video->snippet->resourceId->videoId; 109 110 if (count($videoIDsList) == 50) 111 { 112 $videoIDSetList[] = $videoIDsList; 113 $videoIDsList = []; 114 } 174 return $this->errorResponse($e->getMessage()); 115 175 } 116 117 if (count($videoIDsList) > 0)118 $videoIDSetList[] = $videoIDsList;119 120 $finalVideoData = [];121 122 //get final video data to filter with123 foreach ($videoIDSetList as $list)124 {125 $data = Utility::queryAPI(126 'https://www.googleapis.com/youtube/v3/videos?key='127 . $this->_options['youtubeApiKey']128 . '&part=contentDetails,snippet,status&id='129 . implode(',', $list)130 );131 132 if ($data && isset($data->items))133 $finalVideoData = array_merge($finalVideoData, $data->items);134 }135 136 //filter videos and add them to return data137 foreach ($finalVideoData as $video)138 {139 if (140 !Utility::hasValue($video->status->uploadStatus, 'rejected')141 && Utility::hasValue($video->status->embeddable, true)142 && Utility::hasValue($video->status->privacyStatus, 'public')143 )144 {145 //convert duration146 $duration = new DateTime('@0');147 $duration->add(new DateInterval($video->contentDetails->duration));148 $duration = $duration->format('H:i:s');149 150 //get best thumbnail151 $thumbnailSources = $video->snippet->thumbnails;152 end($thumbnailSources);153 $thumbnailKey = key($thumbnailSources);154 $thumbnailURL = $thumbnailSources->{$thumbnailKey}->url;155 156 //map video157 $videoData = new stdClass();158 $videoData->sourceID = $video->id;159 $videoData->title = $video->snippet->title;160 $videoData->description = $video->snippet->description;161 $videoData->thumbnail = $thumbnailURL;162 $videoData->duration = $duration;163 164 $returnData->videos[] = $videoData;165 }166 }167 168 return $this->response($returnData);169 176 } 170 177 } -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/Repository/VideoRepository.php
r2003169 r2103033 204 204 205 205 //check for valid albumID 206 if ( !$albumID)207 return false;206 if ($albumID === false) 207 throw new \Exception(__('Database Error: Invalid album ID', 'utvg')); 208 208 209 209 $query = $wpdb->prepare( … … 217 217 $nextSortPosition = $wpdb->get_var($query); 218 218 219 if ( !$nextSortPosition)219 if ($nextSortPosition === false) 220 220 $nextSortPosition = 0; 221 221 … … 223 223 } 224 224 225 public function getThumbnailTypeByAlbum($albumID )225 public function getThumbnailTypeByAlbum($albumID = false) 226 226 { 227 227 global $wpdb; 228 228 229 229 //check for valid albumID 230 if ( !$albumID)231 return false;230 if ($albumID === false) 231 throw new \Exception(__('Database Error: Invalid album ID', 'utvg')); 232 232 233 233 $query = $wpdb->prepare( … … 241 241 $thumbnailType = $wpdb->get_var($query); 242 242 243 if ( $thumbnailType)244 return $thumbnailType;245 246 return false;247 } 248 249 public function deleteItemsByAlbum($albumID )243 if (!$thumbnailType) 244 $thumbnailType = 'rectangle'; 245 246 return $thumbnailType; 247 } 248 249 public function deleteItemsByAlbum($albumID = false) 250 250 { 251 251 global $wpdb; … … 255 255 $wpdb->prefix . 'utubevideo_video', 256 256 ['ALB_ID' => $albumID] 257 ) != false)257 ) !== false) 258 258 return true; 259 259 -
utubevideo-gallery/trunk/class/CodeClouds/UTubeVideoGallery/Service/Thumbnail.php
r2003169 r2103033 29 29 { 30 30 if (!$this->_videoID) 31 return false;31 throw new \Exception(__('Thumbnail Error: Invalid Video ID', 'utvg')); 32 32 33 33 $this->setThumbnailData(); 34 34 $this->setSourceURL(); 35 36 if (!$this->saveThumbnail()) 37 return false; 38 39 return true; 35 $this->saveThumbnail(); 40 36 } 41 37 … … 51 47 52 48 if (is_wp_error($image)) 53 return false;//image magick or gd is required or bad api key49 throw new \Exception(__('Imagick or GD may be missing or bad YouTube API Key', 'utvg')); 54 50 } 55 51 … … 88 84 $image->save($this->_destinationPath . $baseFilename . '.jpg'); 89 85 } 90 91 return true;92 86 } 93 87 … … 106 100 107 101 if (!$thumbnailData) 108 return false;102 throw new \Exception(__('Database Error: Can\'t determine video information', 'utvg')); 109 103 110 104 $thumbnailData = $thumbnailData[0]; … … 121 115 elseif ($this->_videoSource == 'vimeo') 122 116 $this->_sourceURL = $this->getVimeoSource(); 117 else 118 throw new \Exception(__('Thumbnail Error: Invalid source type', 'utvg')); 123 119 } 124 120 … … 131 127 132 128 if (!$data) 133 return false;129 throw new \Exception(__('Thumbnail Error: Can\'t contact the YouTube API. Ensure your API key is set.', 'utvg')); 134 130 135 131 $thumbnailSources = $data->items[0]->snippet->thumbnails; … … 146 142 147 143 if (!$data) 148 return false;144 throw new \Exception(__('Thumbnail Error: Can\'t contact the Vimeo API', 'utvg')); 149 145 150 146 $data = $data[0]; 151 152 147 return $data->thumbnail_large; 153 148 } … … 156 151 { 157 152 $data = wp_remote_get($query); 153 154 if (is_wp_error($data)) 155 throw new \Exception($data->get_error_message()); 156 158 157 return json_decode($data['body']); 159 158 } -
utubevideo-gallery/trunk/readme.txt
r2087886 r2103033 3 3 Donate link: https://www.codeclouds.net/utubevideo-gallery/ 4 4 Tags: video, gallery, youtube, vimeo 5 Requires at least: 4. 4.05 Requires at least: 4.9.0 6 6 Requires PHP: 7.0 7 7 Tested up to: 5.2.0 8 Stable tag: 2.0. 38 Stable tag: 2.0.4 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 92 92 93 93 == Changelog == 94 95 = 2.0.4 = 96 * Fixed issue where empty albums would refuse to delete 97 * Added detailed error handling to video api endpoints 94 98 95 99 = 2.0.3 = -
utubevideo-gallery/trunk/utubevideo.php
r2087886 r2103033 4 4 Plugin URI: http://www.codeclouds.net/ 5 5 Description: This plugin allows you to create YouTube video galleries to embed in a WordPress site. 6 Version: 2.0. 36 Version: 2.0.4 7 7 Author: Dustin Scarberry 8 8 Author URI: http://www.codeclouds.net/ … … 46 46 { 47 47 private $_options; 48 const CURRENT_VERSION = '2.0. 3';48 const CURRENT_VERSION = '2.0.4'; 49 49 50 50 public function __construct()
Note: See TracChangeset
for help on using the changeset viewer.