Exemplo n.º 1
0
 /**
  * @param string              $tokenRegex     Token regex without wrapping regex escape characters.  Use (value) or (.*?) where the ID of the
  *                                            entity should go. i.e. {pagelink=(value)}
  * @param string              $filter         String to filter results by
  * @param string              $labelColumn    The column that houses the label
  * @param string              $valueColumn    The column that houses the value
  * @param CompositeExpression $expr           Use $factory->getDatabase()->getExpressionBuilder()->andX()
  *
  * @return array|void
  */
 public function getTokens($tokenRegex, $filter = '', $labelColumn = 'name', $valueColumn = 'id', CompositeExpression $expr = null)
 {
     //set some permissions
     $permissions = $this->factory->getSecurity()->isGranted($this->permissionSet, "RETURN_ARRAY");
     if (in_array(false, $permissions)) {
         return;
     }
     $repo = $this->factory->getModel($this->modelName)->getRepository();
     $prefix = $repo->getTableAlias();
     if (!empty($prefix)) {
         $prefix .= '.';
     }
     $exprBuilder = $this->factory->getDatabase()->getExpressionBuilder();
     if ($expr == null) {
         $expr = $exprBuilder->andX();
     }
     if (isset($permissions[$this->viewPermissionBase . ':viewother']) && !$permissions[$this->viewPermissionBase . ':viewother']) {
         $expr->add($exprBuilder->eq($prefix . 'createdBy', $this->factory->getUser()->getId()));
     }
     if (!empty($filter)) {
         $expr->add($exprBuilder->like('LOWER(' . $labelColumn . ')', ':label'));
         $parameters = array('label' => strtolower($filter) . '%');
     } else {
         $parameters = array();
     }
     $items = $repo->getSimpleList($expr, $parameters, $labelColumn, $valueColumn);
     $tokens = array();
     foreach ($items as $item) {
         $token = str_replace(array('(value)', '(.*?)'), $item['value'], $tokenRegex);
         $tokens[$token] = $item['label'];
     }
     return $tokens;
 }
Exemplo n.º 2
0
 /**
  * @param Plugin $plugin
  * @param MauticFactory $factory
  * @param array $metadata
  * @param null $installedSchema
  */
 public static function onPluginInstall(Plugin $plugin, MauticFactory $factory, $metadata = null, $installedSchema = null)
 {
     if (is_array($metadata)) {
         foreach ($metadata as $key => $entity) {
             /** @var \Doctrine\ORM\Mapping\ClassMetadata $entity */
             if ($factory->getDatabase()->getSchemaManager()->tablesExist($entity->getTableName())) {
                 unset($metadata[$key]);
             }
         }
         self::installPluginSchema($metadata, $factory);
     }
 }
Exemplo n.º 3
0
 /**
  * Finds/creates the local name for constraints and indexes.
  *
  * @param $table
  * @param $type
  * @param $suffix
  *
  * @return string
  */
 protected function findPropertyName($table, $type, $suffix)
 {
     static $schemaManager;
     static $tables = [];
     if (empty($schemaManager)) {
         $schemaManager = $this->factory->getDatabase()->getSchemaManager();
     }
     // Prepend prefix
     $table = $this->prefix . $table;
     if (!array_key_exists($table, $tables)) {
         $tables[$table] = [];
     }
     $type = strtolower($type);
     $suffix = strtolower(substr($suffix, -4));
     switch ($type) {
         case 'fk':
             if (!array_key_exists('fk', $tables[$table])) {
                 $keys = $schemaManager->listTableForeignKeys($table);
                 /** @var \Doctrine\DBAL\Schema\ForeignKeyConstraint $k */
                 foreach ($keys as $k) {
                     $name = strtolower($k->getName());
                     $key = substr($name, -4);
                     $tables[$table]['fk'][$key] = $name;
                 }
             }
             $localName = $tables[$table]['fk'][$suffix];
             break;
         case 'idx':
         case 'uniq':
             if (!array_key_exists('idx', $tables[$table])) {
                 $tables[$table]['idx'] = ['idx' => [], 'uniq' => []];
                 $indexes = $schemaManager->listTableIndexes($table);
                 /** @var \Doctrine\DBAL\Schema\Index $i */
                 foreach ($indexes as $i) {
                     $name = strtolower($i->getName());
                     $isIdx = stripos($name, 'idx');
                     $isUniq = stripos($name, 'uniq');
                     if ($isIdx !== false || $isUniq !== false) {
                         $key = substr($name, -4);
                         $keyType = $isIdx !== false ? 'idx' : 'uniq';
                         $tables[$table]['idx'][$keyType][$key] = $name;
                     }
                 }
             }
             $localName = $tables[$table]['idx'][$type][$suffix];
             break;
     }
     $localName = strtoupper($localName);
     return $localName;
 }
Exemplo n.º 4
0
 public static function addTaskAction(MauticFactory $factory, $lead, $event)
 {
     $sql = 'INSERT INTO tasks (due_date, name, lead_id, assign_user_id, is_completed, date_added) VALUES (?, ?, ?, ?, ?, ?)';
     $stmt = $factory->getDatabase()->prepare($sql);
     $dueDate = self::generateDueDate($event);
     $stmt->bindValue(1, $dueDate->format('Y-m-d H:i:s'));
     $stmt->bindValue(2, $event['properties']['name']);
     $stmt->bindValue(3, $lead->getId());
     $stmt->bindValue(4, $event['properties']['assignUser']);
     $stmt->bindValue(5, 0);
     $dateTime = new \DateTime('now');
     $stmt->bindValue(6, $dateTime->format('Y-m-d H:i:s'));
     $stmt->execute();
     return true;
 }
Exemplo n.º 5
0
 /**
  * Drops plugin's tables based on Doctrine metadata.
  *
  * @param array         $metadata
  * @param MauticFactory $factory
  *
  * @throws \Doctrine\DBAL\ConnectionException
  * @throws \Exception
  */
 public static function dropPluginSchema(array $metadata, MauticFactory $factory)
 {
     $db = $factory->getDatabase();
     $schemaTool = new SchemaTool($factory->getEntityManager());
     $dropQueries = $schemaTool->getDropSchemaSQL($metadata);
     $db->beginTransaction();
     try {
         foreach ($dropQueries as $q) {
             $db->query($q);
         }
         $db->commit();
     } catch (\Exception $e) {
         $db->rollback();
         throw $e;
     }
 }
Exemplo n.º 6
0
 /**
  * @param MauticFactory $factory
  */
 public function __construct(MauticFactory $factory)
 {
     $this->factory = $factory;
     $this->db = $factory->getDatabase();
     $this->logger = $this->factory->getLogger();
 }