/** * Sets and returns the expression. * * @param string Method that has been called * @param array Given parameters * * @return string Expression */ public function __call($func, $args = array()) { if (Str::substring($func, 0, 3) == "set" && isset($args[0])) { $this->value = (string) $args[0]; } return $this->value; }
/** * Sets the destination folder. * * @param string $destination * @throws Recipe_Exception_Generic * @return Recipe_Language_Exporter */ public function setDestination($destination) { if (!is_dir($destination) || !is_writable($destination)) { throw new Recipe_Exception_Generic("Export destination folder does not exist or is not writable."); } if (Str::substring($destination, 0, Str::length($destination) - 1) != "/") { $destination .= "/"; } $this->destination = $destination; return $this; }
/** * Executes all events that are queued, but max 1000 events. * * @return Bengine_Game_Cronjob_EventExecution */ protected function _execute() { require_once "Bengine/Game.php"; $raceConditionKey = Str::substring(md5(microtime(true)), 0, 16); /* @var Bengine_Game_Model_Collection_Event $collection */ $collection = Application::getModel("game/event")->getCollection(); $collection->addRaceConditionFilter($raceConditionKey, Core::getConfig()->get("CRONJOB_MAX_EVENT_EXECUTION")); $collection->executeAll(); if ($collection->count() > 0) { Core::getQuery()->delete("events", "prev_rc = ?", null, null, array($raceConditionKey)); } return $this; }
/** * Generates a time term of given seconds. * * @param integer $secs Seconds * * @return string Time term */ function getTimeTerm($secs) { $secs = abs($secs); Hook::event("FormatTimeStart", array(&$secs)); $days = floor($secs / 60 / 60 / 24); $hours = floor($secs / 60 / 60 % 24); $mins = floor($secs / 60 % 60); $seconds = floor($secs % 60); Hook::event("FormatTimeEnd", array(&$days, &$days, &$mins, &$seconds)); $parsed = sprintf("%dd %02d:%02d:%02d", $days, $hours, $mins, $seconds); if ($days == 0) { $parsed = Str::substring($parsed, 3); } return $parsed; }
/** * Displays the ads. * * @param string $event Event mehtod that has been called * @param mixed $args Arguments [ignored] * * @return Plugin_Commercials */ public function __call($event, $args = null) { if (Core::getConfig()->get("COMMERCIALS_ENABLED") && !Core::getUser()->ifPermissions("HIDE_ADS")) { $this->loadAds(); $event = Str::substring($event, 2); if (isset($this->ads[$event])) { $index = array_rand($this->ads[$event]); $ad = $this->ads[$event][$index]; if (Core::getConfig()->get("COUNT_AD_VIEWS")) { Core::getQuery()->update("ad", array("views" => $ad["views"] + 1), "ad_id = ?", array($ad["ad_id"])); } return htmlspecialchars_decode($ad["html_code"]); } } return null; }
/** * Creates a new string that is a substring of this string. * * @param integer The beginning index, inclusive * @param integer The ending index, exclusive [optional] * * @return String */ public function substring($beginIndex, $endIndex = null) { $this->string = Str::substring($this->string, $beginIndex, $endIndex); return $this; }
/** * Normalize the URL into readable string for the Rewrite-Engine. * * @param string $url URL to normalize * * @return string Normalized URL */ public static function normalizeURL($url) { if (strpos($url, "?") > 0) { $url = preg_replace("/\\?(.*?)=/i", "/\$1:", $url); // Replace ?arg= with /arg: $url = preg_replace("/\\&(.*?)=/i", "/\$1:", $url); // Replace &arg= with /arg: $url = preg_replace("/\\&(.*?)=/i", "/\$1:", $url); // Replace &arg= with /arg: // Now remove useless arg names. $parsedURL = parse_url($url); $path = Str::substring(Str::replace($_SERVER["SCRIPT_NAME"], "", $parsedURL["path"]), 1); $splitted = explode("/", $path); $size = count($splitted); for ($i = 0; $i < $size; $i++) { if (strpos($splitted[$i], ":")) { $splitted[$i] = explode(":", $splitted[$i]); $levelNames = explode(",", REQUEST_LEVEL_NAMES); if (Str::compare($splitted[$i][0], $levelNames[$i], true)) { $url = Str::replace($splitted[$i][0] . ":", "", $url); } } } } return BASE_URL . $url; }
/** * Start a new session and destroy old sessions. * * @return Login */ public function startSession() { if (!$this->dataChecked) { $this->checkData(); } // Disables old sessions. if ($this->cacheActive) { Core::getCache()->cleanUserCache($this->userid); } Core::getQuery()->update("sessions", array("logged" => 0), "userid = ?", array($this->userid)); // Start new session. $sessionSeed = Str::encode((string) microtime(1)); $this->sid = Str::substring($sessionSeed, 0, $this->getSessionLength()); unset($sessionSeed); $spec = array("sessionid" => $this->sid, "userid" => $this->userid, "ipaddress" => IPADDRESS, "useragent" => isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : "", "time" => TIME, "logged" => 1); Core::getQuery()->insert("sessions", $spec); if ($this->canLogin) { if (COOKIE_SESSION) { Core::getRequest()->setCookie("sid", $this->sid, $this->getCookieExpire()); $this->sessionUrl = $this->redirection; } else { if (Str::inString("?", $this->redirection)) { $this->sessionUrl = $this->redirection . "&sid=" . $this->sid . "&login=true"; } else { $this->sessionUrl = $this->redirection . "?sid=" . $this->sid . "&login=true"; } } if ($this->cacheActive) { Core::getCache()->buildUserCache($this->sid); } Hook::event("StartSession", array($this, $this->sessionUrl)); if ($this->redirectOnSuccess) { doHeaderRedirection($this->sessionUrl, true); } } else { $this->loginFailed("CANNOT_LOGIN"); } return $this; }
/** * Generates a list of alliance member. * * @param string $showPoints Show points of members * @param string $order List order * * @return string Formatted list */ protected function replaceMember($showPoints, $order) { $this->loadMember($order); $showPoints = $this->term($showPoints); $out = ""; foreach ($this->member as $member) { $out .= $member["username"]; if ($showPoints) { $out .= " - " . fNumber($member["points"]); } $out .= "<br/>"; } $out = Str::substring($out, 0, -5); return $out; }
/** * Fetch the extension of a file name. * * @param string $filename The file name. * @return string The file extension. */ public static function getFileExtension($filename) { return strtolower(Str::substring(strrchr($filename, "."), 1)); }
/** * Convert a shorthand byte value from a PHP configuration directive to an integer value. * * @return integer Byte value */ protected function getPHPMaxUploadSize() { $ini_get = ini_get("upload_max_filesize"); if (is_numeric($ini_get)) { return $ini_get; } $value_length = strlen($ini_get); $qty = (int) Str::substring($ini_get, 0, $value_length - 1); $unit = strtolower(Str::substring($ini_get, $value_length - 1)); switch ($unit) { case "k": $qty *= 1024; break; case "m": $qty *= 1048576; break; case "g": $qty *= 1073741824; break; } return $qty; }
/** * Sets the template package. * * @param string $package Package directory * * @return Recipe_Template_Adapter_Abstract */ public function setTemplatePackage($package = null) { if (empty($package)) { $package = Core::getConfig()->templatepackage; } if (Str::substring($package, -1) != "/") { $package .= "/"; } $this->templatePackage = $package; $this->_setup(); return $this; }
/** * Surrounds an array with back quotes. * * @param array * * @return array */ protected function setBackQuotes($data) { if (is_array($data)) { foreach ($data as &$value) { if (Str::substring($value, 0, 1) != "`") { $value = "`" . $value . "`"; } } return $data; } if (Str::substring($data, 0, 1) == "`") { return $data; } return "`" . $data . "`"; }
/** * Generates an unique key to prevend race conditions. * * @param int $size * @return string */ protected function genPrevRaceConditionKey($size = 16) { $half = floor($size / 2); return Str::substring(SID, 0, $half) . Str::substring(md5(microtime(true)), 0, $half); }
/** * Split the URL into arguments. * * @return Recipe_Request */ protected function splitURL() { $requestedUrl = $this->getRequestedUrl(); // Remove query string if (!empty($_SERVER["QUERY_STRING"])) { $requestedUrl = Str::replace("?" . $_SERVER["QUERY_STRING"], "", $requestedUrl); } $splitted = @parse_url($requestedUrl); // Sometimes the first slash causes errors if (!$splitted) { $splitted = parse_url(Str::substring($requestedUrl, 1)); } // Remove real path from virtual path. if (MOD_REWRITE) { $path = Str::replace(dirname($_SERVER["SCRIPT_NAME"]) . "/", "", $splitted["path"]); } else { $path = Str::substring(Str::replace($_SERVER["SCRIPT_NAME"], "", $splitted["path"]), 1); } if (Str::length($path) > 0) { Hook::event("SplitUrlStart", array($this, &$path)); $path = explode("/", $path); foreach ($path as $value) { if (strpos($value, ":") > 0) { $value = explode(":", Str::replace(" ", "_", $value)); $this->args[] = Arr::trim($value); } else { if ($value != "") { $this->args[] = $value; } } } Hook::event("SplitUrlClose", array($this, &$path)); } return $this; }