You are here

class BotchaModel in BOTCHA Spam Prevention 7.3

Same name and namespace in other branches
  1. 6.2 model/botcha.model.inc \BotchaModel
  2. 6.3 model/application/botcha.application.model.inc \BotchaModel
  3. 7.2 model/botcha.model.inc \BotchaModel

Hierarchy

Expanded class hierarchy of BotchaModel

File

model/application/botcha.application.model.inc, line 120
Contains BotchaModel class.

View source
class BotchaModel extends Model implements IBotchaModel {
  const RELATION_FORM_RECIPEBOOK = 'BotchaFormRecipebookRelation';
  const RELATION_RECIPE_RECIPEBOOK = 'BotchaRecipeRecipebookRelation';
  protected $app_name = 'Botcha';

  /**
   * Just an alias for getRecipebooksForms.
   * @param array $parameters
   * @return array
   */
  public static function getFormsRecipebooks($parameters = array()) {

    // @todo Remove hardcode.
    $parameters['mode'] = !empty($parameters['mode']) ? $parameters['mode'] : 'recipebook';
    return self::getRecipebooksForms($parameters);
  }
  public static function getRecipebooksForms($parameters = array()) {
    $fields = array();
    switch ($parameters['mode']) {
      case 'form':
        $fields[] = 'form_id';
        break;
      case 'recipebook':
      default:
        $fields[] = 'rbid';
        break;
    }
    $rbf = db_select('botcha_recipebook_form', 'brf')
      ->fields('brf', $fields);
    if (!empty($parameters['recipebooks'])) {
      $rbf
        ->condition('rbid', (array) $parameters['recipebooks'], 'IN');
    }
    if (!empty($parameters['forms'])) {
      $rbf
        ->condition('form_id', (array) $parameters['forms'], 'IN');
    }

    // Catching of PDOException helps to avoid WSOD during update use case. The
    // reason is in that form_alter is called before performing an update.
    // @see http://drupal.org/node/1828710
    try {
      $result = $rbf
        ->execute()
        ->fetchCol();
    } catch (Exception $e) {
      if ($e instanceof PDOException) {
        watchdog_exception('BOTCHA', $e, 'Please perform an update via update.php or reinstall the BOTCHA module to fix the reason of this warning! %type: !message in %function (line %line of %file).', array(), WATCHDOG_WARNING);
        $result = array();
      }
    }
    return $result;
  }
  public static function getRecipesRecipebooks($parameters = array()) {

    // @todo Remove hardcode.
    $parameters['mode'] = !empty($parameters['mode']) ? $parameters['mode'] : 'recipebook';
    return self::getRecipebooksRecipes($parameters);
  }
  public static function getRecipebooksRecipes($parameters = array()) {
    $fields = array();
    switch ($parameters['mode']) {
      case 'recipe':
        $fields[] = 'recipe_id';
        break;
      case 'recipebook':
      default:
        $fields[] = 'rbid';
        break;
    }
    $rbr = db_select('botcha_recipebook_recipe', 'brr')
      ->fields('brr', $fields);
    if (!empty($parameters['recipebooks'])) {
      $rbr
        ->condition('rbid', (array) $parameters['recipebooks'], 'IN');
    }
    if (!empty($parameters['recipes'])) {
      $rbr
        ->condition('recipe_id', (array) $parameters['recipes'], 'IN');
    }

    // Catching of PDOException helps to avoid WSOD during update use case. The
    // reason is in that form_alter is called before performing an update.
    // @see http://drupal.org/node/1828710
    try {
      $result = $rbr
        ->execute()
        ->fetchCol();
    } catch (Exception $e) {
      if ($e instanceof PDOException) {
        watchdog_exception('BOTCHA', $e, 'Please perform an update via update.php or reinstall the BOTCHA module to fix the reason of this warning! %type: !message in %function (line %line of %file).', array(), WATCHDOG_WARNING);
        $result = array();
      }
    }
    return $result;
  }

}

Members