public function create($username, $password, $email, $salt = false, $group_id = 3, $psoverride = 1, $ipaddr = false, $mustValidate = true) { $user = $this->getByUsername($username); if ($user) { return self::CREATE_USERNAME_EXISTS; } $query = new Query('SELECT'); $query->field('COUNT(*)', 'count'); $query->from('users'); $query->where('email like ?', $email); $stmt = $query->prepare(); $stmt->execute(); $obj = $stmt->fetchObj(); if ($obj->count > 0) { return self::CREATE_EMAIL_EXISTS; } $salt = $salt ?: $this->generateSalt(); $passhash = md5(md5($salt) . md5($password)); $bean = new UserProfileBean(); $bean->username = $username; $bean->email = $email; $bean->group_id = $group_id; $bean->permission_override_id = $psoverride; $bean->password = $passhash; $bean->salt = $salt; $bean->set('joindate', "NOW()", true); $bean->reg_ip = $ipaddr ?: $_SERVER['REMOTE_ADDR']; $bean->must_validate = $mustValidate ? 1 : 0; try { $bean->insert(); } catch (QueryFailedException $e) { return self::CREATE_ERROR; } return self::CREATE_OK; }
public function getUniqueURLs($linkArray) { if (!is_array($linkArray) || !$linkArray) { throw new Exception('AppLinkModel::getUniqueURLs argument must be an array.'); } $query = new Query('SELECT'); $query->field('url'); $query->from('links'); foreach ($linkArray as $link) { $query->where('url like ?', '%' . $link . '%', 'OR'); } $stmt = $query->prepare(); $stmt->execute(); $existing = array(); while ($row = $stmt->fetchObj()) { $existing[] = $row->url; } $unique = array(); foreach ($linkArray as $link) { $exists = false; foreach ($existing as $elink) { if (strtolower($link) == strtolower($elink) || in_array($link, $unique)) { $exists = true; break; } } if (!$exists) { $unique[] = $link; } } return $unique; }
public function setValue($key, $data) { $q = new Query("DELETE"); $q->from("config"); $q->where("key = ?", $key); $stmt = $q->prepare(); $stmt->execute(); $cvb = new ConfigValueBean(); $cvb->key = $key; $cvb->data = serialize($data); $cvb->set("last_updated_time", "NOW()", true); $cvb->insert(); }
/** * Database template loader * Assumes that the table specified in the config has * a 'path' and 'content' field. * The former should contain the path as it would be * loaded through a controller (e.g. ucp/user_logged_in) * The latter should contain the Hydrogen/purephp template * as it would be in a file. * * @param string viewName The name of the view to be found. */ public function load($viewName) { $query = new Query("SELECT"); $query->from($this->getTableName()); $query->where("path = ?", $viewName); $query->limit(1); $stmt = $query->prepare(); $stmt->execute(); $result = $stmt->fetchObject(); if (!$result->content) { throw new NoSuchViewException("View " . $viewName . " does not exist in database."); } return $result->content; }
public function store($key, $data, $moduleNamespace) { $moduleNamespace = str_replace("\\", "*", $moduleNamespace); $q = new Query("DELETE"); $q->from("module_data"); $q->where("title = ?", $key); $q->where("module = ?", $moduleNamespace); $stmt = $q->prepare(); $stmt->execute(); $mdb = new ModuleDataBean(); $mdb->title = $key; $mdb->data = serialize($data); $mdb->module = $moduleNamespace; $mdb->set("last_updated_time", "NOW()", true); $mdb->insert(); }
public function banIPs($desc, $ips, $permissionSet = 10) { $query = new Query('INSERT'); $query->intoTable('bans_ip'); $query->intoField('ban_desc'); $query->intoField('ip_low'); $query->intoField('ip_high'); $query->intoField('permissionset_id'); $query->intoField('date_banned'); foreach ($ips as $ip) { $intip = $this->toIntIP($ip); $query->values('(?, ?, ?, ?, NOW())', array($desc, $intip, $intip, $permissionSet)); } $stmt = $query->prepare(); return $stmt->execute(); }
/** * Loads the contents of the specified template. * * @param string $templateName The name of the template to be loaded. * @return string The unaltered, unparsed contents of the specified * template. * @throws hydrogen\view\exceptions\NoSuchViewException if the specified * template is not found or cannot be loaded. */ public function load($viewName) { $table = Config::getRequiredVal("view", "table_name"); $nameCol = Config::getRequiredVal("view", "name_field"); $contentCol = Config::getRequiredVal("view", "content_field"); $query = new Query("SELECT"); $query->field($contentCol); $query->from($table); $query->where($nameCol . " = ?", $viewName); $query->limit(1); $stmt = $query->prepare(); $stmt->execute(); $result = $stmt->fetchObject(); if (!$result->{$contentCol}) { throw new NoSuchViewException("View " . $viewName . " does not exist in database."); } return $result->{$contentCol}; }
public function create($app_id, $version, $verinfo) { $ver = $this->getByAppID($app_id, $version); if ($ver) { return false; } $query = new Query('SELECT'); $query->field('MAX(intversion)', 'maxint'); $query->from('versions'); $query->where('app_id = ?', $app_id); $stmt = $query->prepare(); $stmt->execute(); if (!($row = $stmt->fetchObj())) { $max = false; } else { $max = $row->maxint; } if ($max) { $curTokens = $this->getNumTokens($max); $intver = $this->getIntVersion($version, $curTokens); $newTokens = $this->getNumTokens($intver); if ($newTokens > $curTokens) { $this->updateTokens($app_id, $newTokens); } } else { $intver = $this->getIntVersion($version); } $ver = new AppVersionBean(); $ver->app_id = $app_id; $ver->version = $version; $ver->intversion = $intver; $ver->versioninfo = $verinfo; $ver->set('date_added', 'NOW()', true); $ver->set('last_updated', 'NOW()', true); try { $ver->insert(); } catch (QueryFailedException $e) { return false; } return true; }
public function setScreenshots($app_id, $itunes_id, $shots) { $i = 0; $beans = array(); foreach ($shots as $shot) { if ($i) { $filename = "{$itunes_id}_{$i}screen.jpg"; } else { $filename = "{$itunes_id}screen.jpg"; } if ($this->saveScreenshotLocally($shot, $filename, $is_horiz)) { $bean = new ScreenshotBean(); $bean->app_id = $app_id; $bean->shot_url = '%BASE_URL%/appimages/screenshots/' . $filename; $bean->is_horiz = $is_horiz ? 1 : 0; $beans[] = $bean; $i++; } } if (!$beans) { return false; } $query = new Query('DELETE'); $query->from('screenshots'); $query->where('app_id = ?', $app_id); $stmt = $query->prepare(); $stmt->execute(); foreach ($beans as $bean) { try { $bean->insert(true); } catch (QueryFailedException $e) { } } $this->cm->clear("sm_appid_{$app_id}"); return true; }
public function delete() { if (!isset($this->stored[static::$primaryKey])) { $class = get_class($this); throw new MissingPrimaryKeyException($class . '->delete() cannot be called until a primary key is set.'); } $query = new Query('DELETE', $this->dbengine); $query->from(static::$tableNoPrefix); $query->where(static::$primaryKey . ' = ?', $this->stored[static::$primaryKey]); $query->limit(1); $stmt = $query->prepare(); if (!$stmt->execute()) { $info = $stmt->errorInfo(); $e = new QueryFailedException($info[2]); $e->errorInfo = $info; throw $e; } return true; }
$name = $row['name']; $app_id = $row['id']; // Pull out the words we'll need to index $iwords = $am->getIndexable($name); // Add 'em if (count($iwords) > 0) { echo "Indexing: " . implode(', ', $iwords) . "<br />\n"; foreach ($iwords as $iword) { $sindex[$iword][] = $app_id; } } else { echo "No words to be indexed.<br />\n"; } } } echo "<br />Saving and caching:<br />\n"; foreach ($sindex as $term => $idarray) { echo "<strong>{$term}</strong> "; echo str_replace("\n", "<br />\n", print_r($idarray, true)); $cm->set("search_name_index:{$term}", $idarray, 0); $query = new Query('INSERT'); $query->intoTable('search_name_index'); $query->intoField('term'); $query->intoField('app_id_array'); $query->values("(?, ?)", array($term, serialize($idarray))); $stmt = $query->prepare(); if (!$stmt->execute()) { echo "Error while adding term '{$term}'.<br />\n"; } } echo "<br />Done!";
/** * Get the total number of users connected * to the channel * * @return integer number of users */ public function getTotalUsers() { $query = new Query("SELECT"); $query->from("channel_users"); $query->field("id"); $query->where("channel_name = ?", Config::getVal("general", "channel")); $stmt = $query->prepare(); $stmt->execute(); $i = 0; while ($row = $stmt->fetchObject()) { $i++; } return $i; }
protected function indexName($name, $id) { $iwords = $this->getIndexable($name); if (count($iwords) > 0) { $sem = SemaphoreEngineFactory::getEngine(); $sindex = array(); $create = array(); $docreate = false; $query = new Query('SELECT'); $query->field('term'); $query->field('app_id_array'); $query->from('search_name_index'); foreach ($iwords as $iword) { $sindex[$iword] = array(); $create[$iword] = true; $docreate = true; $query->where('term = ?', $iword, 'OR'); } $stmt = $query->prepare(); $semkey = Config::getVal('recache', 'unique_name') . ":LOCK:sindex"; $sem->acquire($semkey); $stmt->execute(); while ($row = $stmt->fetchObj()) { $create[$row->term] = false; $sindex[$row->term] = unserialize($row->app_id_array); } unset($query); unset($stmt); $iquery = new Query('INSERT'); $iquery->ignore(); $iquery->intoTable('search_name_index'); $iquery->intoField('term'); $iquery->intoField('app_id_array'); $uqueries = array(); foreach ($iwords as $iword) { if (!in_array($id, $sindex[$iword])) { $sindex[$iword][] = $id; $this->cm->set("search_name_index:{$iword}", $sindex[$iword], 0); } if ($create[$iword]) { $iquery->VALUES('(?, ?)', array($iword, serialize($sindex[$iword]))); } else { $query = new Query('UPDATE'); $query->table('search_name_index'); $query->set('app_id_array = ?', serialize($sindex[$iword])); $query->where('term = ?', $iword); $uqueries[] = $query; } } if ($docreate) { $stmt = $iquery->prepare(); unset($iquery); $stmt->execute(); } foreach ($uqueries as $uquery) { $stmt = $uquery->prepare(); $stmt->execute(); } $sem->release($semkey); } }
public function getMessageCount($nick, $time = false) { if (!$time) { $query = new Query("SELECT"); $query->from("channel_actions"); $query->field("id"); $query->where("channel_name = ?", Config::getVal("general", "channel")); $query->where("nickname = ?", $nick); $query->where("type = ?", ReceivedLineTypes::CHANMSG); $stmt = $query->prepare(); $stmt->execute(); $i = 0; while ($row = $stmt->fetchObject()) { $i++; } return $i; } else { if ($time == "hour") { $query = new Query("SELECT"); $query->from("channel_actions"); $query->field("id"); $query->where("channel_name = ?", Config::getVal("general", "channel")); $query->where("time > ?", time() - 60 * 60); $query->where("nickname = ?", $nick); $query->where("type = ?", ReceivedLineTypes::CHANMSG); $stmt = $query->prepare(); $stmt->execute(); $i = 0; while ($row = $stmt->fetchObject()) { $i++; } return $i; } else { if ($time == "day") { $query = new Query("SELECT"); $query->from("channel_actions"); $query->field("id"); $query->where("channel_name = ?", Config::getVal("general", "channel")); $query->where("time > ?", time() - 60 * 60 * 24); $query->where("nickname = ?", $nick); $query->where("type = ?", ReceivedLineTypes::CHANMSG); $stmt = $query->prepare(); $stmt->execute(); $i = 0; while ($row = $stmt->fetchObject()) { $i++; } return $i; } else { if ($time == "week") { $query = new Query("SELECT"); $query->from("channel_actions"); $query->field("id"); $query->where("channel_name = ?", Config::getVal("general", "channel")); $query->where("time > ?", time() - 60 * 60 * 24 * 7); $query->where("nickname = ?", $nick); $query->where("type = ?", ReceivedLineTypes::CHANMSG); $stmt = $query->prepare(); $stmt->execute(); $i = 0; while ($row = $stmt->fetchObject()) { $i++; } return $i; } } } } }