PageRenderTime 58ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/wordpress-bootstrap-css/src/icwp-wpfunctions.php

https://github.com/bhanukolli/WP-Blog
PHP | 318 lines | 163 code | 42 blank | 113 comment | 30 complexity | 312e164cb1a92dfefa2c5c9c0afba929 MD5 | raw file
Possible License(s): Apache-2.0, GPL-2.0
  1. <?php
  2. /**
  3. * Copyright (c) 2014 iControlWP <support@icontrolwp.com>
  4. * All rights reserved.
  5. *
  6. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  7. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  8. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  9. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  10. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  11. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  12. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  13. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  14. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  15. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  16. */
  17. require_once( dirname(__FILE__).'/icwp-data-processor.php' );
  18. if ( !class_exists('ICWP_WPTB_WpFunctions_V4') ):
  19. class ICWP_WPTB_WpFunctions_V4 {
  20. /**
  21. * @var ICWP_WPTB_WpFunctions_V4
  22. */
  23. protected static $oInstance = NULL;
  24. /**
  25. * @return ICWP_WPTB_WpFunctions_V4
  26. */
  27. public static function GetInstance() {
  28. if ( is_null( self::$oInstance ) ) {
  29. self::$oInstance = new self();
  30. }
  31. return self::$oInstance;
  32. }
  33. /**
  34. * @var string
  35. */
  36. protected $m_sWpVersion;
  37. /**
  38. * @var boolean
  39. */
  40. protected $fIsMultisite;
  41. public function __construct() {}
  42. /**
  43. * @param string $insPluginFile
  44. * @return boolean|stdClass
  45. */
  46. public function getIsPluginUpdateAvailable( $insPluginFile ) {
  47. $aUpdates = $this->getWordpressUpdates();
  48. if ( empty( $aUpdates ) ) {
  49. return false;
  50. }
  51. if ( isset( $aUpdates[ $insPluginFile ] ) ) {
  52. return $aUpdates[ $insPluginFile ];
  53. }
  54. return false;
  55. }
  56. public function getPluginUpgradeLink( $insPluginFile ) {
  57. $sUrl = self_admin_url( 'update.php' ) ;
  58. $aQueryArgs = array(
  59. 'action' => 'upgrade-plugin',
  60. 'plugin' => urlencode( $insPluginFile ),
  61. '_wpnonce' => wp_create_nonce( 'upgrade-plugin_' . $insPluginFile )
  62. );
  63. return add_query_arg( $aQueryArgs, $sUrl );
  64. }
  65. public function getWordpressUpdates() {
  66. $oCurrent = $this->getTransient( 'update_plugins' );
  67. return $oCurrent->response;
  68. }
  69. /**
  70. * The full plugin file to be upgraded.
  71. *
  72. * @param string $insPluginFile
  73. * @return boolean
  74. */
  75. public function doPluginUpgrade( $insPluginFile ) {
  76. if ( !$this->getIsPluginUpdateAvailable($insPluginFile)
  77. || ( isset( $GLOBALS['pagenow'] ) && $GLOBALS['pagenow'] == 'update.php' ) ) {
  78. return true;
  79. }
  80. $sUrl = $this->getPluginUpgradeLink( $insPluginFile );
  81. wp_redirect( $sUrl );
  82. exit();
  83. }
  84. /**
  85. * @param string $insKey
  86. * @return object
  87. */
  88. protected function getTransient( $insKey ) {
  89. // TODO: Handle multisite
  90. if ( version_compare( $this->getWordpressVersion(), '2.7.9', '<=' ) ) {
  91. return get_option( $insKey );
  92. }
  93. if ( function_exists( 'get_site_transient' ) ) {
  94. return get_site_transient( $insKey );
  95. }
  96. if ( version_compare( $this->getWordpressVersion(), '2.9.9', '<=' ) ) {
  97. return apply_filters( 'transient_'.$insKey, get_option( '_transient_'.$insKey ) );
  98. }
  99. return apply_filters( 'site_transient_'.$insKey, get_option( '_site_transient_'.$insKey ) );
  100. }
  101. /**
  102. * @return string
  103. */
  104. public function getWordpressVersion() {
  105. global $wp_version;
  106. if ( empty( $this->m_sWpVersion ) ) {
  107. $sVersionFile = ABSPATH.WPINC.'/version.php';
  108. $sVersionContents = file_get_contents( $sVersionFile );
  109. if ( preg_match( '/wp_version\s=\s\'([^(\'|")]+)\'/i', $sVersionContents, $aMatches ) ) {
  110. $this->m_sWpVersion = $aMatches[1];
  111. }
  112. }
  113. return empty( $this->m_sWpVersion )? $wp_version : $this->m_sWpVersion;
  114. }
  115. /**
  116. * @param array $aQueryParams
  117. */
  118. public function redirectToLogin( $aQueryParams = array() ) {
  119. $sLoginUrl = site_url() . '/wp-login.php';
  120. $this->doRedirect( $sLoginUrl, $aQueryParams );
  121. exit();
  122. }
  123. /**
  124. * @param $aQueryParams
  125. */
  126. public function redirectToAdmin( $aQueryParams = array() ) {
  127. $this->doRedirect( is_multisite()? get_admin_url() : admin_url(), $aQueryParams );
  128. }
  129. /**
  130. * @param $aQueryParams
  131. */
  132. public function redirectToHome( $aQueryParams = array() ) {
  133. $this->doRedirect( home_url(), $aQueryParams );
  134. }
  135. /**
  136. * @param $sUrl
  137. * @param $aQueryParams
  138. */
  139. public function doRedirect( $sUrl, $aQueryParams = array() ) {
  140. $sUrl = empty( $aQueryParams ) ? $sUrl : add_query_arg( $aQueryParams, $sUrl ) ;
  141. wp_safe_redirect( $sUrl );
  142. exit();
  143. }
  144. /**
  145. * @return string
  146. */
  147. public function getCurrentPage() {
  148. global $pagenow;
  149. return $pagenow;
  150. }
  151. /**
  152. * @param string
  153. * @return string
  154. */
  155. public function getIsCurrentPage( $sPage ) {
  156. return $sPage == $this->getCurrentPage();
  157. }
  158. /**
  159. * @return bool
  160. */
  161. public function getIsLoginRequest() {
  162. return ICWP_WPTB_DataProcessor::GetIsRequestPost()
  163. && $this->getIsCurrentPage('wp-login.php')
  164. && !is_null( ICWP_WPTB_DataProcessor::FetchPost('log') )
  165. && !is_null( ICWP_WPTB_DataProcessor::FetchPost('pwd') );
  166. }
  167. /**
  168. * @return string
  169. */
  170. public function getSiteName() {
  171. return function_exists( 'get_bloginfo' )? get_bloginfo('name') : 'WordPress Site';
  172. }
  173. /**
  174. * @return string
  175. */
  176. public function getSiteAdminEmail() {
  177. return function_exists( 'get_bloginfo' )? get_bloginfo('admin_email') : '';
  178. }
  179. /**
  180. * @return boolean
  181. */
  182. public function getIsAjax() {
  183. return defined( 'DOING_AJAX' ) && DOING_AJAX;
  184. }
  185. /**
  186. * @param string $sRedirectUrl
  187. */
  188. public function logoutUser( $sRedirectUrl = '' ) {
  189. empty( $sRedirectUrl ) ? wp_logout() : wp_logout_url( $sRedirectUrl );
  190. }
  191. /**
  192. * @return bool
  193. */
  194. public function isMultisite() {
  195. if ( !isset( $this->fIsMultisite ) ) {
  196. $this->fIsMultisite = function_exists( 'is_multisite' ) && is_multisite();
  197. }
  198. return $this->fIsMultisite;
  199. }
  200. /**
  201. * @param string $sKey
  202. * @param $sValue
  203. * @return mixed
  204. */
  205. public function addOption( $sKey, $sValue ) {
  206. return $this->isMultisite() ? add_site_option( $sKey, $sValue ) : add_option( $sKey, $sValue );
  207. }
  208. /**
  209. * @param string $sKey
  210. * @param $sValue
  211. * @return mixed
  212. */
  213. public function updateOption( $sKey, $sValue ) {
  214. return $this->isMultisite() ? update_site_option( $sKey, $sValue ) : update_option( $sKey, $sValue );
  215. }
  216. /**
  217. * @param string $sKey
  218. * @param mixed $mDefault
  219. * @return mixed
  220. */
  221. public function getOption( $sKey, $mDefault = false ) {
  222. return $this->isMultisite() ? get_site_option( $sKey, $mDefault ) : get_option( $sKey, $mDefault );
  223. }
  224. /**
  225. * @param string $sKey
  226. * @return mixed
  227. */
  228. public function deleteOption( $sKey ) {
  229. return $this->isMultisite() ? delete_site_option( $sKey ) : delete_option( $sKey );
  230. }
  231. /**
  232. */
  233. public function getCurrentWpAdminPage() {
  234. $sScript = isset( $_SERVER['SCRIPT_NAME'] )? $_SERVER['SCRIPT_NAME'] : $_SERVER['PHP_SELF'];
  235. if ( is_admin() && !empty( $sScript ) && basename( $sScript ) == 'admin.php' && isset( $_GET['page'] ) ) {
  236. $sCurrentPage = $_GET['page'];
  237. }
  238. return empty($sCurrentPage)? '' : $sCurrentPage;
  239. }
  240. /**
  241. * @return null|WP_User
  242. */
  243. public function getCurrentWpUser() {
  244. if ( is_user_logged_in() ) {
  245. $oUser = wp_get_current_user();
  246. if ( is_object( $oUser ) && $oUser instanceof WP_User ) {
  247. return $oUser;
  248. }
  249. }
  250. return null;
  251. }
  252. /**
  253. * @param $sUsername
  254. */
  255. public function setUserLoggedIn( $sUsername ) {
  256. $oUser = version_compare( $this->getWordpressVersion(), '2.8.0', '<' )? get_userdatabylogin( $sUsername ) : get_user_by( 'login', $sUsername );
  257. wp_clear_auth_cookie();
  258. wp_set_current_user ( $oUser->ID, $oUser->user_login );
  259. wp_set_auth_cookie ( $oUser->ID, true );
  260. do_action( 'wp_login', $oUser->user_login, $oUser );
  261. }
  262. }
  263. endif;
  264. if ( !class_exists('ICWP_WPTB_WpFunctions') ):
  265. class ICWP_WPTB_WpFunctions extends ICWP_WPTB_WpFunctions_V4 {
  266. /**
  267. * @return ICWP_WPTB_WpFunctions
  268. */
  269. public static function GetInstance() {
  270. if ( is_null( self::$oInstance ) ) {
  271. self::$oInstance = new self();
  272. }
  273. return self::$oInstance;
  274. }
  275. }
  276. endif;