public function update(array $aWhere, array $aToSet) { $this->formatToDb($aWhere); $this->formatToDb($aToSet); list($sQuery, $aParameters) = $this->buildUpdateQuery($this->get('entity'), $aWhere, $aToSet); try { $oPdoStmt = $this->oPdo->perform($sQuery, $aParameters); } catch (\PDOException $oException) { $sErrMsg = $oException->getMessage() . "\n Entity: " . $this->get('entity') . "\n Query: {$sQuery}" . "\n Parameters: " . print_r($aParameters, true); throw new \RuntimeException($sErrMsg); } return $oPdoStmt; }
/** * Adds a relation. * * @param integer $class_id Class ID. * @param string $related_class Related class. * @param integer $relation_type Relation type. * @param boolean $is_internal Is internal. * @param array $old_relations Old relations. * * @return string */ protected function addRelation($class_id, $related_class, $relation_type, $is_internal, array $old_relations) { $insert_sql = ' INSERT INTO ClassRelations (ClassId, RelatedClass, RelatedClassId, RelationType) VALUES (:class_id, :related_class, :related_class_id, :relation_type)'; $update_sql = ' UPDATE ClassRelations SET RelationType = :relation_type WHERE ClassId = :class_id AND RelatedClassId = :related_class_id'; if ($is_internal) { $related_class_id = 0; } else { $related_class_file = realpath(ReflectionEngine::locateClassFile($related_class)); $sql = 'SELECT Id FROM Classes WHERE FileId = :file_id AND Name = :name'; $related_class_id = $this->db->fetchValue($sql, array('file_id' => $this->processFile($related_class_file), 'name' => $related_class)); } $this->db->perform(in_array($related_class, $old_relations) ? $update_sql : $insert_sql, array('class_id' => $class_id, 'related_class' => $related_class, 'related_class_id' => $related_class_id, 'relation_type' => $relation_type)); return $related_class; }
/** * Sets last revision processed by plugin. * * @param integer $last_revision Last revision. * * @return void */ protected function setLastRevision($last_revision) { $sql = 'REPLACE INTO PluginData (Name, LastRevision) VALUES (:name, :last_revision)'; $this->database->perform($sql, array('name' => $this->getName(), 'last_revision' => $last_revision)); }
/** * Adds ref to commit and commit to project. * * @param integer $revision Revision. * @param integer $ref_id Ref ID. * * @return void */ public function addCommitToRef($revision, $ref_id) { $sql = 'INSERT INTO CommitRefs (Revision, RefId) VALUES (:revision, :ref_id)'; $this->database->perform($sql, array('revision' => $revision, 'ref_id' => $ref_id)); }
/** * * Performs a query after preparing the statement with bound values, then * returns the result as a PDOStatement. * * @param string $statement The SQL statement to prepare and execute. * * @param array $values Values to bind to the query. * * @return \PDOStatement * */ public function perform($statement, array $values = array()) { $result = $this->pdo->perform($statement, $values); $this->logProfiles(__FUNCTION__); return $result; }