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 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 isBanned($ip) { $query = new Query('SELECT'); $query->field('COUNT(*)', 'count'); $query->from('bans_ip'); $intip = $this->toIntIP($ip); $query->where('ip_low <= ?', $intip); $query->where('ip_high >= ?', $intip); $stmt = $query->prepare(); $stmt->execute(); $obj = $stmt->fetchObj(); return $obj->count > 0; }
/** * 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; }
$query = new Query('SELECT'); $query->field('COUNT(*)', 'count'); $query->from('applications'); $stmt = $query->prepare(); $stmt->execute(); $obj = $stmt->fetchObj(); $count = $obj->count; echo "Starting indexing for {$count} apps...<br />\n"; // Loop it! $i = 0; $sindex = array(); $cm = RECacheManager::getInstance(); $am = ApplicationModel::getInstance(); while ($i < $count) { $query = new Query('SELECT'); $query->field('id'); $query->field('name'); $query->from('applications'); $query->orderby('name', 'ASC'); $query->limit(500, $i); $stmt = $query->prepare(); $stmt->execute(); while ($row = $stmt->fetchAssoc()) { echo "{$row['name']} ({$row['id']}): "; $i++; $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) {
$stmt = $query->prepare(); if ($stmt->execute()) { echo "Done.<br />\n"; } else { echo "Couldn't delete apps.<br />\n"; } } else { echo "No apps to delete.<br />\n"; } ob_flush(); flush(); if ($versToCorrect) { $vquery->whereCloseGroup(); echo "Got versions and dates.<br />\n"; // Get all the first crackers for each version with another strawbery query $vquery->field('v.app_id'); $vquery->field('l1.cracker'); $vquery->from('versions', 'v'); $vquery->join('links', 'l1', 'LEFT'); $vquery->on('v.id = l1.version_id'); $vquery->join('links', 'l2', 'LEFT'); $vquery->on('l1.version_id = l2.version_id'); $vquery->on('l1.date_added > l2.date_added'); $vquery->where('l2.date_added IS NULL'); $stmt = $vquery->prepare(); if (!$stmt->execute()) { die("You broke shit."); } $acracker = array(); while ($row = $stmt->fetchAssoc()) { $acracker[$row['app_id']] = $row['cracker'];
/** * 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); } }
$query->set('active = ?', 0); $query->where('submitter_id = ?', $banid); $stmt = $query->prepare(); $stmt->execute(); echo "All of user {$user->username}'s links have been deleted.<br />\n"; echo "Banning the dickhead...<br />\n"; $ipstoban = array(); if ($user->reg_ip != 0) { $ipstoban[] = $user->reg_ip; } if (!is_null($user->last_ip) && $user->last_ip) { $ipstoban[] = $user->last_ip; } // And now, let's get all known IPs $query = new Query('SELECT'); $query->field('submitter_ip'); $query->from('links'); $query->where('submitter_id = ?', $banid); $stmt = $query->prepare(); $stmt->execute(); while ($obj = $stmt->fetchObj()) { $ipstoban[] = $obj->submitter_ip; } // Filter out the dupes and query to see which are already banned $ipadded = array(); $toban = array(); $bipm = BannedIPModel::getInstance(); foreach ($ipstoban as $ip) { if (!isset($ipadded[$ip])) { $ipadded[$ip] = true; if (!$bipm->isBanned($ip)) {
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; } } } } }