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]; }
/** * 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'); }
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; }
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); }
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; }
/** * 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; }
public function getPrimaryKey($tableName) { $sql = "show index from " .$tableName." where Key_name = 'PRIMARY'"; $def =DBUtil::marshallObjects(DBUtil::executeSQL($sql)); return $def[0]['Column_name']; }
public function getTranslations($args) { $pageId = (int) $args['pageId']; $table = DBUtil::getTables(); $translatedTable = $table['content_translatedcontent']; $translatedColumn = $table['content_translatedcontent_column']; $contentTable = $table['content_content']; $contentColumn = $table['content_content_column']; $cols = DBUtil::_getAllColumns('content_translatedcontent'); $ca = DBUtil::getColumnsArray('content_translatedcontent'); $sql = "\n SELECT {$cols}\n FROM {$translatedTable} t\n LEFT JOIN {$contentTable} c\n ON c.{$contentColumn['id']} = t.{$translatedColumn['contentId']}\n WHERE c.{$contentColumn['pageId']} = {$pageId}"; $dbresult = DBUtil::executeSQL($sql); $translations = DBUtil::marshallObjects($dbresult, $ca); return $translations; }
/** * Retorna un array que conté els diferents arrays necessaris per als selects del formulari de cerca general * * > L'array obtingut conté diversos subarrays que retornen la informació per a selects de:\n * > destinataris, modalitats de curs, presencialitat, zones * * @param array $args Array amb els paràmetres de la funció * * ### Paràmetres de l'array $args: * integer **catId** Identificador de catàleg * * @return array Subarrays amb selects de tria per a la cerca general */ public function parametresCerca($catId) { if (!SecurityUtil::checkPermission('Cataleg::', '::', ACCESS_READ)) { return LogUtil::registerPermissionError(); } // recuperem destinataris... // $destinataris[0] = ''; $destinatarisTot = ModUtil::apiFunc('Cataleg', 'user', 'getTipus', array('tipus' => 'dest')); foreach ($destinatarisTot as $dest) { $sql = "SELECT COUNT(*) AS comptat FROM cataleg_activitats WHERE cataleg_activitats.destinataris LIKE CONCAT('%\"','" . $dest['auxId'] . "','\"%') AND (cataleg_activitats.estat = 3 OR cataleg_activitats.estat =4)AND cataleg_activitats.priId IN (SELECT priId FROM cataleg_prioritats WHERE cataleg_prioritats.eixId IN (SELECT eixId FROM cataleg_eixos WHERE cataleg_eixos.catId = $catId))"; $result = DBUtil::executeSQL($sql); $recordset = DBUtil::marshallObjects($result); $count = $recordset[0]['comptat']; if ($count > 0) { $cerca['pdestinataris'][$dest['auxId']] = $dest['nom']; } } // recuperem modalitats de curs... $cerca['pmodscurs'][0] = ''; $modscursTot = ModUtil::apiFunc('Cataleg', 'user', 'getTipus', array('tipus' => 'curs')); foreach ($modscursTot as $mod) { $sql = "SELECT COUNT(*) AS comptat FROM cataleg_activitats WHERE cataleg_activitats.curs =" . $mod['auxId'] . " AND (cataleg_activitats.estat = 3 OR cataleg_activitats.estat =4)AND cataleg_activitats.priId IN (SELECT priId FROM cataleg_prioritats WHERE cataleg_prioritats.eixId IN (SELECT eixId FROM cataleg_eixos WHERE cataleg_eixos.catId = $catId))"; $result = DBUtil::executeSQL($sql); $recordset = DBUtil::marshallObjects($result); $count = $recordset[0]['comptat']; if ($count > 0) { $cerca['pmodscurs'][$mod['auxId']] = $mod['nom']; } } // recuperem presencialitat... $cerca['ppresencials'][0] = ''; $presenTot = ModUtil::apiFunc('Cataleg', 'user', 'getTipus', array('tipus' => 'pres')); foreach ($presenTot as $pres) { $sql = "SELECT COUNT(*) AS comptat FROM cataleg_activitats WHERE cataleg_activitats.presencialitat = " . $pres['auxId'] . " AND (cataleg_activitats.estat = 3 OR cataleg_activitats.estat =4)AND cataleg_activitats.priId IN (SELECT priId FROM cataleg_prioritats WHERE cataleg_prioritats.eixId IN (SELECT eixId FROM cataleg_eixos WHERE cataleg_eixos.catId = $catId))"; $result = DBUtil::executeSQL($sql); $recordset = DBUtil::marshallObjects($result); $count = $recordset[0]['comptat']; if ($count > 0) { $cerca['ppresencials'][$pres['auxId']] = $pres['nom']; } } // recuperem zones o lloc... $cerca['psstt'][0] = ''; $ssttTot = ModUtil::apiFunc('Cataleg', 'user', 'getTipus', array('tipus' => 'sstt')); foreach ($ssttTot as $st) { $sql = "SELECT COUNT(*) AS comptat FROM cataleg_activitatsZona INNER JOIN cataleg_activitats ON cataleg_activitatsZona.actId=cataleg_activitats.actId WHERE cataleg_activitatsZona.lloc = " . $st['auxId'] . " AND cataleg_activitatsZona.qtty >0 AND (cataleg_activitats.estat = 3 OR cataleg_activitats.estat =4)AND cataleg_activitats.priId IN (SELECT priId FROM cataleg_prioritats WHERE cataleg_prioritats.eixId IN (SELECT eixId FROM cataleg_eixos WHERE cataleg_eixos.catId = $catId))"; $result = DBUtil::executeSQL($sql); $recordset = DBUtil::marshallObjects($result); $count = $recordset[0]['comptat']; if ($count > 0) { $cerca['psstt'][$st['auxId']] = $st['nom']; } } return $cerca; }
public function MostCommentsBlock_getall($args = array()) { if (!isset($args['numitems']) || !is_numeric($args['numitems'])) { $args['numitems'] = -1; } // Security check if (!SecurityUtil::checkPermission('EZComments::', '::', ACCESS_OVERVIEW)) { return array(); } // Get database setup $pntable = pnDBGetTables(); $table = $pntable['EZComments']; $columns =& $pntable['EZComments_column']; // form where clause $whereclause = array(); if (isset($args['mod'])) { $whereclause[] = "{$columns['modname']} = '" . DataUtil::formatForStore($args['mod']) . "'"; } // create where clause $where = ''; if (!empty($whereclause)) { $where = implode(' AND ', $whereclause) . ' and '; } $permFilter[] = array('component_left' => 'EZComments', 'component_middle' => '', 'component_right' => '', 'instance_left' => 'modname', 'instance_middle' => 'objectid', 'instance_right' => 'id', 'level' => ACCESS_READ); $cols = DBUtil::_getAllColumns('EZComments'); // FIXME: don't need all $ca = DBUtil::getColumnsArray('EZComments'); $ca[] = "count"; $sql = "\n SELECT DISTINCT\n {$cols},\n count(*) as count\n FROM {$table}\n where {$where} {$columns['status']} = 0\n group by {$columns['modname']},{$columns['objectid']}\n order by count desc\n "; $dbresult = DBUtil::executeSQL($sql, 0, $args['numitems']); $items = DBUtil::marshallObjects($dbresult, $ca); // backwards compatibilty: modname -> mod foreach (array_keys($items) as $k) { $items[$k]['mod'] = $items[$k]['modname']; } // return the items return $items; }
/** * Get all unreaded messages for all forums and all subscribers * @author Josep Ferràndiz Farré (jferran6@xtec.cat) * * @param $dateTimeFrom timestamp date/time indicates starting period until now to retrieve unreaded messages * @return array with messages unreaded per user, grouped by forum and topic * * @version 3.1.0 * @date 09/03/2015 */ public function getAllUnreadedMessages($time) { $dateTimeFrom = $time['dateTimeFrom']; $dateTimeTo = $time['dateTimeTo']; $messages = array(); $report = array(); if (!is_null($dateTimeFrom)) { $pntable = DBUtil::getTables(); $f = $pntable['IWforums_definition_column']; $t = $pntable['IWforums_temes_column']; $m = $pntable['IWforums_msg_column']; // Get all the messages posted after $dateTimeFrom in subscribibles forums $sql = "SELECT F.$f[fid] AS fid, M.$m[ftid] AS ftid, M.$m[fmid] AS fmid, M.$m[titol] AS msgTitle, M.$m[usuari] AS user, M.$m[data] AS date, M.$m[llegit] AS readers, T.$t[titol] AS topic, T.$t[order], "; $sql .= "F.$f[nom_forum] AS forum, F.subscriptionMode, F.subscribers, F.noSubscribers, F.$f[grup] AS grup, F.$f[mod] AS moderators "; $sql .= "FROM `IWforums_msg` AS M, `IWforums_temes` AS T, `IWforums_definition` AS F "; $sql .= "WHERE M.$m[ftid] = T.$t[ftid] AND T.$t[fid] = F.$f[fid] AND F.$f[actiu] = 1 AND M.$m[data] >= ".$dateTimeFrom." AND M.$m[data] < ".$dateTimeTo." AND F.subscriptionMode > 0 "; $sql .= "ORDER BY F.$f[fid], T.$t[order], M.$m[data]"; $query = DBUtil::executeSQL($sql); $messages = DBUtil::marshallObjects($query); foreach ($messages as $key => $message) { // Extract forum moderators $moderators = explode('$$', substr($message['moderators'], 0, strlen($message['moderators']) -1)); unset($moderators[0]); //Extract message readers $readers = explode('$$', substr($message['readers'], 0, strlen($message['readers']) -1)); unset($readers[0]); // Extract grups $auxGroups = explode('$$', substr($message['grup'], 0, strlen($message['grup']) -1)); unset($auxGroups[0]); $groups = array(); foreach ($auxGroups as $ag){ $g = explode ('|', $ag); $groups[] = $g[0]; } // Construct a unique list with the users that have read access to a forum $members = array(); foreach ($groups as $group){ // Get group members $users = UserUtil::getUsersForGroup($group); foreach ($users as $user){ // Avoid duplicated users if (!in_array($user, $members)) $members[$user] = $user; } } // Add moderators foreach ($moderators as $moderator){ if (!in_array($moderator, $members)) $members[$moderator] = $moderator; } // Remove readers foreach ($readers as $reader) { if (in_array($reader, $members)) unset($members[$reader]); } switch ($message['subscriptionMode']){ case IWforums_Constant::COMPULSORY: // Everybody in readers groups are subscribed. Moderator too // Get forum groups $messages[$key]['receivers'] = $members; break; case IWforums_Constant::VOLUNTARY: // Only subscribers group membership $subscribers = explode('$', $message['subscribers']); foreach ($subscribers as $subscriber){ if (in_array($subscriber, $members)) $messages[$key]['receivers'][$subscriber] = $subscriber; } break; case IWforums_Constant::OPTIONAL: // Everybody in readers groups execept unsubscribers $noSubscribers = explode('$', $message['noSubscribers']); foreach ($noSubscribers as $noSubscriber){ if (in_array($noSubscriber, $members)) unset($member[$noSubscriber]); } $messages[$key]['receivers'] = $members; break; } } // At this point, every message has a list of receivers // Let's construct an array with the associated information to send $information = array(); foreach ($messages as $message){ if (isset($message['receivers'])) { foreach($message['receivers'] as $receiver){ $sv = ModUtil::func('IWmain', 'user', 'genSecurityValue'); $information[$receiver][$message['fid']]['nom_forum'] = $message['forum']; $information[$receiver][$message['fid']]['subscriptionMode'] = $message['subscriptionMode']; $information[$receiver][$message['fid']]['fid'] = $message['fid']; $information[$receiver][$message['fid']]['topics'][$message['ftid']]['titol'] = $message['topic']; $information[$receiver][$message['fid']]['topics'][$message['ftid']]['messages'][$message['fmid']]['title'] = $message['msgTitle']; $information[$receiver][$message['fid']]['topics'][$message['ftid']]['messages'][$message['fmid']]['author'] = ModUtil::func('IWmain', 'user', 'getUserInfo', array('sv' => $sv, 'info' => 'ncc', 'uid' => $message['user'])); $information[$receiver][$message['fid']]['topics'][$message['ftid']]['messages'][$message['fmid']]['date'] = strtolower(DateUtil::getDatetime($message['date'], 'datetimelong', true)); } } } foreach ($information as $key => $userReport){ $view = Zikula_View::getInstance($this->name, false); $view->assign('info', $userReport); $report[$key]['IWforums'] = $view->fetch('user/IWforums_user_report.tpl'); } } return $report; }
public function exportToCsv($args){ $optFields = $args['optFields']; $d = date('_Ymd_Hi') ; $filename = $args['filename'];//="")?$args['filename']:"exportUsers" . $d. '.csv'; $delimiter = isset($args['delimiter'])?$args['delimiter'] : ';'; $titlerow = array(); $groups = false; $titlerow[] ="uname"; $sql = "SELECT uid, uname"; foreach ($optFields as $key => $value) { if ($value) { if ($key != "export_groups") $sql .= ",". $key; // generate CSV header line switch ($key) { case "activated" : $titlerow[] ="activated"; break; case "email": $titlerow[] ="email"; break; case "iw_nom": $titlerow[] ="firstname"; break; case "iw_cognom1": $titlerow[] ="lastname1"; break; case "iw_cognom2": $titlerow[] ="lastname2"; break; case "iw_naixement": $titlerow[] ="birthdate"; break; case "iw_sex": $titlerow[] ="gender"; break; case "export_groups": $titlerow[] ="in"; $groups = true; break; } } } $sql.= " FROM users, IWusers WHERE uid = iw_uid"; // Get users info $rs = DBUtil::executeSQL($sql); $rsm = DBUtil::marshallObjects($rs); // Get groups from every user // if ($groups) { foreach ($rsm as $key => $user){ if ($groups) { // Get all groups $rsm[$key]['in'] = UserUtil::getGroupListForUser($user['uid'], "|"); } // Remove uid field array_splice($rsm[$key], 0, 1); } $result = array(); FileUtil::exportCSV($rsm, $titlerow, $delimiter, '"', $filename); return true; //$result; }
function mediashare_vfs_dbapi_getMedia($args) { $dom = ZLanguage::getModuleDomain('mediashare'); $fileref = DataUtil::formatForStore($args['fileref']); $pntable = pnDBGetTables(); $mediaTable = $pntable['mediashare_media']; $mediaColumn = $pntable['mediashare_media_column']; $storageTable = $pntable['mediashare_mediastore']; $storageColumn = $pntable['mediashare_mediastore_column']; $mediadbTable = $pntable['mediashare_mediadb']; $mediadbColumn =& $pntable['mediashare_mediadb_column']; $sql = "SELECT db.{$mediadbColumn['data']},\n store.{$storageColumn['mimeType']},\n store.{$storageColumn['bytes']},\n media.{$mediaColumn['id']},\n media.{$mediaColumn['parentAlbumId']},\n media.{$mediaColumn['title']},\n media.{$mediaColumn['modifiedDate']}\n FROM {$mediadbTable} db\n LEFT JOIN {$storageTable} store\n ON store.{$storageColumn['fileRef']} = db.{$mediadbColumn['fileref']}\n LEFT JOIN {$mediaTable} media\n ON (media.{$mediaColumn['thumbnailId']} = store.{$storageColumn['id']}\n OR media.{$mediaColumn['previewId']} = store.{$storageColumn['id']}\n OR media.{$mediaColumn['originalId']} = store.{$storageColumn['id']})\n AND media.{$mediaColumn['title']} IS NOT NULL\n WHERE db.{$mediadbColumn['fileref']} = '{$fileref}'"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('vfsHandlerDB.getMedia', 'Could not retrieve the file information.'), $dom)); } if (!$result) { return LogUtil::registerError(__('Unknown media item.', $dom)); } $info = DBUtil::marshallObjects($result, array('data', 'mimeType', 'bytes', 'mediaId', 'albumId', 'title', 'modifiedDate')); return $info; }
protected function contentUpgrade_4_1_2($oldVersion) { $dbtables = DBUtil::getTables(); $searchableTable = $dbtables['content_searchable']; $searchableColumn = $dbtables['content_searchable_column']; // add new primary key field and a language field $sql = 'ALTER TABLE `' . $searchableTable . '` CHANGE `search_cid` `search_cid` INT(11) NOT NULL;'; if (!DBUtil::executeSQL($sql)) { return LogUtil::registerError($this->__('Error! Could not update searchable table (1).')); } $sql = 'ALTER TABLE `' . $searchableTable . '` DROP PRIMARY KEY;'; if (!DBUtil::executeSQL($sql)) { return LogUtil::registerError($this->__('Error! Could not update searchable table (2).')); } $sql = 'ALTER TABLE `' . $searchableTable . '` ADD `search_sid` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;'; if (!DBUtil::executeSQL($sql)) { return LogUtil::registerError($this->__('Error! Could not update searchable table (3).')); } $sql = 'ALTER TABLE `' . $searchableTable . '` ADD `search_language` VARCHAR(10) NOT NULL AFTER `search_text`;'; if (!DBUtil::executeSQL($sql)) { return LogUtil::registerError($this->__('Error! Could not update searchable table (4).')); } // update existing searchable data setting the default language code $defaultLanguage = System::getVar('language_i18n'); $sql = "UPDATE `{$searchableTable}` SET `search_language` = '{$defaultLanguage}';"; if (!DBUtil::executeSQL($sql)) { return LogUtil::registerError($this->__('Error! Could not update searchable table (5).')); } // check if we need to insert searchable rows for existing translations $multilingual = System::getVar('multilingual'); if ($multilingual) { // retrieve existing translation languages $contentTable = $dbtables['content_content']; $contentColumn = $dbtables['content_content_column']; $translatedTable = $dbtables['content_translatedcontent']; $translatedColumn = $dbtables['content_translatedcontent_column']; $sql = "\n SELECT DISTINCT {$translatedColumn['language']}\n FROM {$translatedTable} t"; $dbresult = DBUtil::executeSQL($sql); $languages = DBUtil::marshallObjects($dbresult); $cols = DBUtil::_getAllColumns('content_content'); $ca = DBUtil::getColumnsArray('content_content'); $ca[] = 'translated'; // iterate translations foreach ($languages as $language) { // exclude the default language, since a page could have been created using another default language if ($language == $defaultLanguage) { continue; } // get all translations for this language $sql = "\n SELECT {$cols}, {$translatedColumn['data']} AS translated\n FROM {$contentTable} c\n LEFT JOIN {$translatedTable} t\n AND t.{$translatedColumn['language']} = '{$language}'"; $dbresult = DBUtil::executeSQL($sql); $content = DBUtil::marshallObjects($dbresult, $ca); $view = Zikula_View::getInstance('Content'); $contentApi = new Content_Api_Content(ServiceUtil::getManager()); for ($i = 0, $cou = count($content); $i < $cou; ++$i) { $c =& $content[$i]; $c['data'] = empty($c['data']) ? null : unserialize($c['data']); $c['translated'] = empty($c['translated']) ? null : unserialize($c['translated']); // set translation as plugin content if (is_array($c['translated']) && is_array($c['data'])) { $c['data'] = array_merge($c['data'], $c['translated']); } // get access to the content plugin $contentPlugin = $contentApi->getContentPlugin($c, $view); // check if content is translatable if (!$contentPlugin || !$contentPlugin->isTranslatable()) { continue; } // extract searchable text $text = $contentPlugin->getSearchableText(); // insert into searchable table $searchObj = array('contentId' => $c['id'], 'text' => $text, 'language' => $language); DBUtil::insertObject($searchObj, 'content_searchable', 'searchableId'); } } } return true; }
/** * convert old 'hideonindex' to 'displayonindex' by inverting the values * convert old 'disallowcomments' to 'allowcomments' by inverting the values * * @return boolean */ private function _invertHideAndComments() { $tables = DBUtil::getTables(); $columns = $tables['news_column']; $sql = "SELECT $columns[sid], $columns[displayonindex], $columns[allowcomments] FROM {$tables['news']}"; $result = DBUtil::executeSQL($sql); $objectArray = DBUtil::marshallObjects($result); foreach ($objectArray as $row) { $sid = $row['sid']; $doi = ($row['displayonindex']) == 0 ? 1 : 0; $ac = ($row['allowcomments']) == 0 ? 1 : 0; $sql = "UPDATE {$tables['news']} SET $columns[displayonindex]='$doi', $columns[allowcomments]='$ac' WHERE $columns[sid]=$sid"; DBUtil::executeSQL($sql); } return true; }
/** * Searching */ function mediashare_userapi_search($args) { $dom = ZLanguage::getModuleDomain('mediashare'); $query = $args['query']; $match = $args['match']; $itemIndex = (int) $args['itemIndex']; $pageSize = (int) $args['pageSize']; $pntable = pnDBGetTables(); $mediaTable = $pntable['mediashare_media']; $mediaColumn = $pntable['mediashare_media_column']; $albumsTable = $pntable['mediashare_albums']; $albumsColumn = $pntable['mediashare_albums_column']; // Split query by whitespace allowing use of quotes "..." $words = array(); $count = preg_match_all('/"[^"]+"|[^" ]+/', $query, $words); $words = $words[0]; for ($i = 0; $i < $count; ++$i) { if ($words[$i][0] == '"') { $words[$i] = substr($words[$i], 1, strlen($words[$i]) - 2); } } // Combine keywords to SQL restriction $restriction = array(); foreach ($words as $word) { $word = DataUtil::formatForStore($word); $restriction[] = " (media.{$mediaColumn['title']} LIKE '%{$word}%'\r\n OR media.{$mediaColumn['description']} LIKE '%{$word}%'\r\n OR media.{$mediaColumn['keywords']} LIKE '%{$word}%')"; } $restriction = implode($match == 'AND' ? ' AND ' : ' OR ', $restriction); // Find accessible albums $accessibleAlbumSql = pnModAPIFunc('mediashare', 'user', 'getAccessibleAlbumsSql', array('access' => mediashareAccessRequirementViewSomething, 'field' => "album.{$albumsColumn['id']}")); if (!$accessibleAlbumSql) { return false; } $sql = "SELECT album.{$albumsColumn['id']},\r\n album.{$albumsColumn['title']},\r\n media.{$mediaColumn['id']},\r\n media.{$mediaColumn['title']}\r\n media.{$mediaColumn['description']}\r\n FROM {$albumsTable} album\r\n LEFT JOIN {$mediaTable} media\r\n ON media.{$mediaColumn['parentAlbumId']} = album.{$albumsColumn['id']}\r\n WHERE ({$accessibleAlbumSql}) AND {$restriction}\r\n ORDER BY album.{$albumsColumn['title']}, media.{$mediaColumn['title']}"; $result = DBUtil::executeSQL($sql, $itemIndex, $pageSize); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('userapi.search', 'Could not retrieve the search results.'), $dom)); } $colArray = array('albumId', 'albumTitle', 'mediaId', 'mediaTitle', 'mediaCaptionLong'); $items = DBUtil::marshallObjects($result, $colArray); // select post process foreach (array_keys($items) as $k) { $items[$k]['mediaCaption'] = empty($items[$k]['mediaTitle']) ? $items[$k]['mediaCaptionLong'] : $items[$k]['mediaTitle']; $items[$k]['mediaCaptionLong'] = empty($items[$k]['mediaCaptionLong']) ? $items[$k]['mediaTitle'] : $items[$k]['mediaCaptionLong']; } return array('result' => $result, 'hitCount' => -1); // FIXME implement or deprecate the count }
function getAccessibleAlbumsSql($albumId, $access, $field) { // Admin can do everything if (SecurityUtil::checkPermission('mediashare::', '::', ACCESS_ADMIN)) { return '1=1'; } // Forbidden read can do nothing if (!SecurityUtil::checkPermission('mediashare::', '::', ACCESS_READ)) { return '1=0'; } $userId = (int) pnUserGetVar('uid'); // Make sure groups database info is available pnModDBInfoLoad('Groups'); $pntable = pnDBGetTables(); $albumsTable = $pntable['mediashare_albums']; $albumsColumn = $pntable['mediashare_albums_column']; $accessTable = $pntable['mediashare_access']; $accessColumn = $pntable['mediashare_access_column']; $membershipTable = $pntable['group_membership']; $membershipColumn = $pntable['group_membership_column']; $parentAlbumSql = ''; if ($albumId != null) { $parentAlbumSql = "{$albumsColumn['parentAlbumId']} = {$albumId} AND"; } $sql = "SELECT DISTINCT {$albumsColumn['id']}\n FROM {$albumsTable}\n LEFT JOIN {$accessTable}\n ON {$accessColumn['albumId']} = {$albumsColumn['id']}\n LEFT JOIN {$membershipTable}\n ON {$membershipColumn['gid']} = {$accessColumn['groupId']}\n AND {$membershipColumn['uid']} = {$userId}\n WHERE {$parentAlbumSql}\n (\n ({$accessColumn['access']} & {$access}) != 0 AND ({$membershipColumn['gid']} IS NOT NULL OR {$accessColumn['groupId']} = -1)\n OR {$albumsColumn['ownerId']} = {$userId}\n )"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('accessapi.getAccessibleAlbumsSql', 'Could not retrieve the accessible albums.'), $dom)); } $ids = DBUtil::marshallObjects($result, array('id')); $invitedAlbums = pnModAPIFunc('mediashare', 'invitation', 'getInvitedAlbums'); // collect all the accessible album IDs $albumids = array(); foreach ($ids as $id) { $albumids[] = (int) $id['id']; } if (is_array($invitedAlbums) && $access & mediashareAccessRequirementView) { foreach ($invitedAlbums as $invAlbumId => $ok) { if ($ok) { $albumids[] = (int) $invAlbumId; } } } // sintetize the query if (!empty($albumids)) { $albumids = "'" . implode("', '", $albumids) . "'"; } else { $albumids = ''; } return $albumids == '' ? '1=0' : "{$field} IN ({$albumids})"; }
function mediashareEnsureFolderExists($parentFolderID, $folders, $folderOffset) { $dom = ZLanguage::getModuleDomain('mediashare'); // End of recursion? if ($folderOffset == sizeof($folders) - 1) { return $parentFolderID; } $folderTitle = $folders[$folderOffset]; // Get ID of existing folder $pntable = pnDBGetTables(); $foldersTable = $pntable['mediashare_albums']; $foldersColumn = $pntable['mediashare_albums_column']; $sql = "SELECT {$foldersColumn['id']}\n FROM {$foldersTable}\n WHERE {$foldersColumn['parentAlbumId']} = '" . DataUtil::formatForStore($parentFolderID) . "'\n AND {$foldersColumn['title']} = '" . DataUtil::formatForStore($folderTitle) . "'"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('common.EnsureFolderExists', 'Could not retrieve the folder information.'), $dom), 404); } // No ID => folder does not exist. Create it. if (!$result) { if (!($folderID = pnModAPIFunc('mediashare', 'edit', 'addAlbum', array('parentAlbumId' => $parentFolderID, 'title' => $folderTitle, 'description' => '', 'keywords' => '', 'summary' => '')))) { return false; } } else { $folderID = DBUtil::marshallObjects($result, array('id')); $folderID = (int) $folderID[0]['id']; } // Recursive to ensure sub-folders exists return mediashareEnsureFolderExists($folderID, $folders, $folderOffset + 1); }
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; }
function mediashare_invitationapi_getInvitedAlbums() { $dom = ZLanguage::getModuleDomain('mediashare'); $invitedAlbums = SessionUtil::getVar('mediashareInvitedAlbums'); if ($invitedAlbums == null) { return $invitedAlbums; } $keys = array(); foreach ($invitedAlbums['keys'] as $key => $ok) { if ($ok) { $keys[] = DataUtil::formatForStore($key); } } $keys = "'" . implode("','", $keys) . "'"; $pntable = pnDBGetTables(); $invitationTable = $pntable['mediashare_invitation']; $invitationColumn = $pntable['mediashare_invitation_column']; $sql = "SELECT {$invitationColumn['albumId']}\n FROM {$invitationTable}\n WHERE {$invitationColumn['key']} IN ({$keys})\n AND ({$invitationColumn['expires']} > NOW() OR {$invitationColumn['expires']} IS NULL)"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('invitationapi.getInvitedAlbums', 'Could not retrieve the invited albums.'), $dom)); } $albums = DBUtil::marshallObjects($result, array('albumId')); $result = array(); foreach (array_keys($albums) as $k) { $result[(int) $albums[$k]['albumId']] = true; } return $result; }
public function getTranslations($args) { $pageId = (int) $args['pageId']; $table = DBUtil::getTables(); $translatedTable = $table['content_translatedcontent']; $translatedColumn = $table['content_translatedcontent_column']; $contentTable = $table['content_content']; $contentColumn = $table['content_content_column']; $cols = DBUtil::_getAllColumns('content_translatedcontent'); $ca = DBUtil::getColumnsArray('content_translatedcontent'); $sql = " SELECT $cols FROM $translatedTable t LEFT JOIN $contentTable c ON c.$contentColumn[id] = t.$translatedColumn[contentId] WHERE c.$contentColumn[pageId] = $pageId"; $dbresult = DBUtil::executeSQL($sql); $translations = DBUtil::marshallObjects($dbresult, $ca); return $translations; }
/** * Access */ function mediashare_editapi_getAccessSettings($args) { $dom = ZLanguage::getModuleDomain('mediashare'); $albumId = (int) $args['albumId']; $pntable = pnDBGetTables(); $accessTable = $pntable['mediashare_access']; $accessColumn = $pntable['mediashare_access_column']; $membershipTable = $pntable['group_membership']; $membershipColumn = $pntable['group_membership_column']; $groupsTable = $pntable['groups']; $groupsColumn = $pntable['groups_column']; if (strpos($membershipColumn['gid'], 'group_membership') === false) { $sql = " SELECT mbr.{$membershipColumn['gid']},\n grp.{$groupsColumn['name']},\n CASE WHEN ISNULL({$accessColumn['access']}) THEN 0 ELSE {$accessColumn['access']} END\n FROM {$membershipTable} mbr\n INNER JOIN {$groupsTable} grp\n ON grp.{$groupsColumn['gid']} = mbr.{$membershipColumn['gid']}\n LEFT JOIN {$accessTable}\n ON {$accessColumn['groupId']} = mbr.{$membershipColumn['gid']}\n AND {$accessColumn['albumId']} = '{$albumId}'"; } else { $sql = " SELECT {$membershipColumn['gid']},\n {$groupsColumn['name']},\n CASE WHEN ISNULL({$accessColumn['access']}) THEN 0 ELSE {$accessColumn['access']} END\n FROM {$membershipTable}\n INNER JOIN {$groupsTable}\n ON {$groupsColumn['gid']} = {$membershipColumn['gid']}\n LEFT JOIN {$accessTable}\n ON {$accessColumn['groupId']} = {$membershipColumn['gid']}\n AND {$accessColumn['albumId']} = '{$albumId}'"; } $sql .= "\n UNION\n\n SELECT -1,\n '" . __('Everybody', $dom) . "',\n CASE WHEN ISNULL({$accessColumn['access']}) THEN 0 ELSE {$accessColumn['access']} END\n FROM {$accessTable}\n WHERE {$accessColumn['groupId']} = -1\n AND {$accessColumn['albumId']} = '{$albumId}'"; $result = DBUtil::executeSQL($sql); if ($result === false) { return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('editapi.getAccessSettings', 'Could not retrieve the access settings.'), $dom)); } $colArray = array('groupId', 'groupName', 'access'); $groups = DBUtil::marshallObjects($result, $colArray, true, 'groupId'); if (!isset($groups[-1])) { $groups[] = array('groupId' => -1, 'groupName' => __('Everybody', $dom), 'access' => 0); } // select post process foreach (array_keys($groups) as $k) { $groups[$k]['accessView'] = ($groups[$k]['access'] & mediashareAccessRequirementView) != 0; $groups[$k]['accessEditAlbum'] = ($groups[$k]['access'] & mediashareAccessRequirementEditAlbum) != 0; $groups[$k]['accessEditMedia'] = ($groups[$k]['access'] & mediashareAccessRequirementEditMedia) != 0; $groups[$k]['accessAddAlbum'] = ($groups[$k]['access'] & mediashareAccessRequirementAddAlbum) != 0; $groups[$k]['accessAddMedia'] = ($groups[$k]['access'] & mediashareAccessRequirementAddMedia) != 0; } return $groups; }
public function getPagePath($args) { // Argument check if (!isset($args['pageId'])) { return LogUtil::registerArgsError(); } $pageId = (int) $args['pageId']; $dbtables = DBUtil::getTables(); $pageTable = $dbtables['content_page']; $pageColumn = $dbtables['content_page_column']; $translatedPageTable = $dbtables['content_translatedpage']; $translatedPageColumn = $dbtables['content_translatedpage_column']; $currentLanguage = ZLanguage::getLanguageCode(); $sql = "SELECT parentPage.{$pageColumn['id']},\n parentPage.{$pageColumn['title']},\n parentPageTranslation.{$translatedPageColumn['title']} AS translatedTitle\n FROM {$pageTable} parentPage\n LEFT OUTER JOIN {$pageTable} page\n ON page.{$pageColumn['setLeft']} >= parentPage.{$pageColumn['setLeft']}\n AND page.{$pageColumn['setRight']} <= parentPage.{$pageColumn['setRight']}\n LEFT OUTER JOIN {$translatedPageTable} parentPageTranslation\n ON parentPageTranslation.{$translatedPageColumn['pageId']} = parentPage.{$pageColumn['id']}\n AND parentPageTranslation.{$translatedPageColumn['language']} = '{$currentLanguage}'\n WHERE page.{$pageColumn['id']} = {$pageId}\n ORDER BY parentPage.{$pageColumn['setLeft']}"; $result = DBUtil::executeSQL($sql); if (!$result) { return LogUtil::registerError($this->__('Error! Could not load items.')); } $objectArray = DBUtil::marshallObjects($result); $path = array(); foreach ($objectArray as $object) { $pageTitle = $object['page_title']; if ($object['translatedTitle'] != '') { $pageTitle = $object['translatedTitle']; } $path[] = array('id' => $object['page_id'], 'title' => $pageTitle); } return $path; }
public function getPagePath($args) { // Argument check if (!isset($args['pageId'])) { return LogUtil::registerArgsError(); } $pageId = (int) $args['pageId']; $dbtables = DBUtil::getTables(); $pageTable = $dbtables['content_page']; $pageColumn = $dbtables['content_page_column']; $sql = "SELECT parentPage.$pageColumn[id], parentPage.$pageColumn[title] FROM $pageTable parentPage LEFT OUTER JOIN $pageTable page ON page.$pageColumn[setLeft] >= parentPage.$pageColumn[setLeft] AND page.$pageColumn[setRight] <= parentPage.$pageColumn[setRight] WHERE page.$pageColumn[id] = $pageId ORDER BY parentPage.$pageColumn[setLeft]"; $result = DBUtil::executeSQL($sql); if (!$result) { return LogUtil::registerError($this->__('Error! Could not load items.')); } $objectArray = DBUtil::marshallObjects($result); $path = array(); foreach ($objectArray as $object) { $path[] = array('id' => $object['page_id'], 'title' => $object['page_title']); } return $path; }