Пример #1
0
 /**
  * @param DB $db The database object
  * @param array $modIDs The IDs of the modules for which the settings should be loaded
  * @param array $pageIDs The nested page IDs context
  * @return array The settings found sorted by module IDs
  */
 public static function getSettingsForElements(DB $db, array $modIDs, array $pageIDs)
 {
     $params = array_merge($modIDs, $pageIDs, $pageIDs);
     $stmntSettings = $db->prepare("\n\t\t\tSELECT element_instance_IDFK, page_IDFK, text\n\t\t\tFROM element_text\n\t\t\tWHERE element_instance_IDFK IN (" . DB::createInQuery($modIDs) . ")\n\t\t\tAND page_IDFK IN (" . DB::createInQuery($pageIDs) . ")\n\t\t\tORDER BY FIELD(page_IDFK, " . DB::createInQuery($pageIDs) . ")\n\t\t");
     $resSettings = $db->select($stmntSettings, $params);
     $settingsArr = array();
     foreach ($resSettings as $res) {
         $settingsArr[$res->element_instance_IDFK][$res->page_IDFK] = $res;
     }
     return $settingsArr;
 }
Пример #2
0
 /**
  * @param string $elementIdentifier
  * @param array $settings
  * @param DB $db
  * @param array $modIDs Module IDs to load settings for
  * @param array $pageIDs Page context IDs
  * @param string $elementInstanceColumn
  * @param string $pageInstanceColumn
  * @return array
  */
 public static function loadCmsElementSettings($elementIdentifier, $settings, DB $db, array $modIDs, array $pageIDs, $elementInstanceColumn = 'element_instance_IDFK', $pageInstanceColumn = 'page_IDFK')
 {
     $params = array_merge($modIDs, $pageIDs, $pageIDs);
     $settingsCols = array();
     foreach ($settings as $col => $as) {
         $settingsCols[] = $col . ' ' . $as;
     }
     $stmntSettings = $db->prepare("\n\t\t\tSELECT " . $elementInstanceColumn . ", " . $pageInstanceColumn . ", " . implode(', ', $settingsCols) . "\n\t\t\tFROM " . $elementIdentifier . "\n\t\t\tWHERE " . $elementInstanceColumn . " IN (" . DB::createInQuery($modIDs) . ")\n\t\t\tAND " . $pageInstanceColumn . " IN (" . DB::createInQuery($pageIDs) . ")\n\t\t\tORDER BY FIELD(" . $pageInstanceColumn . ", " . DB::createInQuery($pageIDs) . ")\n\t\t");
     $resSettings = $db->select($stmntSettings, $params);
     $settingsArr = array();
     foreach ($resSettings as $res) {
         $settingsArr[$res->{$elementInstanceColumn}][$res->{$pageInstanceColumn}] = $res;
     }
     return $settingsArr;
 }
Пример #3
0
 /**
  * @param DB $db The database object
  * @param array $modIDs The IDs of the modules for which the settings should be loaded
  * @param array $pageIDs The nested page IDs context
  * @return array The settings found sorted by module IDs
  */
 public static function getSettingsForElements(DB $db, array $modIDs, array $pageIDs)
 {
     //try {
     /*$pageIds = array(1);*/
     $params = array_merge($modIDs, $pageIDs, $pageIDs);
     $stmntSettings = $db->prepare("\n\t\t\t\tSELECT mod_instance_IDFK, page_IDFK, east_grid_size, center_grid_size, west_grid_size,\n\t\t\t\t\tnorth_mod_IDFK, south_mod_IDFK, east_mod_IDFK, west_mod_IDFK, center_mod_IDFK\n\t\t\t\tFROM mod_border_layout\n\t\t\t\tWHERE mod_instance_IDFK IN (" . DB::createInQuery($modIDs) . ")\n\t\t\t\tAND page_IDFK IN (" . DB::createInQuery($pageIDs) . ")\n\t\t\t\tORDER BY FIELD(page_IDFK, " . DB::createInQuery($pageIDs) . ")\n\t\t\t");
     $resSettings = $db->select($stmntSettings, $params);
     $settingsArr = array();
     foreach ($resSettings as $res) {
         $settingsArr[$res->mod_instance_IDFK][$res->page_IDFK] = $res;
     }
     return $settingsArr;
     /*} catch(\Exception $e) {
     			return false;
     		}*/
 }
Пример #4
0
 /**
  * @param DB $db The database object
  * @param array $modIDs The IDs of the modules for which the settings should be loaded
  * @param array $pageIDs The nested page IDs context
  * @return array The settings found sorted by module IDs and page IDs
  */
 public static function getSettingsForElements(DB $db, array $modIDs, array $pageIDs)
 {
     $params = array_merge($modIDs, $pageIDs, $pageIDs);
     $stmntSettings = $db->prepare("\n\t\t\tSELECT element_instance_IDFK, page_IDFK, navigation_IDFK, level_from, level_to, mode, class_name, show_active_stages_only\n\t\t\tFROM element_nav\n\t\t\tWHERE element_instance_IDFK IN (" . DB::createInQuery($modIDs) . ")\n\t\t\tAND page_IDFK IN (" . DB::createInQuery($pageIDs) . ")\n\t\t\tORDER BY FIELD (page_IDFK, " . DB::createInQuery($pageIDs) . ")\n\t\t");
     $resSettings = $db->select($stmntSettings, $params);
     $settingsArr = array();
     foreach ($resSettings as $res) {
         $settingsArr[$res->element_instance_IDFK][$res->page_IDFK] = $res;
     }
     return $settingsArr;
 }
Пример #5
0
 /**
  * Creates a new element instance and stores its configuration
  * 
  * @param DB $db
  *
  * @return bool
  * @throws CMSException
  * @throws \Exception
  */
 public function create(DB $db)
 {
     try {
         // For default we create the instance in db... has to be overwritten if the module has any settings
         $stmntModID = $db->prepare("SELECT ID FROM cms_element_available WHERE name = ? AND active = 1");
         $resModID = $db->select($stmntModID, array($this->identifier));
         if (count($resModID) <= 0) {
             throw new CMSException('Could not create module with identifier: "' . $this->identifier . '"');
         }
         $stmntCreateInstance = $db->prepare("\n\t\t\t\tINSERT INTO cms_element_instance SET mod_IDFK = ?, parent_mod_IDFK = ?, creator_IDFK = ?, created = NOW(), page_IDFK = ?\n\t\t\t");
         $this->ID = $db->insert($stmntCreateInstance, array($resModID[0]->ID, $this->parentElement !== null ? $this->parentElement->getID() : null, $this->creatorID, $this->pageID));
     } catch (DBException $e) {
         throw new CMSException('Could not create module cause of DB error: ' . $e->getMessage() . ', Query: ' . $e->getQueryString());
     }
     return true;
 }
Пример #6
0
 public function addedChildElement(DB $db, CmsElement $cmsElement, $dropzoneID, $pageID)
 {
     $col = StringUtils::afterLast($dropzoneID, 'column-') + 1;
     $highestCountStmnt = $db->prepare("SELECT MAX(sort) highval FROM element_column_layout_module WHERE col = ?");
     $highestCount = $db->select($highestCountStmnt, array($col));
     $stmntInsert = $db->prepare("\n\t\t\tINSERT INTO element_column_layout_module\n\t\t\tSET element_column_layout_IDFK = ?, page_IDFK = ?, element_instance_IDFK = ?, col = ?, sort = ?\n\t\t");
     $db->insert($stmntInsert, array($this->ID, $pageID, $cmsElement->getID(), $col, $highestCount[0]->highval + 1));
 }
Пример #7
0
 private function getPKColumnsForTable(DB $db, $tableName)
 {
     $stmntPK = $db->prepare("\n\t\t\t\tSELECT k.COLUMN_NAME\n\t\t\t\tFROM information_schema.table_constraints t\n\t\t\t\tLEFT JOIN information_schema.key_column_usage k\n\t\t\t\tUSING(constraint_name, table_schema, table_name)\n\t\t\t\tWHERE t.constraint_type = 'PRIMARY KEY'\n\t\t\t\tAND t.table_schema = DATABASE()\n\t\t\t\tAND t.table_name= ?\n\t\t\t");
     $resPK = $db->select($stmntPK, array($tableName));
     $pkArray = array();
     foreach ($resPK as $pk) {
         $pkArray[] = $pk->COLUMN_NAME;
     }
     return $pkArray;
 }