/** * initialise module */ public function install() { if (!DBUtil::createTable('categories_category')) { return false; } // Create the index if (!DBUtil::createIndex('idx_categories_parent', 'categories_category', 'parent_id') || !DBUtil::createIndex('idx_categories_is_leaf', 'categories_category', 'is_leaf') || !DBUtil::createIndex('idx_categories_name', 'categories_category', 'name') || !DBUtil::createIndex('idx_categories_ipath', 'categories_category', array('ipath', 'is_leaf', 'status')) || !DBUtil::createIndex('idx_categories_status', 'categories_category', 'status') || !DBUtil::createIndex('idx_categories_ipath_status', 'categories_category', array('ipath', 'status'))) { return false; } $this->insertData_10(); // Set autonumber to 10000 (for DB's that support autonumber fields) $cat = array('id' => 9999, 'parent_id' => 1, 'is_locked' => 0, 'is_leaf' => 0, 'name' => '', 'value' => '', 'sort_value' => 0, 'display_name' => '', 'display_desc' => '', 'path' => '', 'ipath' => '', 'status' => ''); DBUtil::insertObject($cat, 'categories_category', 'id', true); // for postgres, we need to explicitly set the sequence value to reflect the inserted data $dbDriverName = strtolower(Doctrine_Manager::getInstance()->getCurrentConnection()->getDriverName()); if ($dbDriverName == 'pgsql') { $dbtables = DBUtil::getTables(); $tab = $dbtables['categories_category']; $col = $dbtables['categories_category_column']; $seq = $tab . '_cat_id_seq'; $sql = "SELECT setval('{$seq}', (SELECT MAX({$col['id']}) + 1 FROM {$tab}))"; DBUtil::executeSQL($sql); } DBUtil::deleteObjectByID('categories_category', 9999, 'id'); $this->createTables_101(); $this->setVar('userrootcat', '/__SYSTEM__/Users'); $this->setVar('allowusercatedit', 0); $this->setVar('autocreateusercat', 0); $this->setVar('autocreateuserdefaultcat', 0); $this->setVar('userdefaultcatname', 'Default'); // Initialisation successful return true; }
/** * Do the migration * * With this function, the actual migration is done. * * @return boolean true on sucessful migration, false else * @since 0.2 */ function EZComments_migrateapi_pnFlashGames() { // Security check if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_ADMIN)) { return LogUtil::registerError('pnFlashGames comments migration: Not Admin'); } // Get datbase setup $tables = DBUtil::getTables(); $Commentstable = $tables['pnFlashGames_comments']; $Commentscolumn = $tables['pnFlashGames_comments_column']; $Usertable = $tables['users']; $Usercolumn = $tables['users_column']; $sql = "SELECT {$Commentscolumn['gid']},\n {$Commentscolumn['uname']},\n {$Commentscolumn['date']},\n {$Commentscolumn['comment']},\n {$Usercolumn['uid']}\n FROM {$Commentstable}\n LEFT JOIN {$Usertable}\n ON {$Commentscolumn['uname']} = {$Usercolumn['uname']}"; $result = DBUtil::executeSQL($sql); if ($result == false) { return LogUtil::registerError('pnFlashGames migration: DB Error: ' . $sql . ' -- ' . mysql_error()); } // loop through the old comments and insert them one by one into the DB $items = DBUtil::marshalObjects($result, array('gid', 'uname', 'date', 'comment', 'uid')); foreach ($items as $item) { // set the correct user id for anonymous users if (empty($item['uid'])) { $item['uid'] = 1; } $id = ModUtil::apiFunc('EZComments', 'user', 'create', array('mod' => 'pnFlashGames', 'objectid' => DataUtil::formatForStore($item['gid']), 'url' => ModUtil::url('pnFlashGames', 'user', 'display', array('id' => $item['gid'])), 'comment' => $item['comment'], 'subject' => '', 'uid' => $item['uid'], 'date' => $item['date'])); if (!$id) { return LogUtil::registerError('pnFlashGames migration: Error creating comment'); } } return LogUtil::registerStatus('pnFlashGames migration successful'); }
/** * Update the IWwebbox module * @author Albert Pérez Monfort (aperezm@xtec.cat) * @author Jaume Fernàndez Valiente (jfern343@xtec.cat) * @return bool true if successful, false otherwise */ public function upgrade($oldversion) { // Update z_blocs table $c = "UPDATE blocks SET bkey = 'Webbox' WHERE bkey = 'webbox'"; if (!DBUtil::executeSQL($c)) { return false; } //Array de noms $oldVarsNames = DBUtil::selectFieldArray("module_vars", 'name', "`modname` = 'IWwebbox'", '', false, ''); $newVarsNames = Array('url', 'width', 'height', 'scrolls', 'widthunit'); $newVars = Array('url' => 'http://phobos.xtec.cat/intraweb', 'width' => '100', 'height' => '600', 'scrolls' => '1', 'widthunit' => '%'); // Delete unneeded vars $del = array_diff($oldVarsNames, $newVarsNames); foreach ($del as $i) { $this->delVar($i); } // Add new vars $add = array_diff($newVarsNames, $oldVarsNames); foreach ($add as $i) { $this->setVar($i, $newVars[$i]); } return true; }
/** * upgrade the module from an old version * * This function must consider all the released versions of the module! * If the upgrade fails at some point, it returns the last upgraded version. * * @param string $oldVersion version number string to upgrade from * @return mixed true on success, last valid version string or false if fails */ public function upgrade($oldversion) { // Upgrade dependent on old version number switch ($oldversion) { case '3.6': // Rename 'thelang' block. $table = 'blocks'; $sql = "UPDATE {$table} SET bkey = 'lang' WHERE bkey = 'thelang'"; \DBUtil::executeSQL($sql); // Optional upgrade if (in_array(\DBUtil::getLimitedTablename('message'), \DBUtil::metaTables())) { $this->migrateMessages(); } $this->migrateBlockNames(); $this->migrateExtMenu(); case '3.7': case '3.7.0': if (!\DBUtil::changeTable('blocks')) { return false; } case '3.7.1': $this->newBlockPositions(); case '3.8.0': // update empty filter fields to an empty array $entity = $this->name . '\\Entity\\Block'; $dql = "UPDATE {$entity} p SET p.filter = 'a:0:{}' WHERE p.filter = '' OR p.filter = 's:0:\"\";'"; $query = $this->entityManager->createQuery($dql); $query->getResult(); case '3.8.1': // future upgrade routines } // Update successful return true; }
function mediashare_mediahandlerapi_getHandlerInfo($args) { $dom = ZLanguage::getModuleDomain('mediashare'); $mimeType = strtolower($args['mimeType']); $filename = strtolower($args['filename']); if (!empty($filename)) { $dotPos = strpos($filename, '.'); if ($dotPos === false) { $fileType = ''; } else { $fileType = substr($filename, $dotPos + 1); } } else { $fileType = ''; } $pntable = pnDBGetTables(); $handlersTable = $pntable['mediashare_mediahandlers']; $handlersColumn = $pntable['mediashare_mediahandlers_column']; $sql = "SELECT DISTINCT {$handlersColumn['handler']},\r\n {$handlersColumn['foundMimeType']},\r\n {$handlersColumn['foundFileType']}\r\n FROM {$handlersTable}\r\n WHERE {$handlersColumn['mimeType']} = '" . DataUtil::formatForStore($mimeType) . "'\r\n OR {$handlersColumn['fileType']} = '" . DataUtil::formatForStore($fileType) . "'\r\n\t\t\t\t\t\t\t\t\t\t\t\tAND {$handlersColumn['active']} =\t1 "; $result = DBUtil::executeSQL($sql); $errormsg = __f('Unable to locate media handler for \'%1$s\' (%2$s)', array($filename, $mimeType), $dom); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('mediahandlerapi.getHandlerInfo', $errormsg), $dom)); } if (!$result) { return LogUtil::registerError($errormsg); } $colArray = array('handlerName', 'mimeType', 'fileType'); $handler = DBUtil::marshallObjects($result, $colArray); return $handler[0]; }
function delete() { // security check if (!SecurityUtil::checkPermission('AddressBook::', '::', ACCESS_ADMIN)) { return LogUtil::registerPermissionError(); } $ot = FormUtil::getPassedValue('ot', 'categories', 'GETPOST'); $id = (int) FormUtil::getPassedValue('id', 0, 'GETPOST'); $url = ModUtil::url('AddressBook', 'admin', 'view', array('ot' => $ot)); $class = 'AddressBook_DBObject_' . ucfirst($ot); if (!class_exists($class)) { return z_exit(__f('Error! Unable to load class [%s]', $ot)); } $object = new $class(); $data = $object->get($id); if (!$data) { LogUtil::registerError(__f('%1$s with ID of %2$s doesn\'\\t seem to exist', array($ot, $id))); return System::redirect($url); } $object->delete(); if ($ot == "customfield") { $sql = "ALTER TABLE addressbook_address DROP adr_custom_" . $id; try { DBUtil::executeSQL($sql, -1, -1, true, true); } catch (Exception $e) { } } LogUtil::registerStatus($this->__('Done! Item deleted.')); return System::redirect($url); }
/** * Search * * do the actual search and display the results * * @return output the search results */ public function search($args) { if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_READ)) { return true; } $minlen = 3; $maxlen = 30; if (strlen($args['q']) < $minlen || strlen($args['q']) > $maxlen) { return LogUtil::registerStatus($this->__f('The comments can only be searched for words that are longer than %1$s and less than %2$s characters!', array($minlen, $maxlen))); } ModUtil::dbInfoLoad('Search'); $tables = DBUtil::getTables(); // ezcomments tables $ezcommentstable = $tables['EZComments']; $ezcommentscolumn = $tables['EZComments_column']; // our own tables $searchTable = $tables['search_result']; $searchColumn = $tables['search_result_column']; // where $where = Search_Api_User::construct_where($args, array($ezcommentscolumn['subject'], $ezcommentscolumn['comment'])); $where .= " AND " . $ezcommentscolumn['url'] . " != ''"; $sessionId = session_id(); $insertSql = "INSERT INTO {$searchTable}\n ({$searchColumn['title']},\n {$searchColumn['text']},\n {$searchColumn['extra']},\n {$searchColumn['module']},\n {$searchColumn['created']},\n {$searchColumn['session']})\n VALUES\n "; $comments = DBUtil::selectObjectArray('EZComments', $where); foreach ($comments as $comment) { $sql = $insertSql . '(' . '\'' . DataUtil::formatForStore($comment['subject']) . '\', ' . '\'' . DataUtil::formatForStore($comment['comment']) . '\', ' . '\'' . DataUtil::formatForStore($comment['url']) . '\', ' . '\'' . 'EZComments' . '\', ' . '\'' . DataUtil::formatForStore($comment['date']) . '\', ' . '\'' . DataUtil::formatForStore($sessionId) . '\')'; $insertResult = DBUtil::executeSQL($sql); if (!$insertResult) { return LogUtil::registerError($this->__('Error! Could not load items.')); } } return true; }
/** * Performs the actual search processing. */ public function search($args) { ModUtil::dbInfoLoad('Search'); $dbtables = DBUtil::getTables(); $pageTable = $dbtables['content_page']; $pageColumn = $dbtables['content_page_column']; $contentTable = $dbtables['content_content']; $contentColumn = $dbtables['content_content_column']; $contentSearchTable = $dbtables['content_searchable']; $contentSearchColumn = $dbtables['content_searchable_column']; $translatedPageTable = $dbtables['content_translatedpage']; $translatedPageColumn = $dbtables['content_translatedpage_column']; $sessionId = session_id(); // check whether we need to search also in translated content $multilingual = System::getVar('multilingual'); $currentLanguage = ZLanguage::getLanguageCode(); $searchWhereClauses = array(); $searchWhereClauses[] = '(' . Search_Api_User::construct_where($args, array($pageColumn['title']), $pageColumn['language']) . ')'; if ($multilingual) { $searchWhereClauses[] = '(' . Search_Api_User::construct_where($args, array($translatedPageColumn['title']), $translatedPageColumn['language']) . ')'; } $searchWhereClauses[] = '(' . Search_Api_User::construct_where($args, array($contentSearchColumn['text']), $contentSearchColumn['language']) . ')'; // add default filters $whereClauses = array(); $whereClauses[] = '(' . implode(' OR ', $searchWhereClauses) . ')'; $whereClauses[] = $pageColumn['active'] . ' = 1'; $whereClauses[] = "({$pageColumn['activeFrom']} IS NULL OR {$pageColumn['activeFrom']} <= NOW())"; $whereClauses[] = "({$pageColumn['activeTo']} IS NULL OR {$pageColumn['activeTo']} >= NOW())"; $whereClauses[] = $contentColumn['active'] . ' = 1'; $whereClauses[] = $contentColumn['visiblefor'] . (UserUtil::isLoggedIn() ? ' <= 1' : ' >= 1'); $titleFields = $pageColumn['title']; $additionalJoins = ''; if ($multilingual) { // if searching in non-default languages, we need the translated title $titleFields .= ', ' . $translatedPageColumn['title'] . ' AS translatedTitle'; // join also the translation table if required $additionalJoins = "LEFT OUTER JOIN {$translatedPageTable} ON {$translatedPageColumn['pageId']} = {$pageColumn['id']} AND {$translatedPageColumn['language']} = '{$currentLanguage}'"; // prevent content snippets in other languages $whereClauses[] = $contentSearchColumn['language'] . ' = \'' . $currentLanguage . '\''; } $where = implode(' AND ', $whereClauses); $sql = "\n SELECT DISTINCT {$titleFields},\n {$contentSearchColumn['text']} AS description,\n {$pageColumn['id']} AS pageId,\n {$pageColumn['cr_date']} AS createdDate\n FROM {$pageTable}\n JOIN {$contentTable}\n ON {$contentColumn['pageId']} = {$pageColumn['id']}\n JOIN {$contentSearchTable}\n ON {$contentSearchColumn['contentId']} = {$contentColumn['id']}\n {$additionalJoins}\n WHERE {$where}\n "; $result = DBUtil::executeSQL($sql); if (!$result) { return LogUtil::registerError($this->__('Error! Could not load items.')); } $objectArray = DBUtil::marshallObjects($result); foreach ($objectArray as $object) { $pageTitle = $object['page_title']; if ($object['translatedTitle'] != '') { $pageTitle = $object['translatedTitle']; } $searchItemData = array('title' => $pageTitle, 'text' => $object['description'], 'extra' => $object['pageId'], 'created' => $object['createdDate'], 'module' => 'Content', 'session' => $sessionId); if (!\DBUtil::insertObject($searchItemData, 'search_result')) { return \LogUtil::registerError($this->__('Error! Could not save the search results.')); } } return true; }
public function getContent() { ModUtil::dbInfoLoad('Content'); $dbtables = DBUtil::getTables(); $query = "SELECT " . $dbtables['content_page_column']['id'] . " , " . $dbtables['content_page_column']['title'] . ", " . $dbtables['content_page_column']['views'] . " \n \tFROM " . $dbtables['content_page'] . "\n\tWHERE " . $dbtables['content_page_column']['views'] . " >= 0 AND " . $dbtables['content_page_column']['active'] . " >= 0 ORDER BY " . $dbtables['content_page_column']['views'] . " DESC LIMIT 25"; $dbresult = DBUtil::executeSQL($query); $views = DBUtil::marshallObjects($dbresult); $view = Zikula_View::getInstance('Content'); $view->assign('views', $views); return $view->fetch('content_widget_top25.tpl'); }
/** * Do the migration * * With this function, the actual migration is done. * * @return boolean true on sucessful migration, false else * @since 0.2 */ function EZComments_migrateapi_news() { // Security check if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_ADMIN)) { return LogUtil::registerError('News migration: Not Admin'); } // Get datbase setup $tables = DBUtil::getTables(); $EZCommentstable = $tables['EZComments']; $EZCommentscolumn = $tables['EZComments_column']; $Commentstable = $tables['comments']; $Commentscolumn = $tables['comments_column']; if (version_compare(PN_VERSION_NUM, '1', '>=')) { EZComments_get76xcolumns_news($Commentstable, $Commentscolumn); } if (is_null($Commentstable) || is_null($Commentscolumn)) { return LogUtil::registerError('News migration: Comments tables not found'); } $Usertable = $tables['users']; $Usercolumn = $tables['users_column']; $sql = "SELECT {$Commentscolumn['tid']},\n {$Commentscolumn['sid']},\n {$Commentscolumn['date']}, \n {$Usercolumn['uid']},\n {$Commentscolumn['comment']},\n {$Commentscolumn['subject']},\n {$Commentscolumn['pid']}\n FROM {$Commentstable}\n LEFT JOIN {$Usertable}\n ON {$Commentscolumn['name']} = {$Usercolumn['uname']}"; $result = DBUtil::executeSQL($sql); if ($result == false) { return LogUtil::registerError('News migration: DB Error'); } // array to rebuild the patents $comments = array(0 => array('newid' => -1)); // loop through the old comments and insert them one by one into the DB $items = DBUtil::marshalObjects($result, array('tid', 'sid', 'date', 'uid', 'comment', 'subject', 'replyto')); foreach ($items as $item) { // set the correct user id for anonymous users if (empty($item['uid'])) { $item['uid'] = 1; } $id = ModUtil::apiFunc('EZComments', 'user', 'create', array('mod' => 'News', 'objectid' => DataUtil::formatForStore($item['sid']), 'url' => ModUtil::url('News', 'user', 'display', array('sid' => $item['sid'])), 'comment' => $item['comment'], 'subject' => $item['subject'], 'uid' => $item['uid'], 'date' => $item['date'])); if (!$id) { return LogUtil::registerError('News migration: Error creating comment'); } $comments[$item['tid']] = array('newid' => $id, 'pid' => $item['replyto']); } // rebuild the links to the parents $tids = array_keys($comments); foreach ($tids as $tid) { if ($tid != 0) { $v = $comments[$tid]; $sql = "UPDATE {$EZCommentstable}\n SET {$EZCommentscolumn['replyto']} = '" . $comments[$v['pid']]['newid'] . "'\n WHERE {$EZCommentscolumn['id']} = '{$v['newid']}'"; $result = DBUtil::executeSQL($sql); } } // activate the ezcomments hook for the news module ModUtil::apiFunc('Modules', 'admin', 'enablehooks', array('callermodname' => 'News', 'hookmodname' => 'EZComments')); return LogUtil::registerStatus('News migration successful'); }
/** * Search plugin main function **/ public function search($args) { ModUtil::dbInfoLoad('Search'); $dbtables = DBUtil::getTables(); $searchTable = $dbtables['search_result']; $searchColumn = $dbtables['search_result_column']; $pageTable = $dbtables['content_page']; $pageColumn = $dbtables['content_page_column']; $contentTable = $dbtables['content_content']; $contentColumn = $dbtables['content_content_column']; $contentSearchTable = $dbtables['content_searchable']; $contentSearchColumn = $dbtables['content_searchable_column']; $sessionId = session_id(); $where = Search_Api_User::construct_where($args, array($contentSearchColumn['text']), null); $wheretitle = Search_Api_User::construct_where($args, array($pageColumn['title']), $pageColumn['language']); // Direct SQL way of searching in titles and searchable content items // for Pages and Content items that are visible/active // Optimization and conversion into DBUtil calls should be done $sql = "INSERT INTO $searchTable ($searchColumn[title], $searchColumn[text], $searchColumn[module], $searchColumn[extra], $searchColumn[created], $searchColumn[session]) SELECT DISTINCT $pageColumn[title], $contentSearchColumn[text], 'Content', $pageColumn[id], $pageColumn[cr_date] AS createdDate, '" . DataUtil::formatForStore($sessionId) . "' FROM $pageTable JOIN $contentTable ON $contentColumn[pageId] = $pageColumn[id] JOIN $contentSearchTable ON $contentSearchColumn[contentId] = $contentColumn[id] WHERE ($where or $wheretitle) AND $pageColumn[active] = 1 AND ($pageColumn[activeFrom] IS NULL OR $pageColumn[activeFrom] <= NOW()) AND ($pageColumn[activeTo] IS NULL OR $pageColumn[activeTo] >= NOW()) AND $contentColumn[active] = 1 AND $contentColumn[visiblefor] " . (UserUtil::isLoggedIn() ? '<=1' : '>=1'); $dbresult = DBUtil::executeSQL($sql); if (!$dbresult) { return LogUtil::registerError($this->__('Error! Could not load any Content pages or items.')); } return true; }
function updateFile($orgFileReference, $newFilename) { $dom = ZLanguage::getModuleDomain('mediashare'); $pntable = pnDBGetTables(); $mediadbTable = $pntable['mediashare_mediadb']; $mediadbColumn = $pntable['mediashare_mediadb_column']; $data = file_get_contents($newFilename); $bytes = count($data); $orgFileReference = DataUtil::formatForStore($orgFileReference); $sql = "UPDATE {$mediadbTable}\n SET {$mediadbColumn['data']} = '" . DataUtil::formatForStore($data) . "',\n {$mediadbColumn['bytes']} = '{$bytes}'\n WHERE {$mediadbColumn['fileref']} = '{$orgFileReference}'"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('vfsHandlerDB.updateFile', 'Could not update the file information.'), $dom)); } return true; }
/** * get Used Modules * * This function returns an array of the modules * for which a comment is available. This is used * for the "clean-up" feature that eliminates * orphaned comments after a module is deletd. * * @return list of all modules used */ public function getUsedModules() { if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_ADMIN)) { return LogUtil::registerPermissionError(ModUtil::url('EZComments', 'admin', 'main')); } $tables = DBUtil::getTables(); $table = $tables['EZComments']; $column = $tables['EZComments_column']; // TODO Port to DBUtil $sql = "SELECT {$column['modname']}\n FROM {$table}\n GROUP BY {$column['modname']}"; $result = DBUtil::executeSQL($sql); if ($result == false) { return false; } return DBUtil::marshallFieldArray($result); }
function addCustomFieldsToTableDefinition(&$columns) { // get the global db prefix $prefix = System::getVar('prefix'); $prefix = $prefix ? $prefix . '_' : ''; $tablecustomfields = $prefix . "addressbook_customfields"; $connection = Doctrine_Manager::getInstance()->getCurrentConnection(); if ($connection->import->tableExists($tablecustomfields)) { $sql = "SELECT cus_id FROM " . $tablecustomfields . " WHERE cus_id > 4 ORDER BY cus_id ASC"; $result = DBUtil::executeSQL($sql, -1, -1, false, true); if ($result) { $customfields = DBUtil::marshallObjects($result, array('id'), true); foreach ($customfields as $cus) { $col_def = 'custom_' . $cus['id']; $columns[$col_def] = 'adr_' . $col_def; } } } return; }
/** * Get all admin messages items that match the criteria * * @author Mark West, Jorn Wildt * @param bool args['activeonly'] only show active items * @return bool true/false on success/failure */ function Admin_Messages_searchapi_search($args) { $dom = ZLanguage::getModuleDomain('Admin_Messages'); // Security check if (!SecurityUtil::checkPermission('Admin_Messages::', '::', ACCESS_READ)) { return true; } // get the db and table info ModUtil::dbInfoLoad('Search'); $pntable = DBUtil::getTables(); $messagestable = $pntable['message']; $messagescolumn = $pntable['message_column']; $searchTable =& $pntable['search_result']; $searchColumn =& $pntable['search_result_column']; // form the where clause $where = ''; if (!ModUtil::getVar('Admin_Messages', 'allowsearchinactive') || isset($args['activeonly']) && (bool) $args['activeonly']) { $where .= " {$messagescolumn['active']} = 1 AND "; } $where .= " ({$messagescolumn['date']}+{$messagescolumn['expire']} > '" . time() . "' OR {$messagescolumn['expire']} = 0) AND"; $where .= search_construct_where($args, array($messagescolumn['title'], $messagescolumn['content']), $messagescolumn['language']); $sessionId = session_id(); $sql = "\nSELECT\n {$messagescolumn['mid']} as mid,\n {$messagescolumn['title']} as title,\n {$messagescolumn['content']} as text,\n {$messagescolumn['date']} as date\nFROM {$messagestable}\nWHERE {$where}"; $result = DBUtil::executeSQL($sql); if (!$result) { return LogUtil::registerError(__('Error! Could not load data.')); } $insertSql = "INSERT INTO {$searchTable}\n ({$searchColumn['title']},\n {$searchColumn['text']},\n {$searchColumn['module']},\n {$searchColumn['created']},\n {$searchColumn['session']})\nVALUES "; // Process the result set and insert into search result table for (; !$result->EOF; $result->MoveNext()) { $message = $result->GetRowAssoc(2); if (SecurityUtil::checkPermission('Admin_Messages::', "{$message['title']}::{$message['mid']}", ACCESS_READ)) { $sql = $insertSql . '(' . '\'' . DataUtil::formatForStore($message['title']) . '\', ' . '\'' . DataUtil::formatForStore($message['text']) . '\', ' . '\'' . 'Admin_Messages' . '\', ' . '\'' . DataUtil::formatForStore(DateUtil::getDatetime($message['date'])) . '\', ' . '\'' . DataUtil::formatForStore($sessionId) . '\')'; $insertResult = DBUtil::executeSQL($sql); if (!$insertResult) { return LogUtil::registerError(__('Error! Could not load data.', $dom)); } } } return true; }
/** * Do the migration * * With this function, the actual migration is done. * * @return boolean true on sucessful migration, false else * @since 0.6 */ function EZComments_migrateapi_reviews() { // Security check if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_ADMIN)) { return LogUtil::registerError('Reviews migration: Not Admin'); } // Get datbase setup ModUtil::dbInfoLoad('Reviews', 'EZComments/migrateapi/Reviews', true); $tables = DBUtil::getTables(); $Commentstable = $tables['reviews_comments']; $Commentscolumn = $tables['reviews_comments_column']; if (version_compare(PN_VERSION_NUM, '1', '>=')) { EZComments_get76xcolumns_reviews($Commentstable, $Commentscolumn); } if (is_null($Commentstable) || is_null($Commentscolumn)) { return LogUtil::registerError('Reviews migration: Comments tables not found'); } $Usertable = $tables['users']; $Usercolumn = $tables['users_column']; // note: there's nothing we can do with the score...... $sql = "SELECT {$Commentscolumn['cid']},\n {$Commentscolumn['rid']},\n {$Commentscolumn['date']}, \n {$Usercolumn['uid']}, \n {$Commentscolumn['comments']},\n {$Commentscolumn['score']}\n FROM {$Commentstable}\n LEFT JOIN {$Usertable}\n ON {$Commentscolumn['userid']} = {$Usercolumn['uname']}"; $result = DBUtil::executeSQL($sql); if ($result == false) { return LogUtil::registerError('Reviews migration: DB Error'); } // loop through the old comments and insert them one by one into the DB $items = DBUtil::marshalObjects($result, array('cid', 'rid', 'date', 'uid', 'comment', 'score')); foreach ($items as $item) { // set the correct user id for anonymous users if (empty($item['uid'])) { $item['uid'] = 1; } $id = ModUtil::apiFunc('EZComments', 'user', 'create', array('mod' => 'Reviews', 'objectid' => DataUtil::formatForStore($item['rid']), 'url' => ModUtil::url('Reviews', 'user', 'display', array('id' => $item['rid'])), 'comment' => $item['comment'], 'subject' => '', 'uid' => $item['uid'], 'date' => $item['date'])); if (!$id) { return LogUtil::registerError('Reviews migration: Error creating comment'); } } // activate the ezcomments hook for the Reviews module ModUtil::apiFunc('Modules', 'admin', 'enablehooks', array('callermodname' => 'Reviews', 'hookmodname' => 'EZComments')); return LogUtil::registerStatus('Reviews migration successful'); }
protected function createRecords($pid = -1, $lvl = 0) { $sql = "SELECT * FROM " . $this->tablePrefix . "_ce_contentitems WHERE mc_parent_id={$pid} ORDER BY mc_id"; $pid = $pid == -1 ? 0 : $pid; $this->recordLevels[$pid] = $lvl; $result = DBUtil::executeSQL($sql); $pages = DBUtil::marshallObjects($result); $fieldmap = $this->getFieldMap(); $i = 0; foreach ($pages as $page) { // correct values to Content appropriate types $page['mc_parent_id'] = $page['mc_parent_id'] == -1 ? 0 : $page['mc_parent_id']; $page['mc_status'] = $page['mc_status'] - 1; // remap fieldnames $currentRecordCount = $this->recordCount; foreach ($fieldmap as $newfield => $oldfield) { $this->records[$currentRecordCount][$newfield] = $page[$oldfield]; } $this->records[$currentRecordCount]['language'] = ZLanguage::getLanguageCode(); $this->records[$currentRecordCount]['layouttype'] = 'Column1'; $this->records[$currentRecordCount]['position'] = $i; $this->records[$currentRecordCount]['level'] = $this->recordLevels[$page['mc_parent_id']]; $this->records[$currentRecordCount]['setleft'] = ++$this->structureIndex; //0; //++$left; // create contenttype items $this->records[$currentRecordCount]['useheader'] = true; // this could loop and create multiple contentitems if needed $this->records[$currentRecordCount]['contentitems'] = array(0 => array('contenttype' => 'Html', 'areaIndex' => '1', 'inputType' => 'text', 'data' => $page['mc_text'])); $this->recordCount++; $i++; // position index // create recursive records for all child pages $this->createRecords($page['mc_id'], $lvl + 1); $this->records[$currentRecordCount]['setright'] = ++$this->structureIndex; //1; //++$left; } //return count($pages); }
function mediashare_searchapi_search($args) { $dom = ZLanguage::getModuleDomain('mediashare'); pnModDBInfoLoad('mediashare'); pnModDBInfoLoad('Search'); $pntable = pnDBGetTables(); $mediaTable = $pntable['mediashare_media']; $mediaColumn = $pntable['mediashare_media_column']; $albumsTable = $pntable['mediashare_albums']; $albumsColumn = $pntable['mediashare_albums_column']; $searchTable = $pntable['search_result']; $searchColumn = $pntable['search_result_column']; $sessionId = session_id(); // Find accessible albums $accessibleAlbumSql = pnModAPIFunc('mediashare', 'user', 'getAccessibleAlbumsSql', array('access' => mediashareAccessRequirementViewSomething, 'field' => "media.{$mediaColumn['parentAlbumId']}")); $albumText = __('Multimedia file in album: ', $dom); $sql = "\nINSERT INTO {$searchTable}\n ({$searchColumn['title']},\n {$searchColumn['text']},\n {$searchColumn['module']},\n {$searchColumn['extra']},\n {$searchColumn['created']},\n {$searchColumn['session']})\nSELECT CONCAT(media.{$mediaColumn['title']}, ' [{$albumText}', album.{$albumsColumn['title']}, ']'),\n media.{$mediaColumn['description']},\n 'mediashare',\n CONCAT(album.{$albumsColumn['id']}, ':', media.{$mediaColumn['id']}),\n media.{$mediaColumn['createdDate']},\n '{$sessionId}'\nFROM {$mediaTable} media\nINNER JOIN {$albumsTable} album\n ON album.{$albumsColumn['id']} = media.{$mediaColumn['parentAlbumId']}\nWHERE ({$accessibleAlbumSql}) AND "; $sql .= search_construct_where($args, array("media.{$mediaColumn['title']}", "media.{$mediaColumn['description']}", "media.{$mediaColumn['keywords']}")); $dbresult = DBUtil::executeSQL($sql); if (!$dbresult) { return LogUtil::registerError(__('Error! Could not load items.', $dom)); } return true; }
public function getContent() { $dbtables = DBUtil::getTables(); $query = "SELECT " . $dbtables['users_column']['user_regdate'] . " , DATE_FORMAT( " . $dbtables['users_column']['user_regdate'] . ", '%Y-%m-%d' ) AS dateval, COUNT( DATE_FORMAT( " . $dbtables['users_column']['user_regdate'] . ", '%Y-%m-%d' ) ) AS datetotal \n \tFROM " . $dbtables['users'] . "\n\tWHERE " . $dbtables['users_column']['user_regdate'] . " >= ( CURDATE( ) - INTERVAL 1 MONTH ) GROUP BY dateval"; $dbresult = DBUtil::executeSQL($query); $results = DBUtil::marshallObjects($dbresult); foreach ($results as $key => $result) { $registrations[$result['dateval']] = $result['datetotal']; } $date = new DateTime(); $date->sub(new DateInterval('P30D')); for ($i = 0; $i < 30; $i++) { $date->add(new DateInterval('P1D')); if (isset($registrations[$date->format('Y-m-d')])) { $days[$date->format('Y-m-d')] = $registrations[$date->format('Y-m-d')]; } else { $days[$date->format('Y-m-d')] = 0; } } $view = Zikula_View::getInstance('Users'); $view->assign('days', $days); return $view->fetch('users_widget_month.tpl'); return $content; }
/** * Delete all instances of the specified attribute for the given object type. * * This can be used to remove an attribute from the object attributes table when it is no longer defined by the object type. * * @param string $type The type/tablename that defines the given attribute. * @param string $attributeName The name of the attribute to delete for all users. * * @return the SQL result of the delete operation */ public static function deleteObjectTypeAttribute($type, $attributeName) { $dbtables = DBUtil::getTables(); $table = $dbtables['objectdata_attributes']; $column = $dbtables['objectdata_attributes_column']; $sql = "DELETE FROM {$table} WHERE {$column['object_type']} = '" . DataUtil::formatForStore($type) . "' "; $sql .= "AND {$column['attribute_name']} = '" . DataUtil::formatForStore($attributeName) . "' "; $res = DBUtil::executeSQL($sql); DBUtil::flushCache('objectdata_attributes'); if (isset($dbtables[$type])) { DBUtil::flushCache($type); } return $res; }
protected function migrateMessages() { // Migrate any Admin_Messages to blocks $messageTable = DBUtil::getLimitedTablename('message'); $blocksTable = 'blocks'; $messageBlocks = DBUtil::executeSQL("SELECT * FROM $blocksTable WHERE bkey = 'messages'")->fetchAll(Doctrine::FETCH_ASSOC); $result = DBUtil::executeSQL("SELECT * FROM $messageTable"); $data = $result->fetchAll(Doctrine::FETCH_ASSOC); if ($data) { foreach ($data as $key => $value) { foreach ($data[$key] as $k => $v) { unset($data[$key][$k]); $newKey = str_replace('z_', '', $k); $data[$key][$newKey] = $v; } unset($data[$key]['date']); unset($data[$key]['expire']); unset($data[$key]['view']); unset($data[$key]['mid']); if (!$messageBlocks) { $data[$key]['active'] = '0'; } $data[$key]['bkey'] = 'html'; $data[$key]['position'] = 'center'; $data[$key]['refresh'] = '3600'; $data[$key]['mid'] = ModUtil::getIdFromName('Blocks'); $data[$key] = DBUtil::insertObject($data[$key], 'blocks', 'bid'); $placement = array('pid' => 3, 'bid' => $data[$key]['bid']); DBUtil::insertObject($placement, 'block_placements', 'pid', true); } } // Remove Admin_Message table. DBUtil::executeSQL("DROP TABLE $messageTable"); // Remove any Admin_Message blocks $sql = "DELETE FROM $blocksTable WHERE bkey = 'messages'"; DBUtil::executeSQL($sql); }
/** * Update the IWforms module * @author Albert Pérez Monfort (aperezm@xtec.cat) * @author Jaume Fernàndez Valiente (jfern343@xtec.cat) * @return bool true if successful, false otherwise */ public function upgrade($oldversion) { switch ($oldversion) { case ($oldversion < '3.0.0'): //ADD new fields to tables $c1 = "ALTER TABLE `IWforms_definition` ADD `iw_returnURL` VARCHAR (150) NOT NULL"; if (!DBUtil::executeSQL($c1)) { return false; } $c2 = "ALTER TABLE `IWforms_definition` ADD `iw_filesFolder` VARCHAR (25) NOT NULL"; if (!DBUtil::executeSQL($c2)) { return false; } $c3 = "ALTER TABLE `IWforms_definition` ADD `iw_lang` VARCHAR (2) NOT NULL DEFAULT ''"; if (!DBUtil::executeSQL($c3)) { return false; } // Update z_blocs table $c4 = "UPDATE blocks SET bkey = 'Formnote' WHERE bkey = 'formnote'"; if (!DBUtil::executeSQL($c4)) { return false; } $c5 = "UPDATE blocks SET bkey = 'Formslist' WHERE bkey = 'formslist'"; if (!DBUtil::executeSQL($c5)) { return false; } // serialize bloc Formslist content $where = "bkey='Formslist'"; $items = DBUtil::selectObjectArray('blocks', $where, '', '-1', '-1'); foreach ($items as $item) { $valuesArray = explode('---', $item['url']); $categories = $valuesArray[0]; $listBox = $valuesArray[1]; $serialized = serialize(array('categories' => $categories, 'listBox' => $listBox)); $c = "UPDATE blocks SET content = '$serialized', url='' WHERE bid = $item[bid]"; if (!DBUtil::executeSQL($c)) { return false; } } //Array de noms $oldVarsNames = DBUtil::selectFieldArray("module_vars", 'name', "`modname` = 'IWforms'", '', false, ''); $newVarsNames = Array('characters', 'resumeview', 'newsColor', 'viewedColor', 'completedColor', 'validatedColor', 'fieldsColor', 'contentColor', 'attached', 'publicFolder'); $newVars = Array('characters' => '15', 'resumeview' => '0', 'newsColor' => '#90EE90', 'viewedColor' => '#FFFFFF', 'completedColor' => '#D3D3D3', 'validatedColor' => '#CC9999', 'fieldsColor' => '#ADD8E6', 'contentColor' => '#FFFFE0', 'attached' => 'forms', 'publicFolder' => 'forms/public'); // Delete unneeded vars $del = array_diff($oldVarsNames, $newVarsNames); foreach ($del as $i) { $this->delVar($i); } // Add new vars $add = array_diff($newVarsNames, $oldVarsNames); foreach ($add as $i) { $this->setVar($i, $newVars[$i]); } case '3.0.0': DBUtil::changeTable('IWforms_definition'); case '3.0.1': //Implement Scribite Hooks HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles()); //Templates to tpl $commands = array(); $commands[] ="ALTER TABLE IWforms_definition ALTER COLUMN iw_skinFormTemplate SET DEFAULT 'IWforms_user_new.tpl'"; $commands[] ="ALTER TABLE IWforms_definition ALTER COLUMN iw_skinTemplate SET DEFAULT 'IWforms_user_read.tpl'"; $commands[] ="ALTER TABLE IWforms_definition ALTER COLUMN iw_skinNoteTemplate SET DEFAULT 'IWforms_user_read.tpl'"; // Load DB connection $dbEvent = new Zikula_Event('doctrine.init_connection'); $connection = $this->eventManager->notify($dbEvent)->getData(); foreach ($commands as $sql) { $stmt = $connection->prepare($sql); $stmt->execute(); } case '3.0.2': } return true; }
public function getMessagesNews($args) { $result = array(); $dateTimeFrom = $args['dateTimeFrom']; $dateTimeTo = $args['dateTimeTo']; //Checking IWmessages module $modinfo = ModUtil::getInfo(ModUtil::getIdFromName('IWmessages')); if ($modinfo['state'] != 3) return $result; if (!is_null($dateTimeFrom)) { $sql = "SELECT iw_msg_id AS msg_id, iw_subject AS subject, UNIX_TIMESTAMP(iw_msg_time) AS msg_time, iw_to_userid AS to_userid, iw_from_userid AS from_userid, iw_read_msg AS read_msg"; $sql .= " FROM IWmessages"; $sql .= " WHERE iw_read_msg = 0 AND UNIX_TIMESTAMP(iw_msg_time) >=".$dateTimeFrom." AND UNIX_TIMESTAMP(iw_msg_time) <".$dateTimeTo; $query = DBUtil::executeSQL($sql); $messages = DBUtil::marshallObjects($query); $mes2 = array(); foreach ($messages as $message) { $sv = ModUtil::func('IWmain', 'user', 'genSecurityValue'); $fromUserInfo = ModUtil::func($this->name, 'user', 'getUserInfo', array('sv' => $sv, 'uid' => $message['from_userid'],'info'=> array('l','n','c1'))); $message['from_userName'] = ($fromUserInfo['n'] != '') ? $fromUserInfo['n']." ".$fromUserInfo['c1'] : $fromUserInfo['l']; $message['msg_time_tx'] = date("d-m-Y / H:i",$message['msg_time']); $mes2[$message['to_userid']][] = $message; } foreach ($mes2 as $key => $me2) { $view = Zikula_View::getInstance($this->name, false); $view->assign('messages', $me2); $result[$key]['IWmessages'] = $view->fetch('reports/IWmessages_user_report.tpl'); } } return $result; }
/** * Create a new perm. * * @param string $args ['realm'] the new realm of the permission. * @param int $args ['id'] the new group/user id of the permission. * @param string $args ['component'] the new component of the permission. * @param string $args ['instance'] the new instance of the permission. * @param int $args ['level'] the new level of the permission. * * @return boolean true on success, false on failure. */ public function create($args) { // Security check if (!SecurityUtil::checkPermission('Permissions::', "group::{$args['id']}", ACCESS_ADMIN)) { return LogUtil::registerPermissionError(); } // Argument check if (!isset($args['realm']) || !isset($args['id']) || !isset($args['component']) || !isset($args['instance']) || !isset($args['level']) || !isset($args['insseq'])) { return LogUtil::registerArgsError(); } // Work out which tables to operate against $dbtable = DBUtil::getTables(); $permtable = $dbtable['group_perms']; $permcolumn = $dbtable['group_perms_column']; // Insert Capability if ($args['insseq'] == -1) { $maxseq = $this->maxsequence(array('column' => 'sequence')); $newseq = $maxseq + 1; } else { // Increase sequence numbers $query = "UPDATE {$permtable}\n SET {$permcolumn['sequence']} = {$permcolumn['sequence']} + 1\n WHERE {$permcolumn['sequence']} >= '" . (int) DataUtil::formatForStore($args['insseq']) . "'"; if (!DBUtil::executeSQL($query)) { return LogUtil::registerError($this->__('Error! Could not save permission rule sequences.')); } $newseq = $args['insseq']; } $obj = array('realm' => (int) $args['realm'], 'gid' => (int) $args['id'], 'sequence' => $newseq, 'component' => $args['component'], 'instance' => $args['instance'], 'level' => (int) $args['level']); $newobj = DBUtil::insertObject($obj, 'group_perms', 'pid'); if ($newobj === false) { return LogUtil::registerError('Error adding group permission'); } // Clean-up $this->resequence(); return $newobj; }
public function hasbookings($args) { $mdid = FormUtil::getPassedValue('mdid', isset($args['mdid']) ? $args['mdid'] : null); //, 'GET'); if (empty($mdid)) { return LogUtil::registerError($this->__('Error! Could not do what you wanted. Please check your input.')); } // Security check if (!SecurityUtil::checkPermission('IWtimeframes::', "::", ACCESS_ADMIN)) { return LogUtil::registerError($this->__('Not authorized to manage timeFrames.'), 403); } $modid = ModUtil::getIdFromName('IWbookings'); $modinfo = ModUtil::getInfo($modid); // chek if IWbookings module is installed -> state 2 or 3 if ($modinfo['state'] > 1) { $pntables = DBUtil::getTables(); $t1 = $pntables['IWbookings']; $t2 = $pntables['IWbookings_spaces']; $c1 = $pntables['IWbookings_column']; $c2 = $pntables['IWbookings_spaces_column']; $sql = "SELECT * " . " FROM $t1 INNER JOIN $t2 ON $t1.$c1[sid] = $t2.$c2[sid] " . " WHERE $t2.$c2[mdid]= " . $mdid; //$where = "" $result = DBUtil::executeSQL($sql); for ($nitems = -1; !$result->EOF; $result->MoveNext()) $nitems ++; return ($nitems); } else { return false; } }
/** * Generate the upgrade module page. * * This function upgrade available module to an upgrade * * @param string $username Username of the admin user. * @param string $password Password of the admin user. * * @return void */ function _upg_upgrademodules($username, $password) { _upg_header(); $modvars = DBUtil::selectObjectArray('module_vars'); foreach ($modvars as $modvar) { if ($modvar['value'] == '0' || $modvar['value'] == '1') { $modvar['value'] = serialize($modvar['value']); DBUtil::updateObject($modvar, 'module_vars'); } } // force load the modules admin API ModUtil::loadApi('Extensions', 'admin', true); echo '<h2>' . __('Starting upgrade') . '</h2>' . "\n"; echo '<ul id="upgradelist" class="check">' . "\n"; // reset for User module //$GLOBALS['_ZikulaUpgrader']['_ZikulaUpgradeFrom12x'] = false; $results = ModUtil::apiFunc('Extensions', 'admin', 'upgradeall'); if ($results) { foreach ($results as $modname => $result) { if ($result) { echo '<li class="passed">' . DataUtil::formatForDisplay($modname) . ' ' . __('upgraded') . '</li>' . "\n"; } else { echo '<li class="failed">' . DataUtil::formatForDisplay($modname) . ' ' . __('not upgraded') . '</li>' . "\n"; } } } echo '</ul>' . "\n"; if (!$results) { echo '<ul class="check"><li class="passed">' . __('No modules required upgrading') . '</li></ul>'; } // wipe out the deprecated modules from Modules list. $modTable = 'modules'; $sql = "DELETE FROM {$modTable} WHERE name = 'Header_Footer' OR name = 'AuthPN' OR name = 'pnForm' OR name = 'Workflow' OR name = 'pnRender' OR name = 'Admin_Messages'"; DBUtil::executeSQL($sql); // store localized displayname and description for Extensions module $extensionsDisplayname = __('Extensions'); $extensionsDescription = __('Manage your modules and plugins.'); $sql = "UPDATE modules SET name = 'Extensions', displayname = '{$extensionsDisplayname}', description = '{$extensionsDescription}' WHERE modules.name = 'Extensions'"; DBUtil::executeSQL($sql); // regenerate the themes list ModUtil::apiFunc('Theme', 'admin', 'regenerate'); // store the recent version in a config var for later usage. This enables us to determine the version we are upgrading from System::setVar('Version_Num', Zikula_Core::VERSION_NUM); System::setVar('language_i18n', ZLanguage::getLanguageCode()); // Relogin the admin user to give a proper admin link SessionUtil::requireSession(); echo '<p class="z-statusmsg">' . __('Finished upgrade') . " - \n"; $authenticationInfo = array('login_id' => $username, 'pass' => $password); $authenticationMethod = array('modname' => 'Users', 'method' => 'uname'); if (!UserUtil::loginUsing($authenticationMethod, $authenticationInfo)) { $url = sprintf('<a href="%s">%s</a>', DataUtil::formatForDisplay(System::getBaseUrl()), DataUtil::formatForDisplay(System::getVar('sitename'))); echo __f('Go to the startpage for %s', $url); } else { upgrade_clear_caches(); $url = sprintf('<a href="%s">%s</a>', ModUtil::url('Admin', 'admin', 'adminpanel'), DataUtil::formatForDisplay(System::getVar('sitename'))); echo __f('Go to the admin panel for %s', $url); } echo "</p>\n"; _upg_footer(); }
/** * Move Categories by Path (recursive move). * * @param string $apath The path to move from. * @param intiger $newparent_id The categoryID of the new parent category. * @param string $field The field to use for the path reference (optional) (default='ipath'). * @param boolean $includeRoot Whether or not to also move the root folder (optional) (default=true). * * @return true or false. */ public static function moveCategoriesByPath($apath, $newparent_id, $field = 'ipath', $includeRoot = true) { if (!$apath) { return false; } $cats = self::getCategoriesByPath($apath, 'path', $field); $newParent = self::getCategoryByID($newparent_id); if (!$newParent || !$cats) { $false = false; return $false; } $newParentIPath = $newParent['ipath'] . '/'; $newParentPath = $newParent['path'] . '/'; $oldParent = self::getCategoryByID($cats[0]['parent_id']); $oldParentIPath = $oldParent['ipath'] . '/'; $oldParentPath = $oldParent['path'] . '/'; ModUtil::dbInfoLoad('Categories'); $dbtables = DBUtil::getTables(); $category_table = $dbtables['categories_category']; $category_column = $dbtables['categories_category_column']; $pathField = $category_column[$field]; $fpath = $category_column['path']; $fipath = $category_column['ipath']; $sql = "UPDATE {$category_table} SET\n {$fpath} = REPLACE({$fpath}, '{$oldParentPath}', '{$newParentPath}'),\n {$fipath} = REPLACE({$fipath}, '{$oldParentIPath}', '{$newParentIPath}')\n WHERE {$pathField} = '" . DataUtil::formatForStore($apath) . "' OR {$pathField} LIKE '" . DataUtil::formatForStore($apath) . "/%'"; DBUtil::executeSQL($sql); $pid = $cats[0]['id']; if ($includeRoot) { $sql = "UPDATE {$category_table} SET {$category_column['parent_id']} = '" . DataUtil::formatForStore($newparent_id) . "' WHERE {$category_column['id']} = '" . DataUtil::formatForStore($pid) . "'"; } else { $sql = "UPDATE {$category_table} SET {$category_column['parent_id']} = '" . DataUtil::formatForStore($newparent_id) . "' WHERE {$category_column['parent_id']} = '" . DataUtil::formatForStore($pid) . "'"; } DBUtil::executeSQL($sql); return true; }
public function getPrimaryKey($tableName) { $sql = "show index from " .$tableName." where Key_name = 'PRIMARY'"; $def =DBUtil::marshallObjects(DBUtil::executeSQL($sql)); return $def[0]['Column_name']; }
/** * Get all comments attached to a module * * @author Mark West * @return mixed array of items if successful, false otherwise */ public function getallbymodule($args = array()) { // Security check if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_OVERVIEW)) { return false; } // check for a valid module if (!isset($args['mod']) || !is_string($args['mod'])) { return false; } $mod = DataUtil::formatForOS($args['mod']); // Get database setup $tables = DBUtil::getTables(); $eztable = $tables['EZComments']; $columns = $tables['EZComments_column']; $sql = " SELECT $columns[objectid], $columns[url], count(*) FROM $eztable WHERE $columns[modname] = '$mod' GROUP BY $columns[objectid] ORDER BY $columns[objectid]"; $result = DBUtil::executeSQL($sql); // Check for an error with the database code, and if so set an appropriate // error message and return if ($result == false) { return LogUtil::registerError($this->__('Error! Could not load items.')); } // Put items into result array. Note that each item is checked // individually to ensure that the user is allowed access to it before it // is added to the results array $items = DBUtil::marshallObjects($result, array('objectid', 'url', 'count')); // Return the items return $items; }
/** * upgrade */ public function upgrade($oldversion) { // Upgrade dependent on old version number switch ($oldversion) { case '2.4': $prefix = $this->serviceManager['prefix']; $connection = Doctrine_Manager::getInstance()->getConnection('default'); $sql = 'RENAME TABLE ' . $prefix . '_' . 'reviews' . ' TO ' . 'reviews'; $stmt = $connection->prepare($sql); try { $stmt->execute(); } catch (Exception $e) { LogUtil::registerError($e); } case '2.4.1': try { DoctrineHelper::updateSchema($this->entityManager, $this->listEntityClasses()); } catch (\Exception $e) { if (System::isDevelopmentMode()) { LogUtil::registerError($this->__('Doctrine Exception: ') . $e->getMessage()); } return LogUtil::registerError($this->__f('An error was encountered while dropping the tables for the %s extension.', array($this->getName()))); } $repository = $this->getEntityManager()->getRepository('Reviews_Entity_Review'); // we get all old entries $result = DBUtil::executeSQL('SELECT * FROM `reviews`'); $reviews = $result->fetchAll(Doctrine::FETCH_ASSOC); $dom = ZLanguage::getModuleDomain($this->name); $workflowHelper = new Zikula_Workflow('standard', 'Reviews'); // we get serviceManager $serviceManager = ServiceUtil::getManager(); // we get entityManager $entityManager = $serviceManager->getService('doctrine.entitymanager'); if (count($reviews) > 0) { foreach ($reviews as $key => $review) { $newReview = new Reviews_Entity_Review(); $newReview->setWorkflowState('approved'); $newReview->setTitle($review['pn_title']); $newReview->setText($review['pn_text']); if ($review['pn_reviewer'] != '') { $newReview->setReviewer($review['pn_reviewer']); } else { $newReview->setReviewer(__('Unknown', $dom)); } if ($review['pn_email'] != '') { $newReview->setEmail($review['pn_email']); } else { $adminmail = UserUtil::getVar('email', 2); $newReview->setEmail(__($adminmail)); } $newReview->setScore($review['pn_score']); $newReview->setCover($review['pn_cover']); $newReview->setUrl($review['pn_url']); $newReview->setUrl_title($review['pn_url_title']); $newReview->setHits($review['pn_hits']); $newReview->setZlanguage($review['pn_language']); $createdDate = new Datetime($review['pn_cr_date']); $newReview->setCreatedDate($createdDate); $updatedDate = new DateTime($review['pn_lu_date']); $newReview->setUpdatedDate($updatedDate); $newReview->setCreatedUserId($review['pn_cr_uid']); $newReview->setUpdatedUserId($review['pn_lu_uid']); $entityManager->persist($newReview); $entityManager->flush(); } } $result2 = DBUtil::executeSQL('SELECT * FROM `reviews_review`'); $reviews2 = $result2->fetchAll(Doctrine::FETCH_ASSOC); // we set the workflow foreach ($reviews2 as $key => $review2) { $obj['__WORKFLOW__']['obj_table'] = 'review'; $obj['__WORKFLOW__']['obj_idcolumn'] = 'id'; $obj['id'] = $review2['id']; $workflowHelper->registerWorkflow($obj, 'approved'); } // move relations from categories_mapobj to reviews_category // then delete old data $connection = $this->entityManager->getConnection(); $sqls = array(); $sqls[] = "INSERT INTO reviews_review_category (entityId, registryId, categoryId) SELECT obj_id, reg_id, category_id FROM categories_mapobj WHERE modname = 'Reviews' AND tablename = 'reviews'"; $sqls[] = "DELETE FROM categories_mapobj WHERE modname = 'Reviews' AND tablename = 'reviews'"; // update category registry data to change tablename to EntityName $sqls[] = "UPDATE categories_registry SET tablename = 'Review' WHERE tablename = 'reviews'"; // do changes foreach ($sqls as $sql) { $stmt = $connection->prepare($sql); try { $stmt->execute(); } catch (Exception $e) { LogUtil::registerError($e->getMessage()); } } $pagesize = $this->getVar('itemsperpage'); $this->setVar('pagesize', $pagesize); $this->delVar('itemsperpage'); $this->setVar('scoreForUsers', false); $addcategorytitletopermalink = $this->getVar('addcategorytitletopermalink'); $this->setVar('addcategorytitletopermalink'); // register persistent event handlers $this->registerPersistentEventHandlers(); // register hook subscriber bundles HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles()); DBUtil::dropTable('reviews'); case '2.5.0': // later upgrades } // upgrade successful return true; }