Exemplo n.º 1
0
 /**
  * Возвращает массив тегов с количеством их повторов (если указано)
  * @param bool $cloud Возвращать статистику для составления облака?
  * @return array
  */
 function getTags($cloud = true)
 {
     if ($cloud) {
         $sql = "SELECT name, COUNT(name) as cnt\n                FROM tags\n                WHERE user_id = ?\n                GROUP BY name ORDER BY COUNT(name) DESC";
         return $this->db->select($sql, Core::getInstance()->user->getId());
     } else {
         $sql = "SELECT name\n                FROM tags\n                WHERE user_id = ?\n                GROUP BY name ORDER BY name";
         return $this->db->selectCol($sql, Core::getInstance()->user->getId());
     }
 }
 /**
  * Удаляет все операции по указанной категории
  *
  * @param oldUser $user
  * @param int $catId
  */
 function deleteOperationsByCategory(oldUser $user, $catId)
 {
     $sql = "SELECT id FROM operation WHERE user_id = ? AND cat_id = ?";
     $operations = $this->db->selectCol($sql, $user->getId(), $catId);
     if (count($operations) > 0) {
         $this->db->query("BEGIN;");
         foreach ($operations as $opId) {
             $this->deleteOperation($opId);
         }
         $this->db->query("COMMIT;");
     }
     return (int) count($operations);
 }
Exemplo n.º 3
0
 public function parseTables(DbSimple_Mysql $db)
 {
     $prefix = $db->getPrefix();
     foreach ($db->selectCol("SHOW TABLES LIKE ?", $prefix . '%') as $tablename) {
         if (strlen($prefix) && strpos($tablename, $prefix) !== 0) {
             continue;
         }
         // other prefix?
         $name = substr($tablename, strlen($prefix));
         $table = new Am_DbSync_Table($name);
         foreach ($db->select("DESCRIBE ?#", $tablename) as $row) {
             $table->addField(Am_DbSync_Field::createFromDb($row));
         }
         $indexes = array();
         foreach ($db->select("SHOW INDEX FROM ?#", $tablename) as $row) {
             $indexes[$row['Key_name']][] = $row;
         }
         foreach ($indexes as $indexRows) {
             $table->addIndex(Am_DbSync_Index::createFromDb($indexRows));
         }
         $this->addTable($table);
     }
 }
Exemplo n.º 4
0
 function guessDbPrefix(DbSimple_Mysql $db, $database = null, $prefix = null)
 {
     $res = array();
     foreach ($dbs = $db->selectCol("SHOW DATABASES") as $dbname) {
         try {
             $tables = $db->selectCol("SHOW TABLES FROM ?# LIKE '%{$this->guessTablePattern}'", $dbname);
         } catch (Am_Exception_Db $e) {
             continue;
         }
         if (is_array($tables)) {
             foreach ($tables as $t) {
                 // check fields here
                 $info = $db->select("SHOW COLUMNS FROM `{$dbname}`.{$t}");
                 $infostr = "";
                 if (is_array($info)) {
                     foreach ($info as $k => $v) {
                         $infostr .= join(';', $v) . "\n";
                     }
                 }
                 $wrong = 0;
                 foreach ($this->guessFieldsPattern as $pat) {
                     if (!preg_match('|^' . $pat . '|m', $infostr)) {
                         $wrong++;
                     }
                 }
                 if ($wrong) {
                     continue;
                 }
                 $res[] = $dbname . '.' . substr($t, 0, -strlen($this->guessTablePattern));
             }
         }
     }
     return $res;
 }