Пример #1
0
	/**
	 * This is a method for emulating ON DELETE CASCADE for DBs that don't support this
	 * feature (like MySQL or SQLite).
	 *
	 * This method is not very speedy because it must perform a query first to get
	 * the implicated records and then perform the deletes by calling those Peer classes.
	 *
	 * This method should be used within a transaction if possible.
	 *
	 * @param      Criteria $criteria
	 * @param      PropelPDO $con
	 * @return     int The number of affected rows (if supported by underlying database driver).
	 */
	protected static function doOnDeleteCascade(Criteria $criteria, PropelPDO $con)
	{
		// initialize var to track total num of affected rows
		$affectedRows = 0;

		// first find the objects that are implicated by the $criteria
		$objects = PlugInPeer::doSelect($criteria, $con);
		foreach ($objects as $obj) {


			// delete related PlugInAutorisation objects
			$criteria = new Criteria(PlugInAutorisationPeer::DATABASE_NAME);
			
			$criteria->add(PlugInAutorisationPeer::PLUGIN_ID, $obj->getId());
			$affectedRows += PlugInAutorisationPeer::doDelete($criteria, $con);

			// delete related PlugInMiseEnOeuvreMenu objects
			$criteria = new Criteria(PlugInMiseEnOeuvreMenuPeer::DATABASE_NAME);
			
			$criteria->add(PlugInMiseEnOeuvreMenuPeer::PLUGIN_ID, $obj->getId());
			$affectedRows += PlugInMiseEnOeuvreMenuPeer::doDelete($criteria, $con);
		}
		return $affectedRows;
	}
Пример #2
0
  /**
   * Méthode qui désinstalle proprement le plugin
   *
   * @param object PlugIn $_plugin
   */
  public static function deletePluginComplet(PlugIn $_plugin){
    $_id = $_plugin->getId();
    # On détruit les droits
    $c = new Criteria();
    $c->add(PlugInAutorisationPeer::PLUGIN_ID, $_id, Criteria::EQUAL);
    $autorisation = PlugInAutorisationPeer::doDelete($c);
    # On détruit les menus
    $c = new Criteria();
    $c->add(PlugInMiseEnOeuvreMenuPeer::PLUGIN_ID, $_id, Criteria::EQUAL);
    $autorisation = PlugInMiseEnOeuvreMenuPeer::doDelete($c);
    # On détruit le plugin
    $plugin = PlugInPeer::doDelete($_id);

    return true;
  }