/** * Grabs all the child links under the current link */ public function loadChildren($data = null, $hash = null) { // If we're doing this the old, inefficient way... if (empty($data) || empty($hash)) { $db = $this->getDB(); $db->addWhere('parent', $this->id); $db->addOrder('link_order'); Key::restrictView($db); $result = $db->getObjects('menu_link'); if (empty($result)) { return; } foreach ($result as $link) { $link->loadChildren(); $this->_children[$link->id] = $link; } } elseif (empty($hash[$this->id])) { return; } else { foreach ($hash[$this->id] as $rowId) { $link = new Menu_Link(); PHPWS_Core::plugObject($link, $data[$rowId]); $link->loadChildren($data, $hash); $this->_children[$link->id] = $link; } } }
protected static function runQuery($db) { self::joinAll($db); $db->addColumn('analytics_tracker.*'); $result = $db->select(); if (PHPWS_Error::logIfError($result)) { return FALSE; } $trackers = array(); foreach ($result as $tracker) { $found = PHPWS_Core::initModClass('analytics', "trackers/{$tracker['type']}.php"); if (!$found) { continue; } $t = new $tracker['type'](); PHPWS_Core::plugObject($t, $tracker); $trackers[] = $t; } return $trackers; }
public function approveSuggestion($id) { if (!Current_User::authorized('calendar', 'edit_public') || Current_User::isRestricted('calendar')) { PHPWS_Core::errorPage('403'); } PHPWS_Core::initModClass('calendar', 'Suggestion.php'); $suggestion = new Calendar_Suggestion((int) $id); if (!$suggestion->id) { PHPWS_Core::errorPage('404'); } $values = PHPWS_Core::stripObjValues($suggestion); unset($values['id']); $event = new Calendar_Event(); $event->loadSchedule($suggestion->schedule_id); $event->public = 1; PHPWS_Core::plugObject($event, $values); $result = $event->save(); if (PHPWS_Error::isError($result)) { PHPWS_Error::log($result); return false; } $suggestion->delete(); }
/** * Creates an array of objects constructed from the submitted * class name. * * Use this function instead of select() to get an array of objects. * Note that your class variables and column names MUST match exactly. * Unmatched pairs will be ignored. * * --- Any extra parameters after class_name are piped into --- * --- a class method called postPlug. If the function --- * --- does not exist, nothing happens. Previously, the --- * --- the variables were put into the constructor. --- * Example: * $db->getObjects('Class_Name', 'foo'); * class Class_Name { * function postPlug($extra_param) { * } // end constuctor * } //end class * * @author Matthew McNaney <mcnaney at gmail dot com> * @param string $class_name Name of class used in object * @return array $items Array of objects * @access public */ public function getObjects($class_name) { $items = null; $result = $this->select(); if (empty($result)) { return null; } if (PHPWS_Error::isError($result) || !isset($result)) { return $result; } $this->requireClasses(); if (!class_exists($class_name)) { return PHPWS_Error::get(PHPWS_CLASS_NOT_EXIST, 'core', 'PHPWS_DB::getObjects', $class_name); } $num_args = func_num_args(); if ($num_args > 1) { $args = func_get_args(); array_shift($args); } else { $args = null; } foreach ($result as $indexby => $itemResult) { $genClass = new $class_name(); if (isset($itemResult[0]) && is_array($itemResult[0])) { foreach ($itemResult as $key => $sub) { $genClass = new $class_name(); PHPWS_Core::plugObject($genClass, $sub, $args); $items[$indexby][] = $genClass; } } else { PHPWS_Core::plugObject($genClass, $itemResult, $args); $items[$indexby] = $genClass; } } return $items; }
public function loadSections($form_mode = false, $filler = true) { PHPWS_Core::initModClass('pagesmith', 'PS_Text.php'); PHPWS_Core::initModClass('pagesmith', 'PS_Block.php'); if (empty($this->_tpl)) { $this->loadTemplate(); } if (empty($this->_tpl->structure)) { PHPWS_Error::log(PS_PG_TPL_ERROR, 'pagesmith', 'PS_Page::loadSections', $this->_tpl->file); throw new \Exception('Page template missing:' . $this->_tpl->file); } foreach ($this->_tpl->structure as $section_xml) { switch ($section_xml['TYPE']) { case 'image': case 'document': case 'media': case 'block': $section = new PS_Block(); $section->pid = $this->id; break; default: $section = new PS_Text(); $section->pid = $this->id; } $section->plugSection($section_xml, $this->id); if ($form_mode && $filler) { $section->loadFiller(); } $this->_sections[$section->secname] = $section; } if ($this->id) { // load sections from database // load sections should handle template $text_db = new PHPWS_DB('ps_text'); $block_db = new PHPWS_DB('ps_block'); $text_db->addWhere('pid', $this->id); $block_db->addWhere('pid', $this->id); $text_db->setIndexBy('secname'); $block_db->setIndexBy('secname'); $text_sections = $text_db->select(); $block_sections = $block_db->select(); if (!empty($text_sections)) { foreach ($text_sections as $secname => $section) { if (isset($this->_sections[$secname])) { PHPWS_Core::plugObject($this->_sections[$secname], $section); // we don't want smarttags parsed $this->_content[$secname] = $this->_sections[$secname]->getContent(!$form_mode); } elseif (!empty($section['content'])) { $this->_orphans[$secname] = $section; } else { $db = \Database::newDB(); $db->setConditional($db->addTable('ps_text')->getFieldConditional('id', $section['id'])); $db->delete(); } } } if (!empty($block_sections)) { foreach ($block_sections as $secname => $section) { if (isset($this->_sections[$secname])) { if ($this->_sections[$secname]->width) { $default_w = $this->_sections[$secname]->width; } if ($this->_sections[$secname]->height) { $default_h = $this->_sections[$secname]->height; } PHPWS_Core::plugObject($this->_sections[$secname], $section); if ($this->_sections[$secname]->width && !empty($default_w)) { $this->_sections[$secname]->width = $default_w; } if ($this->_sections[$secname]->height && !empty($default_h)) { $this->_sections[$secname]->height = $default_h; } if ($form_mode && $this->_sections[$secname]->type_id) { //reload the image form if the image is set $this->_sections[$secname]->loadFiller(); } $this->_content[$secname] = $this->_sections[$secname]->getContent(); } elseif ($section['type_id'] > 0) { $this->_orphans[$secname] = $section; } else { $db = \Database::newDB(); $db->setConditional($db->addTable('ps_block')->getFieldConditional('id', $section['id'])); $db->delete(); } } } } }
public function plugObject($obj) { return PHPWS_Core::plugObject($obj, $this->params); }
private function removeFromMenu() { $key_id = $this->page->key_id; $link = new Menu_Link(); $db = Database::getDB(); $t1 = $db->addTable('menu_links'); $t1->addFieldConditional('key_id', $key_id); $link_result = $db->selectOneRow(); if (empty($link_result)) { return; } PHPWS_Core::plugObject($link, $link_result); $link->delete(); }
public static function categoryView() { $active_menu = self::getCurrentActiveMenu(); if ($active_menu == 0) { $menu_tpl['home_active'] = 1; } else { $menu_tpl['home_active'] = 0; } $db = \Database::newDB(); $m = $db->addTable('menus'); $k = $db->addTable('phpws_key'); $k->addField('url'); $db->joinResources($m, $k, $db->createConditional($m->getField('assoc_key'), $k->getField('id'), '='), 'left'); $m->addOrderBy($m->getField('queue')); $key = \Key::getCurrent(); if ($key && $key->id) { $current_key_id = $key->id; } else { $current_key_id = -1; } $menus = $db->select(); if (empty($menus)) { return; } foreach ($menus as $m) { $menu = new Menu_Item(); PHPWS_Core::plugObject($menu, $m); $menu->_show_all = true; if (empty($menu->assoc_url)) { $menu->setAssocUrl($m['url']); } // if the current menu matches a used link (either by it being in the // in the menu or associated to it) mark as ACTIVE $active = $active_menu == $menu->id || $current_key_id == $menu->assoc_key ? 1 : 0; // if there is not an assoc key, them menu is using drop downs, so // we do not add the side menu if ($active) { if ($menu->assoc_key) { Layout::set($menu->view(), 'menu', 'side'); } if ($menu->assoc_image) { Layout::set($menu->showAssocImage(), 'menu', 'image'); } } $menu_tpl['menus'][] = self::getCategoryViewLine($menu, $active); } $template = new \Template($menu_tpl); \Layout::addJSHeader("<script type='text/javascript' src='" . PHPWS_SOURCE_HTTP . "javascript/responsive_img/responsive-img.min.js'></script>", 81); $template->setModuleTemplate('menu', 'category_view/category_menu.html'); \Layout::add($template->get(), 'menu', 'top_view'); }
protected function roomSearch($gender = FALSE, $lifestyle = FALSE, $pbuilding = FALSE, $pfloor = FALSE, $proom = FALSE) { $pre_sql = "SELECT hms_room.*, sub.banner_building_code FROM (SELECT hms_room.id, hms_residence_hall.banner_building_code , (count(hms_bed.id)) AS bed_count FROM hms_residence_hall INNER JOIN hms_floor ON hms_residence_hall.id = hms_floor.residence_hall_id INNER JOIN hms_room ON hms_floor.id = hms_room.floor_id INNER JOIN hms_bed ON hms_room.id = hms_bed.room_id LEFT OUTER JOIN hms_assignment ON hms_bed.id = hms_assignment.bed_id WHERE hms_assignment.asu_username IS NULL AND hms_room.offline = 0 AND hms_room.reserved = 0 AND hms_room.ra = 0 AND hms_room.overflow = 0 AND hms_room.private = 0 AND hms_room.parlor = 0 AND hms_room.term = '{$this->term}' AND hms_floor.is_online = 1 AND hms_residence_hall.is_online = 1 "; $post_sql = " GROUP BY hms_residence_hall.banner_building_code, hms_room.id) AS sub INNER JOIN hms_room ON sub.id = hms_room.id WHERE sub.bed_count = 2 ORDER BY random() LIMIT 1"; // Limit to selection $moar = array(); if ($gender !== FALSE) { $moar[] = " hms_room.gender_type = {$gender} "; } if ($lifestyle !== FALSE) { $lf = $lifestyle == 2 ? '=' : '!='; $moar[] = " hms_residence_hall.gender_type {$lf} 2 "; } if ($pbuilding !== FALSE) { $moar[] = " hms_residence_hall.banner_building_code = '{$pbuilding}' "; } if ($pfloor !== FALSE) { $moar[] = " hms_floor.floor_number = '{$pfloor}' "; } if ($proom !== FALSE) { $moar[] = " hms_room.room_number = '{$proom}' "; } // Assemble SQL $sql = $pre_sql . (count($moar) > 0 ? ' AND ' . implode(' AND ', $moar) : '') . $post_sql; $db = new PHPWS_DB(); $db->setSQLQuery($sql); $result = $db->select('row'); if (PHPWS_Error::logIfError($result)) { throw new DatabaseException($result->getMessage()); } if (is_null($result)) { return null; } $room = new HMS_Room(); PHPWS_Core::plugObject($room, $result); return $room; }
/** * @author Matthew McNaney <mcnaney at gmail dot com> * @version $Id$ */ function controlpanel_update(&$content, $currentVersion) { switch (1) { case version_compare($currentVersion, '2.0.3', '<'): $content[] = '<pre>'; $files = array('templates/style.css'); cpFileUpdate($files, $content); $content[] = '2.0.3 Changes ------------ + Updated style.css to work better with IE/Safari (thanks singletrack). + Fixed problem with unregister function. + Added translate functions. </pre>'; case version_compare($currentVersion, '2.1.0', '<'): $files = array('templates/link_form.tpl', 'templates/panelList.tpl', 'templates/tab_form.tpl', 'img/controlpanel.png'); $content[] = '<pre>'; cpFileUpdate($files, $content); $content[] = ' 2.1.0 Changes -------------- + RFE 1665181 - Can now edit control panel tabs and links. + Updated language functions. + Added German translation. + Removed border from icons. not xhtml compliant + changed style sheet to work under IE7 again + Changed control panel icon </pre>'; case version_compare($currentVersion, '2.1.1', '<'): $files = array('templates/link_form.tpl', 'templates/panelList.tpl', 'templates/tab_form.tpl', 'img/controlpanel.png', 'templates/style.css'); $content[] = '<pre>'; cpFileUpdate($files, $content); $content[] = ' 2.1.1 Changes -------------- + Put Link.php and Tab.php back in to the inc/init.php. They are needed for one of the sessions. + Bug #1665174 - Added coding for control panel to try and use the correct master tab depending on which module you are using. Thanks Shaun. + Removed panel width from style.css. Caused problems in panels. + Corrected file copy from previous version update. They were labeled as calendar files. </pre>'; case version_compare($currentVersion, '2.1.2', '<'): $content[] = '<pre>'; cpFileUpdate(array('templates/style.css'), $content); $content[] = '2.1.2 changes ---------------- + Control panel will now direct a user to login if their session times out during panel view. + Changed icon image layout a touch to try and make more space. + A tab link can be now be sent in strict mode to prevent appending. </pre>'; case version_compare($currentVersion, '2.1.3', '<'): $content[] = '<pre>'; $content[] = '2.1.3 changes ---------------- + Developers can now add a link_title to quickSetTabs. This allows the user to mouse over tabs to get extended information. </pre>'; case version_compare($currentVersion, '2.1.4', '<'): $content[] = '<pre>'; cpFileUpdate(array('templates/default.tpl'), $content); $content[] = '2.1.4 changes ---------------- + Panel::display now includes the options to send content, title, and message information to be put in a default template. </pre>'; case version_compare($currentVersion, '2.1.5', '<'): $content[] = '<pre>'; cpFileUpdate(array('templates/default.tpl'), $content); $content[] = '2.1.5 changes ---------------- + Commented out title in default template. + A module can force a control panel tab using the second parameter in the display function. </pre>'; case version_compare($currentVersion, '2.1.6', '<'): $content[] = '<pre>'; cpFileUpdate(array('templates/style.css'), $content); $content[] = '2.1.6 changes ---------------- + Changed tab formatting. The a tag is padded to make clickable area larger.</pre>'; case version_compare($currentVersion, '2.2.0', '<'): $content[] = '<pre>'; cpFileUpdate(array('javascript/subpanel/', 'templates/subpanel.tpl'), $content); $content[] = '2.2.0 changes ---------------- + Flyout menu added to control panel link. + Added function to return control panel link. + Moved controlpanel unregisteration to control panel class. + php 5 format changes</pre>'; case version_compare($currentVersion, '2.2.1', '<'): $content[] = '<pre> 2.2.1 changes ------------------------- + Added a little hack suggested by Hilmar to allow controlpanel translation. </pre>'; case version_compare($currentVersion, '2.3.0', '<'): $db = new PHPWS_DB('controlpanel_link'); $db->addColumn('id'); $db->addColumn('image'); $result = $db->select(); foreach ($result as $link) { $db->addWhere('id', $link['id']); $db->addValue('image', preg_replace('@images/mod/\\w+/@', '', $link['image'])); $db->update(); $db->reset(); } unset($_SESSION['CP_All_links']); $content[] = '<pre>2.3.0 changes ------------------ + Links reindexed for core changes.</pre>'; case version_compare($currentVersion, '2.3.1', '<'): $content[] = '<pre>2.3.1 changes ------------------- + Icon templating from Eloi. </pre>'; case version_compare($currentVersion, '2.3.2', '<'): $content[] = '<pre>2.3.2 changes ------------------- + Fixed javascript error. </pre>'; case version_compare($currentVersion, '2.3.3', '<'): case version_compare($currentVersion, '2.3.4', '<'): $link = new PHPWS_Panel_Link(); $db = Database::newDB(); $tbl = $db->addTable('controlpanel_link'); $db->setConditional($tbl->getFieldConditional('itemname', 'controlpanel')); $db->loadSelectStatement(); $row = $db->fetchOneRow(); PHPWS_Core::plugObject($link, $row); $link->kill(); $content[] = '<pre>2.3.3 & 2.3.4 changes ------------------- + Removing Control Panel icon and removed admin options. </pre>'; case version_compare($currentVersion, '2.3.5', '<'): $content[] = '<pre>2.3.5 changes ------------------- + Removed unused templates + Added class names to panel.tpl to allow styling. </pre>'; } return true; }
public static function plugInstance(array $data) { $f = self::getInstanceByName($data['name']); PHPWS_Core::plugObject($f, $data); return $f; }
private function listOrphans($orphans) { javascript('jquery'); javascriptMod('pagesmith', 'delete_orphan'); $tpl = array(); $tpl['TITLE'] = dgettext('pagesmith', 'Orphaned content'); foreach ($orphans as $orf) { $row = array(); switch ($orf['sectype']) { case 'text': case 'header': $row['ID'] = 'text-' . $orf['id']; $sec = new PS_Text(); $empty_content = empty($orf['content']); break; case 'image': case 'document': case 'media': case 'block': $row['ID'] = 'block-' . $orf['id']; $sec = new PS_Block(); $empty_content = empty($orf['type_id']); break; } PHPWS_Core::plugObject($sec, $orf); if ($empty_content) { $row['CONTENT'] = sprintf('<em>%s</em>', dgettext('pagesmith', 'Empty content. Consider deletion.')); } else { $row['CONTENT'] = $sec->getContent(); } $row['OPTIONS'] = sprintf('<a href="#" onclick="delete_orphan(\'%s\'); return false">%s</a>', $row['ID'], dgettext('pagesmith', 'Delete orphan')); $tpl['orphan-list'][] = $row; } return PHPWS_Template::process($tpl, 'pagesmith', 'orphans.tpl'); }
private function removeKeyLink(\Request $request) { $key_id = $request->getVar('key_id'); $menu_id = $request->getVar('menu_id'); $db = \Database::newDB(); $ml = $db->addTable('menu_links'); $ml->addFieldConditional('key_id', $key_id); $ml->addFieldConditional('menu_id', $menu_id); $links = $db->select(); if (empty($links)) { throw \Exception('Menu link not found'); } foreach ($links as $l) { $menu_link = new Menu_Link(); PHPWS_Core::plugObject($menu_link, $l); $menu_link->delete(); } }