PDA

Zobacz pełną wersję : Po edycji przez autora wiadomość do admina.



komichal
03-03-2010, 15:32
Witajcie,
Przy napisaniu przez autora nowego artykułu czeka on na zatwierdzenie przez admina. Admin dostaje wiadomość o nowym artykule. Potrzebuje tak zrobić aby po edycji również czekał na potwierdzenie i aby była wysyłana wiadomość do admina.
Udało mi się tak zrobić aby artykuł był blokowany po edycji ale po wielu próbach nie udało mi się aby była wysyłana wiadomość do admina. O ile się nie mylę za wysyłanie wiadomości w przypadku nowego artykułu odpowiedzialny jest kod w pliku controller.php :

if ($isNew)
{
// messaging for new items
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_messa ges'.DS.'tables'.DS.'message.php');

// load language for messaging
$lang =& JFactory::getLanguage();
$lang->load('com_messages');

$query = 'SELECT id' .
' FROM #__users' .
' WHERE sendEmail = 1';
$db->setQuery($query);
$users = $db->loadResultArray();
foreach ($users as $user_id)
{
$msg = new TableMessage($db);
$msg->send($user->get('id'), $user_id, JText::_('New Item'), JText::sprintf('ON_NEW_CONTENT', $user->get('username'), $post['title'], $section, $category));
}
} else {
// If the article isn't new, then we need to clean the cache so that our changes appear realtime :)
$cache = &JFactory::getCache('com_content');
$cache->clean();


}

Jakieś pomysły?

Jola
03-03-2010, 17:57
Witam,
zwróć uwagę, że kod, który Cie interesuje wykonuje się pod warunkiem, że $isNew.
Co oznacza, że artykuł jest nowy- nie ma jeszcze nadanego numeru id.
Myślę, że to będzie kluczowa informacja dla Ciebie. :)

komichal
03-03-2010, 17:58
A w przypadku nie nowego artykułu co powinno się znaleźć zamiast $isNew?

Jola
03-03-2010, 18:01
Ty musisz zdecydować jaki to będzie warunek - zgodnie z założeniem działania modyfikacji.

komichal
03-03-2010, 18:41
Dobra nie podołałem... może jakaś konkretniejsza odpowiedź... siedzę i grzebie w kodzie od wczoraj...

Jola
03-03-2010, 19:07
Jest to dosyć zabawne, że ja mam wymyślać scenariusz działania.
Może sprawdź np. czy modyfikacji dokonał autor i art został zablokowany!

komichal
03-03-2010, 20:35
No i uzyskałem to co chciałem. W sumie w prosty sposób. Dziękować za podpowiedź.
Dla zainteresowanych:
if ($user)
{
// messaging for new items
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_messa ges'.DS.'tables'.DS.'message.php');

// load language for messaging
$lang =& JFactory::getLanguage();
$lang->load('com_messages');

$query = 'SELECT id' .
' FROM #__users' .
' WHERE sendEmail = 1';
$db->setQuery($query);
$users = $db->loadResultArray();
foreach ($users as $user_id)
{
$msg = new TableMessage($db);
$msg->send($user->get('id'), $user_id, JText::_('ITEM SUCCESSFULLY SAVED.'), JText::sprintf('ON_NEW_CONTENT', $user->get('username'), $post['title'], $section, $category));
}
} else {
// If the article isn't new, then we need to clean the cache so that our changes appear realtime :)
$cache = &JFactory::getCache('com_content');
$cache->clean();


}
Kod różni się jedynie początkiem gdzie zamiast $isNew jest $user i szablonem wysyłanej wiadomości i pliku językowego co by pasowało do nowej wiadomości i edytowanej.

Może i nie koniecznie jest to poprawne rozwiązanie ale działa.

Pozdrawiam.