[44] | 1 | <?php
|
---|
| 2 | /**
|
---|
| 3 | * Copyright 2006, 2007, 2008, 2009 Eric D. Hough (http://ehough.com)
|
---|
| 4 | *
|
---|
| 5 | * This file is part of TubePress (http://tubepress.org)
|
---|
| 6 | *
|
---|
| 7 | * TubePress is free software: you can redistribute it and/or modify
|
---|
| 8 | * it under the terms of the GNU General Public License as published by
|
---|
| 9 | * the Free Software Foundation, either version 3 of the License, or
|
---|
| 10 | * (at your option) any later version.
|
---|
| 11 | *
|
---|
| 12 | * TubePress is distributed in the hope that it will be useful,
|
---|
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
| 15 | * GNU General Public License for more details.
|
---|
| 16 | *
|
---|
| 17 | * You should have received a copy of the GNU General Public License
|
---|
| 18 | * along with TubePress. If not, see <http://www.gnu.org/licenses/>.
|
---|
| 19 | *
|
---|
| 20 | */
|
---|
| 21 |
|
---|
| 22 | function_exists('tubepress_load_classes')
|
---|
| 23 | || require(dirname(__FILE__) . '/../../../../tubepress_classloader.php');
|
---|
| 24 | tubepress_load_classes(array('org_tubepress_options_reference_OptionsReference',
|
---|
| 25 | 'org_tubepress_options_Type',
|
---|
| 26 | 'org_tubepress_options_category_Embedded',
|
---|
| 27 | 'org_tubepress_options_category_Gallery',
|
---|
| 28 | 'org_tubepress_options_category_Advanced',
|
---|
| 29 | 'org_tubepress_options_category_Feed',
|
---|
| 30 | 'org_tubepress_options_category_Widget',
|
---|
| 31 | 'org_tubepress_options_category_Display',
|
---|
| 32 | 'org_tubepress_options_category_Meta'));
|
---|
| 33 |
|
---|
| 34 | /**
|
---|
| 35 | * Simple implementation of options reference
|
---|
| 36 | *
|
---|
| 37 | */
|
---|
| 38 | class org_tubepress_options_reference_SimpleOptionsReference implements org_tubepress_options_reference_OptionsReference
|
---|
| 39 | {
|
---|
| 40 |
|
---|
| 41 | private $_options = array(
|
---|
| 42 | org_tubepress_options_Type::COLOR => array(
|
---|
| 43 | org_tubepress_options_category_Embedded::PLAYER_COLOR => "999999",
|
---|
| 44 | org_tubepress_options_category_Embedded::PLAYER_HIGHLIGHT => "FFFFFF"
|
---|
| 45 | ),
|
---|
| 46 | org_tubepress_options_Type::MODE => array(
|
---|
| 47 | org_tubepress_options_category_Gallery::MODE => "recently_featured"
|
---|
| 48 | ),
|
---|
| 49 | org_tubepress_options_Type::TEXT => array(
|
---|
| 50 | org_tubepress_options_category_Advanced::DATEFORMAT => "M j, Y",
|
---|
| 51 | org_tubepress_options_category_Advanced::KEYWORD => "tubepress",
|
---|
| 52 | org_tubepress_options_category_Gallery::FAVORITES_VALUE => "mrdeathgod",
|
---|
| 53 | org_tubepress_options_category_Gallery::PLAYLIST_VALUE => "D2B04665B213AE35",
|
---|
| 54 | org_tubepress_options_category_Gallery::TAG_VALUE => "stewart daily show",
|
---|
| 55 | org_tubepress_options_category_Gallery::USER_VALUE => "3hough",
|
---|
| 56 | org_tubepress_options_category_Feed::CLIENT_KEY => "ytapi-EricHough-TubePress-ki6oq9tc-0",
|
---|
| 57 | org_tubepress_options_category_Feed::DEV_KEY => "AI39si5uUzupiQW9bpzGqZRrhvqF3vBgRqL-I_28G1zWozmdNJlskzMDQEhpZ-l2RqGf_6CNWooL96oJZRrqKo-eJ9QO_QppMg",
|
---|
| 58 | org_tubepress_options_category_Widget::TITLE => "TubePress",
|
---|
| 59 | org_tubepress_options_category_Widget::TAGSTRING => "[tubepress thumbHeight='105', thumbWidth='135']"
|
---|
| 60 | ),
|
---|
| 61 | org_tubepress_options_Type::BOOL => array(
|
---|
| 62 | org_tubepress_options_category_Advanced::DEBUG_ON => true,
|
---|
| 63 | org_tubepress_options_category_Advanced::NOFOLLOW_LINKS => true,
|
---|
| 64 | org_tubepress_options_category_Advanced::RANDOM_THUMBS => true,
|
---|
| 65 | org_tubepress_options_category_Display::RELATIVE_DATES => false,
|
---|
| 66 | org_tubepress_options_category_Display::PAGINATE_ABOVE => true,
|
---|
| 67 | org_tubepress_options_category_Display::PAGINATE_BELOW => true,
|
---|
| 68 | org_tubepress_options_category_Embedded::AUTOPLAY => false,
|
---|
| 69 | org_tubepress_options_category_Embedded::BORDER => false,
|
---|
| 70 | org_tubepress_options_category_Embedded::GENIE => false,
|
---|
| 71 | org_tubepress_options_category_Embedded::LOOP => false,
|
---|
| 72 | org_tubepress_options_category_Embedded::SHOW_INFO => false,
|
---|
| 73 | org_tubepress_options_category_Embedded::SHOW_RELATED => true,
|
---|
| 74 | org_tubepress_options_category_Embedded::FULLSCREEN => true,
|
---|
| 75 | org_tubepress_options_category_Meta::AUTHOR => false,
|
---|
| 76 | org_tubepress_options_category_Meta::CATEGORY => false,
|
---|
| 77 | org_tubepress_options_category_Meta::DESCRIPTION => false,
|
---|
| 78 | org_tubepress_options_category_Meta::ID => false,
|
---|
| 79 | org_tubepress_options_category_Meta::LENGTH => true,
|
---|
| 80 | org_tubepress_options_category_Meta::RATING => false,
|
---|
| 81 | org_tubepress_options_category_Meta::RATINGS => false,
|
---|
| 82 | org_tubepress_options_category_Meta::TAGS => false,
|
---|
| 83 | org_tubepress_options_category_Meta::TITLE => true,
|
---|
| 84 | org_tubepress_options_category_Meta::UPLOADED => false,
|
---|
| 85 | org_tubepress_options_category_Meta::URL => false,
|
---|
| 86 | org_tubepress_options_category_Meta::VIEWS => true,
|
---|
| 87 | org_tubepress_options_category_Feed::CACHE_ENABLED => true,
|
---|
| 88 | org_tubepress_options_category_Feed::EMBEDDABLE_ONLY => true
|
---|
| 89 | ),
|
---|
| 90 | org_tubepress_options_Type::INTEGRAL => array(
|
---|
| 91 | org_tubepress_options_category_Display::DESC_LIMIT => 80,
|
---|
| 92 | org_tubepress_options_category_Display::RESULTS_PER_PAGE => 20,
|
---|
| 93 | org_tubepress_options_category_Display::THUMB_HEIGHT => 90,
|
---|
| 94 | org_tubepress_options_category_Display::THUMB_WIDTH => 120,
|
---|
| 95 | org_tubepress_options_category_Embedded::EMBEDDED_HEIGHT => 350,
|
---|
| 96 | org_tubepress_options_category_Embedded::EMBEDDED_WIDTH => 425
|
---|
| 97 | ),
|
---|
| 98 | org_tubepress_options_Type::TIME_FRAME => array(
|
---|
| 99 | org_tubepress_options_category_Gallery::MOST_VIEWED_VALUE => "today",
|
---|
| 100 | org_tubepress_options_category_Gallery::TOP_RATED_VALUE => "today"
|
---|
| 101 | ),
|
---|
| 102 | org_tubepress_options_Type::ORDER => array(
|
---|
| 103 | org_tubepress_options_category_Display::ORDER_BY => "viewCount",
|
---|
| 104 | ),
|
---|
| 105 | org_tubepress_options_Type::PLAYER => array(
|
---|
| 106 | org_tubepress_options_category_Display::CURRENT_PLAYER_NAME => "normal",
|
---|
| 107 | ),
|
---|
| 108 | org_tubepress_options_Type::QUALITY => array(
|
---|
| 109 | org_tubepress_options_category_Embedded::QUALITY => "normal"
|
---|
| 110 | ),
|
---|
| 111 | org_tubepress_options_Type::SAFE_SEARCH => array(
|
---|
| 112 | org_tubepress_options_category_Feed::FILTER => "moderate"
|
---|
| 113 | ),
|
---|
| 114 | org_tubepress_options_Type::PLAYER_IMPL => array(
|
---|
| 115 | org_tubepress_options_category_Embedded::PLAYER_IMPL => "youtube"
|
---|
| 116 | )
|
---|
| 117 | );
|
---|
| 118 |
|
---|
| 119 | function getAllOptionNames()
|
---|
| 120 | {
|
---|
| 121 | $results = array();
|
---|
| 122 | foreach ($this->_options as $optionGroup) {
|
---|
| 123 | $results = array_merge($results, array_keys($optionGroup));
|
---|
| 124 | }
|
---|
| 125 | return $results;
|
---|
| 126 | }
|
---|
| 127 |
|
---|
| 128 | function getCategory($optionName)
|
---|
| 129 | {
|
---|
| 130 | foreach ($this->getOptionCategoryNames() as $optionCategoryName) {
|
---|
| 131 | if (in_array($optionName, $this->getOptionNamesForCategory($optionCategoryName))) {
|
---|
| 132 | return $optionCategoryName;
|
---|
| 133 | }
|
---|
| 134 | }
|
---|
| 135 | }
|
---|
| 136 |
|
---|
| 137 | function getDefaultValue($optionName)
|
---|
| 138 | {
|
---|
| 139 | foreach ($this->_options as $optionType) {
|
---|
| 140 | if (array_key_exists($optionName, $optionType)) {
|
---|
| 141 | return $optionType[$optionName];
|
---|
| 142 | }
|
---|
| 143 | }
|
---|
| 144 | return NULL;
|
---|
| 145 | }
|
---|
| 146 |
|
---|
| 147 | function getOptionCategoryNames()
|
---|
| 148 | {
|
---|
| 149 | return array("gallery", "display", "embedded", "meta", "feed", "advanced", "widget");
|
---|
| 150 | }
|
---|
| 151 |
|
---|
| 152 | function getOptionNamesForCategory($category)
|
---|
| 153 | {
|
---|
| 154 | $className = "org_tubepress_options_category_" . ucwords($category);
|
---|
| 155 | return $this->_getConstantsForClass($className);
|
---|
| 156 | }
|
---|
| 157 |
|
---|
| 158 | function getValidEnumValues($optionType)
|
---|
| 159 | {
|
---|
| 160 | switch ($optionType) {
|
---|
| 161 | case org_tubepress_options_Type::PLAYER:
|
---|
| 162 | return array("normal", "popup","shadowbox",'jqmodal', "youtube");
|
---|
| 163 | case org_tubepress_options_Type::ORDER:
|
---|
| 164 | return array("relevance", "viewCount", "rating", "updated", "random");
|
---|
| 165 | case org_tubepress_options_Type::QUALITY:
|
---|
| 166 | return array("normal", "high", "higher", "highest");
|
---|
| 167 | case org_tubepress_options_Type::MODE:
|
---|
| 168 | return array('favorites', 'playlist', 'tag', 'user', "recently_featured", "mobile", "most_discussed",
|
---|
| 169 | "most_linked", "most_recent", "most_responded", "most_viewed",
|
---|
| 170 | "top_rated");
|
---|
| 171 | case org_tubepress_options_Type::SAFE_SEARCH:
|
---|
| 172 | return array("none", "moderate", "strict");
|
---|
| 173 | case org_tubepress_options_Type::PLAYER_IMPL:
|
---|
| 174 | return array("youtube", "longtail");
|
---|
| 175 | }
|
---|
| 176 | return array("today", "this_week", "this_month", "all_time");
|
---|
| 177 | }
|
---|
| 178 |
|
---|
| 179 | function isOptionName($candidateOptionName)
|
---|
| 180 | {
|
---|
| 181 | foreach ($this->_options as $optionType) {
|
---|
| 182 | if (array_key_exists($candidateOptionName, $optionType)) {
|
---|
| 183 | return true;
|
---|
| 184 | }
|
---|
| 185 | }
|
---|
| 186 | return false;
|
---|
| 187 | }
|
---|
| 188 |
|
---|
| 189 | function getType($optionName)
|
---|
| 190 | {
|
---|
| 191 | foreach ($this->_options as $optionType => $values) {
|
---|
| 192 | if (array_key_exists($optionName, $values)) {
|
---|
| 193 | return $optionType;
|
---|
| 194 | }
|
---|
| 195 | }
|
---|
| 196 | }
|
---|
| 197 |
|
---|
| 198 | private function _getConstantsForClass($className)
|
---|
| 199 | {
|
---|
| 200 | $ref = new ReflectionClass($className);
|
---|
| 201 | return array_values($ref->getConstants());
|
---|
| 202 | }
|
---|
| 203 | }
|
---|